diff --git a/maven/pom.xml b/maven/pom.xml index 5a802c3e9b..10bf3a97cc 100644 --- a/maven/pom.xml +++ b/maven/pom.xml @@ -6,13 +6,13 @@ sonia.scm scm - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.maven scm-maven-plugins pom - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT scm-maven-plugins @@ -24,7 +24,7 @@ sonia.scm scm-core - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT diff --git a/maven/scm-plugin-archetype/pom.xml b/maven/scm-plugin-archetype/pom.xml index 21c440dc97..1b91f0b137 100644 --- a/maven/scm-plugin-archetype/pom.xml +++ b/maven/scm-plugin-archetype/pom.xml @@ -7,12 +7,12 @@ scm-maven-plugins sonia.scm.maven - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.maven scm-plugin-archetype - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT scm-plugin-archetype diff --git a/maven/scm-plugin-archetype/src/main/resources/archetype-resources/pom.xml b/maven/scm-plugin-archetype/src/main/resources/archetype-resources/pom.xml index 97f5e991f8..edeb3f16d4 100644 --- a/maven/scm-plugin-archetype/src/main/resources/archetype-resources/pom.xml +++ b/maven/scm-plugin-archetype/src/main/resources/archetype-resources/pom.xml @@ -7,7 +7,7 @@ scm-plugins sonia.scm.plugins - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT ${groupId} @@ -31,7 +31,7 @@ sonia.scm scm-test - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT test diff --git a/plugins/pom.xml b/plugins/pom.xml index b633839dcb..3062665774 100644 --- a/plugins/pom.xml +++ b/plugins/pom.xml @@ -6,13 +6,13 @@ sonia.scm scm - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.plugins scm-plugins pom - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT scm-plugins @@ -31,7 +31,7 @@ sonia.scm scm-core - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT diff --git a/plugins/scm-activedirectory-auth-plugin/pom.xml b/plugins/scm-activedirectory-auth-plugin/pom.xml index f7cd9227c9..cebd3b1226 100644 --- a/plugins/scm-activedirectory-auth-plugin/pom.xml +++ b/plugins/scm-activedirectory-auth-plugin/pom.xml @@ -7,12 +7,12 @@ scm-plugins sonia.scm.plugins - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.plugins scm-activedirectory-auth-plugin - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT scm-activedirectory-auth-plugin https://bitbucket.org/sdorra/scm-manager @@ -32,7 +32,7 @@ sonia.scm scm-core - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT diff --git a/plugins/scm-auth-ldap-plugin/pom.xml b/plugins/scm-auth-ldap-plugin/pom.xml index 65e4420914..a87456d8cd 100644 --- a/plugins/scm-auth-ldap-plugin/pom.xml +++ b/plugins/scm-auth-ldap-plugin/pom.xml @@ -6,13 +6,13 @@ scm-plugins sonia.scm.plugins - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.plugins scm-auth-ldap-plugin jar - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT ${project.artifactId} plugin description @@ -30,7 +30,7 @@ sonia.scm scm-test - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT test diff --git a/plugins/scm-bzr-plugin/pom.xml b/plugins/scm-bzr-plugin/pom.xml index d8d6b7dd76..1969825f3f 100644 --- a/plugins/scm-bzr-plugin/pom.xml +++ b/plugins/scm-bzr-plugin/pom.xml @@ -7,12 +7,12 @@ scm-plugins sonia.scm.plugins - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.plugins scm-bzr-plugin - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT scm-bzr-plugin https://bitbucket.org/sdorra/scm-manager Plugin for the version control system Bazaar diff --git a/plugins/scm-bzr-plugin/src/main/java/sonia/scm/repository/BzrRepositoryHandler.java b/plugins/scm-bzr-plugin/src/main/java/sonia/scm/repository/BzrRepositoryHandler.java index 2a3bca6ce3..23c53a745c 100644 --- a/plugins/scm-bzr-plugin/src/main/java/sonia/scm/repository/BzrRepositoryHandler.java +++ b/plugins/scm-bzr-plugin/src/main/java/sonia/scm/repository/BzrRepositoryHandler.java @@ -41,6 +41,7 @@ import com.google.inject.Singleton; import sonia.scm.Type; import sonia.scm.io.ExtendedCommand; +import sonia.scm.io.FileSystem; import sonia.scm.plugin.ext.Extension; import sonia.scm.store.StoreFactory; import sonia.scm.util.SecurityUtil; @@ -79,14 +80,15 @@ public class BzrRepositoryHandler * * * @param storeFactory + * @param fileSystem * @param securityContextProvider */ @Inject public BzrRepositoryHandler( - StoreFactory storeFactory, + StoreFactory storeFactory, FileSystem fileSystem, Provider securityContextProvider) { - super(storeFactory); + super(storeFactory, fileSystem); this.securityContextProvider = securityContextProvider; } diff --git a/plugins/scm-git-plugin/pom.xml b/plugins/scm-git-plugin/pom.xml index 6aa87c9280..bafc8c2b56 100644 --- a/plugins/scm-git-plugin/pom.xml +++ b/plugins/scm-git-plugin/pom.xml @@ -7,12 +7,12 @@ scm-plugins sonia.scm.plugins - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.plugins scm-git-plugin - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT scm-git-plugin https://bitbucket.org/sdorra/scm-manager Plugin for the version control system Git @@ -50,7 +50,7 @@ sonia.scm scm-test - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT test diff --git a/plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitRepositoryHandler.java b/plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitRepositoryHandler.java index 8a91f50b24..2a21f3b7de 100644 --- a/plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitRepositoryHandler.java +++ b/plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitRepositoryHandler.java @@ -41,6 +41,7 @@ import com.google.inject.Singleton; import org.eclipse.jgit.storage.file.FileRepositoryBuilder; import sonia.scm.Type; +import sonia.scm.io.FileSystem; import sonia.scm.plugin.ext.Extension; import sonia.scm.store.StoreFactory; @@ -75,11 +76,12 @@ public class GitRepositoryHandler * * * @param storeFactory + * @param fileSystem */ @Inject - public GitRepositoryHandler(StoreFactory storeFactory) + public GitRepositoryHandler(StoreFactory storeFactory, FileSystem fileSystem) { - super(storeFactory); + super(storeFactory, fileSystem); } //~--- get methods ---------------------------------------------------------- diff --git a/plugins/scm-git-plugin/src/test/java/sonia/scm/repository/GitRepositoryHandlerTest.java b/plugins/scm-git-plugin/src/test/java/sonia/scm/repository/GitRepositoryHandlerTest.java index 534ed94f07..eb9646ffe8 100644 --- a/plugins/scm-git-plugin/src/test/java/sonia/scm/repository/GitRepositoryHandlerTest.java +++ b/plugins/scm-git-plugin/src/test/java/sonia/scm/repository/GitRepositoryHandlerTest.java @@ -35,6 +35,7 @@ package sonia.scm.repository; //~--- non-JDK imports -------------------------------------------------------- +import sonia.scm.io.DefaultFileSystem; import sonia.scm.store.StoreFactory; import static org.junit.Assert.*; @@ -88,7 +89,8 @@ public class GitRepositoryHandlerTest extends SimpleRepositoryHandlerTestBase protected RepositoryHandler createRepositoryHandler(StoreFactory factory, File directory) { - GitRepositoryHandler repositoryHandler = new GitRepositoryHandler(factory); + GitRepositoryHandler repositoryHandler = new GitRepositoryHandler(factory, + new DefaultFileSystem()); repositoryHandler.init(contextProvider); diff --git a/plugins/scm-graph-plugin/pom.xml b/plugins/scm-graph-plugin/pom.xml index 352544b356..98308b314d 100644 --- a/plugins/scm-graph-plugin/pom.xml +++ b/plugins/scm-graph-plugin/pom.xml @@ -7,12 +7,12 @@ scm-plugins sonia.scm.plugins - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.plugins scm-graph-plugin - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT scm-graph-plugin Creates an Google Guice injection graph https://bitbucket.org/sdorra/scm-manager diff --git a/plugins/scm-hg-plugin/pom.xml b/plugins/scm-hg-plugin/pom.xml index f573a55056..cb5d7278ce 100644 --- a/plugins/scm-hg-plugin/pom.xml +++ b/plugins/scm-hg-plugin/pom.xml @@ -7,12 +7,12 @@ sonia.scm.plugins scm-plugins - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.plugins scm-hg-plugin - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT scm-hg-plugin https://bitbucket.org/sdorra/scm-manager Plugin for the version control system Mercurial @@ -37,7 +37,7 @@ sonia.scm scm-test - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT test diff --git a/plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryHandler.java b/plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryHandler.java index aebaabdaf7..a71278c9fc 100644 --- a/plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryHandler.java +++ b/plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryHandler.java @@ -57,6 +57,7 @@ import sonia.scm.web.HgWebConfigWriter; import java.io.File; import java.io.IOException; +import sonia.scm.io.FileSystem; /** * @@ -90,9 +91,9 @@ public class HgRepositoryHandler * @param storeFactory */ @Inject - public HgRepositoryHandler(StoreFactory storeFactory) + public HgRepositoryHandler(StoreFactory storeFactory, FileSystem fileSystem) { - super(storeFactory); + super(storeFactory, fileSystem); } //~--- methods -------------------------------------------------------------- diff --git a/plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/HgRepositoryHandlerTest.java b/plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/HgRepositoryHandlerTest.java index a233b30353..cb3ed09d74 100644 --- a/plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/HgRepositoryHandlerTest.java +++ b/plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/HgRepositoryHandlerTest.java @@ -35,6 +35,7 @@ package sonia.scm.repository; //~--- non-JDK imports -------------------------------------------------------- +import sonia.scm.io.DefaultFileSystem; import sonia.scm.store.StoreFactory; import sonia.scm.util.Util; @@ -86,7 +87,8 @@ public class HgRepositoryHandlerTest extends SimpleRepositoryHandlerTestBase protected RepositoryHandler createRepositoryHandler(StoreFactory factory, File directory) { - HgRepositoryHandler handler = new HgRepositoryHandler(factory); + HgRepositoryHandler handler = new HgRepositoryHandler(factory, + new DefaultFileSystem()); handler.init(contextProvider); handler.getConfig().setRepositoryDirectory(directory); diff --git a/plugins/scm-pam-plugin/pom.xml b/plugins/scm-pam-plugin/pom.xml index 62d1dd1470..59a0020fdd 100644 --- a/plugins/scm-pam-plugin/pom.xml +++ b/plugins/scm-pam-plugin/pom.xml @@ -7,12 +7,12 @@ scm-plugins sonia.scm.plugins - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.plugins scm-pam-plugin - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT scm-pam-plugin https://bitbucket.org/sdorra/scm-manager Using pam as an authentication handler. diff --git a/plugins/scm-svn-plugin/pom.xml b/plugins/scm-svn-plugin/pom.xml index b96cf290cb..5e18860803 100644 --- a/plugins/scm-svn-plugin/pom.xml +++ b/plugins/scm-svn-plugin/pom.xml @@ -7,12 +7,12 @@ scm-plugins sonia.scm.plugins - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.plugins scm-svn-plugin - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT scm-svn-plugin https://bitbucket.org/sdorra/scm-manager Plugin for the version control system Subversion @@ -47,7 +47,7 @@ sonia.scm scm-test - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT test diff --git a/plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/SvnRepositoryHandler.java b/plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/SvnRepositoryHandler.java index 4afbce9bac..4198310eec 100644 --- a/plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/SvnRepositoryHandler.java +++ b/plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/SvnRepositoryHandler.java @@ -42,6 +42,7 @@ import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.io.SVNRepositoryFactory; import sonia.scm.Type; +import sonia.scm.io.FileSystem; import sonia.scm.plugin.ext.Extension; import sonia.scm.store.StoreFactory; @@ -76,11 +77,12 @@ public class SvnRepositoryHandler * * * @param storeFactory + * @param fileSystem */ @Inject - public SvnRepositoryHandler(StoreFactory storeFactory) + public SvnRepositoryHandler(StoreFactory storeFactory, FileSystem fileSystem) { - super(storeFactory); + super(storeFactory, fileSystem); } //~--- get methods ---------------------------------------------------------- diff --git a/plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/SvnRepositoryHandlerTest.java b/plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/SvnRepositoryHandlerTest.java index 41dcbe403a..ab26da171f 100644 --- a/plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/SvnRepositoryHandlerTest.java +++ b/plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/SvnRepositoryHandlerTest.java @@ -35,6 +35,7 @@ package sonia.scm.repository; //~--- non-JDK imports -------------------------------------------------------- +import sonia.scm.io.DefaultFileSystem; import sonia.scm.store.StoreFactory; import static org.junit.Assert.*; @@ -83,7 +84,8 @@ public class SvnRepositoryHandlerTest extends SimpleRepositoryHandlerTestBase protected RepositoryHandler createRepositoryHandler(StoreFactory factory, File directory) { - SvnRepositoryHandler handler = new SvnRepositoryHandler(factory); + SvnRepositoryHandler handler = new SvnRepositoryHandler(factory, + new DefaultFileSystem()); handler.init(contextProvider); diff --git a/pom.xml b/pom.xml index 43aa695f6e..dc4bbb6dc0 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ sonia.scm scm pom - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT The easiest way to share your Git, Mercurial and Subversion repositories over http. diff --git a/samples/pom.xml b/samples/pom.xml index 59ba3607d3..598d7e3cbb 100644 --- a/samples/pom.xml +++ b/samples/pom.xml @@ -6,13 +6,13 @@ sonia.scm scm - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.samples scm-samples pom - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT scm-samples diff --git a/samples/scm-sample-auth/pom.xml b/samples/scm-sample-auth/pom.xml index 2ec3b8fdc8..6b2f8233fb 100644 --- a/samples/scm-sample-auth/pom.xml +++ b/samples/scm-sample-auth/pom.xml @@ -7,12 +7,12 @@ scm-samples sonia.scm.samples - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.sample scm-sample-auth - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT scm-sample-auth Sample Authentication Plugin https://bitbucket.org/sdorra/scm-manager @@ -29,7 +29,7 @@ sonia.scm scm-core - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT diff --git a/samples/scm-sample-hello/pom.xml b/samples/scm-sample-hello/pom.xml index 9e4415ab2f..fa6231636e 100644 --- a/samples/scm-sample-hello/pom.xml +++ b/samples/scm-sample-hello/pom.xml @@ -7,12 +7,12 @@ scm-samples sonia.scm.samples - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.sample scm-sample-hello - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT scm-sample-hello A simple hello world plugin https://bitbucket.org/sdorra/scm-manager @@ -29,7 +29,7 @@ sonia.scm scm-core - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT diff --git a/scm-core/pom.xml b/scm-core/pom.xml index 402fe938e5..0c2a6a7e6b 100644 --- a/scm-core/pom.xml +++ b/scm-core/pom.xml @@ -7,12 +7,12 @@ scm sonia.scm - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm scm-core - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT scm-core diff --git a/scm-core/src/main/java/sonia/scm/io/DefaultFileSystem.java b/scm-core/src/main/java/sonia/scm/io/DefaultFileSystem.java new file mode 100644 index 0000000000..24f702b7d6 --- /dev/null +++ b/scm-core/src/main/java/sonia/scm/io/DefaultFileSystem.java @@ -0,0 +1,98 @@ +/** + * 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.io; + +//~--- non-JDK imports -------------------------------------------------------- + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import sonia.scm.util.IOUtil; + +//~--- JDK imports ------------------------------------------------------------ + +import java.io.File; +import java.io.IOException; + +/** + * + * @author Sebastian Sdorra + */ +public class DefaultFileSystem implements FileSystem +{ + + /** the logger for DefaultFileSystem */ + private static final Logger logger = + LoggerFactory.getLogger(DefaultFileSystem.class); + + //~--- methods -------------------------------------------------------------- + + /** + * Method description + * + * + * @param directory + * + * @throws IOException + */ + @Override + public void create(File directory) throws IOException + { + if (logger.isInfoEnabled()) + { + logger.info("create directory {}", directory.getPath()); + } + + IOUtil.mkdirs(directory); + } + + /** + * Method description + * + * + * @param directory + * + * @throws IOException + */ + @Override + public void destroy(File directory) throws IOException + { + if (logger.isInfoEnabled()) + { + logger.info("destroy directory {}", directory.getPath()); + } + + IOUtil.delete(directory); + } +} diff --git a/scm-core/src/main/java/sonia/scm/io/FileSystem.java b/scm-core/src/main/java/sonia/scm/io/FileSystem.java new file mode 100644 index 0000000000..39c366a512 --- /dev/null +++ b/scm-core/src/main/java/sonia/scm/io/FileSystem.java @@ -0,0 +1,74 @@ +/** + * 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.io; + +//~--- non-JDK imports -------------------------------------------------------- + +import sonia.scm.plugin.ExtensionPoint; + +//~--- JDK imports ------------------------------------------------------------ + +import java.io.File; +import java.io.IOException; + +/** + * + * @author Sebastian Sdorra + */ +@ExtensionPoint +public interface FileSystem +{ + + /** + * Method description + * + * + * + * @param directory + * + * @throws IOException + */ + public void create(File directory) throws IOException; + + /** + * Method description + * + * + * + * @param directory + * + * @throws IOException + */ + public void destroy(File directory) throws IOException; +} diff --git a/scm-core/src/main/java/sonia/scm/plugin/PluginVersion.java b/scm-core/src/main/java/sonia/scm/plugin/PluginVersion.java index 4100aa5f90..78d81e24c7 100644 --- a/scm-core/src/main/java/sonia/scm/plugin/PluginVersion.java +++ b/scm-core/src/main/java/sonia/scm/plugin/PluginVersion.java @@ -176,6 +176,97 @@ public class PluginVersion implements Comparable return result; } + /** + * Method description + * + * + * @param obj + * + * @return + */ + @Override + public boolean equals(Object obj) + { + if (obj == null) + { + return false; + } + + if (getClass() != obj.getClass()) + { + return false; + } + + final PluginVersion other = (PluginVersion) obj; + + if (this.maintenance != other.maintenance) + { + return false; + } + + if (this.major != other.major) + { + return false; + } + + if (this.minor != other.minor) + { + return false; + } + + if ((this.parsedVersion == null) + ? (other.parsedVersion != null) + : !this.parsedVersion.equals(other.parsedVersion)) + { + return false; + } + + if (this.snapshot != other.snapshot) + { + return false; + } + + if (this.type != other.type) + { + return false; + } + + if (this.typeVersion != other.typeVersion) + { + return false; + } + + return true; + } + + /** + * Method description + * + * + * @return + */ + @Override + public int hashCode() + { + int hash = 5; + + hash = 61 * hash + this.maintenance; + hash = 61 * hash + this.major; + hash = 61 * hash + this.minor; + hash = 61 * hash + ((this.parsedVersion != null) + ? this.parsedVersion.hashCode() + : 0); + hash = 61 * hash + (this.snapshot + ? 1 + : 0); + hash = 61 * hash + ((this.type != null) + ? this.type.hashCode() + : 0); + hash = 61 * hash + this.typeVersion; + + return hash; + } + /** * Method description * diff --git a/scm-core/src/main/java/sonia/scm/repository/AbstractSimpleRepositoryHandler.java b/scm-core/src/main/java/sonia/scm/repository/AbstractSimpleRepositoryHandler.java index 410d16ac33..9feabcbc84 100644 --- a/scm-core/src/main/java/sonia/scm/repository/AbstractSimpleRepositoryHandler.java +++ b/scm-core/src/main/java/sonia/scm/repository/AbstractSimpleRepositoryHandler.java @@ -39,9 +39,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sonia.scm.ConfigurationException; -import sonia.scm.SCMContextProvider; import sonia.scm.io.CommandResult; import sonia.scm.io.ExtendedCommand; +import sonia.scm.io.FileSystem; import sonia.scm.store.StoreFactory; import sonia.scm.util.IOUtil; @@ -75,10 +75,13 @@ public abstract class AbstractSimpleRepositoryHandler= pt.getValue())) + if (((name != null) && (p.getType().getValue() >= pt.getValue())) + && (name.equals(username) + || (p.isGroupPermission() && groups.contains(p.getName())))) { - if (name.equals(username) - || (p.isGroupPermission() && groups.contains(p.getName()))) - { - result = true; + result = true; - break; - } + break; } } diff --git a/scm-core/src/main/java/sonia/scm/resources/ResourceHandlerComparator.java b/scm-core/src/main/java/sonia/scm/resources/ResourceHandlerComparator.java index d1e30f0780..c818eb6c73 100644 --- a/scm-core/src/main/java/sonia/scm/resources/ResourceHandlerComparator.java +++ b/scm-core/src/main/java/sonia/scm/resources/ResourceHandlerComparator.java @@ -39,15 +39,23 @@ import sonia.scm.util.Util; //~--- JDK imports ------------------------------------------------------------ +import java.io.Serializable; + import java.util.Comparator; /** * * @author Sebastian Sdorra */ -public class ResourceHandlerComparator implements Comparator +public class ResourceHandlerComparator + implements Comparator, Serializable { + /** Field description */ + private static final long serialVersionUID = -1760229246326556762L; + + //~--- methods -------------------------------------------------------------- + /** * Method description * diff --git a/scm-core/src/main/java/sonia/scm/util/IOUtil.java b/scm-core/src/main/java/sonia/scm/util/IOUtil.java index 5805d8c9e4..9c9afa55bb 100644 --- a/scm-core/src/main/java/sonia/scm/util/IOUtil.java +++ b/scm-core/src/main/java/sonia/scm/util/IOUtil.java @@ -66,10 +66,10 @@ public class IOUtil { /** Field description */ - public static final String DEFAULT_CHECKPARAMETER = "--version"; + private static final String DEFAULT_CHECKPARAMETER = "--version"; /** Field description */ - public static final String[] DEFAULT_PATH = new String[] + private static final String[] DEFAULT_PATH = new String[] { // default path @@ -336,7 +336,13 @@ public class IOUtil cmdPath = cmd; } } - catch (IOException ex) {} + catch (IOException ex) + { + if (logger.isTraceEnabled()) + { + logger.trace("could not execute command", ex); + } + } if (cmdPath == null) { diff --git a/scm-core/src/main/java/sonia/scm/web/cgi/CGIRunner.java b/scm-core/src/main/java/sonia/scm/web/cgi/CGIRunner.java index 9aabdf7a85..3a113fda7e 100644 --- a/scm-core/src/main/java/sonia/scm/web/cgi/CGIRunner.java +++ b/scm-core/src/main/java/sonia/scm/web/cgi/CGIRunner.java @@ -47,9 +47,7 @@ import sonia.scm.util.Util; import java.io.File; import java.io.IOException; import java.io.InputStream; -import java.io.InputStreamReader; import java.io.OutputStream; -import java.io.OutputStreamWriter; import java.util.Enumeration; diff --git a/scm-server-api/pom.xml b/scm-server-api/pom.xml index 11a997ae89..fdc01269f4 100644 --- a/scm-server-api/pom.xml +++ b/scm-server-api/pom.xml @@ -7,12 +7,12 @@ scm sonia.scm - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm scm-server-api - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT scm-server-api diff --git a/scm-server-jetty/pom.xml b/scm-server-jetty/pom.xml index f5afddbc99..d45a8ff001 100644 --- a/scm-server-jetty/pom.xml +++ b/scm-server-jetty/pom.xml @@ -7,12 +7,12 @@ scm sonia.scm - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm scm-server-jetty - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT scm-server-jetty @@ -20,7 +20,7 @@ sonia.scm scm-server-api - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT diff --git a/scm-server/pom.xml b/scm-server/pom.xml index 45fa99d4ca..ad247a833f 100644 --- a/scm-server/pom.xml +++ b/scm-server/pom.xml @@ -7,12 +7,12 @@ scm sonia.scm - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm scm-server - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT scm-server pom @@ -21,13 +21,13 @@ sonia.scm scm-server-api - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm scm-server-jetty - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT diff --git a/scm-test/pom.xml b/scm-test/pom.xml index cb58d9fe39..12e562c1a2 100644 --- a/scm-test/pom.xml +++ b/scm-test/pom.xml @@ -7,12 +7,12 @@ scm sonia.scm - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm scm-test - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT scm-test @@ -26,7 +26,7 @@ sonia.scm scm-core - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT diff --git a/scm-test/src/main/java/sonia/scm/repository/DummyRepositoryHandler.java b/scm-test/src/main/java/sonia/scm/repository/DummyRepositoryHandler.java index fa27959341..34632e370f 100644 --- a/scm-test/src/main/java/sonia/scm/repository/DummyRepositoryHandler.java +++ b/scm-test/src/main/java/sonia/scm/repository/DummyRepositoryHandler.java @@ -36,6 +36,7 @@ package sonia.scm.repository; //~--- non-JDK imports -------------------------------------------------------- import sonia.scm.Type; +import sonia.scm.io.DefaultFileSystem; import sonia.scm.store.StoreFactory; //~--- JDK imports ------------------------------------------------------------ @@ -70,7 +71,7 @@ public class DummyRepositoryHandler */ public DummyRepositoryHandler(StoreFactory storeFactory) { - super(storeFactory); + super(storeFactory, new DefaultFileSystem()); } //~--- get methods ---------------------------------------------------------- diff --git a/scm-webapp/pom.xml b/scm-webapp/pom.xml index 7532bcff81..f1668f8746 100644 --- a/scm-webapp/pom.xml +++ b/scm-webapp/pom.xml @@ -7,13 +7,13 @@ sonia.scm scm - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm scm-webapp war - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT scm-webapp @@ -28,25 +28,25 @@ sonia.scm scm-core - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.plugins scm-hg-plugin - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.plugins scm-svn-plugin - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.plugins scm-git-plugin - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT @@ -86,7 +86,7 @@ ch.qos.logback logback-classic - 0.9.27 + 0.9.28 @@ -164,7 +164,7 @@ sonia.scm scm-test - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT test @@ -287,43 +287,43 @@ sonia.scm.plugins scm-graph-plugin - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.sample scm-sample-auth - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.sample scm-sample-hello - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.plugins scm-activedirectory-auth-plugin - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.plugins scm-pam-plugin - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.plugins scm-bzr-plugin - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.plugins scm-auth-ldap-plugin - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT diff --git a/scm-webapp/src/main/java/sonia/scm/BindingExtensionProcessor.java b/scm-webapp/src/main/java/sonia/scm/BindingExtensionProcessor.java index fe9fcc8988..e702940776 100644 --- a/scm-webapp/src/main/java/sonia/scm/BindingExtensionProcessor.java +++ b/scm-webapp/src/main/java/sonia/scm/BindingExtensionProcessor.java @@ -43,6 +43,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sonia.scm.group.GroupListener; +import sonia.scm.io.FileSystem; import sonia.scm.plugin.ext.Extension; import sonia.scm.plugin.ext.ExtensionProcessor; import sonia.scm.repository.RepositoryHandler; @@ -188,6 +189,15 @@ public class BindingExtensionProcessor implements ExtensionProcessor resourceHandler.addBinding().to(extensionClass); } + else if (FileSystem.class.isAssignableFrom(extensionClass)) + { + if (logger.isInfoEnabled()) + { + logger.info("bind FileSystem {}", extensionClass.getName()); + } + + fileSystemClass = extensionClass; + } else { if (logger.isInfoEnabled()) @@ -198,7 +208,11 @@ public class BindingExtensionProcessor implements ExtensionProcessor binder.bind(extensionClass); } } - catch (Exception ex) + catch (IllegalAccessException ex) + { + logger.error(ex.getMessage(), ex); + } + catch (InstantiationException ex) { logger.error(ex.getMessage(), ex); } @@ -243,6 +257,17 @@ public class BindingExtensionProcessor implements ExtensionProcessor return authenticationListeners; } + /** + * Method description + * + * + * @return + */ + public Class getFileSystemClass() + { + return fileSystemClass; + } + /** * Method description * @@ -337,6 +362,9 @@ public class BindingExtensionProcessor implements ExtensionProcessor /** Field description */ private Set> extensions; + /** Field description */ + private Class fileSystemClass; + /** Field description */ private Set moduleSet; diff --git a/scm-webapp/src/main/java/sonia/scm/ScmServletModule.java b/scm-webapp/src/main/java/sonia/scm/ScmServletModule.java index 8b8845ae77..0be05e5821 100644 --- a/scm-webapp/src/main/java/sonia/scm/ScmServletModule.java +++ b/scm-webapp/src/main/java/sonia/scm/ScmServletModule.java @@ -49,6 +49,8 @@ import sonia.scm.filter.SSLFilter; import sonia.scm.filter.SecurityFilter; import sonia.scm.group.GroupManager; import sonia.scm.group.xml.XmlGroupManager; +import sonia.scm.io.DefaultFileSystem; +import sonia.scm.io.FileSystem; import sonia.scm.plugin.DefaultPluginManager; import sonia.scm.plugin.Plugin; import sonia.scm.plugin.PluginLoader; @@ -175,6 +177,16 @@ public class ScmServletModule extends ServletModule bind(EncryptionHandler.class).to(MessageDigestEncryptionHandler.class); bindExtProcessor.bindExtensions(binder()); + Class fileSystem = + bindExtProcessor.getFileSystemClass(); + + if (fileSystem == null) + { + fileSystem = DefaultFileSystem.class; + } + + bind(FileSystem.class).to(fileSystem); + // bind security stuff bind(AuthenticationManager.class).to(ChainAuthenticatonManager.class); bind(SecurityContext.class).to(BasicSecurityContext.class); diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AuthenticationResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AuthenticationResource.java index 3fc33f20c7..fe1eb95dc7 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AuthenticationResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AuthenticationResource.java @@ -43,7 +43,6 @@ import org.slf4j.LoggerFactory; import sonia.scm.SCMContext; import sonia.scm.ScmState; -import sonia.scm.Type; import sonia.scm.repository.RepositoryManager; import sonia.scm.user.User; import sonia.scm.web.security.WebSecurityContext; diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/PluginResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/PluginResource.java index 9e9badb373..f021f1b057 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/PluginResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/PluginResource.java @@ -41,7 +41,6 @@ import com.google.inject.Singleton; import sonia.scm.plugin.DefaultPluginManager; import sonia.scm.plugin.OverviewPluginFilter; import sonia.scm.plugin.PluginInformation; -import sonia.scm.util.Util; //~--- JDK imports ------------------------------------------------------------ diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/RepositoryResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/RepositoryResource.java index 10f2356df8..923102bd44 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/RepositoryResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/RepositoryResource.java @@ -36,24 +36,29 @@ package sonia.scm.api.rest.resources; //~--- non-JDK imports -------------------------------------------------------- import com.google.inject.Inject; +import com.google.inject.Provider; import com.google.inject.Singleton; import sonia.scm.config.ScmConfiguration; +import sonia.scm.repository.Permission; +import sonia.scm.repository.PermissionType; +import sonia.scm.repository.PermissionUtil; import sonia.scm.repository.Repository; import sonia.scm.repository.RepositoryException; import sonia.scm.repository.RepositoryHandler; import sonia.scm.repository.RepositoryManager; +import sonia.scm.web.security.WebSecurityContext; //~--- JDK imports ------------------------------------------------------------ import java.io.IOException; +import java.util.ArrayList; import java.util.Collection; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.Path; -import javax.ws.rs.core.Context; /** * @@ -75,13 +80,19 @@ public class RepositoryResource extends AbstractResource * * @param configuration * @param repositoryManager + * @param securityContextProvider + * @param requestProvider */ @Inject - public RepositoryResource(ScmConfiguration configuration, - RepositoryManager repositoryManager) + public RepositoryResource( + ScmConfiguration configuration, RepositoryManager repositoryManager, + Provider securityContextProvider, + Provider requestProvider) { this.configuration = configuration; this.repositoryManager = repositoryManager; + this.securityContextProvider = securityContextProvider; + this.requestProvider = requestProvider; } //~--- methods -------------------------------------------------------------- @@ -151,6 +162,7 @@ public class RepositoryResource extends AbstractResource for (Repository repository : repositories) { appendUrl(repository); + prepareRepository(repository); } return repositories; @@ -185,6 +197,7 @@ public class RepositoryResource extends AbstractResource Repository repository = repositoryManager.get(id); appendUrl(repository); + prepareRepository(repository); return repository; } @@ -216,6 +229,7 @@ public class RepositoryResource extends AbstractResource if (handler != null) { + HttpServletRequest request = requestProvider.get(); StringBuilder url = new StringBuilder(request.getScheme()); url.append("://").append(configuration.getServername()); @@ -234,6 +248,43 @@ public class RepositoryResource extends AbstractResource } } + /** + * Method description + * + * + * @param repository + */ + private void prepareRepository(Repository repository) + { + if (isOwner(repository)) + { + if (repository.getPermissions() == null) + { + repository.setPermissions(new ArrayList()); + } + } + else + { + repository.setPermissions(null); + } + } + + //~--- get methods ---------------------------------------------------------- + + /** + * Method description + * + * + * @param repository + * + * @return + */ + private boolean isOwner(Repository repository) + { + return PermissionUtil.hasPermission(repository, securityContextProvider, + PermissionType.OWNER); + } + //~--- fields --------------------------------------------------------------- /** Field description */ @@ -242,7 +293,9 @@ public class RepositoryResource extends AbstractResource /** Field description */ private RepositoryManager repositoryManager; - /** TODO path request direct to method */ - @Context - private HttpServletRequest request; + /** Field description */ + private Provider requestProvider; + + /** Field description */ + private Provider securityContextProvider; } diff --git a/scm-webapp/src/main/java/sonia/scm/filter/GZipResponseWrapper.java b/scm-webapp/src/main/java/sonia/scm/filter/GZipResponseWrapper.java index f42d25ff17..8c1878a8c3 100644 --- a/scm-webapp/src/main/java/sonia/scm/filter/GZipResponseWrapper.java +++ b/scm-webapp/src/main/java/sonia/scm/filter/GZipResponseWrapper.java @@ -91,7 +91,10 @@ public class GZipResponseWrapper extends HttpServletResponseWrapper @Override public void flushBuffer() throws IOException { - stream.flush(); + if (stream != null) + { + stream.flush(); + } } //~--- get methods ---------------------------------------------------------- diff --git a/scm-webapp/src/main/java/sonia/scm/group/xml/XmlGroupManager.java b/scm-webapp/src/main/java/sonia/scm/group/xml/XmlGroupManager.java index 9a6a747e12..f83b69a03c 100644 --- a/scm-webapp/src/main/java/sonia/scm/group/xml/XmlGroupManager.java +++ b/scm-webapp/src/main/java/sonia/scm/group/xml/XmlGroupManager.java @@ -60,7 +60,6 @@ import java.io.IOException; import java.util.Collection; import java.util.LinkedList; -import java.util.Set; /** * diff --git a/scm-webapp/src/main/java/sonia/scm/plugin/AetherPluginHandler.java b/scm-webapp/src/main/java/sonia/scm/plugin/AetherPluginHandler.java index fb54acdc3b..a30e5f64ec 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/AetherPluginHandler.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/AetherPluginHandler.java @@ -167,8 +167,6 @@ public class AetherPluginHandler List dependencies = getInstalledDependencies(null); collectDependencies(dependency, dependencies); - - } /** @@ -364,13 +362,10 @@ public class AetherPluginHandler { String id = plugin.getId(); - if ((skipId == null) ||!id.equals(skipId)) + if (Util.isNotEmpty(id) && ((skipId == null) ||!id.equals(skipId))) { - if (Util.isNotEmpty(id)) - { - dependencies.add(new Dependency(new DefaultArtifact(id), - PLUGIN_SCOPE)); - } + dependencies.add(new Dependency(new DefaultArtifact(id), + PLUGIN_SCOPE)); } } } diff --git a/scm-webapp/src/main/java/sonia/scm/plugin/OverviewPluginFilter.java b/scm-webapp/src/main/java/sonia/scm/plugin/OverviewPluginFilter.java index 7b3aded4c3..bd9c8d9732 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/OverviewPluginFilter.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/OverviewPluginFilter.java @@ -41,7 +41,8 @@ public class OverviewPluginFilter implements PluginFilter { /** Field description */ - public static OverviewPluginFilter INSTANCE = new OverviewPluginFilter(); + public static final OverviewPluginFilter INSTANCE = + new OverviewPluginFilter(); //~--- methods -------------------------------------------------------------- diff --git a/scm-webapp/src/main/java/sonia/scm/repository/xml/XmlRepositoryManager.java b/scm-webapp/src/main/java/sonia/scm/repository/xml/XmlRepositoryManager.java index dc44df19a0..2c8f42708b 100644 --- a/scm-webapp/src/main/java/sonia/scm/repository/xml/XmlRepositoryManager.java +++ b/scm-webapp/src/main/java/sonia/scm/repository/xml/XmlRepositoryManager.java @@ -44,11 +44,9 @@ import org.slf4j.LoggerFactory; import sonia.scm.ConfigurationException; import sonia.scm.HandlerEvent; -import sonia.scm.SCMContext; import sonia.scm.SCMContextProvider; import sonia.scm.Type; import sonia.scm.repository.AbstractRepositoryManager; -import sonia.scm.repository.Permission; import sonia.scm.repository.PermissionType; import sonia.scm.repository.PermissionUtil; import sonia.scm.repository.Repository; @@ -69,7 +67,6 @@ import sonia.scm.web.security.WebSecurityContext; import java.io.IOException; -import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; @@ -100,12 +97,15 @@ public class XmlRepositoryManager extends AbstractRepositoryManager * * * + * + * @param contextProvider * @param securityContextProvider * @param storeFactory * @param handlerSet */ @Inject public XmlRepositoryManager( + SCMContextProvider contextProvider, Provider securityContextProvider, StoreFactory storeFactory, Set handlerSet) { @@ -116,7 +116,7 @@ public class XmlRepositoryManager extends AbstractRepositoryManager for (RepositoryHandler handler : handlerSet) { - addHandler(handler); + addHandler(contextProvider, handler); } } @@ -332,7 +332,6 @@ public class XmlRepositoryManager extends AbstractRepositoryManager { assertIsReader(repository); repository = repository.clone(); - prepareRepository(repository); } return repository; @@ -360,7 +359,6 @@ public class XmlRepositoryManager extends AbstractRepositoryManager if (isReader(repository)) { repository = repository.clone(); - prepareRepository(repository); } else { @@ -388,7 +386,6 @@ public class XmlRepositoryManager extends AbstractRepositoryManager { Repository r = repository.clone(); - prepareRepository(r); repositories.add(r); } } @@ -428,9 +425,12 @@ public class XmlRepositoryManager extends AbstractRepositoryManager * Method description * * + * + * @param contextProvider * @param handler */ - private void addHandler(RepositoryHandler handler) + private void addHandler(SCMContextProvider contextProvider, + RepositoryHandler handler) { AssertUtil.assertIsNotNull(handler); @@ -451,7 +451,7 @@ public class XmlRepositoryManager extends AbstractRepositoryManager } handlerMap.put(type.getName(), handler); - handler.init(SCMContext.getContext()); + handler.init(contextProvider); types.add(type); } @@ -493,27 +493,6 @@ public class XmlRepositoryManager extends AbstractRepositoryManager PermissionType.READ); } - /** - * Method description - * - * - * @param repository - */ - private void prepareRepository(Repository repository) - { - if (isOwner(repository)) - { - if (repository.getPermissions() == null) - { - repository.setPermissions(new ArrayList()); - } - } - else - { - repository.setPermissions(null); - } - } - /** * Method description * @@ -574,20 +553,6 @@ public class XmlRepositoryManager extends AbstractRepositoryManager return handler; } - /** - * Method description - * - * - * @param repository - * - * @return - */ - private boolean isOwner(Repository repository) - { - return PermissionUtil.hasPermission(repository, securityContextProvider, - PermissionType.OWNER); - } - /** * Method description * diff --git a/scm-webapp/src/test/java/sonia/scm/repository/XmlRepositoryManagerTest.java b/scm-webapp/src/test/java/sonia/scm/repository/XmlRepositoryManagerTest.java index 98046267fe..16ad325518 100644 --- a/scm-webapp/src/test/java/sonia/scm/repository/XmlRepositoryManagerTest.java +++ b/scm-webapp/src/test/java/sonia/scm/repository/XmlRepositoryManagerTest.java @@ -36,10 +36,10 @@ package sonia.scm.repository; //~--- non-JDK imports -------------------------------------------------------- import sonia.scm.Manager; -import sonia.scm.util.MockUtil; import sonia.scm.repository.xml.XmlRepositoryManager; import sonia.scm.store.JAXBStoreFactory; import sonia.scm.store.StoreFactory; +import sonia.scm.util.MockUtil; //~--- JDK imports ------------------------------------------------------------ @@ -68,7 +68,8 @@ public class XmlRepositoryManagerTest extends RepositoryManagerTestBase factory.init(contextProvider); handlerSet.add(new DummyRepositoryHandler(factory)); - return new XmlRepositoryManager(MockUtil.getAdminSecurityContextProvider(), + return new XmlRepositoryManager(contextProvider, + MockUtil.getAdminSecurityContextProvider(), factory, handlerSet); } } diff --git a/third-party/pom.xml b/third-party/pom.xml index f72dd7eb27..ec5d022314 100644 --- a/third-party/pom.xml +++ b/third-party/pom.xml @@ -6,13 +6,13 @@ sonia.scm scm - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.third-party sonia.scm.third-party pom - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT third-party diff --git a/third-party/shared-libs/pom.xml b/third-party/shared-libs/pom.xml index 120d7b2924..59134295b3 100644 --- a/third-party/shared-libs/pom.xml +++ b/third-party/shared-libs/pom.xml @@ -6,13 +6,13 @@ sonia.scm.third-party sonia.scm.third-party - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT sonia.scm.third-party shared-libs pom - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT shared-libs diff --git a/third-party/svnkit-dav/pom.xml b/third-party/svnkit-dav/pom.xml index 0867adf1b4..2213ac2103 100644 --- a/third-party/svnkit-dav/pom.xml +++ b/third-party/svnkit-dav/pom.xml @@ -6,7 +6,7 @@ sonia.scm.third-party sonia.scm.third-party - 1.0-M7-SNAPSHOT + 1.0-RC1-SNAPSHOT org.tmatesoft.svnkit