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 2011/10/17 23:04:13 UTC
svn commit: r1185378 [1/2] - in /incubator/isis/trunk/framework:
tck/tck-dom/src/main/java/org/apache/isis/tck/dom/simples/
viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/
viewer/json/json-applib/src/main/java/org/apache/isis/...
Author: danhaywood
Date: Mon Oct 17 21:04:11 2011
New Revision: 1185378
URL: http://svn.apache.org/viewvc?rev=1185378&view=rev
Log:
ISIS-109: support for custom serialization of JSON built-ins; Rels are now URNs (in an enum); changed format of the 'profile' parameter of media-type to be a URN (cf v0.47 of RO spec)
Added:
incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/
incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainResourceHelperTest_readBodyAsMap.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/JsonValueEncoderTest_asAdapter.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/JsonValueEncoderTest_asObject.java
Modified:
incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/simples/SimpleEntity.java
incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/JsonRepresentation.java
incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulMediaType.java
incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/blocks/Link.java
incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/RepresentationTypeTest_getMediaType_lookup.java
incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/capabilities/CapabilitiesResourceTest_representationAndHeaders.java
incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/home/HomePageResourceTest_representationAndHeaders.java
incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/service/invoke/DomainServiceResourceTest_invokeAction.java
incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/service/serviceId/DomainServiceResourceTest_serviceId_xrofollowlinks.java
incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/user/UserResourceTest_representationAndHeaders.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/LinkBuilder.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/ReprRendererAbstract.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/AbstractObjectMemberReprRenderer.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectLinkTo.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectReprRenderer.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainResourceHelper.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainServiceLinkTo.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/JsonValueEncoder.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/MemberType.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/MutatorSpec.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectActionReprRenderer.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectAdapterLinkTo.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectCollectionReprRenderer.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectPropertyReprRenderer.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/AbstractTypeFeatureReprBuilder.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeReprRenderer.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypesReprRenderer.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeActionParamReprRenderer.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeActionReprRenderer.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeCollectionReprRenderer.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypePropertyReprRenderer.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/home/HomePageReprRenderer.java
Modified: incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/simples/SimpleEntity.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/simples/SimpleEntity.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/simples/SimpleEntity.java (original)
+++ incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/simples/SimpleEntity.java Mon Oct 17 21:04:11 2011
@@ -19,12 +19,16 @@
package org.apache.isis.tck.dom.simples;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
import org.apache.isis.applib.AbstractDomainObject;
import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Optional;
public class SimpleEntity extends AbstractDomainObject {
- // {{ Name
+ // {{ Name (string)
private String name;
@MemberOrder(sequence = "1")
@@ -38,7 +42,7 @@ public class SimpleEntity extends Abstra
// }}
- // {{ Flag
+ // {{ Flag (boolean)
private Boolean flag;
@MemberOrder(sequence = "1")
@@ -51,5 +55,126 @@ public class SimpleEntity extends Abstra
}
// }}
+
+ // {{ AnInt (int)
+ private int anInt;
+
+ @MemberOrder(sequence = "1")
+ public int getAnInt() {
+ return anInt;
+ }
+
+ public void setAnInt(final int anInt) {
+ this.anInt = anInt;
+ }
+ // }}
+
+
+ // {{ AnotherInt
+ private Integer anotherInt;
+
+ @MemberOrder(sequence = "1")
+ @Optional
+ public Integer getAnotherInt() {
+ return anotherInt;
+ }
+
+ public void setAnotherInt(final Integer anotherInt) {
+ this.anotherInt = anotherInt;
+ }
+ // }}
+
+ // {{ ALong
+ private long aLong;
+ @MemberOrder(sequence = "1")
+ public long getALong() {
+ return aLong;
+ }
+
+ public void setALong(final long aLong) {
+ this.aLong = aLong;
+ }
+ // }}
+
+
+ // {{ AnotherLong
+ private Long anotherLong;
+
+ @MemberOrder(sequence = "1")
+ @Optional
+ public Long getAnotherLong() {
+ return anotherLong;
+ }
+
+ public void setAnotherLong(final Long anotherLong) {
+ this.anotherLong = anotherLong;
+ }
+ // }}
+
+
+ // {{ ADouble
+ private double aDouble;
+
+ @MemberOrder(sequence = "1")
+ public double getADouble() {
+ return aDouble;
+ }
+
+ public void setADouble(final double aDouble) {
+ this.aDouble = aDouble;
+ }
+ // }}
+
+
+ // {{ AnotherDouble
+ private Double anotherDouble;
+
+ @MemberOrder(sequence = "1")
+ @Optional
+ public Double getAnotherDouble() {
+ return anotherDouble;
+ }
+
+ public void setAnotherDouble(final Double anotherDouble) {
+ this.anotherDouble = anotherDouble;
+ }
+ // }}
+
+
+ // {{ ABigInteger
+ private BigInteger aBigInteger;
+
+ @MemberOrder(sequence = "1")
+ @Optional
+ public BigInteger getABigInteger() {
+ return aBigInteger;
+ }
+
+ public void setABigInteger(final BigInteger aBigInteger) {
+ this.aBigInteger = aBigInteger;
+ }
+ // }}
+
+
+ // {{ ABigDecimal
+ private BigDecimal aBigDecimal;
+
+ @MemberOrder(sequence = "1")
+ @Optional
+ public BigDecimal getABigDecimal() {
+ return aBigDecimal;
+ }
+
+ public void setABigDecimal(final BigDecimal bigDecimal) {
+ this.aBigDecimal = bigDecimal;
+ }
+ // }}
+
+
+
+
+
+
+
}
Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/JsonRepresentation.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/JsonRepresentation.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/JsonRepresentation.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/JsonRepresentation.java Mon Oct 17 21:04:11 2011
@@ -6,6 +6,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.lang.reflect.Constructor;
+import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.Collections;
@@ -314,6 +315,43 @@ public class JsonRepresentation {
}
+ /////////////////////////////////////////////////////////////////////////
+ // isBigDecimal, getBigDecimal, asBigDecimal
+ /////////////////////////////////////////////////////////////////////////
+
+ public boolean isBigDecimal(String path) {
+ return isBigDecimal(getNode(path));
+ }
+
+ public boolean isBigDecimal() {
+ return isBigDecimal(asJsonNode());
+ }
+
+ private boolean isBigDecimal(JsonNode node) {
+ return !representsNull(node) && node.isValueNode() && node.isBigDecimal();
+ }
+
+ public BigDecimal getBigDecimal(String path) {
+ JsonNode node = getNode(path);
+ return getBigDecimal(path, node);
+ }
+
+ public BigDecimal asBigDecimal() {
+ return getBigDecimal(null, asJsonNode());
+ }
+
+ private BigDecimal getBigDecimal(String path, JsonNode node) {
+ if (representsNull(node)) {
+ return null;
+ }
+ checkValue(path, node, "a biginteger");
+ if (!node.isBigDecimal()) {
+ throw new IllegalArgumentException(formatExMsg(path, "is not a biginteger"));
+ }
+ return node.getDecimalValue();
+ }
+
+
/////////////////////////////////////////////////////////////////////////
// isInt, getInt, asInt
@@ -658,7 +696,9 @@ public class JsonRepresentation {
String xpathExpression = String.format(xpathTemplate, args);
try {
// puts object structure under a <o>
- org.jdom.Document jdomDoc = new SAXBuilder().build(new StringReader(toXml()));
+ final StringReader xmlStream = new StringReader(toXml());
+ final SAXBuilder saxBuilder = new SAXBuilder();
+ org.jdom.Document jdomDoc = saxBuilder.build(xmlStream);
String prefix = jsonNode.isArray()?"a":"o";
XPath xpath = XPath.newInstance("/" + prefix + xpathExpression);
Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulMediaType.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulMediaType.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulMediaType.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulMediaType.java Mon Oct 17 21:04:11 2011
@@ -12,7 +12,7 @@ public final class RestfulMediaType {
private RestfulMediaType(){}
- private static final String BASE = MediaType.APPLICATION_JSON + ";profile=http://restfulobjects.org/profiles/";
+ private static final String BASE = MediaType.APPLICATION_JSON + ";profile=urn:org.restfulobjects/";
public final static String APPLICATION_JSON_HOME_PAGE = BASE + "homepage";
public final static String APPLICATION_JSON_USER = BASE + "user";
Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/blocks/Link.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/blocks/Link.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/blocks/Link.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/blocks/Link.java Mon Oct 17 21:04:11 2011
@@ -71,8 +71,19 @@ public final class Link extends JsonRepr
return this;
}
+ /**
+ * Returns the "arguments" json-property of the link (a map).
+ *
+ * <p>
+ * If there is no "arguments" node, then as a convenience
+ * will return an empty map.
+ * @return
+ */
public JsonRepresentation getArguments() {
JsonNode arguments = asObjectNode().get("arguments");
+ if(arguments.isNull()) {
+ return JsonRepresentation.newMap();
+ }
return new JsonRepresentation(arguments);
}
Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/RepresentationTypeTest_getMediaType_lookup.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/RepresentationTypeTest_getMediaType_lookup.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/RepresentationTypeTest_getMediaType_lookup.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/RepresentationTypeTest_getMediaType_lookup.java Mon Oct 17 21:04:11 2011
@@ -32,7 +32,7 @@ public class RepresentationTypeTest_getM
@Test
public void getMediaTypeProfile() {
- assertThat(RepresentationType.CAPABILITIES.getMediaTypeWithProfile(), is("http://restfulobjects.org/profiles/capabilities"));
+ assertThat(RepresentationType.CAPABILITIES.getMediaTypeWithProfile(), is("urn:org.restfulobjects/capabilities"));
assertThat(RepresentationType.GENERIC.getMediaTypeWithProfile(), is(nullValue()));
}
Modified: incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/capabilities/CapabilitiesResourceTest_representationAndHeaders.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/capabilities/CapabilitiesResourceTest_representationAndHeaders.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/capabilities/CapabilitiesResourceTest_representationAndHeaders.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/capabilities/CapabilitiesResourceTest_representationAndHeaders.java Mon Oct 17 21:04:11 2011
@@ -104,7 +104,7 @@ public class CapabilitiesResourceTest_re
final MediaType contentType = restfulResponse.getHeader(Header.CONTENT_TYPE);
assertThat(contentType, hasType("application"));
assertThat(contentType, hasSubType("json"));
- assertThat(contentType, hasParameter("profile", "http://restfulobjects.org/profiles/capabilities"));
+ assertThat(contentType, hasParameter("profile", "urn:org.restfulobjects/capabilities"));
assertThat(contentType, is(RepresentationType.CAPABILITIES.getMediaType()));
// then
Modified: incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/home/HomePageResourceTest_representationAndHeaders.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/home/HomePageResourceTest_representationAndHeaders.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/home/HomePageResourceTest_representationAndHeaders.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/home/HomePageResourceTest_representationAndHeaders.java Mon Oct 17 21:04:11 2011
@@ -92,7 +92,7 @@ public class HomePageResourceTest_repres
final MediaType contentType = restfulResponse.getHeader(Header.CONTENT_TYPE);
assertThat(contentType, hasType("application"));
assertThat(contentType, hasSubType("json"));
- assertThat(contentType, hasParameter("profile", "http://restfulobjects.org/profiles/homepage"));
+ assertThat(contentType, hasParameter("profile", "urn:org.restfulobjects/homepage"));
assertThat(contentType, is(RepresentationType.HOME_PAGE.getMediaType()));
// then
Modified: incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/service/invoke/DomainServiceResourceTest_invokeAction.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/service/invoke/DomainServiceResourceTest_invokeAction.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/service/invoke/DomainServiceResourceTest_invokeAction.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/service/invoke/DomainServiceResourceTest_invokeAction.java Mon Oct 17 21:04:11 2011
@@ -9,6 +9,7 @@ import java.io.IOException;
import javax.ws.rs.core.Response;
+import org.apache.isis.applib.annotation.Ignore;
import org.apache.isis.runtimes.dflt.webserver.WebServer;
import org.apache.isis.viewer.json.applib.HttpMethod;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
@@ -48,7 +49,7 @@ public class DomainServiceResourceTest_i
@Test
- public void invokeNoArg() throws Exception {
+ public void invokeQueryOnly_noArg_usingClientFollow() throws Exception {
// given
JsonRepresentation givenAction = givenAction("simples", "list");
@@ -67,7 +68,7 @@ public class DomainServiceResourceTest_i
}
@Test
- public void invokePut() throws Exception {
+ public void invokeIdempotent_withArgs_usingClientFollow() throws Exception {
// given
JsonRepresentation givenAction = givenAction("simples", "newPersistentEntity");
@@ -97,19 +98,49 @@ public class DomainServiceResourceTest_i
assertThat(objectRepr.xpath("//members/e[propertyId='%s']/value", "flag").getBoolean("value"), is(true));
}
+ @org.junit.Ignore("up to here")
+ @Test
+ public void invoke_withAllBuiltInArgs_usingClientFollow() throws Exception {
+
+ // given
+ JsonRepresentation givenAction = givenAction("simples", "newTransientEntity");
+ final ObjectActionRepresentation actionRepr = givenAction.as(ObjectActionRepresentation.class);
+
+ // when
+ final Link invokeLink = actionRepr.getInvoke();
+
+ // then
+ assertThat(invokeLink, is(not(nullValue())));
+
+ final JsonRepresentation args = invokeLink.getArguments();
+ assertThat(args.size(), is(0));
+
+ // when
+ args.mapPut("name", "New Name");
+ args.mapPut("flag", true);
+ final Response response = client.follow(invokeLink, args);
+
+ // then
+ RestfulResponse<DomainObjectRepresentation> restfulResponse = RestfulResponse.ofT(response);
+ final DomainObjectRepresentation objectRepr = restfulResponse.getEntity();
+
+ assertThat(objectRepr.xpath("//members/e[propertyId='%s']/value", "name").getString("value"), is("New Name"));
+ assertThat(objectRepr.xpath("//members/e[propertyId='%s']/value", "flag").getBoolean("value"), is(true));
+ }
+
private JsonRepresentation givenAction(final String serviceId, final String actionId) throws JsonParseException, JsonMappingException, IOException {
final String href = givenHrefToService(serviceId);
final RestfulRequest request =
- client.createRequest(HttpMethod.GET, href).withArg(QueryParameter.FOLLOW_LINKS, "members[actionId=%s].actionDetails", actionId);
+ client.createRequest(HttpMethod.GET, href).withArg(QueryParameter.FOLLOW_LINKS, "members[actionId=%s].details", actionId);
final RestfulResponse<DomainObjectRepresentation> restfulResponse = request.executeT();
assertThat(restfulResponse.getStatus(), is(HttpStatusCode.OK));
final DomainObjectRepresentation repr = restfulResponse.getEntity();
JsonRepresentation actionLinkRepr = repr.xpath("/members/e[actionId='%s']", actionId);
- return actionLinkRepr.getRepresentation("e.actionDetails.value");
+ return actionLinkRepr.getRepresentation("e.details.value");
}
Modified: incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/service/serviceId/DomainServiceResourceTest_serviceId_xrofollowlinks.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/service/serviceId/DomainServiceResourceTest_serviceId_xrofollowlinks.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/service/serviceId/DomainServiceResourceTest_serviceId_xrofollowlinks.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/service/serviceId/DomainServiceResourceTest_serviceId_xrofollowlinks.java Mon Oct 17 21:04:11 2011
@@ -45,7 +45,7 @@ public class DomainServiceResourceTest_s
final String href = givenHrefToService("simples");
final RestfulRequest request =
- client.createRequest(HttpMethod.GET, href).withArg(QueryParameter.FOLLOW_LINKS, "members[actionId=%s].actionDetails", "list");
+ client.createRequest(HttpMethod.GET, href).withArg(QueryParameter.FOLLOW_LINKS, "members[actionId=%s].details", "list");
final RestfulResponse<DomainObjectRepresentation> restfulResponse = request.executeT();
assertThat(restfulResponse.getStatus(), is(HttpStatusCode.OK));
@@ -57,12 +57,12 @@ public class DomainServiceResourceTest_s
JsonRepresentation actionRepr;
actionRepr = membersList.xpath("/e[actionId='%s']", "list");
- assertThat(actionRepr.getRepresentation("e.actionDetails"), is(not(nullValue())));
- assertThat(actionRepr.getRepresentation("e.actionDetails.value"), is(not(nullValue()))); // followed
+ assertThat(actionRepr.getRepresentation("e.details"), is(not(nullValue())));
+ assertThat(actionRepr.getRepresentation("e.details.value"), is(not(nullValue()))); // followed
actionRepr = membersList.xpath("/e[actionId='%s']", "newTransientEntity");
- assertThat(actionRepr.getRepresentation("e.actionDetails"), is(not(nullValue())));
- assertThat(actionRepr.getRepresentation("e.actionDetails.value"), is(nullValue())); // not followed
+ assertThat(actionRepr.getRepresentation("e.details"), is(not(nullValue())));
+ assertThat(actionRepr.getRepresentation("e.details.value"), is(nullValue())); // not followed
}
Modified: incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/user/UserResourceTest_representationAndHeaders.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/user/UserResourceTest_representationAndHeaders.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/user/UserResourceTest_representationAndHeaders.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/user/UserResourceTest_representationAndHeaders.java Mon Oct 17 21:04:11 2011
@@ -95,7 +95,7 @@ public class UserResourceTest_representa
final MediaType contentType = restfulResponse.getHeader(Header.CONTENT_TYPE);
assertThat(contentType, hasType("application"));
assertThat(contentType, hasSubType("json"));
- assertThat(contentType, hasParameter("profile", "http://restfulobjects.org/profiles/user"));
+ assertThat(contentType, hasParameter("profile", "urn:org.restfulobjects/user"));
assertThat(contentType, is(RepresentationType.USER.getMediaType()));
// then
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/LinkBuilder.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/LinkBuilder.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/LinkBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/LinkBuilder.java Mon Oct 17 21:04:11 2011
@@ -24,18 +24,18 @@ import org.apache.isis.viewer.json.viewe
public final class LinkBuilder {
- public static LinkBuilder newBuilder(ResourceContext resourceContext, String rel, RepresentationType representationType, String hrefFormat, Object... hrefArgs) {
+ public static LinkBuilder newBuilder(ResourceContext resourceContext, Rel rel, RepresentationType representationType, String hrefFormat, Object... hrefArgs) {
return newBuilder(resourceContext, rel, representationType.getMediaType(), hrefFormat, hrefArgs);
}
- public static LinkBuilder newBuilder(ResourceContext resourceContext, String rel, MediaType mediaType, String hrefFormat, Object... hrefArgs) {
+ public static LinkBuilder newBuilder(ResourceContext resourceContext, Rel rel, MediaType mediaType, String hrefFormat, Object... hrefArgs) {
return new LinkBuilder(resourceContext, rel, String.format(hrefFormat, hrefArgs), mediaType);
}
private final ResourceContext resourceContext;
private final JsonRepresentation representation = JsonRepresentation.newMap();
- private final String rel;
+ private final Rel rel;
private final String href;
private final MediaType mediaType;
@@ -45,7 +45,7 @@ public final class LinkBuilder {
private JsonRepresentation value;
private String key;
- protected LinkBuilder(ResourceContext resourceContext, String rel, String href, MediaType mediaType) {
+ protected LinkBuilder(ResourceContext resourceContext, Rel rel, String href, MediaType mediaType) {
this.resourceContext = resourceContext;
this.rel = rel;
this.href = href;
@@ -74,7 +74,7 @@ public final class LinkBuilder {
public JsonRepresentation build() {
representation.mapPut("key", key);
- representation.mapPut("rel", rel);
+ representation.mapPut("rel", rel.getName());
representation.mapPut("href", resourceContext.urlFor(href));
representation.mapPut("method", method);
representation.mapPut("type", mediaType.toString());
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/ReprRendererAbstract.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/ReprRendererAbstract.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/ReprRendererAbstract.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/ReprRendererAbstract.java Mon Oct 17 21:04:11 2011
@@ -55,7 +55,7 @@ public abstract class ReprRendererAbstra
public R withSelf(String href) {
if(href != null) {
- representation.mapPut("self", LinkBuilder.newBuilder(resourceContext, "self", representationType, href).build());
+ representation.mapPut("self", LinkBuilder.newBuilder(resourceContext, Rel.SELF, representationType, href).build());
}
return cast(this);
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/AbstractObjectMemberReprRenderer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/AbstractObjectMemberReprRenderer.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/AbstractObjectMemberReprRenderer.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/AbstractObjectMemberReprRenderer.java Mon Oct 17 21:04:11 2011
@@ -25,6 +25,7 @@ import org.apache.isis.viewer.json.appli
import org.apache.isis.viewer.json.applib.RepresentationType;
import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkFollower;
+import org.apache.isis.viewer.json.viewer.representations.Rel;
import org.apache.isis.viewer.json.viewer.representations.ReprRendererAbstract;
public abstract class AbstractObjectMemberReprRenderer<R extends ReprRendererAbstract<R, ObjectAndMember<T>>, T extends ObjectMember>
@@ -64,7 +65,7 @@ public abstract class AbstractObjectMemb
}
public R withSelf() {
- representation.mapPut("self", linkToBuilder.linkToMember("self", memberType, objectMember).build());
+ representation.mapPut("self", linkToBuilder.linkToMember(Rel.SELF, memberType, objectMember).build());
return cast(this);
}
@@ -101,9 +102,9 @@ public abstract class AbstractObjectMemb
public R withDetailsLink() {
final JsonRepresentation link =
linkToBuilder.linkToMember(memberType.getDetailsRel(), memberType, objectMember).build();
- representation.mapPut(memberType.getDetailsRel(), link);
+ representation.mapPut(memberType.getDetailsRel().getName(), link);
final LinkFollower membersLinkFollower = getLinkFollower();
- final LinkFollower detailsLinkFollower = membersLinkFollower.follow(memberType.getDetailsRel());
+ final LinkFollower detailsLinkFollower = membersLinkFollower.follow(memberType.getDetailsRel().getName());
if(membersLinkFollower.matches(representation) && detailsLinkFollower.matches(link)) {
followDetailsLink(link);
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectLinkTo.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectLinkTo.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectLinkTo.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectLinkTo.java Mon Oct 17 21:04:11 2011
@@ -21,6 +21,7 @@ import org.apache.isis.core.metamodel.sp
import org.apache.isis.viewer.json.applib.RepresentationType;
import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkBuilder;
+import org.apache.isis.viewer.json.viewer.representations.Rel;
public class DomainObjectLinkTo implements ObjectAdapterLinkTo {
@@ -62,13 +63,13 @@ public class DomainObjectLinkTo implemen
/**
* hook method
*/
- protected String linkRel() {
- return "object";
+ protected Rel linkRel() {
+ return Rel.OBJECT;
}
@Override
- public final LinkBuilder linkToMember(String rel, MemberType memberType, ObjectMember objectMember, String... parts) {
+ public final LinkBuilder linkToMember(Rel rel, MemberType memberType, ObjectMember objectMember, String... parts) {
StringBuilder buf = new StringBuilder(linkRef());
buf.append("/").append(memberType.getUrlPart()).append(objectMember.getId());
for(String part: parts) {
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectReprRenderer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectReprRenderer.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectReprRenderer.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectReprRenderer.java Mon Oct 17 21:04:11 2011
@@ -35,6 +35,7 @@ import org.apache.isis.viewer.json.appli
import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkFollower;
import org.apache.isis.viewer.json.viewer.representations.LinkBuilder;
+import org.apache.isis.viewer.json.viewer.representations.Rel;
import org.apache.isis.viewer.json.viewer.representations.RendererFactory;
import org.apache.isis.viewer.json.viewer.representations.RendererFactoryRegistry;
import org.apache.isis.viewer.json.viewer.representations.ReprRenderer;
@@ -57,7 +58,7 @@ public class DomainObjectReprRenderer ex
}
}
- public static LinkBuilder newLinkToBuilder(ResourceContext resourceContext, String rel, ObjectAdapter elementAdapter) {
+ public static LinkBuilder newLinkToBuilder(ResourceContext resourceContext, Rel rel, ObjectAdapter elementAdapter) {
String oidStr = resourceContext.getOidStringifier().enString(elementAdapter.getOid());
String url = "objects/" + oidStr;
return LinkBuilder.newBuilder(resourceContext, rel, RepresentationType.DOMAIN_OBJECT, url);
@@ -88,7 +89,7 @@ public class DomainObjectReprRenderer ex
public JsonRepresentation render() {
// self
- if(includesSelf) {
+ if(includesSelf && objectAdapter.isPersistent()) {
JsonRepresentation self = linkToBuilder.with(objectAdapter).builder().build();
representation.mapPut("self", self);
}
@@ -104,7 +105,7 @@ public class DomainObjectReprRenderer ex
// links
final JsonRepresentation links = JsonRepresentation.newArray();
links.arrayAdd(
- DomainTypeReprRenderer.newLinkToBuilder(getResourceContext(), "domainType", objectAdapter.getSpecification()).build());
+ DomainTypeReprRenderer.newLinkToBuilder(getResourceContext(), Rel.DESCRIBEDBY, objectAdapter.getSpecification()).build());
withLinks(links);
// extensions
@@ -203,7 +204,7 @@ public class DomainObjectReprRenderer ex
}
TitleFacet titleFacet = objectSpec.getFacet(TitleFacet.class);
String title = titleFacet.title(objectAdapter, resourceContext.getLocalization());
- return DomainObjectReprRenderer.newLinkToBuilder(resourceContext, "object", objectAdapter)
+ return DomainObjectReprRenderer.newLinkToBuilder(resourceContext, Rel.OBJECT, objectAdapter)
.withTitle(title).build();
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainResourceHelper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainResourceHelper.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainResourceHelper.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainResourceHelper.java Mon Oct 17 21:04:11 2011
@@ -47,6 +47,7 @@ import org.apache.isis.viewer.json.appli
import org.apache.isis.viewer.json.viewer.JsonApplicationException;
import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkBuilder;
+import org.apache.isis.viewer.json.viewer.representations.Rel;
import org.apache.isis.viewer.json.viewer.representations.RendererFactory;
import org.apache.isis.viewer.json.viewer.representations.RendererFactoryRegistry;
import org.apache.isis.viewer.json.viewer.resources.ResourceAbstract;
@@ -290,7 +291,7 @@ public class DomainResourceHelper {
String oid = OidUtils.getOidStr(resourceContext, objectAdapter);
// TODO: review; can't be more specific with the media type because we don't have a media type for action/invoke
final JsonRepresentation repBuilder =
- LinkBuilder.newBuilder(resourceContext, "self", MediaType.APPLICATION_JSON_TYPE, "objects/%s/actions/%s/invoke", oid, action.getId()).build();
+ LinkBuilder.newBuilder(resourceContext, Rel.SELF, MediaType.APPLICATION_JSON_TYPE, "objects/%s/actions/%s/invoke", oid, action.getId()).build();
representation.mapPut("self", repBuilder);
return representation;
}
@@ -554,9 +555,16 @@ public class DomainResourceHelper {
return argList;
}
- private JsonRepresentation readBodyAsMap(String bodyAsString) {
+ static JsonRepresentation readBodyAsMap(String body) {
+ if(body == null) {
+ return JsonRepresentation.newMap();
+ }
+ final String bodyTrimmed = body.trim();
+ if(bodyTrimmed.isEmpty()) {
+ return JsonRepresentation.newMap();
+ }
try {
- final JsonRepresentation jsonRepr = JsonMapper.instance().read(bodyAsString);
+ final JsonRepresentation jsonRepr = JsonMapper.instance().read(bodyTrimmed);
if(!jsonRepr.isMap()) {
throw JsonApplicationException.create(
HttpStatusCode.BAD_REQUEST,
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainServiceLinkTo.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainServiceLinkTo.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainServiceLinkTo.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainServiceLinkTo.java Mon Oct 17 21:04:11 2011
@@ -19,6 +19,7 @@ package org.apache.isis.viewer.json.view
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.services.ServiceUtil;
import org.apache.isis.viewer.json.viewer.representations.LinkBuilder;
+import org.apache.isis.viewer.json.viewer.representations.Rel;
public class DomainServiceLinkTo extends DomainObjectLinkTo {
@@ -37,8 +38,8 @@ public class DomainServiceLinkTo extends
}
@Override
- protected String linkRel() {
- return "service";
+ protected Rel linkRel() {
+ return Rel.SERVICE;
}
@Override
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/JsonValueEncoder.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/JsonValueEncoder.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/JsonValueEncoder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/JsonValueEncoder.java Mon Oct 17 21:04:11 2011
@@ -1,5 +1,8 @@
package org.apache.isis.viewer.json.viewer.resources.domainobjects;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
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;
@@ -15,16 +18,67 @@ public final class JsonValueEncoder {
}
public ObjectAdapter asAdapter(final ObjectSpecification objectSpec, final JsonRepresentation representation) {
- EncodableFacet encodableFacet = objectSpec.getFacet(EncodableFacet.class);
+ if(objectSpec == null) {
+ throw new IllegalArgumentException("objectSpec cannot be null");
+ }
+ final EncodableFacet encodableFacet = objectSpec.getFacet(EncodableFacet.class);
+ if(encodableFacet == null) {
+ throw new IllegalArgumentException("objectSpec expected to have EncodableFacet");
+ }
+ if(representation == null) {
+ throw new IllegalArgumentException("representation cannot be null");
+ }
+ if(!representation.isValue()) {
+ throw new IllegalArgumentException("representation must be of a value");
+ }
// special case handling for JSON built-ins
if(isBoolean(objectSpec)) {
- if(representation.isBoolean()) {
- String argStr = ""+representation.asBoolean();
- return encodableFacet.fromEncodedString(argStr);
- } else {
- throw new IllegalArgumentException("ObjectSpec is Boolean.class or boolean.class but representation is not a JSON boolean");
- }
+ if(!representation.isBoolean()) {
+ throwIncompatibleException(objectSpec, representation);
+ }
+ String argStr = ""+representation.asBoolean();
+ return encodableFacet.fromEncodedString(argStr);
+ }
+
+ if(isInteger(objectSpec)) {
+ if(!representation.isInt()) {
+ throwIncompatibleException(objectSpec, representation);
+ }
+ String argStr = ""+representation.asInt();
+ return encodableFacet.fromEncodedString(argStr);
+ }
+
+ if(isLong(objectSpec)) {
+ if(!representation.isLong()) {
+ throwIncompatibleException(objectSpec, representation);
+ }
+ String argStr = ""+representation.asLong();
+ return encodableFacet.fromEncodedString(argStr);
+ }
+
+ if(isBigInteger(objectSpec)) {
+ if(!representation.isBigInteger()) {
+ throwIncompatibleException(objectSpec, representation);
+ }
+ String argStr = ""+representation.asBigInteger();
+ return encodableFacet.fromEncodedString(argStr);
+ }
+
+ if(isBigDecimal(objectSpec)) {
+ if(!representation.isBigDecimal()) {
+ throwIncompatibleException(objectSpec, representation);
+ }
+ String argStr = ""+representation.asBigDecimal();
+ return encodableFacet.fromEncodedString(argStr);
+ }
+
+ if(isDouble(objectSpec)) {
+ if(!representation.isDouble()) {
+ throwIncompatibleException(objectSpec, representation);
+ }
+ String argStr = ""+representation.asDouble();
+ return encodableFacet.fromEncodedString(argStr);
}
if(!representation.isString()) {
@@ -35,25 +89,64 @@ public final class JsonValueEncoder {
}
public Object asObject(ObjectAdapter objectAdapter) {
-
+ if(objectAdapter == null) {
+ throw new IllegalArgumentException("objectAdapter cannot be null");
+ }
final ObjectSpecification objectSpec = objectAdapter.getSpecification();
// special case handling for JSON built-ins
- if(isBoolean(objectSpec)) {
+ if( isBoolean(objectSpec) ||
+ isInteger(objectSpec) || isLong(objectSpec) || isBigInteger(objectSpec) ||
+ isDouble(objectSpec) || isBigDecimal(objectSpec) ) {
// simply return
return objectAdapter.getObject();
}
- EncodableFacet encodeableFacet = objectSpec.getFacet(EncodableFacet.class);
- return encodeableFacet.toEncodedString(objectAdapter);
+ final EncodableFacet encodableFacet = objectSpec.getFacet(EncodableFacet.class);
+ if(encodableFacet == null) {
+ throw new IllegalArgumentException("objectSpec expected to have EncodableFacet");
+ }
+ return encodableFacet.toEncodedString(objectAdapter);
+ }
+
+
+ private boolean isBoolean(final ObjectSpecification objectSpec) {
+ return hasCorrespondingClass(objectSpec, boolean.class, Boolean.class);
+ }
+
+ private boolean isInteger(final ObjectSpecification objectSpec) {
+ return hasCorrespondingClass(objectSpec, int.class, Integer.class);
+ }
+
+ private boolean isLong(final ObjectSpecification objectSpec) {
+ return hasCorrespondingClass(objectSpec, long.class, Long.class);
+ }
+
+ private boolean isBigInteger(final ObjectSpecification objectSpec) {
+ return hasCorrespondingClass(objectSpec, BigInteger.class);
}
+ private boolean isDouble(final ObjectSpecification objectSpec) {
+ return hasCorrespondingClass(objectSpec, double.class, Double.class);
+ }
+
+ private boolean isBigDecimal(final ObjectSpecification objectSpec) {
+ return hasCorrespondingClass(objectSpec, BigDecimal.class);
+ }
- private boolean isBoolean(ObjectSpecification objectSpec) {
+ private boolean hasCorrespondingClass(ObjectSpecification objectSpec, Class<?>... candidates) {
final Class<?> specClass = objectSpec.getCorrespondingClass();
- return specClass == boolean.class || specClass == Boolean.class;
+ for(final Class<?> candidate: candidates) {
+ if(specClass == candidate) {
+ return true;
+ }
+ }
+ return false;
}
+ private void throwIncompatibleException(final ObjectSpecification objectSpec, final JsonRepresentation representation) {
+ throw new IllegalArgumentException(String.format("representation '%s' incompatible with objectSpec '%s'", representation.toString(), objectSpec.getCorrespondingClass().getName()));
+ }
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/MemberType.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/MemberType.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/MemberType.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/MemberType.java Mon Oct 17 21:04:11 2011
@@ -36,15 +36,16 @@ import org.apache.isis.core.progmodel.fa
import org.apache.isis.viewer.json.applib.RepresentationType;
import org.apache.isis.viewer.json.applib.util.Enums;
import org.apache.isis.viewer.json.viewer.representations.HttpMethod;
+import org.apache.isis.viewer.json.viewer.representations.Rel;
import com.google.common.collect.ImmutableMap;
public enum MemberType {
- OBJECT_PROPERTY("properties/", "propertyId", "propertyDetails", RepresentationType.OBJECT_PROPERTY,
+ OBJECT_PROPERTY("properties/", "propertyId", Rel.DETAILS, RepresentationType.OBJECT_PROPERTY,
ImmutableMap.of(
- "modify", MutatorSpec.of(PropertyValidateFacet.class, PropertySetterFacet.class, HttpMethod.PUT, BodyArgs.ONE),
- "clear", MutatorSpec.of(PropertyValidateFacet.class, PropertyClearFacet.class, HttpMethod.DELETE, BodyArgs.NONE)
+ "modify", MutatorSpec.of(Rel.MODIFY, PropertyValidateFacet.class, PropertySetterFacet.class, HttpMethod.PUT, BodyArgs.ONE),
+ "clear", MutatorSpec.of(Rel.CLEAR, PropertyValidateFacet.class, PropertyClearFacet.class, HttpMethod.DELETE, BodyArgs.NONE)
)) {
@Override
public ObjectSpecification specFor(ObjectMember objectMember) {
@@ -54,11 +55,11 @@ public enum MemberType {
/**
* {@link #getMutators()} are keyed by {@link CollectionSemantics#getAddToKey()}
*/
- OBJECT_COLLECTION("collections/", "collectionId", "collectionDetails", RepresentationType.OBJECT_COLLECTION,
+ OBJECT_COLLECTION("collections/", "collectionId", Rel.DETAILS, RepresentationType.OBJECT_COLLECTION,
ImmutableMap.of(
- "addToSet", MutatorSpec.of(CollectionValidateAddToFacet.class, CollectionAddToFacet.class, HttpMethod.PUT, BodyArgs.ONE),
- "addToList", MutatorSpec.of(CollectionValidateAddToFacet.class, CollectionAddToFacet.class, HttpMethod.POST, BodyArgs.ONE),
- "removeFrom", MutatorSpec.of(CollectionValidateRemoveFromFacet.class, CollectionRemoveFromFacet.class, HttpMethod.DELETE, BodyArgs.ONE)
+ "addToSet", MutatorSpec.of(Rel.ADD_TO, CollectionValidateAddToFacet.class, CollectionAddToFacet.class, HttpMethod.PUT, BodyArgs.ONE),
+ "addToList", MutatorSpec.of(Rel.ADD_TO, CollectionValidateAddToFacet.class, CollectionAddToFacet.class, HttpMethod.POST, BodyArgs.ONE),
+ "removeFrom", MutatorSpec.of(Rel.REMOVE_FROM, CollectionValidateRemoveFromFacet.class, CollectionRemoveFromFacet.class, HttpMethod.DELETE, BodyArgs.ONE)
)) {
@Override
public ObjectSpecification specFor(ObjectMember objectMember) {
@@ -68,11 +69,11 @@ public enum MemberType {
/**
* {@link #getMutators()} are keyed by {@link ActionSemantics#getInvokeKey()}
*/
- OBJECT_ACTION("actions/", "actionId", "actionDetails", RepresentationType.OBJECT_ACTION,
+ OBJECT_ACTION("actions/", "actionId", Rel.DETAILS, RepresentationType.OBJECT_ACTION,
ImmutableMap.of(
- "invokeQueryOnly", MutatorSpec.of(ActionValidationFacet.class, ActionInvocationFacet.class, HttpMethod.GET, BodyArgs.MANY, "invoke"),
- "invokeIdempotent", MutatorSpec.of(ActionValidationFacet.class, ActionInvocationFacet.class, HttpMethod.PUT, BodyArgs.MANY, "invoke"),
- "invoke", MutatorSpec.of(ActionValidationFacet.class, ActionInvocationFacet.class, HttpMethod.POST, BodyArgs.MANY, "invoke")
+ "invokeQueryOnly", MutatorSpec.of(Rel.INVOKE, ActionValidationFacet.class, ActionInvocationFacet.class, HttpMethod.GET, BodyArgs.MANY, "invoke"),
+ "invokeIdempotent", MutatorSpec.of(Rel.INVOKE, ActionValidationFacet.class, ActionInvocationFacet.class, HttpMethod.PUT, BodyArgs.MANY, "invoke"),
+ "invoke", MutatorSpec.of(Rel.INVOKE, ActionValidationFacet.class, ActionInvocationFacet.class, HttpMethod.POST, BodyArgs.MANY, "invoke")
)) {
@Override
public ObjectSpecification specFor(ObjectMember objectMember) {
@@ -83,14 +84,14 @@ public enum MemberType {
private final String urlPart;
private final String jsProp;
- private final String detailsRel;
+ private final Rel detailsRel;
private final String name;
private final RepresentationType representationType;
private final Map<String, MutatorSpec> mutators;
- private MemberType(String urlPart, String jsProp, String detailsRel, RepresentationType representationType, Map<String, MutatorSpec> mutators) {
+ private MemberType(String urlPart, String jsProp, Rel detailsRel, RepresentationType representationType, Map<String, MutatorSpec> mutators) {
this.urlPart = urlPart;
this.jsProp = jsProp;
this.detailsRel = detailsRel;
@@ -146,7 +147,7 @@ public enum MemberType {
return representationType;
}
- public String getDetailsRel() {
+ public Rel getDetailsRel() {
return detailsRel;
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/MutatorSpec.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/MutatorSpec.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/MutatorSpec.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/MutatorSpec.java Mon Oct 17 21:04:11 2011
@@ -18,24 +18,27 @@ package org.apache.isis.viewer.json.view
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.viewer.json.viewer.representations.HttpMethod;
+import org.apache.isis.viewer.json.viewer.representations.Rel;
public class MutatorSpec {
- public static MutatorSpec of(Class<? extends Facet> validationFacetType, Class<? extends Facet> mutatorFacetType, HttpMethod httpMethod, BodyArgs argSpec) {
- return of(validationFacetType, mutatorFacetType, httpMethod, argSpec, null);
+ public static MutatorSpec of(Rel rel, Class<? extends Facet> validationFacetType, Class<? extends Facet> mutatorFacetType, HttpMethod httpMethod, BodyArgs argSpec) {
+ return of(rel, validationFacetType, mutatorFacetType, httpMethod, argSpec, null);
}
- public static MutatorSpec of(Class<? extends Facet> validationFacetType, Class<? extends Facet> mutatorFacetType, HttpMethod httpMethod, BodyArgs argSpec, String suffix) {
- return new MutatorSpec(validationFacetType, mutatorFacetType, httpMethod, argSpec, suffix);
+ public static MutatorSpec of(Rel rel, Class<? extends Facet> validationFacetType, Class<? extends Facet> mutatorFacetType, HttpMethod httpMethod, BodyArgs argSpec, 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 HttpMethod httpMethod;
public final String suffix;
public final BodyArgs arguments;
- private MutatorSpec(Class<? extends Facet> validationFacetType, Class<? extends Facet> mutatorFacetType, HttpMethod httpMethod, BodyArgs bodyArgs, String suffix) {
+ private MutatorSpec(Rel rel, Class<? extends Facet> validationFacetType, Class<? extends Facet> mutatorFacetType, HttpMethod httpMethod, BodyArgs bodyArgs, String suffix) {
+ this.rel = rel;
this.validationFacetType = validationFacetType;
this.mutatorFacetType = mutatorFacetType;
this.httpMethod = httpMethod;
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectActionReprRenderer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectActionReprRenderer.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectActionReprRenderer.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectActionReprRenderer.java Mon Oct 17 21:04:11 2011
@@ -27,6 +27,7 @@ import org.apache.isis.viewer.json.appli
import org.apache.isis.viewer.json.applib.RepresentationType;
import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkFollower;
+import org.apache.isis.viewer.json.viewer.representations.Rel;
import org.apache.isis.viewer.json.viewer.representations.RendererFactory;
import org.apache.isis.viewer.json.viewer.representations.RendererFactoryRegistry;
import org.apache.isis.viewer.json.viewer.representations.ReprRenderer;
@@ -114,7 +115,7 @@ public class ObjectActionReprRenderer ex
}
JsonRepresentation arguments = mutatorArgs(mutatorSpec);
JsonRepresentation detailsLink =
- linkToBuilder.linkToMember("invoke", memberType, objectMember, mutatorSpec.suffix)
+ linkToBuilder.linkToMember(Rel.INVOKE, memberType, objectMember, mutatorSpec.suffix)
.withHttpMethod(mutatorSpec.httpMethod)
.withArguments(arguments)
.build();
@@ -148,7 +149,7 @@ public class ObjectActionReprRenderer ex
if(objectMember.isContributed()) {
ObjectActionParameter actionParameter = objectMember.getParameters().get(i);
if (actionParameter.getSpecification().isOfType(objectAdapter.getSpecification())) {
- return DomainObjectReprRenderer.newLinkToBuilder(resourceContext, "object", objectAdapter).build();
+ return DomainObjectReprRenderer.newLinkToBuilder(resourceContext, Rel.OBJECT, objectAdapter).build();
}
}
return NullNode.instance;
@@ -222,17 +223,15 @@ public class ObjectActionReprRenderer ex
}
private void addLinksFormalDomainModel(JsonRepresentation links, ResourceContext resourceContext) {
- links.arrayAdd(TypeActionReprRenderer.newLinkToBuilder(resourceContext, "typeAction", objectAdapter.getSpecification(), objectMember).build());
+ links.arrayAdd(TypeActionReprRenderer.newLinkToBuilder(resourceContext, Rel.DESCRIBEDBY, objectAdapter.getSpecification(), objectMember).build());
}
private void addLinksIsisProprietary(JsonRepresentation links, ResourceContext resourceContext) {
if(objectMember.isContributed()) {
ObjectAdapter serviceAdapter = contributingServiceAdapter();
- JsonRepresentation contributedByLink = DomainObjectReprRenderer.newLinkToBuilder(resourceContext, "contributedBy", serviceAdapter).build();
+ JsonRepresentation contributedByLink = DomainObjectReprRenderer.newLinkToBuilder(resourceContext, Rel.CONTRIBUTED_BY, serviceAdapter).build();
links.arrayAdd(contributedByLink);
}
-
- links.arrayAdd(DomainTypeReprRenderer.newLinkToBuilder(resourceContext, "domainType", objectAdapter.getSpecification()).build());
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectAdapterLinkTo.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectAdapterLinkTo.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectAdapterLinkTo.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectAdapterLinkTo.java Mon Oct 17 21:04:11 2011
@@ -4,6 +4,7 @@ import org.apache.isis.core.metamodel.ad
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkBuilder;
+import org.apache.isis.viewer.json.viewer.representations.Rel;
public interface ObjectAdapterLinkTo {
@@ -13,7 +14,7 @@ public interface ObjectAdapterLinkTo {
LinkBuilder builder();
- LinkBuilder linkToMember(String rel, MemberType memberType, ObjectMember objectMember, String... parts);
+ LinkBuilder linkToMember(Rel rel, MemberType memberType, ObjectMember objectMember, String... parts);
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectCollectionReprRenderer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectCollectionReprRenderer.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectCollectionReprRenderer.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectCollectionReprRenderer.java Mon Oct 17 21:04:11 2011
@@ -28,6 +28,7 @@ import org.apache.isis.viewer.json.appli
import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkFollower;
import org.apache.isis.viewer.json.viewer.representations.LinkBuilder;
+import org.apache.isis.viewer.json.viewer.representations.Rel;
import org.apache.isis.viewer.json.viewer.representations.RendererFactory;
import org.apache.isis.viewer.json.viewer.representations.RendererFactoryRegistry;
import org.apache.isis.viewer.json.viewer.representations.ReprRenderer;
@@ -106,7 +107,7 @@ public class ObjectCollectionReprRendere
JsonRepresentation arguments = mutatorArgs(mutatorSpec);
JsonRepresentation detailsLink =
- linkToBuilder.linkToMember(mutator, memberType, objectMember, mutatorSpec.suffix)
+ linkToBuilder.linkToMember(mutatorSpec.rel, memberType, objectMember, mutatorSpec.suffix)
.withHttpMethod(mutatorSpec.httpMethod)
.withArguments(arguments)
.build();
@@ -140,7 +141,7 @@ public class ObjectCollectionReprRendere
List<JsonRepresentation> list = Lists.newArrayList();
for (final ObjectAdapter elementAdapter : facet.iterable(valueAdapter)) {
- LinkBuilder newBuilder = DomainObjectReprRenderer.newLinkToBuilder(resourceContext, "object", elementAdapter);
+ LinkBuilder newBuilder = DomainObjectReprRenderer.newLinkToBuilder(resourceContext, Rel.OBJECT, elementAdapter);
list.add(newBuilder.build());
}
@@ -158,11 +159,10 @@ public class ObjectCollectionReprRendere
}
private void addLinksFormalDomainModel(JsonRepresentation links, ResourceContext resourceContext) {
- links.arrayAdd(TypeCollectionReprRenderer.newLinkToBuilder(resourceContext, "typeCollection", objectAdapter.getSpecification(), objectMember).build());
+ links.arrayAdd(TypeCollectionReprRenderer.newLinkToBuilder(resourceContext, Rel.DESCRIBEDBY, objectAdapter.getSpecification(), objectMember).build());
}
private void addLinksIsisProprietary(JsonRepresentation links, ResourceContext resourceContext) {
- links.arrayAdd(DomainTypeReprRenderer.newLinkToBuilder(resourceContext, "domainType", objectAdapter.getSpecification()).build());
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectPropertyReprRenderer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectPropertyReprRenderer.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectPropertyReprRenderer.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectPropertyReprRenderer.java Mon Oct 17 21:04:11 2011
@@ -26,6 +26,7 @@ import org.apache.isis.viewer.json.appli
import org.apache.isis.viewer.json.applib.RepresentationType;
import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkFollower;
+import org.apache.isis.viewer.json.viewer.representations.Rel;
import org.apache.isis.viewer.json.viewer.representations.RendererFactory;
import org.apache.isis.viewer.json.viewer.representations.RendererFactoryRegistry;
import org.apache.isis.viewer.json.viewer.representations.ReprRenderer;
@@ -107,7 +108,7 @@ public class ObjectPropertyReprRenderer
JsonRepresentation arguments = mutatorArgs(mutatorSpec);
JsonRepresentation detailsLink =
- linkToBuilder.linkToMember(mutator, memberType, objectMember, mutatorSpec.suffix)
+ linkToBuilder.linkToMember(mutatorSpec.rel, memberType, objectMember, mutatorSpec.suffix)
.withHttpMethod(mutatorSpec.httpMethod)
.withArguments(arguments)
.build();
@@ -174,11 +175,10 @@ public class ObjectPropertyReprRenderer
}
private void addLinksFormalDomainModel(JsonRepresentation links, ResourceContext resourceContext) {
- links.arrayAdd(TypePropertyReprRenderer.newLinkToBuilder(resourceContext, "typeProperty", objectAdapter.getSpecification(), objectMember).build());
+ links.arrayAdd(TypePropertyReprRenderer.newLinkToBuilder(resourceContext, Rel.DESCRIBEDBY, objectAdapter.getSpecification(), objectMember).build());
}
private void addLinksIsisProprietary(JsonRepresentation links, ResourceContext resourceContext) {
- links.arrayAdd(DomainTypeReprRenderer.newLinkToBuilder(resourceContext, "domainType", objectAdapter.getSpecification()).build());
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/AbstractTypeFeatureReprBuilder.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/AbstractTypeFeatureReprBuilder.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/AbstractTypeFeatureReprBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/AbstractTypeFeatureReprBuilder.java Mon Oct 17 21:04:11 2011
@@ -24,6 +24,7 @@ import org.apache.isis.viewer.json.appli
import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkFollower;
import org.apache.isis.viewer.json.viewer.representations.LinkBuilder;
+import org.apache.isis.viewer.json.viewer.representations.Rel;
import org.apache.isis.viewer.json.viewer.representations.ReprRendererAbstract;
import org.apache.isis.viewer.json.viewer.resources.domainobjects.MemberType;
@@ -68,7 +69,7 @@ public abstract class AbstractTypeFeatur
}
representation.mapPut("self",
- LinkBuilder.newBuilder(getResourceContext(), "self", getRepresentationType(), "domainTypes/%s/%s/%s",
+ LinkBuilder.newBuilder(getResourceContext(), Rel.SELF, getRepresentationType(), "domainTypes/%s/%s/%s",
getObjectSpecification().getFullIdentifier(), getMemberType().getUrlPart(), ((ObjectMember)getObjectFeature()).getId()).build());
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeReprRenderer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeReprRenderer.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeReprRenderer.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeReprRenderer.java Mon Oct 17 21:04:11 2011
@@ -22,6 +22,7 @@ import org.apache.isis.viewer.json.appli
import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkFollower;
import org.apache.isis.viewer.json.viewer.representations.LinkBuilder;
+import org.apache.isis.viewer.json.viewer.representations.Rel;
import org.apache.isis.viewer.json.viewer.representations.ReprRenderer;
import org.apache.isis.viewer.json.viewer.representations.ReprRendererAbstract;
import org.apache.isis.viewer.json.viewer.representations.ReprRendererFactoryAbstract;
@@ -39,7 +40,7 @@ public class DomainTypeReprRenderer exte
}
}
- public static LinkBuilder newLinkToBuilder(ResourceContext resourceContext, String rel, ObjectSpecification objectSpec) {
+ public static LinkBuilder newLinkToBuilder(ResourceContext resourceContext, Rel rel, ObjectSpecification objectSpec) {
String typeFullName = objectSpec.getFullIdentifier();
String url = "domainTypes/" + typeFullName;
return LinkBuilder.newBuilder(resourceContext, rel, RepresentationType.DOMAIN_TYPE, url);
@@ -62,7 +63,7 @@ public class DomainTypeReprRenderer exte
// self
if(includesSelf) {
- representation.mapPut("self", newLinkToBuilder(getResourceContext(), "self", objectSpecification).build());
+ representation.mapPut("self", newLinkToBuilder(getResourceContext(), Rel.SELF, objectSpecification).build());
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypesReprRenderer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypesReprRenderer.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypesReprRenderer.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypesReprRenderer.java Mon Oct 17 21:04:11 2011
@@ -8,6 +8,7 @@ import org.apache.isis.viewer.json.appli
import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkFollower;
import org.apache.isis.viewer.json.viewer.representations.LinkBuilder;
+import org.apache.isis.viewer.json.viewer.representations.Rel;
import org.apache.isis.viewer.json.viewer.representations.ReprRenderer;
import org.apache.isis.viewer.json.viewer.representations.ReprRendererAbstract;
import org.apache.isis.viewer.json.viewer.representations.ReprRendererFactoryAbstract;
@@ -48,7 +49,7 @@ public class DomainTypesReprRenderer ext
JsonRepresentation specList = JsonRepresentation.newArray();
for (ObjectSpecification objectSpec : specifications) {
final LinkBuilder linkBuilder =
- LinkBuilder.newBuilder(getResourceContext(), "domainType", RepresentationType.DOMAIN_TYPE, "domainTypes/%s", objectSpec.getFullIdentifier());
+ LinkBuilder.newBuilder(getResourceContext(), Rel.DESCRIBEDBY, RepresentationType.DOMAIN_TYPE, "domainTypes/%s", objectSpec.getFullIdentifier());
specList.arrayAdd(linkBuilder.build());
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeActionParamReprRenderer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeActionParamReprRenderer.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeActionParamReprRenderer.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeActionParamReprRenderer.java Mon Oct 17 21:04:11 2011
@@ -24,6 +24,7 @@ import org.apache.isis.viewer.json.appli
import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkFollower;
import org.apache.isis.viewer.json.viewer.representations.LinkBuilder;
+import org.apache.isis.viewer.json.viewer.representations.Rel;
import org.apache.isis.viewer.json.viewer.representations.ReprRenderer;
import org.apache.isis.viewer.json.viewer.representations.ReprRendererFactoryAbstract;
@@ -41,7 +42,7 @@ public class TypeActionParamReprRenderer
}
}
- public static LinkBuilder newLinkToBuilder(ResourceContext resourceContext, String rel, ObjectSpecification objectSpecification, ObjectActionParameter objectActionParameter) {
+ public static LinkBuilder newLinkToBuilder(ResourceContext resourceContext, Rel rel, ObjectSpecification objectSpecification, ObjectActionParameter objectActionParameter) {
String typeFullName = objectSpecification.getFullIdentifier();
final ObjectAction objectAction = objectActionParameter.getAction();
String actionId = objectAction.getId();
@@ -63,7 +64,7 @@ public class TypeActionParamReprRenderer
// self
if(includesSelf) {
representation.mapPut("self",
- newLinkToBuilder(getResourceContext(), "self", getObjectSpecification(), getObjectFeature()).build());
+ newLinkToBuilder(getResourceContext(), Rel.SELF, getObjectSpecification(), getObjectFeature()).build());
}
// links and extensions
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeActionReprRenderer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeActionReprRenderer.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeActionReprRenderer.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeActionReprRenderer.java Mon Oct 17 21:04:11 2011
@@ -23,6 +23,7 @@ import org.apache.isis.viewer.json.appli
import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkFollower;
import org.apache.isis.viewer.json.viewer.representations.LinkBuilder;
+import org.apache.isis.viewer.json.viewer.representations.Rel;
import org.apache.isis.viewer.json.viewer.representations.ReprRenderer;
import org.apache.isis.viewer.json.viewer.representations.ReprRendererFactoryAbstract;
@@ -40,7 +41,7 @@ public class TypeActionReprRenderer exte
}
}
- public static LinkBuilder newLinkToBuilder(ResourceContext resourceContext, String rel, ObjectSpecification objectSpecification, ObjectAction objectAction) {
+ public static LinkBuilder newLinkToBuilder(ResourceContext resourceContext, Rel rel, ObjectSpecification objectSpecification, ObjectAction objectAction) {
String typeFullName = objectSpecification.getFullIdentifier();
String actionId = objectAction.getId();
String url = "domainTypes/" + typeFullName + "/actions/" + actionId;
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeCollectionReprRenderer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeCollectionReprRenderer.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeCollectionReprRenderer.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeCollectionReprRenderer.java Mon Oct 17 21:04:11 2011
@@ -23,6 +23,7 @@ import org.apache.isis.viewer.json.appli
import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkFollower;
import org.apache.isis.viewer.json.viewer.representations.LinkBuilder;
+import org.apache.isis.viewer.json.viewer.representations.Rel;
import org.apache.isis.viewer.json.viewer.representations.ReprRenderer;
import org.apache.isis.viewer.json.viewer.representations.ReprRendererFactoryAbstract;
@@ -40,7 +41,7 @@ public class TypeCollectionReprRenderer
}
}
- public static LinkBuilder newLinkToBuilder(ResourceContext resourceContext, String rel, ObjectSpecification objectSpecification, OneToManyAssociation collection) {
+ public static LinkBuilder newLinkToBuilder(ResourceContext resourceContext, Rel rel, ObjectSpecification objectSpecification, OneToManyAssociation collection) {
String typeFullName = objectSpecification.getFullIdentifier();
String collectionId = collection.getId();
String url = "domainTypes/" + typeFullName + "/collections/" + collectionId;
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypePropertyReprRenderer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypePropertyReprRenderer.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypePropertyReprRenderer.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypePropertyReprRenderer.java Mon Oct 17 21:04:11 2011
@@ -23,6 +23,7 @@ import org.apache.isis.viewer.json.appli
import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkFollower;
import org.apache.isis.viewer.json.viewer.representations.LinkBuilder;
+import org.apache.isis.viewer.json.viewer.representations.Rel;
import org.apache.isis.viewer.json.viewer.representations.ReprRenderer;
import org.apache.isis.viewer.json.viewer.representations.ReprRendererFactoryAbstract;
@@ -40,7 +41,7 @@ public class TypePropertyReprRenderer ex
}
}
- public static LinkBuilder newLinkToBuilder(ResourceContext resourceContext, String rel, ObjectSpecification objectSpecification, OneToOneAssociation property) {
+ public static LinkBuilder newLinkToBuilder(ResourceContext resourceContext, Rel rel, ObjectSpecification objectSpecification, OneToOneAssociation property) {
String typeFullName = objectSpecification.getFullIdentifier();
String propertyId = property.getId();
String url = "domainTypes/" + typeFullName + "/properties/" + propertyId;