diff --git a/pom.xml b/pom.xml
index 3db8ff651f..dfeccdbcb7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -69,6 +69,7 @@
scm-plugins
scm-samples
scm-backend-xml
+ scm-backend-jdbc
scm-webapp
scm-server
scm-plugin-backend
diff --git a/scm-backend-jdbc/pom.xml b/scm-backend-jdbc/pom.xml
new file mode 100644
index 0000000000..6c251492bd
--- /dev/null
+++ b/scm-backend-jdbc/pom.xml
@@ -0,0 +1,43 @@
+
+
+
+ 4.0.0
+
+
+ sonia.scm
+ scm
+ 1.14-SNAPSHOT
+
+
+ sonia.scm
+ scm-backend-jdbc
+ 1.14-SNAPSHOT
+ scm-backend-jdbc
+
+
+
+
+ javax.servlet
+ servlet-api
+ ${servlet.version}
+ provided
+
+
+
+ sonia.scm
+ scm-core
+ 1.14-SNAPSHOT
+
+
+
+
+
+ sonia.scm
+ scm-test
+ 1.14-SNAPSHOT
+ test
+
+
+
+
diff --git a/scm-backend-jdbc/src/main/java/sonia/scm/group/jdbc/JDBCGroupManager.java b/scm-backend-jdbc/src/main/java/sonia/scm/group/jdbc/JDBCGroupManager.java
new file mode 100644
index 0000000000..b7577bb0ee
--- /dev/null
+++ b/scm-backend-jdbc/src/main/java/sonia/scm/group/jdbc/JDBCGroupManager.java
@@ -0,0 +1,255 @@
+/**
+ * Copyright (c) 2010, Sebastian Sdorra All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer. 2. Redistributions in
+ * binary form must reproduce the above copyright notice, this list of
+ * conditions and the following disclaimer in the documentation and/or other
+ * materials provided with the distribution. 3. Neither the name of SCM-Manager;
+ * nor the names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * http://bitbucket.org/sdorra/scm-manager
+ *
+ */
+
+
+
+package sonia.scm.group.jdbc;
+
+//~--- non-JDK imports --------------------------------------------------------
+
+import com.google.inject.Singleton;
+import sonia.scm.SCMContextProvider;
+import sonia.scm.group.AbstractGroupManager;
+import sonia.scm.group.Group;
+import sonia.scm.group.GroupException;
+import sonia.scm.search.SearchRequest;
+
+//~--- JDK imports ------------------------------------------------------------
+
+import java.io.IOException;
+
+import java.util.Collection;
+import java.util.Comparator;
+
+/**
+ *
+ * @author Sebastian Sdorra
+ */
+@Singleton
+public class JDBCGroupManager extends AbstractGroupManager
+{
+
+ /**
+ * Method description
+ *
+ *
+ * @throws IOException
+ */
+ @Override
+ public void close() throws IOException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param object
+ *
+ * @throws GroupException
+ * @throws IOException
+ */
+ @Override
+ public void create(Group object) throws GroupException, IOException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param object
+ *
+ * @throws GroupException
+ * @throws IOException
+ */
+ @Override
+ public void delete(Group object) throws GroupException, IOException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param context
+ */
+ @Override
+ public void init(SCMContextProvider context)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param object
+ *
+ * @throws GroupException
+ * @throws IOException
+ */
+ @Override
+ public void modify(Group object) throws GroupException, IOException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param object
+ *
+ * @throws GroupException
+ * @throws IOException
+ */
+ @Override
+ public void refresh(Group object) throws GroupException, IOException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param searchRequest
+ *
+ * @return
+ */
+ @Override
+ public Collection search(SearchRequest searchRequest)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ //~--- get methods ----------------------------------------------------------
+
+ /**
+ * Method description
+ *
+ *
+ * @param id
+ *
+ * @return
+ */
+ @Override
+ public Group get(String id)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @return
+ */
+ @Override
+ public Collection getAll()
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param comparator
+ *
+ * @return
+ */
+ @Override
+ public Collection getAll(Comparator comparator)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param start
+ * @param limit
+ *
+ * @return
+ */
+ @Override
+ public Collection getAll(int start, int limit)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param comparator
+ * @param start
+ * @param limit
+ *
+ * @return
+ */
+ @Override
+ public Collection getAll(Comparator comparator, int start,
+ int limit)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param member
+ *
+ * @return
+ */
+ @Override
+ public Collection getGroupsForMember(String member)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @return
+ */
+ @Override
+ public Long getLastModified()
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+}
diff --git a/scm-backend-jdbc/src/main/java/sonia/scm/repository/jdb/JDBCRepositoryManager.java b/scm-backend-jdbc/src/main/java/sonia/scm/repository/jdb/JDBCRepositoryManager.java
new file mode 100644
index 0000000000..c647bf1f64
--- /dev/null
+++ b/scm-backend-jdbc/src/main/java/sonia/scm/repository/jdb/JDBCRepositoryManager.java
@@ -0,0 +1,466 @@
+/**
+ * Copyright (c) 2010, Sebastian Sdorra All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer. 2. Redistributions in
+ * binary form must reproduce the above copyright notice, this list of
+ * conditions and the following disclaimer in the documentation and/or other
+ * materials provided with the distribution. 3. Neither the name of SCM-Manager;
+ * nor the names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * http://bitbucket.org/sdorra/scm-manager
+ *
+ */
+
+
+
+package sonia.scm.repository.jdb;
+
+//~--- non-JDK imports --------------------------------------------------------
+
+import com.google.inject.Singleton;
+
+import sonia.scm.SCMContextProvider;
+import sonia.scm.Type;
+import sonia.scm.repository.AbstractRepositoryManager;
+import sonia.scm.repository.BlameViewer;
+import sonia.scm.repository.ChangesetViewer;
+import sonia.scm.repository.DiffViewer;
+import sonia.scm.repository.Repository;
+import sonia.scm.repository.RepositoryBrowser;
+import sonia.scm.repository.RepositoryException;
+import sonia.scm.repository.RepositoryHandler;
+import sonia.scm.repository.RepositoryHook;
+import sonia.scm.repository.RepositoryHookEvent;
+import sonia.scm.repository.RepositoryNotFoundException;
+
+//~--- JDK imports ------------------------------------------------------------
+
+import java.io.IOException;
+
+import java.util.Collection;
+import java.util.Comparator;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ *
+ * @author Sebastian Sdorra
+ */
+@Singleton
+public class JDBCRepositoryManager extends AbstractRepositoryManager
+{
+
+ /**
+ * Method description
+ *
+ *
+ * @throws IOException
+ */
+ @Override
+ public void close() throws IOException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param object
+ *
+ * @throws IOException
+ * @throws RepositoryException
+ */
+ @Override
+ public void create(Repository object) throws RepositoryException, IOException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param object
+ *
+ * @throws IOException
+ * @throws RepositoryException
+ */
+ @Override
+ public void delete(Repository object) throws RepositoryException, IOException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param type
+ * @param name
+ * @param event
+ *
+ * @throws RepositoryNotFoundException
+ */
+ @Override
+ public void fireHookEvent(String type, String name, RepositoryHookEvent event)
+ throws RepositoryNotFoundException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param id
+ * @param event
+ *
+ * @throws RepositoryNotFoundException
+ */
+ @Override
+ public void fireHookEvent(String id, RepositoryHookEvent event)
+ throws RepositoryNotFoundException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param repository
+ *
+ * @throws IOException
+ * @throws RepositoryException
+ */
+ @Override
+ public void importRepository(Repository repository)
+ throws IOException, RepositoryException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param context
+ */
+ @Override
+ public void init(SCMContextProvider context)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param object
+ *
+ * @throws IOException
+ * @throws RepositoryException
+ */
+ @Override
+ public void modify(Repository object) throws RepositoryException, IOException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param object
+ *
+ * @throws IOException
+ * @throws RepositoryException
+ */
+ @Override
+ public void refresh(Repository object) throws RepositoryException, IOException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ //~--- get methods ----------------------------------------------------------
+
+ /**
+ * Method description
+ *
+ *
+ * @param type
+ * @param name
+ *
+ * @return
+ */
+ @Override
+ public Repository get(String type, String name)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param id
+ *
+ * @return
+ */
+ @Override
+ public Repository get(String id)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @return
+ */
+ @Override
+ public Collection getAll()
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param comparator
+ *
+ * @return
+ */
+ @Override
+ public Collection getAll(Comparator comparator)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param start
+ * @param limit
+ *
+ * @return
+ */
+ @Override
+ public Collection getAll(int start, int limit)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param comparator
+ * @param start
+ * @param limit
+ *
+ * @return
+ */
+ @Override
+ public Collection getAll(Comparator comparator,
+ int start, int limit)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param repository
+ *
+ * @return
+ *
+ * @throws RepositoryException
+ */
+ @Override
+ public BlameViewer getBlameViewer(Repository repository)
+ throws RepositoryException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param repository
+ *
+ * @return
+ *
+ * @throws RepositoryException
+ */
+ @Override
+ public ChangesetViewer getChangesetViewer(Repository repository)
+ throws RepositoryException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @return
+ */
+ @Override
+ public Collection getConfiguredTypes()
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param repository
+ *
+ * @return
+ *
+ * @throws RepositoryException
+ */
+ @Override
+ public DiffViewer getDiffViewer(Repository repository)
+ throws RepositoryException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param request
+ *
+ * @return
+ */
+ @Override
+ public Repository getFromRequest(HttpServletRequest request)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param type
+ * @param uri
+ *
+ * @return
+ */
+ @Override
+ public Repository getFromTypeAndUri(String type, String uri)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param uri
+ *
+ * @return
+ */
+ @Override
+ public Repository getFromUri(String uri)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param type
+ *
+ * @return
+ */
+ @Override
+ public RepositoryHandler getHandler(String type)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @return
+ */
+ @Override
+ public Long getLastModified()
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param repository
+ *
+ * @return
+ *
+ * @throws RepositoryException
+ */
+ @Override
+ public RepositoryBrowser getRepositoryBrowser(Repository repository)
+ throws RepositoryException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @return
+ */
+ @Override
+ public Collection getTypes()
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ //~--- methods --------------------------------------------------------------
+
+ /**
+ * Method description
+ *
+ *
+ * @param hook
+ * @param event
+ */
+ @Override
+ protected void fireHookEvent(RepositoryHook hook, RepositoryHookEvent event)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+}
diff --git a/scm-backend-jdbc/src/main/java/sonia/scm/store/jdbc/JDBCStoreFactory.java b/scm-backend-jdbc/src/main/java/sonia/scm/store/jdbc/JDBCStoreFactory.java
new file mode 100644
index 0000000000..b95a9cc065
--- /dev/null
+++ b/scm-backend-jdbc/src/main/java/sonia/scm/store/jdbc/JDBCStoreFactory.java
@@ -0,0 +1,94 @@
+/**
+ * Copyright (c) 2010, Sebastian Sdorra All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer. 2. Redistributions in
+ * binary form must reproduce the above copyright notice, this list of
+ * conditions and the following disclaimer in the documentation and/or other
+ * materials provided with the distribution. 3. Neither the name of SCM-Manager;
+ * nor the names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * http://bitbucket.org/sdorra/scm-manager
+ *
+ */
+
+
+
+package sonia.scm.store.jdbc;
+
+//~--- non-JDK imports --------------------------------------------------------
+
+import com.google.inject.Singleton;
+import sonia.scm.SCMContextProvider;
+import sonia.scm.store.Store;
+import sonia.scm.store.StoreFactory;
+
+//~--- JDK imports ------------------------------------------------------------
+
+import java.io.IOException;
+
+/**
+ *
+ * @author Sebastian Sdorra
+ */
+@Singleton
+public class JDBCStoreFactory implements StoreFactory
+{
+
+ /**
+ * Method description
+ *
+ *
+ * @throws IOException
+ */
+ @Override
+ public void close() throws IOException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param context
+ */
+ @Override
+ public void init(SCMContextProvider context)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ //~--- get methods ----------------------------------------------------------
+
+ /**
+ * Method description
+ *
+ *
+ * @param type
+ * @param name
+ * @param
+ *
+ * @return
+ */
+ @Override
+ public Store getStore(Class type, String name)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+}
diff --git a/scm-backend-jdbc/src/main/java/sonia/scm/user/jdbc/JDBCUserManager.java b/scm-backend-jdbc/src/main/java/sonia/scm/user/jdbc/JDBCUserManager.java
new file mode 100644
index 0000000000..891baa054d
--- /dev/null
+++ b/scm-backend-jdbc/src/main/java/sonia/scm/user/jdbc/JDBCUserManager.java
@@ -0,0 +1,256 @@
+/**
+ * Copyright (c) 2010, Sebastian Sdorra All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer. 2. Redistributions in
+ * binary form must reproduce the above copyright notice, this list of
+ * conditions and the following disclaimer in the documentation and/or other
+ * materials provided with the distribution. 3. Neither the name of SCM-Manager;
+ * nor the names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * http://bitbucket.org/sdorra/scm-manager
+ *
+ */
+
+
+
+package sonia.scm.user.jdbc;
+
+//~--- non-JDK imports --------------------------------------------------------
+
+import com.google.inject.Singleton;
+
+import sonia.scm.SCMContextProvider;
+import sonia.scm.search.SearchRequest;
+import sonia.scm.user.AbstractUserManager;
+import sonia.scm.user.User;
+import sonia.scm.user.UserException;
+
+//~--- JDK imports ------------------------------------------------------------
+
+import java.io.IOException;
+
+import java.util.Collection;
+import java.util.Comparator;
+
+/**
+ *
+ * @author Sebastian Sdorra
+ */
+@Singleton
+public class JDBCUserManager extends AbstractUserManager
+{
+
+ /**
+ * Method description
+ *
+ *
+ * @throws IOException
+ */
+ @Override
+ public void close() throws IOException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param username
+ *
+ * @return
+ */
+ @Override
+ public boolean contains(String username)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param object
+ *
+ * @throws IOException
+ * @throws UserException
+ */
+ @Override
+ public void create(User object) throws UserException, IOException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param object
+ *
+ * @throws IOException
+ * @throws UserException
+ */
+ @Override
+ public void delete(User object) throws UserException, IOException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param context
+ */
+ @Override
+ public void init(SCMContextProvider context)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param object
+ *
+ * @throws IOException
+ * @throws UserException
+ */
+ @Override
+ public void modify(User object) throws UserException, IOException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param object
+ *
+ * @throws IOException
+ * @throws UserException
+ */
+ @Override
+ public void refresh(User object) throws UserException, IOException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param searchRequest
+ *
+ * @return
+ */
+ @Override
+ public Collection search(SearchRequest searchRequest)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ //~--- get methods ----------------------------------------------------------
+
+ /**
+ * Method description
+ *
+ *
+ * @param id
+ *
+ * @return
+ */
+ @Override
+ public User get(String id)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @return
+ */
+ @Override
+ public Collection getAll()
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param comparator
+ *
+ * @return
+ */
+ @Override
+ public Collection getAll(Comparator comparator)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param start
+ * @param limit
+ *
+ * @return
+ */
+ @Override
+ public Collection getAll(int start, int limit)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @param comparator
+ * @param start
+ * @param limit
+ *
+ * @return
+ */
+ @Override
+ public Collection getAll(Comparator comparator, int start,
+ int limit)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ /**
+ * Method description
+ *
+ *
+ * @return
+ */
+ @Override
+ public Long getLastModified()
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+}
diff --git a/scm-backend-jdbc/src/main/resources/META-INF/scm/override.xml b/scm-backend-jdbc/src/main/resources/META-INF/scm/override.xml
new file mode 100644
index 0000000000..be0ec525b7
--- /dev/null
+++ b/scm-backend-jdbc/src/main/resources/META-INF/scm/override.xml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+ sonia.scm.user.UserManager
+ sonia.scm.user.jdbc.JDBCUserManager
+
+
+
+ sonia.scm.group.GroupManager
+ sonia.scm.group.jdbc.JDBCGroupManager
+
+
+
+ sonia.scm.repository.RepositoryManager
+ sonia.scm.repository.jdbc.JDBCRepositoryManager
+
+
+
+ sonia.scm.store.StoreFactory
+ sonia.scm.store.jdbc.JDBCStoreFactory
+
+
+
diff --git a/scm-backend-xml/pom.xml b/scm-backend-xml/pom.xml
index 31b75d162f..d23af05152 100644
--- a/scm-backend-xml/pom.xml
+++ b/scm-backend-xml/pom.xml
@@ -39,7 +39,6 @@
test
-