Updated Branches: refs/heads/dan/ISIS-233-ro 262a90b8e -> d73272c9a
ISIS-233: more tck tests - making tests for some of the 404 resp codes pass. Project: http://git-wip-us.apache.org/repos/asf/isis/repo Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/d73272c9 Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/d73272c9 Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/d73272c9 Branch: refs/heads/dan/ISIS-233-ro Commit: d73272c9a0dba6eab635e6473605fab36ed35d57 Parents: 262a90b Author: Dan Haywood <[email protected]> Authored: Sat Apr 27 18:38:51 2013 +0100 Committer: Dan Haywood <[email protected]> Committed: Sat Apr 27 18:38:51 2013 +0100 ---------------------------------------------------------------------- .../restfulobjects/rendering/RendererContext.java | 4 + .../EventSerializerRendererContext.java | 9 ++- .../server/resources/DomainResourceHelper.java | 36 ++++++- .../restfulobjects/server/util/OidUtils.java | 3 +- ...et_whenDoesntExistOid_thenResponseCode_404.java | 68 ++++++++++++++ ...enDoesntExistOid_thenResponseCode_404_TODO.java | 72 --------------- ...et_whenDoesntExistOid_thenResponseCode_404.java | 50 ++++++++++ ...enDoesntExistOid_thenResponseCode_404_TODO.java | 5 - ...t_whenDoesntExistProp_thenResponseCode_404.java | 50 ++++++++++ ...nDoesntExistProp_thenResponseCode_404_TODO.java | 5 - 10 files changed, 212 insertions(+), 90 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/isis/blob/d73272c9/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext.java ---------------------------------------------------------------------- diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext.java index 22d702d..99db6c9 100644 --- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext.java +++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext.java @@ -6,6 +6,7 @@ import org.apache.isis.applib.annotation.Where; import org.apache.isis.applib.profiles.Localization; import org.apache.isis.core.commons.authentication.AuthenticationSession; import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager; +import org.apache.isis.core.runtime.system.persistence.PersistenceSession; public interface RendererContext { @@ -15,9 +16,12 @@ public interface RendererContext { public AdapterManager getAdapterManager(); + public PersistenceSession getPersistenceSession(); + public List<List<String>> getFollowLinks(); public Where getWhere(); public Localization getLocalization(); + } http://git-wip-us.apache.org/repos/asf/isis/blob/d73272c9/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/eventserializer/EventSerializerRendererContext.java ---------------------------------------------------------------------- diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/eventserializer/EventSerializerRendererContext.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/eventserializer/EventSerializerRendererContext.java index 98b6711..4beba68 100644 --- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/eventserializer/EventSerializerRendererContext.java +++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/eventserializer/EventSerializerRendererContext.java @@ -8,6 +8,7 @@ import org.apache.isis.applib.profiles.Localization; import org.apache.isis.core.commons.authentication.AuthenticationSession; import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager; import org.apache.isis.core.runtime.system.context.IsisContext; +import org.apache.isis.core.runtime.system.persistence.PersistenceSession; import org.apache.isis.viewer.restfulobjects.rendering.RendererContext; public class EventSerializerRendererContext implements RendererContext { @@ -31,8 +32,13 @@ public class EventSerializerRendererContext implements RendererContext { } @Override + public PersistenceSession getPersistenceSession() { + return IsisContext.getPersistenceSession(); + } + + @Override public AdapterManager getAdapterManager() { - return IsisContext.getPersistenceSession().getAdapterManager(); + return getPersistenceSession().getAdapterManager(); } @Override @@ -50,4 +56,5 @@ public class EventSerializerRendererContext implements RendererContext { return IsisContext.getLocalization(); } + } http://git-wip-us.apache.org/repos/asf/isis/blob/d73272c9/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java ---------------------------------------------------------------------- diff --git a/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java b/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java index af7a3af..6263858 100644 --- a/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java +++ b/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java @@ -365,31 +365,55 @@ public final class DomainResourceHelper { protected OneToOneAssociation getPropertyThatIsVisibleForIntent(final String propertyId, final Intent intent, Where where) { - final ObjectAssociation association = objectAdapter.getSpecification().getAssociation(propertyId); + final ObjectAssociation association; + try { + final ObjectSpecification specification = objectAdapter.getSpecification(); + association = specification.getAssociation(propertyId); + } catch(Exception ex) { + // fall through + throwNotFoundException(propertyId, MemberType.PROPERTY); + return null; // to keep compiler happy. + } + if (association == null || !association.isOneToOneAssociation()) { throwNotFoundException(propertyId, MemberType.PROPERTY); } + final OneToOneAssociation property = (OneToOneAssociation) association; return memberThatIsVisibleForIntent(property, MemberType.PROPERTY, intent, where); } protected OneToManyAssociation getCollectionThatIsVisibleForIntent(final String collectionId, final Intent intent, Where where) { - final ObjectAssociation association = objectAdapter.getSpecification().getAssociation(collectionId); - if (association == null || !association.isOneToManyAssociation()) { + final ObjectAssociation association; + try { + final ObjectSpecification specification = objectAdapter.getSpecification(); + association = specification.getAssociation(collectionId); + } catch(Exception ex) { + // fall through throwNotFoundException(collectionId, MemberType.COLLECTION); + return null; // to keep compiler happy. } + if (association == null || !association.isOneToManyAssociation()) { + throwNotFoundException(collectionId, MemberType.COLLECTION); + } final OneToManyAssociation collection = (OneToManyAssociation) association; return memberThatIsVisibleForIntent(collection, MemberType.COLLECTION, intent, where); } protected ObjectAction getObjectActionThatIsVisibleForIntent(final String actionId, final Intent intent, Where where) { - final ObjectAction action = objectAdapter.getSpecification().getObjectAction(actionId); - if (action == null) { + final ObjectAction action; + try { + final ObjectSpecification specification = objectAdapter.getSpecification(); + action = specification.getObjectAction(actionId); + } catch(Exception ex) { throwNotFoundException(actionId, MemberType.ACTION); + return null; // to keep compiler happy. } - + if (action == null) { + throwNotFoundException(actionId, MemberType.ACTION); + } return memberThatIsVisibleForIntent(action, MemberType.ACTION, intent, where); } http://git-wip-us.apache.org/repos/asf/isis/blob/d73272c9/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java ---------------------------------------------------------------------- diff --git a/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java b/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java index 9785adf..c10424b 100644 --- a/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java +++ b/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java @@ -89,7 +89,8 @@ public final class OidUtils { private static ObjectAdapter getObjectAdapterForUnencodedElseThrowNotFound(final RendererContext resourceContext, final String oidStr) { final RootOid rootOid = RootOidDefault.deStringEncoded(oidStr, getOidMarshaller()); - return resourceContext.getAdapterManager().adapterFor(rootOid); + //return resourceContext.getAdapterManager().adapterFor(rootOid); + return resourceContext.getPersistenceSession().loadObject(rootOid); } private static OidMarshaller getOidMarshaller() { http://git-wip-us.apache.org/repos/asf/isis/blob/d73272c9/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_whenDoesntExistOid_thenResponseCode_404.java ---------------------------------------------------------------------- diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_whenDoesntExistOid_thenResponseCode_404.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_whenDoesntExistOid_thenResponseCode_404.java new file mode 100644 index 0000000..d32d67b --- /dev/null +++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_whenDoesntExistOid_thenResponseCode_404.java @@ -0,0 +1,68 @@ +package org.apache.isis.viewer.restfulobjects.tck.domainobject.oid; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +import javax.ws.rs.core.Response; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; + +import org.apache.isis.core.webserver.WebServer; +import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation; +import org.apache.isis.viewer.restfulobjects.applib.LinkRepresentation; +import org.apache.isis.viewer.restfulobjects.applib.client.RestfulClient; +import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse; +import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode; +import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainObjectResource; +import org.apache.isis.viewer.restfulobjects.tck.IsisWebServerRule; +import org.apache.isis.viewer.restfulobjects.tck.Util; + +public class Get_whenDoesntExistOid_thenResponseCode_404 { + + @Rule + public IsisWebServerRule webServerRule = new IsisWebServerRule(); + + protected RestfulClient client; + + @Before + public void setUp() throws Exception { + final WebServer webServer = webServerRule.getWebServer(); + client = new RestfulClient(webServer.getBase()); + } + + @Test + public void usingClientFollow() throws Exception { + + // given + final LinkRepresentation link = Util.domainObjectLink(client, "PrimitiveValuedEntities"); + link.withHref("http://localhost:39393/objects/PRMV/nonExistent"); + + // when + final RestfulResponse<JsonRepresentation> restfulResp = client.follow(link); + + // then + then(restfulResp); + + } + + @Test + public void usingResourceProxy() throws Exception { + + // when + final DomainObjectResource objectResource = client.getDomainObjectResource(); + + final Response response = objectResource.object("PRMV", "nonExistent"); + RestfulResponse<JsonRepresentation> restfulResp = RestfulResponse.of(response); + + then(restfulResp); + + } + + private void then(final RestfulResponse<JsonRepresentation> restfulResp) { + assertThat(restfulResp.getStatus(), is(HttpStatusCode.NOT_FOUND)); + } + + +} http://git-wip-us.apache.org/repos/asf/isis/blob/d73272c9/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_whenDoesntExistOid_thenResponseCode_404_TODO.java ---------------------------------------------------------------------- diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_whenDoesntExistOid_thenResponseCode_404_TODO.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_whenDoesntExistOid_thenResponseCode_404_TODO.java deleted file mode 100644 index e434b2a..0000000 --- a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_whenDoesntExistOid_thenResponseCode_404_TODO.java +++ /dev/null @@ -1,72 +0,0 @@ -package org.apache.isis.viewer.restfulobjects.tck.domainobject.oid; - -import static org.hamcrest.CoreMatchers.*; -import static org.junit.Assert.assertThat; - -import javax.ws.rs.core.Response; - -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; - -import org.apache.isis.core.webserver.WebServer; -import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation; -import org.apache.isis.viewer.restfulobjects.applib.LinkRepresentation; -import org.apache.isis.viewer.restfulobjects.applib.client.RestfulClient; -import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse; -import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode; -import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainObjectRepresentation; -import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainObjectResource; -import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainServiceResource; -import org.apache.isis.viewer.restfulobjects.tck.IsisWebServerRule; -import org.apache.isis.viewer.restfulobjects.tck.Util; - -public class Get_whenDoesntExistOid_thenResponseCode_404_TODO { - - @Rule - public IsisWebServerRule webServerRule = new IsisWebServerRule(); - - protected RestfulClient client; - - private DomainObjectRepresentation domainObjectRepr; - - @Before - public void setUp() throws Exception { - final WebServer webServer = webServerRule.getWebServer(); - client = new RestfulClient(webServer.getBase()); - } - - @Test - public void usingClientFollow() throws Exception { - - // given - final LinkRepresentation link = Util.domainObjectLink(client, "PrimitiveValuedEntities"); - link.mapPut("href", "http://localhost:39393/objects/PRMV/nonExistent"); - - // when - final RestfulResponse<JsonRepresentation> restfulResp = client.follow(link); - - // then - then(restfulResp); - - } - - @Test - public void usingResourceProxy() throws Exception { - - // when - final DomainObjectResource objectResource = client.getDomainObjectResource(); - - final Response response = objectResource.object("PRMV", "nonExistent"); - RestfulResponse<JsonRepresentation> restfulResp = RestfulResponse.of(response); - - then(restfulResp); - - } - - private void then(final RestfulResponse<JsonRepresentation> restfulResp) { - assertThat(restfulResp.getStatus(), is(HttpStatusCode.NOT_FOUND)); - } - - -} http://git-wip-us.apache.org/repos/asf/isis/blob/d73272c9/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Get_whenDoesntExistOid_thenResponseCode_404.java ---------------------------------------------------------------------- diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Get_whenDoesntExistOid_thenResponseCode_404.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Get_whenDoesntExistOid_thenResponseCode_404.java new file mode 100644 index 0000000..2f33548 --- /dev/null +++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Get_whenDoesntExistOid_thenResponseCode_404.java @@ -0,0 +1,50 @@ +package org.apache.isis.viewer.restfulobjects.tck.domainobject.oid.property; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; + +import org.apache.isis.core.webserver.WebServer; +import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation; +import org.apache.isis.viewer.restfulobjects.applib.LinkRepresentation; +import org.apache.isis.viewer.restfulobjects.applib.client.RestfulClient; +import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse; +import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode; +import org.apache.isis.viewer.restfulobjects.tck.IsisWebServerRule; +import org.apache.isis.viewer.restfulobjects.tck.Util; + +public class Get_whenDoesntExistOid_thenResponseCode_404 { + + @Rule + public IsisWebServerRule webServerRule = new IsisWebServerRule(); + + protected RestfulClient client; + + private LinkRepresentation link; + + @Before + public void setUp() throws Exception { + final WebServer webServer = webServerRule.getWebServer(); + client = new RestfulClient(webServer.getBase()); + + link = new LinkRepresentation(); + } + + @Test + public void whenObjectDoesntExist() throws Exception { + + // given + link.withHref("http://localhost:39393/objects/PRMV/nonExistent/properties/booleanProperty"); + + // when + final RestfulResponse<JsonRepresentation> restfulResp = client.follow(link); + + // then + assertThat(restfulResp.getStatus(), is(HttpStatusCode.NOT_FOUND)); + } + + +} http://git-wip-us.apache.org/repos/asf/isis/blob/d73272c9/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Get_whenDoesntExistOid_thenResponseCode_404_TODO.java ---------------------------------------------------------------------- diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Get_whenDoesntExistOid_thenResponseCode_404_TODO.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Get_whenDoesntExistOid_thenResponseCode_404_TODO.java deleted file mode 100644 index ef52c22..0000000 --- a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Get_whenDoesntExistOid_thenResponseCode_404_TODO.java +++ /dev/null @@ -1,5 +0,0 @@ -package org.apache.isis.viewer.restfulobjects.tck.domainobject.oid.property; - -public class Get_whenDoesntExistOid_thenResponseCode_404_TODO { - -} http://git-wip-us.apache.org/repos/asf/isis/blob/d73272c9/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Get_whenDoesntExistProp_thenResponseCode_404.java ---------------------------------------------------------------------- diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Get_whenDoesntExistProp_thenResponseCode_404.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Get_whenDoesntExistProp_thenResponseCode_404.java new file mode 100644 index 0000000..be86b0c --- /dev/null +++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Get_whenDoesntExistProp_thenResponseCode_404.java @@ -0,0 +1,50 @@ +package org.apache.isis.viewer.restfulobjects.tck.domainobject.oid.property; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; + +import org.apache.isis.core.webserver.WebServer; +import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation; +import org.apache.isis.viewer.restfulobjects.applib.LinkRepresentation; +import org.apache.isis.viewer.restfulobjects.applib.client.RestfulClient; +import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse; +import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode; +import org.apache.isis.viewer.restfulobjects.tck.IsisWebServerRule; +import org.apache.isis.viewer.restfulobjects.tck.Util; + +public class Get_whenDoesntExistProp_thenResponseCode_404 { + + @Rule + public IsisWebServerRule webServerRule = new IsisWebServerRule(); + + protected RestfulClient client; + + private LinkRepresentation link; + + @Before + public void setUp() throws Exception { + final WebServer webServer = webServerRule.getWebServer(); + client = new RestfulClient(webServer.getBase()); + + link = new LinkRepresentation(); + } + + @Test + public void whenPropertyDoesntExist() throws Exception { + + // given + final LinkRepresentation linkToExistingObject = Util.domainObjectLink(client, "PrimitiveValuedEntities"); + link.withHref(linkToExistingObject.getHref() + "/properties/nonExistentProperty"); + + // when + final RestfulResponse<JsonRepresentation> restfulResp = client.follow(link); + + // then + assertThat(restfulResp.getStatus(), is(HttpStatusCode.NOT_FOUND)); + } + +} http://git-wip-us.apache.org/repos/asf/isis/blob/d73272c9/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Get_whenDoesntExistProp_thenResponseCode_404_TODO.java ---------------------------------------------------------------------- diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Get_whenDoesntExistProp_thenResponseCode_404_TODO.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Get_whenDoesntExistProp_thenResponseCode_404_TODO.java deleted file mode 100644 index 4eb690f..0000000 --- a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Get_whenDoesntExistProp_thenResponseCode_404_TODO.java +++ /dev/null @@ -1,5 +0,0 @@ -package org.apache.isis.viewer.restfulobjects.tck.domainobject.oid.property; - -public class Get_whenDoesntExistProp_thenResponseCode_404_TODO { - -}
