diff --git a/scm-core/src/main/java/sonia/scm/repository/RepositoryManager.java b/scm-core/src/main/java/sonia/scm/repository/RepositoryManager.java index 2c4d958d8d..1e2fdccf42 100644 --- a/scm-core/src/main/java/sonia/scm/repository/RepositoryManager.java +++ b/scm-core/src/main/java/sonia/scm/repository/RepositoryManager.java @@ -38,7 +38,6 @@ package sonia.scm.repository; import sonia.scm.AlreadyExistsException; import sonia.scm.TypeManager; -import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.util.Collection; @@ -99,29 +98,6 @@ public interface RepositoryManager */ public Collection getConfiguredTypes(); - /** - * Returns the {@link Repository} associated to the request uri. - * - * - * @param request the current http request - * - * @return associated to the request uri - * @since 1.9 - */ - public Repository getFromRequest(HttpServletRequest request); - - /** - * Returns the {@link Repository} associated to the request uri. - * - * - * - * @param uri request uri without context path - * - * @return associated to the request uri - * @since 1.9 - */ - public Repository getFromUri(String uri); - /** * Returns a {@link RepositoryHandler} by the given type (hg, git, svn ...). * diff --git a/scm-core/src/main/java/sonia/scm/repository/RepositoryManagerDecorator.java b/scm-core/src/main/java/sonia/scm/repository/RepositoryManagerDecorator.java index aa4117af34..87df960da7 100644 --- a/scm-core/src/main/java/sonia/scm/repository/RepositoryManagerDecorator.java +++ b/scm-core/src/main/java/sonia/scm/repository/RepositoryManagerDecorator.java @@ -39,7 +39,6 @@ import sonia.scm.AlreadyExistsException; import sonia.scm.ManagerDecorator; import sonia.scm.Type; -import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.util.Collection; @@ -120,34 +119,6 @@ public class RepositoryManagerDecorator return decorated; } - /** - * {@inheritDoc} - * - * - * @param request - * - * @return - */ - @Override - public Repository getFromRequest(HttpServletRequest request) - { - return decorated.getFromRequest(request); - } - - /** - * {@inheritDoc} - * - * - * @param uri - * - * @return - */ - @Override - public Repository getFromUri(String uri) - { - return decorated.getFromUri(uri); - } - /** * {@inheritDoc} * diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/DefaultHttpScmProtocol.java b/scm-core/src/main/java/sonia/scm/repository/spi/DefaultHttpScmProtocol.java index 223be7aca8..9aaf1dfb4b 100644 --- a/scm-core/src/main/java/sonia/scm/repository/spi/DefaultHttpScmProtocol.java +++ b/scm-core/src/main/java/sonia/scm/repository/spi/DefaultHttpScmProtocol.java @@ -2,9 +2,6 @@ package sonia.scm.repository.spi; import sonia.scm.repository.Repository; -import javax.ws.rs.core.UriInfo; -import java.net.URI; - public abstract class DefaultHttpScmProtocol implements HttpScmProtocol { private final Repository repository; @@ -12,9 +9,4 @@ public abstract class DefaultHttpScmProtocol implements HttpScmProtocol { protected DefaultHttpScmProtocol(Repository repository) { this.repository = repository; } - - @Override - public String getUrl(Repository repository, UriInfo uriInfo) { - return uriInfo.getBaseUri().resolve(URI.create("../../" + this.repository.getType() + "/" + this.repository.getNamespace() + "/" + this.repository.getName())).toASCIIString(); - } } diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/HttpScmProtocol.java b/scm-core/src/main/java/sonia/scm/repository/spi/HttpScmProtocol.java index c19205c1e7..fed9c00cdc 100644 --- a/scm-core/src/main/java/sonia/scm/repository/spi/HttpScmProtocol.java +++ b/scm-core/src/main/java/sonia/scm/repository/spi/HttpScmProtocol.java @@ -1,12 +1,15 @@ package sonia.scm.repository.spi; +import sonia.scm.repository.Repository; import sonia.scm.repository.api.ScmProtocol; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.core.UriInfo; import java.io.IOException; +import java.net.URI; public interface HttpScmProtocol extends ScmProtocol { @Override @@ -14,5 +17,10 @@ public interface HttpScmProtocol extends ScmProtocol { return "http"; } + @Override + default String getUrl(Repository repository, UriInfo uriInfo) { + return uriInfo.getBaseUri().resolve(URI.create("../../repo/" + repository.getNamespace() + "/" + repository.getName())).toASCIIString(); + } + void serve(HttpServletRequest request, HttpServletResponse response, ServletConfig config) throws ServletException, IOException; } diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/InitializingHttpScmProtocolWrapper.java b/scm-core/src/main/java/sonia/scm/repository/spi/InitializingHttpScmProtocolWrapper.java index 0e0e32dbf1..9c26c0905a 100644 --- a/scm-core/src/main/java/sonia/scm/repository/spi/InitializingHttpScmProtocolWrapper.java +++ b/scm-core/src/main/java/sonia/scm/repository/spi/InitializingHttpScmProtocolWrapper.java @@ -1,16 +1,12 @@ package sonia.scm.repository.spi; -import sonia.scm.repository.Repository; - import javax.inject.Provider; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.ws.rs.core.UriInfo; import java.io.IOException; -import java.net.URI; public abstract class InitializingHttpScmProtocolWrapper implements HttpScmProtocol { @@ -40,10 +36,4 @@ public abstract class InitializingHttpScmProtocolWrapper implements HttpScmProto protected void initializeServlet(ServletConfig config, HttpServlet httpServlet) throws ServletException { httpServlet.init(config); } - - - @Override - public String getUrl(Repository repository, UriInfo uriInfo) { - return uriInfo.getBaseUri().resolve(URI.create("../../repo/" + repository.getNamespace() + "/" + repository.getName())).toASCIIString(); - } } diff --git a/scm-core/src/test/java/sonia/scm/repository/api/RepositoryServiceTest.java b/scm-core/src/test/java/sonia/scm/repository/api/RepositoryServiceTest.java index 8d37c0e187..b363516a67 100644 --- a/scm-core/src/test/java/sonia/scm/repository/api/RepositoryServiceTest.java +++ b/scm-core/src/test/java/sonia/scm/repository/api/RepositoryServiceTest.java @@ -8,7 +8,6 @@ import sonia.scm.repository.spi.RepositoryServiceProvider; import javax.servlet.ServletConfig; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.ws.rs.core.UriInfo; import java.util.Collection; import java.util.Collections; @@ -33,16 +32,6 @@ public class RepositoryServiceTest { assertThat(sizeOf(supportedProtocols)).isEqualTo(1); } - @Test - public void shouldFindProtocolFromProvider() { - when(provider.getSupportedProtocols()).thenReturn(Collections.singleton(new DummyHttpProtocol())); - - RepositoryService repositoryService = new RepositoryService(null, provider, repository, null); - HttpScmProtocol protocol = repositoryService.getProtocol(HttpScmProtocol.class); - - assertThat(protocol.getUrl(repository, null)).isEqualTo("dummy"); - } - @Test public void shouldFailForUnknownProtocol() { when(provider.getSupportedProtocols()).thenReturn(Collections.emptySet()); @@ -55,11 +44,6 @@ public class RepositoryServiceTest { } private static class DummyHttpProtocol implements HttpScmProtocol { - @Override - public String getUrl(Repository repository, UriInfo uriInfo) { - return "dummy"; - } - @Override public void serve(HttpServletRequest request, HttpServletResponse response, ServletConfig config) { } diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/lfs/servlet/LfsServletFactoryTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/lfs/servlet/LfsServletFactoryTest.java index f6f5803bb7..09a431ea43 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/lfs/servlet/LfsServletFactoryTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/lfs/servlet/LfsServletFactoryTest.java @@ -23,12 +23,12 @@ public class LfsServletFactoryTest { String repositoryName = "git-lfs-demo"; String result = LfsServletFactory.buildBaseUri(new Repository("", "GIT", repositoryNamespace, repositoryName), RequestWithUri(repositoryName, true)); - assertThat(result, is(equalTo("http://localhost:8081/scm/git/space/git-lfs-demo.git/info/lfs/objects/"))); + assertThat(result, is(equalTo("http://localhost:8081/scm/repo/space/git-lfs-demo.git/info/lfs/objects/"))); //result will be with dot-git suffix, ide result = LfsServletFactory.buildBaseUri(new Repository("", "GIT", repositoryNamespace, repositoryName), RequestWithUri(repositoryName, false)); - assertThat(result, is(equalTo("http://localhost:8081/scm/git/space/git-lfs-demo.git/info/lfs/objects/"))); + assertThat(result, is(equalTo("http://localhost:8081/scm/repo/space/git-lfs-demo.git/info/lfs/objects/"))); } private HttpServletRequest RequestWithUri(String repositoryName, boolean withDotGitSuffix) { @@ -44,12 +44,10 @@ public class LfsServletFactoryTest { //build from valid live request data when(mockedRequest.getRequestURL()).thenReturn( - new StringBuffer(String.format("http://localhost:8081/scm/git/%s%s/info/lfs/objects/batch", repositoryName, suffix))); - when(mockedRequest.getRequestURI()).thenReturn(String.format("/scm/git/%s%s/info/lfs/objects/batch", repositoryName, suffix)); + new StringBuffer(String.format("http://localhost:8081/scm/repo/%s%s/info/lfs/objects/batch", repositoryName, suffix))); + when(mockedRequest.getRequestURI()).thenReturn(String.format("/scm/repo/%s%s/info/lfs/objects/batch", repositoryName, suffix)); when(mockedRequest.getContextPath()).thenReturn("/scm"); return mockedRequest; } - - } diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgCGIServlet.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgCGIServlet.java index 03acc3bc29..b124c9d3af 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgCGIServlet.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgCGIServlet.java @@ -65,10 +65,8 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; -import javax.ws.rs.core.UriInfo; import java.io.File; import java.io.IOException; -import java.net.URI; import java.util.Base64; import java.util.Enumeration; @@ -354,11 +352,6 @@ public class HgCGIServlet extends HttpServlet implements HttpScmProtocol service(request, response); } - @Override - public String getUrl(Repository repository, UriInfo uriInfo) { - return uriInfo.getBaseUri().resolve(URI.create("../../hg/" + repository.getNamespace() + "/" + repository.getName())).toASCIIString(); - } - //~--- fields --------------------------------------------------------------- /** Field description */ diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/web/SvnDAVServlet.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/web/SvnDAVServlet.java index 0a2a63da46..0dda4306c6 100644 --- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/web/SvnDAVServlet.java +++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/web/SvnDAVServlet.java @@ -54,9 +54,7 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; import javax.servlet.http.HttpServletResponse; -import javax.ws.rs.core.UriInfo; import java.io.IOException; -import java.net.URI; //~--- JDK imports ------------------------------------------------------------ @@ -292,12 +290,6 @@ public class SvnDAVServlet extends DAVServlet implements HttpScmProtocol service(request, response); } - @Override - public String getUrl(Repository repository, UriInfo uriInfo) { - return uriInfo.getBaseUri().resolve(URI.create("../../repo/" + repository.getNamespace() + "/" + repository.getName())).toASCIIString(); - } - - //~--- fields --------------------------------------------------------------- /** Field description */ diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ResourceLinks.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ResourceLinks.java index 5fe2a2cfd2..11258745a8 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ResourceLinks.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ResourceLinks.java @@ -4,6 +4,7 @@ import sonia.scm.repository.NamespaceAndName; import javax.inject.Inject; import javax.ws.rs.core.UriInfo; +import java.net.URI; class ResourceLinks { diff --git a/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java b/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java index 06f92f7bec..8638c7e4e8 100644 --- a/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java +++ b/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java @@ -52,11 +52,9 @@ import sonia.scm.config.ScmConfiguration; import sonia.scm.security.KeyGenerator; import sonia.scm.util.AssertUtil; import sonia.scm.util.CollectionAppender; -import sonia.scm.util.HttpUtil; import sonia.scm.util.IOUtil; import sonia.scm.util.Util; -import javax.servlet.http.HttpServletRequest; import java.util.Collection; import java.util.Collections; import java.util.Comparator; @@ -315,31 +313,6 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager { return validTypes; } - @Override - public Repository getFromRequest(HttpServletRequest request) { - AssertUtil.assertIsNotNull(request); - - return getFromUri(HttpUtil.getStrippedURI(request)); - } - - @Override - public Repository getFromUri(String uri) { - AssertUtil.assertIsNotEmpty(uri); - - if (uri.startsWith(HttpUtil.SEPARATOR_PATH)) { - uri = uri.substring(1); - } - - Repository repository = null; - - String namespace = uri.substring(0, uri.indexOf(HttpUtil.SEPARATOR_PATH)); - String name = uri.substring(uri.indexOf(HttpUtil.SEPARATOR_PATH) + 1, uri.indexOf(HttpUtil.SEPARATOR_PATH, uri.indexOf(HttpUtil.SEPARATOR_PATH) + 1)); - - repository = get(new NamespaceAndName(namespace, name)); - - return repository; - } - @Override public RepositoryHandler getHandler(String type) { return handlerMap.get(type); diff --git a/scm-webapp/src/test/java/sonia/scm/repository/DefaultRepositoryManagerTest.java b/scm-webapp/src/test/java/sonia/scm/repository/DefaultRepositoryManagerTest.java index efd3f673b0..d85ce12014 100644 --- a/scm-webapp/src/test/java/sonia/scm/repository/DefaultRepositoryManagerTest.java +++ b/scm-webapp/src/test/java/sonia/scm/repository/DefaultRepositoryManagerTest.java @@ -383,69 +383,6 @@ public class DefaultRepositoryManagerTest extends ManagerTestBase { assertEquals("default_namespace", repository.getNamespace()); } - @Test - public void getRepositoryFromRequestUri_withoutLeadingSlash() throws AlreadyExistsException { - RepositoryManager m = createManager(); - m.init(contextProvider); - - createUriTestRepositories(m); - - assertEquals("scm-test", m.getFromUri("hg/namespace/scm-test").getName()); - assertEquals("namespace", m.getFromUri("hg/namespace/scm-test").getNamespace()); - } - - @Test - public void getRepositoryFromRequestUri_withLeadingSlash() throws AlreadyExistsException { - RepositoryManager m = createManager(); - m.init(contextProvider); - - createUriTestRepositories(m); - - assertEquals("scm-test", m.getFromUri("/hg/namespace/scm-test").getName()); - assertEquals("namespace", m.getFromUri("/hg/namespace/scm-test").getNamespace()); - } - - @Test - public void getRepositoryFromRequestUri_withPartialName() throws AlreadyExistsException { - RepositoryManager m = createManager(); - m.init(contextProvider); - - createUriTestRepositories(m); - - assertEquals("scm", m.getFromUri("hg/namespace/scm").getName()); - assertEquals("namespace", m.getFromUri("hg/namespace/scm").getNamespace()); - } - - @Test - public void getRepositoryFromRequestUri_withTrailingFilePath() throws AlreadyExistsException { - RepositoryManager m = createManager(); - m.init(contextProvider); - - createUriTestRepositories(m); - - assertEquals("test-1", m.getFromUri("/git/namespace/test-1/ka/some/path").getName()); - } - - @Test - public void getRepositoryFromRequestUri_forNotExistingRepositoryName() throws AlreadyExistsException { - RepositoryManager m = createManager(); - m.init(contextProvider); - - createUriTestRepositories(m); - - assertNull(m.getFromUri("/git/namespace/test-3/ka/some/path")); - } - - @Test - public void getRepositoryFromRequestUri_forWrongNamespace() throws AlreadyExistsException { - RepositoryManager m = createManager(); - m.init(contextProvider); - - createUriTestRepositories(m); - - assertNull(m.getFromUri("/git/other/other/test-2")); - } - @Test public void shouldSetNamespace() throws AlreadyExistsException { Repository repository = new Repository(null, "hg", null, "scm");