From 6074293095c9de727185369aa2fffbde963f31a4 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Sun, 28 Nov 2010 10:40:12 +0100 Subject: [PATCH] fix potential bugs --- .../sonia/scm/web/GitRepositoryResolver.java | 20 +++++++------------ .../sonia/scm/web/GitRepositoryViewer.java | 3 --- .../sonia/scm/web/HgPermissionFilter.java | 7 +++---- .../java/sonia/scm/web/HgWebConfigWriter.java | 4 ---- .../sonia/scm/web/SvnPermissionFilter.java | 7 +++---- .../java/sonia/scm/repository/Permission.java | 4 ---- .../repository/xml/XmlRepositoryManager.java | 2 +- .../java/sonia/scm/web/cgi/CGIRunner.java | 12 +++++------ .../rest/resources/RepositoryResource.java | 4 ++-- .../scm/plugin/WebResourceComparator.java | 10 +++++++++- 10 files changed, 30 insertions(+), 43 deletions(-) diff --git a/plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitRepositoryResolver.java b/plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitRepositoryResolver.java index 4b85cf1241..3e79cbe3b1 100644 --- a/plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitRepositoryResolver.java +++ b/plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitRepositoryResolver.java @@ -44,9 +44,6 @@ import org.eclipse.jgit.lib.RepositoryCache; import org.eclipse.jgit.lib.RepositoryCache.FileKey; import org.eclipse.jgit.util.FS; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import sonia.scm.repository.GitConfig; //~--- JDK imports ------------------------------------------------------------ @@ -63,12 +60,6 @@ import javax.servlet.http.HttpServletRequest; public class GitRepositoryResolver implements RepositoryResolver { - /** the logger for GitRepositoryResolver */ - private static final Logger logger = - LoggerFactory.getLogger(GitRepositoryResolver.class); - - //~--- constructors --------------------------------------------------------- - /** * Constructs ... * @@ -171,16 +162,19 @@ public class GitRepositoryResolver implements RepositoryResolver } catch (RuntimeException e) { - repository.close(); - throw new RepositoryNotFoundException(repositoryName, e); } catch (IOException e) { - repository.close(); - throw new RepositoryNotFoundException(repositoryName, e); } + finally + { + if (repository != null) + { + repository.close(); + } + } return repository; } diff --git a/plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitRepositoryViewer.java b/plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitRepositoryViewer.java index 06c1cd499f..6aebd0835a 100644 --- a/plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitRepositoryViewer.java +++ b/plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitRepositoryViewer.java @@ -41,9 +41,6 @@ import org.eclipse.jgit.lib.PersonIdent; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.revwalk.RevCommit; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import sonia.scm.io.RegexResourceProcessor; import sonia.scm.io.ResourceProcessor; import sonia.scm.util.IOUtil; diff --git a/plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgPermissionFilter.java b/plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgPermissionFilter.java index 9babba09b0..c44c422ea5 100644 --- a/plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgPermissionFilter.java +++ b/plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgPermissionFilter.java @@ -40,9 +40,7 @@ import com.google.inject.Provider; import com.google.inject.Singleton; import sonia.scm.repository.HgRepositoryHandler; -import sonia.scm.repository.Repository; import sonia.scm.repository.RepositoryManager; -import sonia.scm.web.filter.PermissionFilter; import sonia.scm.web.filter.RegexPermissionFilter; import sonia.scm.web.security.WebSecurityContext; @@ -66,8 +64,9 @@ public class HgPermissionFilter extends RegexPermissionFilter * @param repositoryManager */ @Inject - public HgPermissionFilter(Provider securityContextProvider, - RepositoryManager repositoryManager) + public HgPermissionFilter( + Provider securityContextProvider, + RepositoryManager repositoryManager) { super(securityContextProvider, repositoryManager); } diff --git a/plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgWebConfigWriter.java b/plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgWebConfigWriter.java index 5b8671f9df..6b6ff56e7a 100644 --- a/plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgWebConfigWriter.java +++ b/plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgWebConfigWriter.java @@ -35,9 +35,6 @@ package sonia.scm.web; //~--- non-JDK imports -------------------------------------------------------- -import sonia.scm.io.INIConfiguration; -import sonia.scm.io.INIConfigurationWriter; -import sonia.scm.io.INISection; import sonia.scm.io.RegexResourceProcessor; import sonia.scm.io.ResourceProcessor; import sonia.scm.repository.HgConfig; @@ -61,7 +58,6 @@ public class HgWebConfigWriter /** Field description */ public static final String CGI_TEMPLATE = "/sonia/scm/hgweb.py"; - //~--- constructors --------------------------------------------------------- /** diff --git a/plugins/scm-svn-plugin/src/main/java/sonia/scm/web/SvnPermissionFilter.java b/plugins/scm-svn-plugin/src/main/java/sonia/scm/web/SvnPermissionFilter.java index 9d67d7e9c3..9c7d582bd9 100644 --- a/plugins/scm-svn-plugin/src/main/java/sonia/scm/web/SvnPermissionFilter.java +++ b/plugins/scm-svn-plugin/src/main/java/sonia/scm/web/SvnPermissionFilter.java @@ -39,10 +39,8 @@ import com.google.inject.Inject; import com.google.inject.Provider; import com.google.inject.Singleton; -import sonia.scm.repository.Repository; import sonia.scm.repository.RepositoryManager; import sonia.scm.repository.SvnRepositoryHandler; -import sonia.scm.web.filter.PermissionFilter; import sonia.scm.web.filter.RegexPermissionFilter; import sonia.scm.web.security.WebSecurityContext; @@ -79,8 +77,9 @@ public class SvnPermissionFilter extends RegexPermissionFilter * @param repositoryManager */ @Inject - public SvnPermissionFilter(Provider securityContextProvider, - RepositoryManager repositoryManager) + public SvnPermissionFilter( + Provider securityContextProvider, + RepositoryManager repositoryManager) { super(securityContextProvider, repositoryManager); } diff --git a/scm-core/src/main/java/sonia/scm/repository/Permission.java b/scm-core/src/main/java/sonia/scm/repository/Permission.java index 939b01d995..856ce8096b 100644 --- a/scm-core/src/main/java/sonia/scm/repository/Permission.java +++ b/scm-core/src/main/java/sonia/scm/repository/Permission.java @@ -33,10 +33,6 @@ package sonia.scm.repository; -//~--- non-JDK imports -------------------------------------------------------- - -import sonia.scm.util.Util; - //~--- JDK imports ------------------------------------------------------------ import java.io.Serializable; diff --git a/scm-core/src/main/java/sonia/scm/repository/xml/XmlRepositoryManager.java b/scm-core/src/main/java/sonia/scm/repository/xml/XmlRepositoryManager.java index 90610773a4..377bfa8570 100644 --- a/scm-core/src/main/java/sonia/scm/repository/xml/XmlRepositoryManager.java +++ b/scm-core/src/main/java/sonia/scm/repository/xml/XmlRepositoryManager.java @@ -303,7 +303,7 @@ public class XmlRepositoryManager extends AbstractRepositoryManager Repository fresh = repositoryDB.get(repository.getType(), repository.getName()); - if (repository != null) + if (fresh != null) { repository.copyProperties(fresh); } diff --git a/scm-web-api/src/main/java/sonia/scm/web/cgi/CGIRunner.java b/scm-web-api/src/main/java/sonia/scm/web/cgi/CGIRunner.java index 481ca54419..c20d5774c4 100644 --- a/scm-web-api/src/main/java/sonia/scm/web/cgi/CGIRunner.java +++ b/scm-web-api/src/main/java/sonia/scm/web/cgi/CGIRunner.java @@ -29,6 +29,8 @@ * */ + + package sonia.scm.web.cgi; //~--- non-JDK imports -------------------------------------------------------- @@ -37,6 +39,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sonia.scm.util.IOUtil; +import sonia.scm.util.Util; //~--- JDK imports ------------------------------------------------------------ @@ -118,7 +121,7 @@ public class CGIRunner len = 0; } - if ((pathTranslated == null) || (pathTranslated.length() == 0)) + if (Util.isEmpty(pathTranslated)) { pathTranslated = path; } @@ -130,12 +133,7 @@ public class CGIRunner environment.set("CONTENT_LENGTH", Integer.toString(len)); environment.set("CONTENT_TYPE", req.getContentType()); environment.set("GATEWAY_INTERFACE", "CGI/1.1"); - - if ((pathInfo != null) && (pathInfo.length() > 0)) - { - environment.set("PATH_INFO", pathInfo); - } - + environment.set("PATH_INFO", pathInfo); environment.set("PATH_TRANSLATED", pathTranslated); environment.set("QUERY_STRING", req.getQueryString()); environment.set("REMOTE_ADDR", req.getRemoteAddr()); 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 7dfceac902..7a99c904b2 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 @@ -220,13 +220,13 @@ public class RepositoryResource extends AbstractResource String ctxPath = request.getContextPath(); - url.append(ctxPath); - if (ctxPath.endsWith("/")) { ctxPath = ctxPath.substring(0, ctxPath.length() - 1); } + url.append(ctxPath); + RepositoryHandler handler = repositoryManager.getHandler(repository.getType()); diff --git a/scm-webapp/src/main/java/sonia/scm/plugin/WebResourceComparator.java b/scm-webapp/src/main/java/sonia/scm/plugin/WebResourceComparator.java index 671d5d406c..24c4f11b3c 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/WebResourceComparator.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/WebResourceComparator.java @@ -39,15 +39,23 @@ import sonia.scm.web.plugin.WebResource; //~--- JDK imports ------------------------------------------------------------ +import java.io.Serializable; + import java.util.Comparator; /** * * @author Sebastian Sdorra */ -public class WebResourceComparator implements Comparator +public class WebResourceComparator + implements Comparator, Serializable { + /** Field description */ + private static final long serialVersionUID = -5916499507958881372L; + + //~--- methods -------------------------------------------------------------- + /** * Method description *