You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2013/02/08 14:16:19 UTC
[22/24] ISIS-323: RO publishing done, but no xactn stuff yet
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulClientTest_follow.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulClientTest_follow.java b/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulClientTest_follow.java
new file mode 100644
index 0000000..10e3860
--- /dev/null
+++ b/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulClientTest_follow.java
@@ -0,0 +1,132 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.viewer.restfulobjects.applib.client;
+
+import java.net.URI;
+
+import javax.ws.rs.core.MediaType;
+
+import org.apache.commons.collections.map.MultiValueMap;
+import org.apache.isis.core.unittestsupport.jmock.auto.Mock;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
+import org.apache.isis.viewer.restfulobjects.applib.JsonFixture;
+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.hamcrest.Description;
+import org.hamcrest.Matcher;
+import org.hamcrest.TypeSafeMatcher;
+import org.jboss.resteasy.client.ClientExecutor;
+import org.jboss.resteasy.client.ClientRequest;
+import org.jboss.resteasy.client.core.BaseClientResponse;
+import org.jboss.resteasy.specimpl.UriBuilderImpl;
+import org.jmock.Expectations;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+
+public class RestfulClientTest_follow {
+
+ @Rule
+ public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
+
+ private final URI uri = URI.create("http://yadayada:8080");
+
+ @Mock
+ private ClientExecutor mockExecutor;
+
+ @Mock
+ private ClientRequest mockClientRequest;
+
+ @Mock
+ private BaseClientResponse<String> mockClientResponse;
+
+ private JsonRepresentation jsonRepresentation;
+
+ private RestfulClient client;
+
+ @Before
+ public void setUp() throws Exception {
+ jsonRepresentation = new JsonRepresentation(JsonFixture.readJson("map.json"));
+ client = new RestfulClient(uri, mockExecutor);
+ }
+
+ @Ignore("TODO")
+ @Test
+ public void follow_get() throws Exception {
+ final LinkRepresentation link = jsonRepresentation.getLink("aLink");
+
+ final String href = link.getHref();
+
+ // when
+ context.checking(new Expectations() {
+ {
+ one(mockExecutor).createRequest(with(any(UriBuilderImpl.class)));
+ will(returnValue(mockClientRequest));
+
+ one(mockExecutor).execute(mockClientRequest);
+ will(returnValue(mockClientResponse));
+
+ one(mockClientRequest).accept(MediaType.APPLICATION_JSON_TYPE);
+ atLeast(1).of(mockClientRequest).setHttpMethod("GET");
+
+ allowing(mockClientRequest).getHttpMethod();
+ will(returnValue("GET"));
+
+ one(mockClientRequest).execute();
+ will(returnValue(mockClientResponse));
+
+ one(mockClientResponse).setReturnType(String.class);
+ allowing(mockClientResponse);
+
+ final MultiValueMap result = new MultiValueMap();
+ result.put("Content-Type", "application/json");
+ allowing(mockClientResponse).getMetadata();
+ will(returnValue(result));
+ }
+
+ });
+ final RestfulResponse<JsonRepresentation> response = client.follow(link);
+
+ // then
+ }
+
+ private static Matcher<ClientRequest> requestToHref(final String href) {
+ return new TypeSafeMatcher<ClientRequest>() {
+
+ @Override
+ public void describeTo(final Description description) {
+ description.appendText("request to href: " + href);
+ }
+
+ @Override
+ public boolean matchesSafely(final ClientRequest clientRequest) {
+ try {
+ return clientRequest.getUri().equals(href);
+ } catch (final Exception e) {
+ return false;
+ }
+ }
+ };
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequestDomainModelTest_parser.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequestDomainModelTest_parser.java b/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequestDomainModelTest_parser.java
new file mode 100644
index 0000000..a690927
--- /dev/null
+++ b/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequestDomainModelTest_parser.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.viewer.restfulobjects.applib.client;
+
+import static org.junit.Assert.assertSame;
+
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest;
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest.DomainModel;
+import org.apache.isis.viewer.restfulobjects.applib.util.Parser;
+import org.junit.Test;
+
+public class RestfulRequestDomainModelTest_parser {
+
+ @Test
+ public void parser_roundtrips() {
+ final Parser<DomainModel> parser = RestfulRequest.DomainModel.parser();
+ for (final DomainModel domainModel : DomainModel.values()) {
+ final String asString = parser.asString(domainModel);
+ final DomainModel roundtripped = parser.valueOf(asString);
+ assertSame(roundtripped, domainModel);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequestRequestParameterTest_valueOf.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequestRequestParameterTest_valueOf.java b/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequestRequestParameterTest_valueOf.java
new file mode 100644
index 0000000..60b737f
--- /dev/null
+++ b/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulRequestRequestParameterTest_valueOf.java
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.viewer.restfulobjects.applib.client;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+import java.util.List;
+
+import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest;
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest.RequestParameter;
+import org.junit.Before;
+import org.junit.Test;
+
+public class RestfulRequestRequestParameterTest_valueOf {
+
+ private final RequestParameter<List<List<String>>> requestParameter = RestfulRequest.RequestParameter.FOLLOW_LINKS;
+
+ private JsonRepresentation repr;
+
+ @Before
+ public void setUp() throws Exception {
+ repr = JsonRepresentation.newMap();
+ }
+
+ @Test
+ public void mapContainsList() {
+ repr.mapPut("x-ro-follow-links", "a,b.c");
+ final List<List<String>> valueOf = requestParameter.valueOf(repr);
+
+ assertThat(valueOf.size(), is(2));
+ assertThat(valueOf.get(0).size(), is(1));
+ assertThat(valueOf.get(0).get(0), is("a"));
+ assertThat(valueOf.get(1).size(), is(2));
+ assertThat(valueOf.get(1).get(0), is("b"));
+ assertThat(valueOf.get(1).get(1), is("c"));
+ }
+
+ @Test
+ public void mapHasNoKey() {
+ repr.mapPut("something-else", "a,b.c");
+ final List<List<String>> valueOf = requestParameter.valueOf(repr);
+
+ assertThat(valueOf.size(), is(0));
+ }
+
+ @Test
+ public void mapIsEmpty() {
+ final List<List<String>> valueOf = requestParameter.valueOf(repr);
+
+ assertThat(valueOf.size(), is(0));
+ }
+
+ @Test
+ public void mapIsNull() {
+ final List<List<String>> valueOf = requestParameter.valueOf(null);
+
+ assertThat(valueOf.size(), is(0));
+ }
+
+ @Test
+ public void mapContainsCommaSeparatedList() {
+
+ repr.mapPut("x-ro-follow-links", "a,b.c");
+ final List<List<String>> valueOf = requestParameter.valueOf(repr);
+
+ assertThat(valueOf.size(), is(2));
+ assertThat(valueOf.get(0).size(), is(1));
+ assertThat(valueOf.get(0).get(0), is("a"));
+ assertThat(valueOf.get(1).size(), is(2));
+ assertThat(valueOf.get(1).get(0), is("b"));
+ assertThat(valueOf.get(1).get(1), is("c"));
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulResponse_HttpStatusCodeTest.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulResponse_HttpStatusCodeTest.java b/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulResponse_HttpStatusCodeTest.java
new file mode 100644
index 0000000..b3c4ad3
--- /dev/null
+++ b/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulResponse_HttpStatusCodeTest.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.viewer.restfulobjects.applib.client;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+import javax.ws.rs.core.Response.Status.Family;
+
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
+import org.junit.Test;
+
+public class RestfulResponse_HttpStatusCodeTest {
+
+ @Test
+ public void knownStatusCode() {
+ assertThat(HttpStatusCode.statusFor(200), is(HttpStatusCode.OK));
+ }
+
+ @Test
+ public void unknownStatusCode() {
+ final HttpStatusCode statusFor = HttpStatusCode.statusFor(600);
+ assertThat(statusFor.getStatusCode(), is(600));
+ assertThat(statusFor.getFamily(), is(Family.OTHER));
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/domainobjects/DomainObjectRepresentationTest.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/domainobjects/DomainObjectRepresentationTest.java b/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/domainobjects/DomainObjectRepresentationTest.java
new file mode 100644
index 0000000..e8dbbee
--- /dev/null
+++ b/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/domainobjects/DomainObjectRepresentationTest.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.viewer.restfulobjects.applib.domainobjects;
+
+import static org.apache.isis.viewer.restfulobjects.applib.JsonFixture.readJson;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.junit.Assert.assertThat;
+
+import java.io.IOException;
+
+import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainObjectRepresentation;
+import org.codehaus.jackson.JsonParseException;
+import org.codehaus.jackson.map.JsonMappingException;
+import org.junit.Before;
+import org.junit.Test;
+
+public class DomainObjectRepresentationTest {
+
+ private DomainObjectRepresentation representation;
+
+ @Before
+ public void setUp() throws Exception {
+ representation = new DomainObjectRepresentation(readJson("domainObjectRepresentation.json"));
+ }
+
+ @Test
+ public void xx() throws JsonParseException, JsonMappingException, IOException {
+ final JsonRepresentation flag = representation.getProperty("flag");
+ assertThat(flag, is(not(nullValue())));
+ assertThat(flag.getBoolean("value"), is(true));
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/links/LinkRepresentationTest_equals.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/links/LinkRepresentationTest_equals.java b/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/links/LinkRepresentationTest_equals.java
deleted file mode 100644
index 95a0695..0000000
--- a/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/links/LinkRepresentationTest_equals.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.viewer.restfulobjects.applib.links;
-
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.not;
-import static org.junit.Assert.assertThat;
-
-import java.io.UnsupportedEncodingException;
-
-import org.apache.isis.viewer.restfulobjects.applib.RoHttpMethod;
-import org.junit.Test;
-
-public class LinkRepresentationTest_equals {
-
- @Test
- public void equalDependsOnMethodAndHref() throws UnsupportedEncodingException {
- final LinkRepresentation link = new LinkRepresentation().withHref("http://localhost:8080/objects/ABC:123").withMethod(RoHttpMethod.GET);
- final LinkRepresentation link2 = new LinkRepresentation().withHref("http://localhost:8080/objects/ABC:123").withMethod(RoHttpMethod.GET);
- final LinkRepresentation link3 = new LinkRepresentation().withHref("http://localhost:8080/objects/ABC:123").withMethod(RoHttpMethod.PUT);
- final LinkRepresentation link4 = new LinkRepresentation().withHref("http://localhost:8080/objects/ABC:456").withMethod(RoHttpMethod.GET);
-
- assertThat(link, is(equalTo(link2)));
- assertThat(link, is(not(equalTo(link3))));
- assertThat(link, is(not(equalTo(link4))));
- }
-
- @Test
- public void equalDoesNotDependsOnMethodAndHref() throws UnsupportedEncodingException {
- final LinkRepresentation link = new LinkRepresentation().withHref("http://localhost:8080/objects/ABC:123").withMethod(RoHttpMethod.GET).withRel("something");
- final LinkRepresentation link2 = new LinkRepresentation().withHref("http://localhost:8080/objects/ABC:123").withMethod(RoHttpMethod.GET).withRel("else");
-
- assertThat(link, is(equalTo(link2)));
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/LinkBuilder.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/LinkBuilder.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/LinkBuilder.java
index acd022d..5cb08eb 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/LinkBuilder.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/LinkBuilder.java
@@ -20,9 +20,9 @@ package org.apache.isis.viewer.restfulobjects.rendering;
import javax.ws.rs.core.MediaType;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.RoHttpMethod;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulHttpMethod;
public final class LinkBuilder {
@@ -42,7 +42,7 @@ public final class LinkBuilder {
private final String href;
private final MediaType mediaType;
- private RoHttpMethod method = RoHttpMethod.GET;
+ private RestfulHttpMethod method = RestfulHttpMethod.GET;
private String title;
private JsonRepresentation arguments;
private JsonRepresentation value;
@@ -55,7 +55,7 @@ public final class LinkBuilder {
this.mediaType = mediaType;
}
- public LinkBuilder withHttpMethod(final RoHttpMethod method) {
+ public LinkBuilder withHttpMethod(final RestfulHttpMethod method) {
this.method = method;
return this;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/NOTUSED_WellKnownType.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/NOTUSED_WellKnownType.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/NOTUSED_WellKnownType.java
deleted file mode 100644
index 131c265..0000000
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/NOTUSED_WellKnownType.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.viewer.restfulobjects.rendering;
-
-// TODO: remove, not used?
-enum NOTUSED_WellKnownType {
-
- STRING(java.lang.String.class),
- BYTE(java.lang.Byte.class),
- SHORT(java.lang.Short.class),
- INT(java.lang.Integer.class),
- LONG(java.lang.Long.class),
- BOOLEAN(java.lang.Boolean.class),
- FLOAT(java.lang.Float.class),
- DOUBLE(java.lang.Double.class),
- BIGINT(java.math.BigInteger.class),
- BIGDEC(java.math.BigDecimal.class),
- OBJECT(java.lang.Object.class),
- LIST(java.util.List.class),
- SET(java.util.Set.class);
-
- private final Class<?> cls;
- private final String className;
-
- private NOTUSED_WellKnownType(final Class<?> cls) {
- this.cls = cls;
- this.className = cls.getName();
- }
-
- private String getName() {
- return name().toLowerCase();
- }
-
- private static NOTUSED_WellKnownType lookup(final Class<?> cls) {
- for (final NOTUSED_WellKnownType wellKnownType : values()) {
- if (wellKnownType.cls.equals(cls)) {
- return wellKnownType;
- }
- }
- return null;
- }
-
- private static NOTUSED_WellKnownType lookup(final String className) {
- for (final NOTUSED_WellKnownType wellKnownType : values()) {
- if (wellKnownType.className.equals(className)) {
- return wellKnownType;
- }
- }
- return null;
- }
-
- @SuppressWarnings("unused")
- private static String canonical(final String className) {
- final NOTUSED_WellKnownType wellKnownType = NOTUSED_WellKnownType.lookup(className);
- return wellKnownType != null ? wellKnownType.getName() : className;
- }
-
- @SuppressWarnings("unused")
- private static String canonical(final Class<?> cls) {
- final NOTUSED_WellKnownType wellKnownType = NOTUSED_WellKnownType.lookup(cls);
- return wellKnownType != null ? wellKnownType.getName() : cls.getName();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ReprRendererAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ReprRendererAbstract.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ReprRendererAbstract.java
index 0a68617..f1eecfe 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ReprRendererAbstract.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ReprRendererAbstract.java
@@ -26,8 +26,8 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.core.runtime.system.transaction.UpdateNotifier;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.DomainObjectReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.domaintypes.DomainTypeReprRenderer;
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/AbstractObjectMemberReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/AbstractObjectMemberReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/AbstractObjectMemberReprRenderer.java
index 73c91b9..13713b1 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/AbstractObjectMemberReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/AbstractObjectMemberReprRenderer.java
@@ -23,8 +23,8 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
import org.apache.isis.viewer.restfulobjects.rendering.ReprRendererAbstract;
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ActionResultReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ActionResultReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ActionResultReprRenderer.java
index 5109cb5..d20b2ca 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ActionResultReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ActionResultReprRenderer.java
@@ -25,9 +25,9 @@ import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
import org.apache.isis.viewer.restfulobjects.applib.domainobjects.ActionResultRepresentation.ResultType;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
import org.apache.isis.viewer.restfulobjects.rendering.LinkBuilder;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectLinkTo.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectLinkTo.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectLinkTo.java
index 03a78c8..0234c87 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectLinkTo.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectLinkTo.java
@@ -20,8 +20,8 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
import org.apache.isis.viewer.restfulobjects.rendering.LinkBuilder;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
index 192774e..7185f58 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
@@ -22,6 +22,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
import org.apache.isis.core.metamodel.adapter.oid.RootOid;
import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet;
import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
import org.apache.isis.core.metamodel.services.ServiceUtil;
@@ -34,9 +35,9 @@ import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.RoHttpMethod;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulHttpMethod;
import org.apache.isis.viewer.restfulobjects.rendering.LinkBuilder;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
@@ -46,7 +47,6 @@ import org.apache.isis.viewer.restfulobjects.rendering.ReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.ReprRendererAbstract;
import org.apache.isis.viewer.restfulobjects.rendering.ReprRendererFactoryAbstract;
import org.apache.isis.viewer.restfulobjects.rendering.domaintypes.DomainTypeReprRenderer;
-import org.apache.isis.viewer.restfulobjects.rendering.util.OidUtils;
public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectReprRenderer, ObjectAdapter> {
@@ -70,23 +70,32 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
}
private static enum Mode {
- REGULAR(false, true), PERSIST_LINK_ARGUMENTS(true, true), MODIFY_PROPERTIES_LINK_ARGUMENTS(true, false);
+ REGULAR(false, true, true),
+ PERSIST_LINK_ARGUMENTS(true, true, false),
+ MODIFY_PROPERTIES_LINK_ARGUMENTS(true, false, false),
+ EVENT_SERIALIZATION(false, false, true);
- private final boolean cutDown;
+ private final boolean representsArguments;
private final boolean describedBy;
+ private boolean checkVisibility;
- private Mode(final boolean cutDown, final boolean describedBy) {
- this.cutDown = cutDown;
+ private Mode(final boolean representsArguments, final boolean describedBy, final boolean visibilityCheck) {
+ this.representsArguments = representsArguments;
this.describedBy = describedBy;
+ this.checkVisibility = visibilityCheck;
}
- public boolean isCutDown() {
- return cutDown;
+ public boolean representsArguments() {
+ return representsArguments;
}
public boolean includesDescribedBy() {
return describedBy;
}
+
+ public boolean checkVisibility() {
+ return checkVisibility;
+ }
}
private ObjectAdapterLinkTo linkToBuilder;
@@ -117,7 +126,7 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
public JsonRepresentation render() {
// self, oid
- if (!mode.isCutDown()) {
+ if (!mode.representsArguments()) {
if (objectAdapter.representsPersistent()) {
if (includesSelf) {
final JsonRepresentation self = linkToBuilder.with(objectAdapter).builder(Rel.SELF).build();
@@ -128,14 +137,14 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
}
// title
- if (!mode.isCutDown()) {
+ if (!mode.representsArguments()) {
final String title = objectAdapter.titleString();
representation.mapPut("title", title);
}
// serviceId
- if (!mode.isCutDown()) {
+ if (!mode.representsArguments()) {
final boolean isService = objectAdapter.getSpecification().isService();
if (isService) {
representation.mapPut("serviceId", ServiceUtil.id(objectAdapter.getObject()));
@@ -150,9 +159,9 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
getLinks().arrayAdd(DomainTypeReprRenderer.newLinkToBuilder(getResourceContext(), Rel.DESCRIBEDBY, objectAdapter.getSpecification()).build());
}
- if (!mode.isCutDown()) {
+ if (!mode.representsArguments()) {
// update/persist
- addPersistLinkIfTransient();
+ addPersistLinkIfTransientAndPersistable();
addUpdatePropertiesLinkIfPersistent();
// extensions
@@ -165,7 +174,7 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
}
private String getOidStr() {
- return OidUtils.getOidStr(resourceContext, objectAdapter);
+ return org.apache.isis.viewer.restfulobjects.rendering.util.OidUtils.getOidStr(resourceContext, objectAdapter);
}
private DomainObjectReprRenderer withMembers(final ObjectAdapter objectAdapter) {
@@ -173,7 +182,7 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
final List<ObjectAssociation> associations = objectAdapter.getSpecification().getAssociations();
addAssociations(objectAdapter, members, associations);
- if (!mode.isCutDown()) {
+ if (!mode.representsArguments()) {
final List<ObjectAction> actions = objectAdapter.getSpecification().getObjectActions(Contributed.INCLUDED);
addActions(objectAdapter, actions, members);
}
@@ -185,7 +194,7 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
final LinkFollower linkFollower = getLinkFollower().follow("members");
for (final ObjectAssociation assoc : associations) {
- if (!mode.isCutDown()) {
+ if (mode.checkVisibility()) {
final Consent visibility = assoc.isVisible(getAuthenticationSession(), objectAdapter, resourceContext.getWhere());
if (!visibility.isAllowed()) {
continue;
@@ -199,14 +208,14 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
renderer.with(new ObjectAndProperty(objectAdapter, property)).usingLinkTo(linkToBuilder);
- if (mode.isCutDown()) {
+ if (mode.representsArguments()) {
renderer.asArguments();
}
members.arrayAdd(renderer.render());
}
- if (mode.isCutDown()) {
+ if (mode.representsArguments()) {
// don't include collections
continue;
}
@@ -247,15 +256,18 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
}
}
- private void addPersistLinkIfTransient() {
+ private void addPersistLinkIfTransientAndPersistable() {
if (objectAdapter.representsPersistent()) {
return;
}
+ if(objectAdapter.getSpecification().containsDoOpFacet(NotPersistableFacet.class)) {
+ return;
+ }
final RendererFactory rendererFactory = getRendererFactoryRegistry().find(RepresentationType.DOMAIN_OBJECT);
final DomainObjectReprRenderer renderer = (DomainObjectReprRenderer) rendererFactory.newRenderer(getResourceContext(), null, JsonRepresentation.newMap());
final JsonRepresentation domainObjectRepr = renderer.with(objectAdapter).asPersistLinkArguments().render();
- final LinkBuilder persistLinkBuilder = LinkBuilder.newBuilder(getResourceContext(), Rel.PERSIST, RepresentationType.DOMAIN_OBJECT, "objects/").withHttpMethod(RoHttpMethod.POST).withArguments(domainObjectRepr);
+ final LinkBuilder persistLinkBuilder = LinkBuilder.newBuilder(getResourceContext(), Rel.PERSIST, RepresentationType.DOMAIN_OBJECT, "objects/").withHttpMethod(RestfulHttpMethod.POST).withArguments(domainObjectRepr);
getLinks().arrayAdd(persistLinkBuilder.build());
}
@@ -269,6 +281,13 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
return this;
}
+ // not part of the spec
+ public DomainObjectReprRenderer asEventSerialization() {
+ this.mode = Mode.EVENT_SERIALIZATION;
+ return this;
+ }
+
+
private void addUpdatePropertiesLinkIfPersistent() {
if (!objectAdapter.representsPersistent()) {
return;
@@ -278,7 +297,7 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
final DomainObjectReprRenderer renderer = (DomainObjectReprRenderer) rendererFactory.newRenderer(getResourceContext(), null, JsonRepresentation.newMap());
final JsonRepresentation domainObjectRepr = renderer.with(objectAdapter).asModifyPropertiesLinkArguments().render();
- final LinkBuilder persistLinkBuilder = LinkBuilder.newBuilder(getResourceContext(), Rel.MODIFY, RepresentationType.DOMAIN_OBJECT, "objects/%s", getOidStr()).withHttpMethod(RoHttpMethod.PUT).withArguments(domainObjectRepr);
+ final LinkBuilder persistLinkBuilder = LinkBuilder.newBuilder(getResourceContext(), Rel.MODIFY, RepresentationType.DOMAIN_OBJECT, "objects/%s", getOidStr()).withHttpMethod(RestfulHttpMethod.PUT).withArguments(domainObjectRepr);
getLinks().arrayAdd(persistLinkBuilder.build());
}
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainServiceLinkTo.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainServiceLinkTo.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainServiceLinkTo.java
index f3fce41..d17e5d7 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainServiceLinkTo.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainServiceLinkTo.java
@@ -18,7 +18,7 @@ package org.apache.isis.viewer.restfulobjects.rendering.domainobjects;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.services.ServiceUtil;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
+import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.rendering.LinkBuilder;
public class DomainServiceLinkTo extends DomainObjectLinkTo {
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ListReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ListReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ListReprRenderer.java
index 32269f4..be278e1 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ListReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ListReprRenderer.java
@@ -21,8 +21,8 @@ import java.util.Collection;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
import org.apache.isis.viewer.restfulobjects.rendering.RendererFactory;
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/MemberType.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/MemberType.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/MemberType.java
index d4005a0..0d21d6f 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/MemberType.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/MemberType.java
@@ -35,16 +35,16 @@ import org.apache.isis.core.progmodel.facets.actions.validate.ActionValidationFa
import org.apache.isis.core.progmodel.facets.collections.validate.CollectionValidateAddToFacet;
import org.apache.isis.core.progmodel.facets.collections.validate.CollectionValidateRemoveFromFacet;
import org.apache.isis.core.progmodel.facets.properties.validate.PropertyValidateFacet;
+import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.RoHttpMethod;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulHttpMethod;
import com.google.common.collect.ImmutableMap;
public enum MemberType {
- PROPERTY("properties/", "id", RepresentationType.OBJECT_PROPERTY, ImmutableMap.of("modify", MutatorSpec.of(Rel.MODIFY, PropertyValidateFacet.class, PropertySetterFacet.class, RoHttpMethod.PUT, BodyArgs.ONE), "clear",
- MutatorSpec.of(Rel.CLEAR, PropertyValidateFacet.class, PropertyClearFacet.class, RoHttpMethod.DELETE, BodyArgs.NONE))) {
+ PROPERTY("properties/", "id", RepresentationType.OBJECT_PROPERTY, ImmutableMap.of("modify", MutatorSpec.of(Rel.MODIFY, PropertyValidateFacet.class, PropertySetterFacet.class, RestfulHttpMethod.PUT, BodyArgs.ONE), "clear",
+ MutatorSpec.of(Rel.CLEAR, PropertyValidateFacet.class, PropertyClearFacet.class, RestfulHttpMethod.DELETE, BodyArgs.NONE))) {
@Override
public ObjectSpecification specFor(final ObjectMember objectMember) {
return objectMember.getSpecification();
@@ -54,8 +54,8 @@ public enum MemberType {
* {@link #getMutators()} are keyed by
* {@link CollectionSemantics#getAddToKey()}
*/
- COLLECTION("collections/", "id", RepresentationType.OBJECT_COLLECTION, ImmutableMap.of("addToSet", MutatorSpec.of(Rel.ADD_TO, CollectionValidateAddToFacet.class, CollectionAddToFacet.class, RoHttpMethod.PUT, BodyArgs.ONE), "addToList",
- MutatorSpec.of(Rel.ADD_TO, CollectionValidateAddToFacet.class, CollectionAddToFacet.class, RoHttpMethod.POST, BodyArgs.ONE), "removeFrom", MutatorSpec.of(Rel.REMOVE_FROM, CollectionValidateRemoveFromFacet.class, CollectionRemoveFromFacet.class, RoHttpMethod.DELETE, BodyArgs.ONE))) {
+ COLLECTION("collections/", "id", RepresentationType.OBJECT_COLLECTION, ImmutableMap.of("addToSet", MutatorSpec.of(Rel.ADD_TO, CollectionValidateAddToFacet.class, CollectionAddToFacet.class, RestfulHttpMethod.PUT, BodyArgs.ONE), "addToList",
+ MutatorSpec.of(Rel.ADD_TO, CollectionValidateAddToFacet.class, CollectionAddToFacet.class, RestfulHttpMethod.POST, BodyArgs.ONE), "removeFrom", MutatorSpec.of(Rel.REMOVE_FROM, CollectionValidateRemoveFromFacet.class, CollectionRemoveFromFacet.class, RestfulHttpMethod.DELETE, BodyArgs.ONE))) {
@Override
public ObjectSpecification specFor(final ObjectMember objectMember) {
return objectMember.getSpecification();
@@ -65,8 +65,8 @@ public enum MemberType {
* {@link #getMutators()} are keyed by
* {@link ActionSemantics#getInvokeKey()}
*/
- ACTION("actions/", "id", RepresentationType.ACTION_RESULT, ImmutableMap.of("invokeQueryOnly", MutatorSpec.of(Rel.INVOKE, ActionValidationFacet.class, ActionInvocationFacet.class, RoHttpMethod.GET, BodyArgs.MANY, "invoke"), "invokeIdempotent",
- MutatorSpec.of(Rel.INVOKE, ActionValidationFacet.class, ActionInvocationFacet.class, RoHttpMethod.PUT, BodyArgs.MANY, "invoke"), "invoke", MutatorSpec.of(Rel.INVOKE, ActionValidationFacet.class, ActionInvocationFacet.class, RoHttpMethod.POST, BodyArgs.MANY, "invoke"))) {
+ ACTION("actions/", "id", RepresentationType.ACTION_RESULT, ImmutableMap.of("invokeQueryOnly", MutatorSpec.of(Rel.INVOKE, ActionValidationFacet.class, ActionInvocationFacet.class, RestfulHttpMethod.GET, BodyArgs.MANY, "invoke"), "invokeIdempotent",
+ MutatorSpec.of(Rel.INVOKE, ActionValidationFacet.class, ActionInvocationFacet.class, RestfulHttpMethod.PUT, BodyArgs.MANY, "invoke"), "invoke", MutatorSpec.of(Rel.INVOKE, ActionValidationFacet.class, ActionInvocationFacet.class, RestfulHttpMethod.POST, BodyArgs.MANY, "invoke"))) {
@Override
public ObjectSpecification specFor(final ObjectMember objectMember) {
final ObjectAction objectAction = (ObjectAction) objectMember;
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/MutatorSpec.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/MutatorSpec.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/MutatorSpec.java
index f44f3ea..5bd37bd 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/MutatorSpec.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/MutatorSpec.java
@@ -17,27 +17,27 @@
package org.apache.isis.viewer.restfulobjects.rendering.domainobjects;
import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.viewer.restfulobjects.applib.RoHttpMethod;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
+import org.apache.isis.viewer.restfulobjects.applib.Rel;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulHttpMethod;
public class MutatorSpec {
- public static MutatorSpec of(final Rel rel, final Class<? extends Facet> validationFacetType, final Class<? extends Facet> mutatorFacetType, final RoHttpMethod httpMethod, final BodyArgs argSpec) {
+ public static MutatorSpec of(final Rel rel, final Class<? extends Facet> validationFacetType, final Class<? extends Facet> mutatorFacetType, final RestfulHttpMethod httpMethod, final BodyArgs argSpec) {
return of(rel, validationFacetType, mutatorFacetType, httpMethod, argSpec, null);
}
- public static MutatorSpec of(final Rel rel, final Class<? extends Facet> validationFacetType, final Class<? extends Facet> mutatorFacetType, final RoHttpMethod httpMethod, final BodyArgs argSpec, final String suffix) {
+ public static MutatorSpec of(final Rel rel, final Class<? extends Facet> validationFacetType, final Class<? extends Facet> mutatorFacetType, final RestfulHttpMethod httpMethod, final BodyArgs argSpec, final String suffix) {
return new MutatorSpec(rel, validationFacetType, mutatorFacetType, httpMethod, argSpec, suffix);
}
public final Rel rel;
public final Class<? extends Facet> validationFacetType;
public final Class<? extends Facet> mutatorFacetType;
- public final RoHttpMethod httpMethod;
+ public final RestfulHttpMethod httpMethod;
public final String suffix;
public final BodyArgs arguments;
- private MutatorSpec(final Rel rel, final Class<? extends Facet> validationFacetType, final Class<? extends Facet> mutatorFacetType, final RoHttpMethod httpMethod, final BodyArgs bodyArgs, final String suffix) {
+ private MutatorSpec(final Rel rel, final Class<? extends Facet> validationFacetType, final Class<? extends Facet> mutatorFacetType, final RestfulHttpMethod httpMethod, final BodyArgs bodyArgs, final String suffix) {
this.rel = rel;
this.validationFacetType = validationFacetType;
this.mutatorFacetType = mutatorFacetType;
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
index c180f3f..49bf8c5 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
@@ -26,8 +26,8 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
import org.apache.isis.viewer.restfulobjects.rendering.RendererFactory;
@@ -184,8 +184,10 @@ public class ObjectActionReprRenderer extends AbstractObjectMemberReprRenderer<O
}
final List<Object> list = Lists.newArrayList();
for (final ObjectAdapter choiceAdapter : choiceAdapters) {
- final ObjectSpecification objectSpec = param.getSpecification();
- list.add(DomainObjectReprRenderer.valueOrRef(resourceContext, choiceAdapter, objectSpec));
+ // REVIEW: previously was using the spec of the parameter, but think instead it should be the spec of the adapter itself
+ // final ObjectSpecification choiceSpec = param.getSpecification();
+ final ObjectSpecification choiceSpec = choiceAdapter.getSpecification();
+ list.add(DomainObjectReprRenderer.valueOrRef(resourceContext, choiceAdapter, choiceSpec));
}
return list;
}
@@ -195,8 +197,10 @@ public class ObjectActionReprRenderer extends AbstractObjectMemberReprRenderer<O
if (defaultAdapter == null) {
return null;
}
- final ObjectSpecification objectSpec = param.getSpecification();
- return DomainObjectReprRenderer.valueOrRef(resourceContext, defaultAdapter, objectSpec);
+ // REVIEW: previously was using the spec of the parameter, but think instead it should be the spec of the adapter itself
+ // final ObjectSpecification defaultSpec = param.getSpecification();
+ final ObjectSpecification defaultSpec = defaultAdapter.getSpecification();
+ return DomainObjectReprRenderer.valueOrRef(resourceContext, defaultAdapter, defaultSpec);
}
// ///////////////////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectAdapterLinkTo.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectAdapterLinkTo.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectAdapterLinkTo.java
index afeda55..d59246f 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectAdapterLinkTo.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectAdapterLinkTo.java
@@ -20,8 +20,8 @@ package org.apache.isis.viewer.restfulobjects.rendering.domainobjects;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
import org.apache.isis.viewer.restfulobjects.rendering.LinkBuilder;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java
index 8dd36c9..8640e7f 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java
@@ -25,8 +25,8 @@ import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacetUtils;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
import org.apache.isis.viewer.restfulobjects.rendering.LinkBuilder;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
index 2c1c6c1..99bf332 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
@@ -24,8 +24,8 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
import org.apache.isis.viewer.restfulobjects.rendering.RendererFactory;
@@ -77,15 +77,18 @@ public class ObjectPropertyReprRenderer extends AbstractObjectMemberReprRenderer
// ///////////////////////////////////////////////////
private void addValue() {
- representation.mapPut("value", valueRep());
+ representation.mapPut("value", valueOrRefRepr());
}
- private Object valueRep() {
+ private Object valueOrRefRepr() {
final ObjectAdapter valueAdapter = objectMember.get(objectAdapter);
if (valueAdapter == null) {
return NullNode.getInstance();
}
- return DomainObjectReprRenderer.valueOrRef(resourceContext, valueAdapter, objectMember.getSpecification());
+ // REVIEW: previously was using the spec of the member, but think instead it should be the spec of the adapter itself
+ // final ObjectSpecification valueSpec = objectMember.getSpecification();
+ ObjectSpecification valueSpec = valueAdapter.getSpecification();
+ return DomainObjectReprRenderer.valueOrRef(resourceContext, valueAdapter, valueSpec);
}
// ///////////////////////////////////////////////////
@@ -139,8 +142,10 @@ public class ObjectPropertyReprRenderer extends AbstractObjectMemberReprRenderer
}
final List<Object> list = Lists.newArrayList();
for (final ObjectAdapter choiceAdapter : choiceAdapters) {
- final ObjectSpecification objectSpec = objectMember.getSpecification();
- list.add(DomainObjectReprRenderer.valueOrRef(resourceContext, choiceAdapter, objectSpec));
+ // REVIEW: previously was using the spec of the member, but think instead it should be the spec of the adapter itself
+ // final ObjectSpecification choiceSpec = objectMember.getSpecification();
+ final ObjectSpecification choiceSpec = objectAdapter.getSpecification();
+ list.add(DomainObjectReprRenderer.valueOrRef(resourceContext, choiceAdapter, choiceSpec));
}
return list;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ScalarValueReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ScalarValueReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ScalarValueReprRenderer.java
index b81d48d..0ce4116 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ScalarValueReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ScalarValueReprRenderer.java
@@ -20,8 +20,8 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
import org.apache.isis.viewer.restfulobjects.rendering.ReprRenderer;
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/AbstractTypeMemberReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/AbstractTypeMemberReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/AbstractTypeMemberReprRenderer.java
index 3f4dd53..1347e41 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/AbstractTypeMemberReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/AbstractTypeMemberReprRenderer.java
@@ -18,8 +18,8 @@ package org.apache.isis.viewer.restfulobjects.rendering.domaintypes;
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
import org.apache.isis.viewer.restfulobjects.rendering.LinkBuilder;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/ActionDescriptionReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/ActionDescriptionReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/ActionDescriptionReprRenderer.java
index 7f3c08a..e6ff5f7 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/ActionDescriptionReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/ActionDescriptionReprRenderer.java
@@ -23,8 +23,8 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
import org.apache.isis.viewer.restfulobjects.rendering.LinkBuilder;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/ActionParameterDescriptionReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/ActionParameterDescriptionReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/ActionParameterDescriptionReprRenderer.java
index fcdf4ca..e605952 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/ActionParameterDescriptionReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/ActionParameterDescriptionReprRenderer.java
@@ -21,8 +21,8 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
import org.apache.isis.viewer.restfulobjects.rendering.LinkBuilder;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/CollectionDescriptionReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/CollectionDescriptionReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/CollectionDescriptionReprRenderer.java
index 0f008b9..fffd379 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/CollectionDescriptionReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/CollectionDescriptionReprRenderer.java
@@ -19,8 +19,8 @@ package org.apache.isis.viewer.restfulobjects.rendering.domaintypes;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
import org.apache.isis.viewer.restfulobjects.rendering.LinkBuilder;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/DomainTypeReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/DomainTypeReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/DomainTypeReprRenderer.java
index 2b2df40..6ad82fd 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/DomainTypeReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/DomainTypeReprRenderer.java
@@ -25,8 +25,8 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
import org.apache.isis.viewer.restfulobjects.rendering.LinkBuilder;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/PropertyDescriptionReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/PropertyDescriptionReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/PropertyDescriptionReprRenderer.java
index b11d3fc..ba3e0fd 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/PropertyDescriptionReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/PropertyDescriptionReprRenderer.java
@@ -20,8 +20,8 @@ import org.apache.isis.core.metamodel.facets.maxlen.MaxLengthFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
import org.apache.isis.viewer.restfulobjects.rendering.LinkBuilder;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/TypeActionResultReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/TypeActionResultReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/TypeActionResultReprRenderer.java
index 83a258d..d748343 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/TypeActionResultReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/TypeActionResultReprRenderer.java
@@ -18,8 +18,8 @@ package org.apache.isis.viewer.restfulobjects.rendering.domaintypes;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.LinkRepresentation;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.LinkRepresentation;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
import org.apache.isis.viewer.restfulobjects.rendering.ReprRenderer;
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/TypeListReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/TypeListReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/TypeListReprRenderer.java
index 5536306..e3317d2 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/TypeListReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/TypeListReprRenderer.java
@@ -22,8 +22,8 @@ import java.util.Collection;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
import org.apache.isis.viewer.restfulobjects.rendering.LinkBuilder;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/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
new file mode 100644
index 0000000..9cb2ee7
--- /dev/null
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/eventserializer/EventSerializerRendererContext.java
@@ -0,0 +1,51 @@
+package org.apache.isis.viewer.restfulobjects.rendering.eventserializer;
+
+import java.util.Collections;
+import java.util.List;
+
+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.context.IsisContext;
+import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
+
+public class EventSerializerRendererContext implements RendererContext {
+
+ private final Where where;
+
+ public EventSerializerRendererContext(Where where) {
+ this.where = where;
+ }
+
+ @Override
+ public String urlFor(String url) {
+ return "[base]/" + url;
+ }
+
+ @Override
+ public AuthenticationSession getAuthenticationSession() {
+ return IsisContext.getAuthenticationSession();
+ }
+
+ @Override
+ public AdapterManager getAdapterManager() {
+ return IsisContext.getPersistenceSession().getAdapterManager();
+ }
+
+ @Override
+ public List<List<String>> getFollowLinks() {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public Where getWhere() {
+ return where;
+ }
+
+ @Override
+ public Localization getLocalization() {
+ return IsisContext.getLocalization();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/eventserializer/RestfulObjectsSpecEventSerializer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/eventserializer/RestfulObjectsSpecEventSerializer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/eventserializer/RestfulObjectsSpecEventSerializer.java
new file mode 100644
index 0000000..8a23976
--- /dev/null
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/eventserializer/RestfulObjectsSpecEventSerializer.java
@@ -0,0 +1,70 @@
+package org.apache.isis.viewer.restfulobjects.rendering.eventserializer;
+
+import java.io.IOException;
+
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.services.publish.EventMetadata;
+import org.apache.isis.applib.services.publish.EventPayload;
+import org.apache.isis.applib.services.publish.EventSerializer;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.util.JsonMapper;
+import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
+import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.DomainObjectReprRenderer;
+import org.codehaus.jackson.JsonGenerationException;
+import org.codehaus.jackson.map.JsonMappingException;
+
+public class RestfulObjectsSpecEventSerializer implements EventSerializer {
+
+ private final static JsonMapper jsonMapper = JsonMapper.instance();
+
+ private final static DomainObjectReprRenderer.Factory objectRendererFactory = new DomainObjectReprRenderer.Factory();
+
+ @Programmatic
+ @Override
+ public Object serialize(EventMetadata metadata, EventPayload payload) {
+ final RendererContext rendererContext = new EventSerializerRendererContext(Where.OBJECT_FORMS);
+
+ final JsonRepresentation payloadRepr = asPayloadRepr(rendererContext, payload);
+ final JsonRepresentation eventRepr = asEventRepr(metadata, payloadRepr);
+
+ return jsonFor(eventRepr);
+ }
+
+ JsonRepresentation asEventRepr(EventMetadata metadata, final JsonRepresentation payloadRepr) {
+ final JsonRepresentation eventRepr = JsonRepresentation.newMap();
+ final JsonRepresentation metadataRepr = JsonRepresentation.newMap();
+ eventRepr.mapPut("metadata", metadataRepr);
+ metadataRepr.mapPut("guid", metadata.getGuid());
+ metadataRepr.mapPut("user", metadata.getUser());
+ metadataRepr.mapPut("timestamp", metadata.getTimestamp());
+ eventRepr.mapPut("payload", payloadRepr);
+ return eventRepr;
+ }
+
+ JsonRepresentation asPayloadRepr(final RendererContext rendererContext, EventPayload payload) {
+ final DomainObjectReprRenderer renderer = (DomainObjectReprRenderer) objectRendererFactory.newRenderer(rendererContext, null, JsonRepresentation.newMap());
+ final ObjectAdapter objectAdapter = rendererContext.getAdapterManager().adapterFor(payload);
+ renderer.with(objectAdapter).asEventSerialization();
+ return renderer.render();
+ }
+
+ String jsonFor(final Object object) {
+ try {
+ return getJsonMapper().write(object);
+ } catch (final JsonGenerationException e) {
+ throw new RuntimeException(e);
+ } catch (final JsonMappingException e) {
+ throw new RuntimeException(e);
+ } catch (final IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ JsonMapper getJsonMapper() {
+ return jsonMapper;
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/60575469/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/util/InputStreamUtil.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/util/InputStreamUtil.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/util/InputStreamUtil.java
deleted file mode 100644
index 44d7697..0000000
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/util/InputStreamUtil.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.viewer.restfulobjects.rendering.util;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-
-public final class InputStreamUtil {
-
- private InputStreamUtil() {
- }
-
- public static List<String> getArgs(final InputStream body) {
- // will be sorted by arg
- final Map<String, String> args = new TreeMap<String, String>();
- if (body == null) {
- return listOfValues(args);
- }
- try {
- final InputStreamReader inputStreamReader = new InputStreamReader(body);
- final BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
- String readLine = bufferedReader.readLine();
- while (readLine != null) {
- final String[] keyValuePairs = readLine.split("&");
- for (final String keyValuePair : keyValuePairs) {
- final String[] keyThenValue = keyValuePair.split("=");
- args.put(keyThenValue[0], keyThenValue[1]);
- }
- readLine = bufferedReader.readLine();
- }
- return listOfValues(args);
- } catch (final IOException ex) {
- throw new RuntimeException(ex);
- }
- }
-
- private static ArrayList<String> listOfValues(final Map<String, String> args) {
- // returns the values in the order of the keys
- return new ArrayList<String>(args.values());
- }
-
-}