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 extends FileSystem> getFileSystemClass()
+ {
+ return fileSystemClass;
+ }
+
/**
* Method description
*
@@ -337,6 +362,9 @@ public class BindingExtensionProcessor implements ExtensionProcessor
/** Field description */
private Set> extensions;
+ /** Field description */
+ private Class extends FileSystem> 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 extends FileSystem> 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