From b809abaa45e9acee47afe0efc97ca888c1161116 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Wed, 12 Sep 2018 09:23:04 +0200 Subject: [PATCH] Move info initialization to filter --- .../scm/api/v2/resources/ScmPathInfoStore.java | 6 ++---- .../main/java/sonia/scm/api/rest/UriInfoFilter.java | 4 +++- .../resources/GroupCollectionToDtoMapperTest.java | 7 +++---- .../scm/api/v2/resources/ScmPathInfoStoreTest.java | 13 ++++++------- 4 files changed, 14 insertions(+), 16 deletions(-) diff --git a/scm-core/src/main/java/sonia/scm/api/v2/resources/ScmPathInfoStore.java b/scm-core/src/main/java/sonia/scm/api/v2/resources/ScmPathInfoStore.java index c6854e7117..c88bd4a2b5 100644 --- a/scm-core/src/main/java/sonia/scm/api/v2/resources/ScmPathInfoStore.java +++ b/scm-core/src/main/java/sonia/scm/api/v2/resources/ScmPathInfoStore.java @@ -1,7 +1,5 @@ package sonia.scm.api.v2.resources; -import javax.ws.rs.core.UriInfo; - public class ScmPathInfoStore { private ScmPathInfo pathInfo; @@ -10,11 +8,11 @@ public class ScmPathInfoStore { return pathInfo; } - public void setFromRestRequest(UriInfo uriInfo) { + public void set(ScmPathInfo info) { if (this.pathInfo != null) { throw new IllegalStateException("UriInfo already set"); } - this.pathInfo = uriInfo::getBaseUri; + this.pathInfo = info; } } diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/UriInfoFilter.java b/scm-webapp/src/main/java/sonia/scm/api/rest/UriInfoFilter.java index a0b5644a05..b602e918ea 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/rest/UriInfoFilter.java +++ b/scm-webapp/src/main/java/sonia/scm/api/rest/UriInfoFilter.java @@ -5,6 +5,7 @@ import sonia.scm.api.v2.resources.ScmPathInfoStore; import javax.inject.Inject; import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.container.ContainerRequestFilter; +import javax.ws.rs.core.UriInfo; import javax.ws.rs.ext.Provider; @Provider @@ -19,6 +20,7 @@ public class UriInfoFilter implements ContainerRequestFilter { @Override public void filter(ContainerRequestContext requestContext) { - storeProvider.get().setFromRestRequest(requestContext.getUriInfo()); + UriInfo uriInfo = requestContext.getUriInfo(); + storeProvider.get().set(uriInfo::getBaseUri); } } diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/GroupCollectionToDtoMapperTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/GroupCollectionToDtoMapperTest.java index 41faa49568..5066f56ff7 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/GroupCollectionToDtoMapperTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/GroupCollectionToDtoMapperTest.java @@ -11,7 +11,6 @@ import org.junit.Test; import sonia.scm.PageResult; import sonia.scm.group.Group; -import javax.ws.rs.core.UriInfo; import java.net.URI; import java.net.URISyntaxException; import java.util.Arrays; @@ -28,7 +27,7 @@ import static sonia.scm.PageResult.createPage; public class GroupCollectionToDtoMapperTest { - private final UriInfo uriInfo = mock(UriInfo.class); + private final ScmPathInfo uriInfo = mock(ScmPathInfo.class); private final ScmPathInfoStore scmPathInfoStore = new ScmPathInfoStore(); private final ResourceLinks resourceLinks = new ResourceLinks(scmPathInfoStore); private final GroupToGroupDtoMapper groupToDtoMapper = mock(GroupToGroupDtoMapper.class); @@ -41,10 +40,10 @@ public class GroupCollectionToDtoMapperTest { @Before public void init() throws URISyntaxException { - scmPathInfoStore.setFromRestRequest(uriInfo); + scmPathInfoStore.set(uriInfo); URI baseUri = new URI("http://example.com/base/"); expectedBaseUri = baseUri.resolve(GroupRootResource.GROUPS_PATH_V2 + "/"); - when(uriInfo.getBaseUri()).thenReturn(baseUri); + when(uriInfo.getApiRestUri()).thenReturn(baseUri); subjectThreadState.bind(); ThreadContext.bind(subject); } diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/ScmPathInfoStoreTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/ScmPathInfoStoreTest.java index 1058dc182b..544a918b8b 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/ScmPathInfoStoreTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/ScmPathInfoStoreTest.java @@ -2,7 +2,6 @@ package sonia.scm.api.v2.resources; import org.junit.Test; -import javax.ws.rs.core.UriInfo; import java.net.URI; import static org.junit.Assert.assertSame; @@ -15,22 +14,22 @@ public class ScmPathInfoStoreTest { public void shouldReturnSetInfo() { URI someUri = URI.create("/anything"); - UriInfo uriInfo = mock(UriInfo.class); + ScmPathInfo uriInfo = mock(ScmPathInfo.class); ScmPathInfoStore scmPathInfoStore = new ScmPathInfoStore(); - when(uriInfo.getBaseUri()).thenReturn(someUri); + when(uriInfo.getApiRestUri()).thenReturn(someUri); - scmPathInfoStore.setFromRestRequest(uriInfo); + scmPathInfoStore.set(uriInfo); assertSame(someUri, scmPathInfoStore.get().getApiRestUri()); } @Test(expected = IllegalStateException.class) public void shouldFailIfSetTwice() { - UriInfo uriInfo = mock(UriInfo.class); + ScmPathInfo uriInfo = mock(ScmPathInfo.class); ScmPathInfoStore scmPathInfoStore = new ScmPathInfoStore(); - scmPathInfoStore.setFromRestRequest(uriInfo); - scmPathInfoStore.setFromRestRequest(uriInfo); + scmPathInfoStore.set(uriInfo); + scmPathInfoStore.set(uriInfo); } }