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/09/06 00:54:10 UTC
svn commit: r1165442 [1/2] - in /incubator/isis/trunk/framework/viewer/json:
json-applib/src/main/java/org/apache/isis/viewer/json/applib/
json-applib/src/main/java/org/apache/isis/viewer/json/applib/capabilities/
json-applib/src/main/java/org/apache/i...
Author: danhaywood
Date: Mon Sep 5 22:54:08 2011
New Revision: 1165442
URL: http://svn.apache.org/viewvc?rev=1165442&view=rev
Log:
ISIS-109: more on json viewer
Added:
incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainServiceResource.java
incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domaintypes/DomainTypeResource.java
incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_arrayIterator.java
incubator/isis/trunk/framework/viewer/json/json-applib/src/test/resources/org/apache/isis/viewer/json/applib/listOfStrings.json
incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/CapabilitiesResourceTest.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/LinkBuilder.java
- copied, changed from r1165265, incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/LinkRepBuilder.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainServiceResourceServerside.java
Modified:
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/LinksToSelf.java
incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulClient.java
incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulResponse.java
incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/capabilities/CapabilitiesRepresentation.java
incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/ActionPromptRepresentation.java
incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/CollectionDetailsRepresentation.java
incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainObjectRepresentation.java
incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainObjectResource.java
incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainServicesRepresentation.java
incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/PropertyDetailsRepresentation.java
incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/ScalarValueRepresentation.java
incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domaintypes/DomainTypeRepresentation.java
incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/homepage/HomePageRepresentation.java
incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/types/
incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/user/UserRepresentation.java
incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_getArray.java
incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainObjectResourceTest.java
incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/HomePageResourceTest.java
incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/RepresentationMatchers.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/JsonApplication.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/LinkRepBuilder.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/RepresentationBuilder.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/capabilities/CapabilitiesResourceServerside.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/AbstractMemberRepBuilder.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/CollectionRepBuilder.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectRepBuilder.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectResourceServerside.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/MemberSelfRepBuilder.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeResourceServerside.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/home/HomePageResourceServerside.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/services/DomainServiceListRepBuilder.java
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=1165442&r1=1165441&r2=1165442&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 Sep 5 22:54:08 2011
@@ -8,7 +8,9 @@ import java.io.StringReader;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.Collections;
+import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import net.sf.json.JSON;
import net.sf.json.JSONNull;
@@ -31,7 +33,11 @@ import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
import org.jdom.xpath.XPath;
+import com.google.common.base.Function;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Iterators;
import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
/**
@@ -40,6 +46,41 @@ import com.google.common.collect.Lists;
*/
public class JsonRepresentation {
+ public interface LinksToSelf {
+ public Link getSelf();
+ }
+
+ public interface HasLinks {
+ public JsonRepresentation getLinks();
+ }
+
+ public interface HasExtensions {
+ public JsonRepresentation getExtensions();
+ }
+
+ private static Map<Class<?>, Function<JsonNode, ?>> JSON_NODE_TRANSFORMERS = Maps.newHashMap();
+ static {
+ JSON_NODE_TRANSFORMERS.put(String.class, new Function<JsonNode, String>() {
+ @Override
+ public String apply(JsonNode input) {
+ if(!input.isTextual()) {
+ throw new IllegalStateException("found node that is not a string " + input.toString());
+ }
+ return input.getTextValue();
+ }});
+ JSON_NODE_TRANSFORMERS.put(JsonNode.class, new Function<JsonNode, JsonNode>() {
+ @Override
+ public JsonNode apply(JsonNode input) {
+ return input;
+ }});
+ JSON_NODE_TRANSFORMERS.put(JsonRepresentation.class, new Function<JsonNode, JsonRepresentation>() {
+ @Override
+ public JsonRepresentation apply(JsonNode input) {
+ return new JsonRepresentation(input);
+ }});
+ }
+
+
public static JsonRepresentation newMap() {
return new JsonRepresentation(new ObjectNode(JsonNodeFactory.instance));
}
@@ -105,34 +146,6 @@ public class JsonRepresentation {
}
- /////////////////////////////////////////////////////////////////////////
- // elementAt, setElementAt
- /////////////////////////////////////////////////////////////////////////
-
- public JsonRepresentation elementAt(int i) {
- ensureIsAnArrayAtLeastAsLargeAs(i);
- return new JsonRepresentation(jsonNode.get(i));
- }
-
- public void setElementAt(int i, JsonRepresentation objectRepr) {
- ensureIsAnArrayAtLeastAsLargeAs(i);
- if(objectRepr.isArray()) {
- throw new IllegalArgumentException("Representation being set cannot be an array");
- }
- // can safely downcast because *this* representation is an array
- ArrayNode arrayNode = (ArrayNode)jsonNode;
- arrayNode.set(i, objectRepr.getJsonNode());
- }
-
- private void ensureIsAnArrayAtLeastAsLargeAs(int i) {
- if (!jsonNode.isArray()) {
- throw new IllegalStateException("Is not an array");
- }
- if(i >= arraySize()) {
- throw new IndexOutOfBoundsException("array has " + arraySize() + " elements");
- }
- }
-
/////////////////////////////////////////////////////////////////////////
// getInt, getLong, getDouble, getString
@@ -282,11 +295,19 @@ public class JsonRepresentation {
if (representsNull(node)) {
return null;
}
- if (node.isValueNode()) {
- throw new IllegalArgumentException("'" + path + "' (a value) is not an array");
- }
if (!node.isArray()) {
- throw new IllegalArgumentException("'" + path + "' (a map) is not an array");
+ throw new IllegalArgumentException("'" + path + "' is not an array");
+ }
+ return new JsonRepresentation(node);
+ }
+
+ public JsonRepresentation getMap(String path) {
+ JsonNode node = getNode(path);
+ if (representsNull(node)) {
+ return null;
+ }
+ if (node.isArray() || node.isValueNode()) {
+ throw new IllegalArgumentException("'" + path + "' is not a map");
}
return new JsonRepresentation(node);
}
@@ -510,6 +531,56 @@ public class JsonRepresentation {
nodeAsArray().add(value);
}
+ public <T> Iterable<T> arrayIterable(final Class<T> requiredType) {
+ return new Iterable<T>() {
+ @Override
+ public Iterator<T> iterator() {
+ return arrayIterator(requiredType);
+ }
+ };
+ }
+
+ public <T> Iterator<T> arrayIterator(final Class<T> requiredType) {
+ ensureIsAnArrayAtLeastAsLargeAs(0);
+ Function<JsonNode, ?> transformer = JSON_NODE_TRANSFORMERS.get(requiredType);
+ if(transformer == null) {
+ throw new IllegalArgumentException("Conversions from JsonNode to " + requiredType + " are not supported");
+ }
+ ArrayNode arrayNode = (ArrayNode)jsonNode;
+ Iterator<JsonNode> iterator = arrayNode.iterator();
+ Function<JsonNode, T> typedTransformer = asT(transformer); // necessary to do in two steps
+ return Iterators.transform(iterator, typedTransformer);
+ }
+
+ @SuppressWarnings("unchecked")
+ private static <T> Function<JsonNode, T> asT(Function<JsonNode, ?> transformer) {
+ return (Function<JsonNode, T>) transformer;
+ }
+
+ public JsonRepresentation elementAt(int i) {
+ ensureIsAnArrayAtLeastAsLargeAs(i);
+ return new JsonRepresentation(jsonNode.get(i));
+ }
+
+ public void setElementAt(int i, JsonRepresentation objectRepr) {
+ ensureIsAnArrayAtLeastAsLargeAs(i);
+ if(objectRepr.isArray()) {
+ throw new IllegalArgumentException("Representation being set cannot be an array");
+ }
+ // can safely downcast because *this* representation is an array
+ ArrayNode arrayNode = (ArrayNode)jsonNode;
+ arrayNode.set(i, objectRepr.getJsonNode());
+ }
+
+ private void ensureIsAnArrayAtLeastAsLargeAs(int i) {
+ if (!jsonNode.isArray()) {
+ throw new IllegalStateException("Is not an array");
+ }
+ if(i >= arraySize()) {
+ throw new IndexOutOfBoundsException("array has " + arraySize() + " elements");
+ }
+ }
+
/////////////////////////////////////////////////////////////////////////
// mutable (map)
/////////////////////////////////////////////////////////////////////////
@@ -652,4 +723,5 @@ public class JsonRepresentation {
+
}
Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulClient.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulClient.java?rev=1165442&r1=1165441&r2=1165442&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulClient.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulClient.java Mon Sep 5 22:54:08 2011
@@ -24,10 +24,12 @@ import javax.ws.rs.core.Response;
import org.apache.commons.httpclient.HttpClient;
import org.apache.isis.viewer.json.applib.blocks.Link;
+import org.apache.isis.viewer.json.applib.capabilities.CapabilitiesResource;
import org.apache.isis.viewer.json.applib.domainobjects.DomainObjectResource;
+import org.apache.isis.viewer.json.applib.domainobjects.DomainServiceResource;
import org.apache.isis.viewer.json.applib.domainobjects.DomainServicesResource;
+import org.apache.isis.viewer.json.applib.domaintypes.DomainTypeResource;
import org.apache.isis.viewer.json.applib.homepage.HomePageResource;
-import org.apache.isis.viewer.json.applib.types.TypeResource;
import org.apache.isis.viewer.json.applib.user.UserResource;
import org.jboss.resteasy.client.ClientExecutor;
import org.jboss.resteasy.client.ClientRequestFactory;
@@ -37,10 +39,12 @@ import org.jboss.resteasy.client.core.ex
public class RestfulClient {
private final HomePageResource homePageResource;
- private final DomainServicesResource servicesResource;
- private final DomainObjectResource domainObjectResource;
private final UserResource userResource;
- private final TypeResource specsResource;
+ private final CapabilitiesResource capabilitiesResource;
+ private final DomainServicesResource domainServicesResource;
+ private final DomainObjectResource domainObjectResource;
+ private final DomainServiceResource domainServiceResource;
+ private final DomainTypeResource domainTypeResource;
private final ClientExecutor executor;
private final ClientRequestFactory clientRequestFactory;
@@ -55,36 +59,51 @@ public class RestfulClient {
this.homePageResource = clientRequestFactory.createProxy(HomePageResource.class);
this.userResource = clientRequestFactory.createProxy(UserResource.class);
- this.specsResource = clientRequestFactory.createProxy(TypeResource.class);
- this.servicesResource = clientRequestFactory.createProxy(DomainServicesResource.class);
+ this.domainTypeResource = clientRequestFactory.createProxy(DomainTypeResource.class);
+ this.domainServicesResource = clientRequestFactory.createProxy(DomainServicesResource.class);
+ this.domainServiceResource = clientRequestFactory.createProxy(DomainServiceResource.class);
this.domainObjectResource = clientRequestFactory.createProxy(DomainObjectResource.class);
+ this.capabilitiesResource = clientRequestFactory.createProxy(CapabilitiesResource.class);
}
+
+ /////////////////////////////////////////////////////////////////
+ // resources
+ /////////////////////////////////////////////////////////////////
public HomePageResource getHomePageResource() {
return homePageResource;
}
public DomainServicesResource getDomainServicesResource() {
- return servicesResource;
+ return domainServicesResource;
}
public UserResource getUserResource() {
return userResource;
}
- public TypeResource getSpecsResource() {
- return specsResource;
+ public CapabilitiesResource getCapabilitiesResource() {
+ return capabilitiesResource;
+ }
+
+ public DomainTypeResource getDomainTypeResource() {
+ return domainTypeResource;
}
public DomainObjectResource getDomainObjectResource() {
return domainObjectResource;
}
- public ClientExecutor getExecutor() {
- return executor;
+ public DomainServiceResource getDomainServiceResource() {
+ return domainServiceResource;
}
+
+ /////////////////////////////////////////////////////////////////
+ // resource walking support
+ /////////////////////////////////////////////////////////////////
+
public RepresentationWalker createWalker(Response response) {
return new RepresentationWalker(this, response);
}
@@ -102,4 +121,5 @@ public class RestfulClient {
return response;
}
+
}
Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulResponse.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulResponse.java?rev=1165442&r1=1165441&r2=1165442&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulResponse.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulResponse.java Mon Sep 5 22:54:08 2011
@@ -2,8 +2,10 @@ package org.apache.isis.viewer.json.appl
import java.io.IOException;
+import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;
+import org.apache.isis.viewer.json.applib.RestfulResponse.Header;
import org.apache.isis.viewer.json.applib.util.JsonMapper;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
@@ -14,6 +16,7 @@ public class RestfulResponse<T> {
WARNING,
LAST_MODIFIED,
CONTENT_TYPE,
+ CACHE_CONTROL,
X_REPRESENTATION_TYPE;
public String getName() {
@@ -44,5 +47,25 @@ public class RestfulResponse<T> {
return JsonMapper.instance().read(response, returnType);
}
+ public <V> V getHeader(Header header, Class<V> returnType) {
+ MultivaluedMap<String, Object> metadata = response.getMetadata();
+ // in spite of the always returns a String
+ String value = (String) metadata.getFirst(Header.CACHE_CONTROL.getName());
+ return cast(value, returnType);
+ }
+
+ @SuppressWarnings("unchecked")
+ protected <V> V cast(String value, Class<V> returnType) {
+ if(value == null) {
+ return null;
+ }
+ if(returnType == String.class) {
+ return (V) value;
+ }
+ if(returnType == int.class) {
+ return (V) Integer.valueOf(value);
+ }
+ throw new IllegalArgumentException("requested type of " + returnType + " not supported");
+ }
}
Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/capabilities/CapabilitiesRepresentation.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/capabilities/CapabilitiesRepresentation.java?rev=1165442&r1=1165441&r2=1165442&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/capabilities/CapabilitiesRepresentation.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/capabilities/CapabilitiesRepresentation.java Mon Sep 5 22:54:08 2011
@@ -1,11 +1,13 @@
package org.apache.isis.viewer.json.applib.capabilities;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
-import org.apache.isis.viewer.json.applib.LinksToSelf;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.HasExtensions;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.HasLinks;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.LinksToSelf;
import org.apache.isis.viewer.json.applib.blocks.Link;
import org.codehaus.jackson.JsonNode;
-public class CapabilitiesRepresentation extends JsonRepresentation implements LinksToSelf {
+public class CapabilitiesRepresentation extends JsonRepresentation implements LinksToSelf, HasLinks, HasExtensions {
public CapabilitiesRepresentation(JsonNode jsonNode) {
super(jsonNode);
@@ -15,4 +17,15 @@ public class CapabilitiesRepresentation
return getLink("self");
}
+ public JsonRepresentation getCapabilities() {
+ return getMap("capabilities");
+ }
+
+ public JsonRepresentation getLinks() {
+ return getArray("links");
+ }
+ public JsonRepresentation getExtensions() {
+ return getMap("extensions");
+ }
+
}
Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/ActionPromptRepresentation.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/ActionPromptRepresentation.java?rev=1165442&r1=1165441&r2=1165442&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/ActionPromptRepresentation.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/ActionPromptRepresentation.java Mon Sep 5 22:54:08 2011
@@ -1,12 +1,14 @@
package org.apache.isis.viewer.json.applib.domainobjects;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
-import org.apache.isis.viewer.json.applib.LinksToSelf;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.HasExtensions;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.HasLinks;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.LinksToSelf;
import org.apache.isis.viewer.json.applib.blocks.Link;
import org.codehaus.jackson.JsonNode;
-public class ActionPromptRepresentation extends JsonRepresentation implements LinksToSelf {
+public class ActionPromptRepresentation extends JsonRepresentation implements LinksToSelf, HasLinks, HasExtensions {
public ActionPromptRepresentation(JsonNode jsonNode) {
super(jsonNode);
@@ -16,4 +18,11 @@ public class ActionPromptRepresentation
return getLink("self");
}
+ public JsonRepresentation getLinks() {
+ return getArray("links");
+ }
+ public JsonRepresentation getExtensions() {
+ return getMap("extensions");
+ }
+
}
Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/CollectionDetailsRepresentation.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/CollectionDetailsRepresentation.java?rev=1165442&r1=1165441&r2=1165442&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/CollectionDetailsRepresentation.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/CollectionDetailsRepresentation.java Mon Sep 5 22:54:08 2011
@@ -1,12 +1,14 @@
package org.apache.isis.viewer.json.applib.domainobjects;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
-import org.apache.isis.viewer.json.applib.LinksToSelf;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.HasExtensions;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.HasLinks;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.LinksToSelf;
import org.apache.isis.viewer.json.applib.blocks.Link;
import org.codehaus.jackson.JsonNode;
-public class CollectionDetailsRepresentation extends JsonRepresentation implements LinksToSelf {
+public class CollectionDetailsRepresentation extends JsonRepresentation implements LinksToSelf, HasLinks, HasExtensions {
public CollectionDetailsRepresentation(JsonNode jsonNode) {
super(jsonNode);
@@ -17,4 +19,11 @@ public class CollectionDetailsRepresenta
}
+ public JsonRepresentation getLinks() {
+ return getArray("links");
+ }
+ public JsonRepresentation getExtensions() {
+ return getMap("extensions");
+ }
+
}
Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainObjectRepresentation.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainObjectRepresentation.java?rev=1165442&r1=1165441&r2=1165442&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainObjectRepresentation.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainObjectRepresentation.java Mon Sep 5 22:54:08 2011
@@ -1,12 +1,14 @@
package org.apache.isis.viewer.json.applib.domainobjects;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
-import org.apache.isis.viewer.json.applib.LinksToSelf;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.HasExtensions;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.HasLinks;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.LinksToSelf;
import org.apache.isis.viewer.json.applib.blocks.Link;
import org.codehaus.jackson.JsonNode;
-public class DomainObjectRepresentation extends JsonRepresentation implements LinksToSelf {
+public class DomainObjectRepresentation extends JsonRepresentation implements LinksToSelf, HasLinks, HasExtensions {
public DomainObjectRepresentation(JsonNode jsonNode) {
super(jsonNode);
@@ -16,10 +18,6 @@ public class DomainObjectRepresentation
return getLink("self");
}
- public Link getDomainType() {
- return getLink("domainType");
- }
-
public String getOid() {
return getString("oid");
}
@@ -43,4 +41,12 @@ public class DomainObjectRepresentation
}
+
+ public JsonRepresentation getLinks() {
+ return getArray("links");
+ }
+ public JsonRepresentation getExtensions() {
+ return getMap("extensions");
+ }
+
}
Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainObjectResource.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainObjectResource.java?rev=1165442&r1=1165441&r2=1165442&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainObjectResource.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainObjectResource.java Mon Sep 5 22:54:08 2011
@@ -1,4 +1,4 @@
-/*
+/*s
* 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
@@ -19,7 +19,6 @@
package org.apache.isis.viewer.json.applib.domainobjects;
import java.io.InputStream;
-import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
@@ -38,12 +37,30 @@ import org.jboss.resteasy.annotations.Cl
@Path("/objects")
public interface DomainObjectResource {
+ ////////////////////////////////////////////////////////////
+ // domain object
+ ////////////////////////////////////////////////////////////
+
@GET
@Path("/{oid}")
@Produces({ MediaType.APPLICATION_JSON })
@ClientResponseType(entityType=String.class)
public Response object(@PathParam("oid") final String oidStr);
+ @PUT
+ @Path("/{oid}")
+ @Consumes({ MediaType.APPLICATION_JSON })
+ @Produces({ MediaType.APPLICATION_JSON })
+ @ClientResponseType(entityType=String.class)
+ public Response object(
+ @PathParam("oid") final String oidStr,
+ final InputStream arguments);
+
+
+ ////////////////////////////////////////////////////////////
+ // domain object property
+ ////////////////////////////////////////////////////////////
+
@GET
@Path("/{oid}/properties/{propertyId}")
@Produces({ MediaType.APPLICATION_JSON })
@@ -52,40 +69,37 @@ public interface DomainObjectResource {
@PathParam("oid") final String oidStr,
@PathParam("propertyId") final String propertyId);
- @GET
- @Path("/{oid}/collections/{collectionId}")
+ @PUT
+ @Path("/{oid}/properties/{propertyId}")
@Produces({ MediaType.APPLICATION_JSON })
+ @Consumes({ MediaType.APPLICATION_JSON })
@ClientResponseType(entityType=String.class)
- public Response accessCollection(
+ public Response modifyProperty(
@PathParam("oid") final String oidStr,
- @PathParam("collectionId") final String collectionId);
+ @PathParam("propertyId") final String propertyId,
+ final InputStream arguments);
- @GET
- @Path("/{oid}/actions/{actionId}")
+ @DELETE
+ @Path("/{oid}/properties/{propertyId}")
@Produces({ MediaType.APPLICATION_JSON })
@ClientResponseType(entityType=String.class)
- public Response actionPrompt(
+ public Response clearProperty(
@PathParam("oid") final String oidStr,
- @PathParam("actionId") final String actionId);
+ @PathParam("propertyId") final String propertyId);
- @GET
- @Path("/{oid}/actions/{actionId}/invoke")
- @Produces({ MediaType.APPLICATION_JSON })
- @ClientResponseType(entityType=String.class)
- public Response invokeActionIdempotent(
- @PathParam("oid") final String oidStr,
- @PathParam("actionId") final String actionId,
- @QueryParam("arg") final List<String> arguments);
- @PUT
- @Path("/{oid}/properties{propertyId}")
+
+ ////////////////////////////////////////////////////////////
+ // domain object collection
+ ////////////////////////////////////////////////////////////
+
+ @GET
+ @Path("/{oid}/collections/{collectionId}")
@Produces({ MediaType.APPLICATION_JSON })
- @Consumes({ MediaType.APPLICATION_JSON })
@ClientResponseType(entityType=String.class)
- public Response modifyProperty(
+ public Response accessCollection(
@PathParam("oid") final String oidStr,
- @PathParam("propertyId") final String propertyId,
- final InputStream body);
+ @PathParam("collectionId") final String collectionId);
@PUT
@Path("/{oid}/collections/{collectionId}")
@@ -94,16 +108,18 @@ public interface DomainObjectResource {
public Response addToSet(
@PathParam("oid") final String oidStr,
@PathParam("collectionId") final String collectionId,
- final InputStream body);
+ final InputStream arguments);
- @DELETE
- @Path("/{oid}/properties/{propertyId}")
+ @POST
+ @Path("/{oid}/collections/{collectionId}")
@Produces({ MediaType.APPLICATION_JSON })
+ @Consumes({ MediaType.APPLICATION_JSON })
@ClientResponseType(entityType=String.class)
- public Response clearProperty(
- @PathParam("oid") final String oidStr,
- @PathParam("propertyId") final String propertyId);
-
+ public Response addToList(
+ @PathParam("oid") final String oidStr,
+ @PathParam("collectionId") final String collectionId,
+ final InputStream arguments);
+
@DELETE
@Path("/{oid}/collections/{collectionId}")
@Produces({ MediaType.APPLICATION_JSON })
@@ -112,18 +128,44 @@ public interface DomainObjectResource {
public Response removeFromCollection(
@PathParam("oid") final String oidStr,
@PathParam("collectionId") final String collectionId,
- final InputStream body);
+ final InputStream arguments);
- @POST
- @Path("/{oid}/collections/{collectionId}")
+
+ ////////////////////////////////////////////////////////////
+ // domain object action
+ ////////////////////////////////////////////////////////////
+
+ @GET
+ @Path("/{oid}/actions/{actionId}")
@Produces({ MediaType.APPLICATION_JSON })
- @Consumes({ MediaType.APPLICATION_JSON })
@ClientResponseType(entityType=String.class)
- public Response addToList(
- @PathParam("oid") final String oidStr,
- @PathParam("collectionId") final String collectionId,
- final InputStream body);
+ public Response actionPrompt(
+ @PathParam("oid") final String oidStr,
+ @PathParam("actionId") final String actionId);
+
+ ////////////////////////////////////////////////////////////
+ // domain object action invoke
+ ////////////////////////////////////////////////////////////
+
+ @GET
+ @Path("/{oid}/actions/{actionId}/invoke")
+ @Produces({ MediaType.APPLICATION_JSON })
+ @ClientResponseType(entityType=String.class)
+ public Response invokeActionQueryOnly(
+ @PathParam("oid") final String oidStr,
+ @PathParam("actionId") final String actionId,
+ @QueryParam("args") final String arguments);
+ @PUT
+ @Path("/{oid}/actions/{actionId}/invoke")
+ @Produces({ MediaType.APPLICATION_JSON })
+ @Consumes({ MediaType.APPLICATION_JSON })
+ @ClientResponseType(entityType=String.class)
+ public Response invokeActionIdempotent(
+ @PathParam("oid") final String oidStr,
+ @PathParam("actionId") final String actionId,
+ final InputStream arguments);
+
@POST
@Path("/{oid}/actions/{actionId}/invoke")
@Produces({ MediaType.APPLICATION_JSON })
@@ -132,5 +174,6 @@ public interface DomainObjectResource {
public Response invokeAction(
@PathParam("oid") final String oidStr,
@PathParam("actionId") final String actionId,
- final InputStream body);
+ final InputStream arguments);
+
}
\ No newline at end of file
Added: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainServiceResource.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainServiceResource.java?rev=1165442&view=auto
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainServiceResource.java (added)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainServiceResource.java Mon Sep 5 22:54:08 2011
@@ -0,0 +1,95 @@
+/*
+ * 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.json.applib.domainobjects;
+
+import java.io.InputStream;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import org.jboss.resteasy.annotations.ClientResponseType;
+
+@Path("/services")
+public interface DomainServiceResource {
+
+ ////////////////////////////////////////////////////////////
+ // domain service
+ ////////////////////////////////////////////////////////////
+
+ @GET
+ @Path("/{serviceId}")
+ @Produces({ MediaType.APPLICATION_JSON })
+ @ClientResponseType(entityType=String.class)
+ public Response service(@PathParam("serviceid") final String serviceId);
+
+
+ ////////////////////////////////////////////////////////////
+ // domain service action
+ ////////////////////////////////////////////////////////////
+
+ @GET
+ @Path("/{serviceId}/actions/{actionId}")
+ @Produces({ MediaType.APPLICATION_JSON })
+ @ClientResponseType(entityType=String.class)
+ public Response serviceActionPrompt(
+ @PathParam("serviceId") final String serviceId,
+ @PathParam("actionId") final String actionId);
+
+
+ ////////////////////////////////////////////////////////////
+ // domain service action invoke
+ ////////////////////////////////////////////////////////////
+
+ @GET
+ @Path("/{oid}/actions/{actionId}/invoke")
+ @Produces({ MediaType.APPLICATION_JSON })
+ @ClientResponseType(entityType=String.class)
+ public Response serviceInvokeActionQueryOnly(
+ @PathParam("oid") final String oidStr,
+ @PathParam("actionId") final String actionId,
+ @QueryParam("args") final String arguments);
+
+ @PUT
+ @Path("/{oid}/actions/{actionId}/invoke")
+ @Produces({ MediaType.APPLICATION_JSON })
+ @Consumes({ MediaType.APPLICATION_JSON })
+ @ClientResponseType(entityType=String.class)
+ public Response serviceInvokeActionIdempotent(
+ @PathParam("oid") final String oidStr,
+ @PathParam("actionId") final String actionId,
+ final InputStream arguments);
+
+ @POST
+ @Path("/{oid}/actions/{actionId}/invoke")
+ @Produces({ MediaType.APPLICATION_JSON })
+ @Consumes({ MediaType.APPLICATION_JSON })
+ @ClientResponseType(entityType=String.class)
+ public Response serviceInvokeAction(
+ @PathParam("oid") final String oidStr,
+ @PathParam("actionId") final String actionId,
+ final InputStream arguments);
+}
\ No newline at end of file
Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainServicesRepresentation.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainServicesRepresentation.java?rev=1165442&r1=1165441&r2=1165442&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainServicesRepresentation.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainServicesRepresentation.java Mon Sep 5 22:54:08 2011
@@ -1,12 +1,14 @@
package org.apache.isis.viewer.json.applib.domainobjects;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
-import org.apache.isis.viewer.json.applib.LinksToSelf;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.HasExtensions;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.HasLinks;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.LinksToSelf;
import org.apache.isis.viewer.json.applib.blocks.Link;
import org.codehaus.jackson.JsonNode;
-public class DomainServicesRepresentation extends JsonRepresentation implements LinksToSelf {
+public class DomainServicesRepresentation extends JsonRepresentation implements LinksToSelf, HasLinks, HasExtensions {
public DomainServicesRepresentation(JsonNode jsonNode) {
super(jsonNode);
@@ -16,4 +18,11 @@ public class DomainServicesRepresentatio
return getLink("self");
}
+ public JsonRepresentation getLinks() {
+ return getArray("links");
+ }
+ public JsonRepresentation getExtensions() {
+ return getMap("extensions");
+ }
+
}
Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/PropertyDetailsRepresentation.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/PropertyDetailsRepresentation.java?rev=1165442&r1=1165441&r2=1165442&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/PropertyDetailsRepresentation.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/PropertyDetailsRepresentation.java Mon Sep 5 22:54:08 2011
@@ -1,12 +1,14 @@
package org.apache.isis.viewer.json.applib.domainobjects;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
-import org.apache.isis.viewer.json.applib.LinksToSelf;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.HasExtensions;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.HasLinks;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.LinksToSelf;
import org.apache.isis.viewer.json.applib.blocks.Link;
import org.codehaus.jackson.JsonNode;
-public class PropertyDetailsRepresentation extends JsonRepresentation implements LinksToSelf {
+public class PropertyDetailsRepresentation extends JsonRepresentation implements LinksToSelf, HasLinks, HasExtensions {
public PropertyDetailsRepresentation(JsonNode jsonNode) {
super(jsonNode);
@@ -16,5 +18,12 @@ public class PropertyDetailsRepresentati
return getLink("self");
}
+ public JsonRepresentation getLinks() {
+ return getArray("links");
+ }
+ public JsonRepresentation getExtensions() {
+ return getMap("extensions");
+ }
+
}
Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/ScalarValueRepresentation.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/ScalarValueRepresentation.java?rev=1165442&r1=1165441&r2=1165442&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/ScalarValueRepresentation.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/ScalarValueRepresentation.java Mon Sep 5 22:54:08 2011
@@ -1,12 +1,14 @@
package org.apache.isis.viewer.json.applib.domainobjects;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
-import org.apache.isis.viewer.json.applib.LinksToSelf;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.HasExtensions;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.HasLinks;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.LinksToSelf;
import org.apache.isis.viewer.json.applib.blocks.Link;
import org.codehaus.jackson.JsonNode;
-public class ScalarValueRepresentation extends JsonRepresentation implements LinksToSelf {
+public class ScalarValueRepresentation extends JsonRepresentation implements LinksToSelf, HasLinks, HasExtensions {
public ScalarValueRepresentation(JsonNode jsonNode) {
super(jsonNode);
@@ -16,4 +18,11 @@ public class ScalarValueRepresentation e
return getLink("self");
}
+ public JsonRepresentation getLinks() {
+ return getArray("links");
+ }
+ public JsonRepresentation getExtensions() {
+ return getMap("extensions");
+ }
+
}
Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domaintypes/DomainTypeRepresentation.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domaintypes/DomainTypeRepresentation.java?rev=1165442&r1=1165441&r2=1165442&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domaintypes/DomainTypeRepresentation.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domaintypes/DomainTypeRepresentation.java Mon Sep 5 22:54:08 2011
@@ -1,22 +1,27 @@
package org.apache.isis.viewer.json.applib.domaintypes;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
-import org.apache.isis.viewer.json.applib.LinksToSelf;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.HasExtensions;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.HasLinks;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.LinksToSelf;
import org.apache.isis.viewer.json.applib.blocks.Link;
import org.codehaus.jackson.JsonNode;
-public class DomainTypeRepresentation extends JsonRepresentation implements LinksToSelf {
+public class DomainTypeRepresentation extends JsonRepresentation implements LinksToSelf, HasLinks, HasExtensions {
public DomainTypeRepresentation(JsonNode jsonNode) {
super(jsonNode);
}
- public Link getRepresentationType() {
- return getLink("representationType");
- }
-
public Link getSelf() {
return getLink("self");
}
+ public JsonRepresentation getLinks() {
+ return getArray("links");
+ }
+ public JsonRepresentation getExtensions() {
+ return getMap("extensions");
+ }
+
}
Added: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domaintypes/DomainTypeResource.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domaintypes/DomainTypeResource.java?rev=1165442&view=auto
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domaintypes/DomainTypeResource.java (added)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domaintypes/DomainTypeResource.java Mon Sep 5 22:54:08 2011
@@ -0,0 +1,73 @@
+/*
+ * 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.json.applib.domaintypes;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import org.jboss.resteasy.annotations.ClientResponseType;
+
+@Path("/domainTypes")
+public interface DomainTypeResource {
+
+ @GET
+ @Path("/")
+ @Produces({ MediaType.APPLICATION_JSON })
+ @ClientResponseType(entityType=String.class)
+ public abstract Response domainTypes();
+
+ @GET
+ @Path("/{domainType}")
+ @Produces({ MediaType.APPLICATION_JSON })
+ @ClientResponseType(entityType=String.class)
+ public abstract Response domainType(@PathParam("domainType") final String domainType);
+
+ @GET
+ @Path("/{domainType}/properties/{propertyId}")
+ @Produces({ MediaType.APPLICATION_JSON })
+ @ClientResponseType(entityType=String.class)
+ public abstract Response typeProperty(@PathParam("domainType") final String domainType,
+ @PathParam("propertyId") final String propertyId);
+
+ @GET
+ @Path("/{domainType}/collections/{collectionId}")
+ @Produces({ MediaType.APPLICATION_JSON })
+ @ClientResponseType(entityType=String.class)
+ public abstract Response typeCollection(@PathParam("domainType") final String domainType,
+ @PathParam("collectionId") final String collectionId);
+
+ @GET
+ @Path("/{domainType}/actions/{actionId}")
+ @Produces({ MediaType.APPLICATION_JSON })
+ @ClientResponseType(entityType=String.class)
+ public abstract Response typeAction(@PathParam("domainType") final String domainType,
+ @PathParam("actionId") final String actionId);
+
+ @GET
+ @Path("/{domainType}/actions/{actionId}/params/{paramNum}")
+ @Produces({ MediaType.APPLICATION_JSON })
+ @ClientResponseType(entityType=String.class)
+ public abstract Response typeActionParam(@PathParam("domainType") final String domainType,
+ @PathParam("actionId") final String actionId, @PathParam("paramNum") final int paramNum);
+
+}
\ No newline at end of file
Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/homepage/HomePageRepresentation.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/homepage/HomePageRepresentation.java?rev=1165442&r1=1165441&r2=1165442&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/homepage/HomePageRepresentation.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/homepage/HomePageRepresentation.java Mon Sep 5 22:54:08 2011
@@ -1,11 +1,13 @@
package org.apache.isis.viewer.json.applib.homepage;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
-import org.apache.isis.viewer.json.applib.LinksToSelf;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.HasExtensions;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.HasLinks;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.LinksToSelf;
import org.apache.isis.viewer.json.applib.blocks.Link;
import org.codehaus.jackson.JsonNode;
-public class HomePageRepresentation extends JsonRepresentation implements LinksToSelf {
+public class HomePageRepresentation extends JsonRepresentation implements LinksToSelf, HasLinks, HasExtensions {
public HomePageRepresentation(JsonNode jsonNode) {
super(jsonNode);
@@ -27,8 +29,8 @@ public class HomePageRepresentation exte
public JsonRepresentation getLinks() {
return getArray("links");
}
- public JsonRepresentation getMetadata() {
- return getArray("metadata");
+ public JsonRepresentation getExtensions() {
+ return getMap("extensions");
}
}
Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/user/UserRepresentation.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/user/UserRepresentation.java?rev=1165442&r1=1165441&r2=1165442&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/user/UserRepresentation.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/user/UserRepresentation.java Mon Sep 5 22:54:08 2011
@@ -1,12 +1,14 @@
package org.apache.isis.viewer.json.applib.user;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
-import org.apache.isis.viewer.json.applib.LinksToSelf;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.HasExtensions;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.HasLinks;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.LinksToSelf;
import org.apache.isis.viewer.json.applib.blocks.Link;
import org.codehaus.jackson.JsonNode;
-public class UserRepresentation extends JsonRepresentation implements LinksToSelf {
+public class UserRepresentation extends JsonRepresentation implements LinksToSelf, HasLinks, HasExtensions {
public UserRepresentation(JsonNode jsonNode) {
super(jsonNode);
@@ -32,4 +34,11 @@ public class UserRepresentation extends
return getRepresentation("roles");
}
+ public JsonRepresentation getLinks() {
+ return getArray("links");
+ }
+ public JsonRepresentation getExtensions() {
+ return getMap("extensions");
+ }
+
}
Added: incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_arrayIterator.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_arrayIterator.java?rev=1165442&view=auto
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_arrayIterator.java (added)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_arrayIterator.java Mon Sep 5 22:54:08 2011
@@ -0,0 +1,64 @@
+/*
+ * 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.json.applib;
+
+import static org.apache.isis.viewer.json.applib.JsonUtils.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 java.util.Iterator;
+
+import org.codehaus.jackson.JsonParseException;
+import org.codehaus.jackson.map.JsonMappingException;
+import org.junit.Before;
+import org.junit.Test;
+
+public class JsonRepresentationTest_arrayIterator {
+
+ private JsonRepresentation jsonRepresentation;
+
+ @Test
+ public void forJsonRepresentation() throws JsonParseException, JsonMappingException, IOException {
+ jsonRepresentation = new JsonRepresentation(readJson("list.json"));
+ Iterator<JsonRepresentation> arrayIterator = jsonRepresentation.arrayIterator(JsonRepresentation.class);
+ assertThat(arrayIterator.hasNext(), is(true));
+ assertThat(arrayIterator.next().getString("a"), is("a1"));
+ assertThat(arrayIterator.hasNext(), is(true));
+ assertThat(arrayIterator.next().getString("b"), is("b1"));
+ assertThat(arrayIterator.hasNext(), is(false));
+ }
+
+ @Test
+ public void forString() throws JsonParseException, JsonMappingException, IOException {
+ jsonRepresentation = new JsonRepresentation(readJson("listOfStrings.json"));
+ Iterator<String> arrayIterator = jsonRepresentation.arrayIterator(String.class);
+ assertThat(arrayIterator.hasNext(), is(true));
+ assertThat(arrayIterator.next(), is("a"));
+ assertThat(arrayIterator.hasNext(), is(true));
+ assertThat(arrayIterator.next(), is("b"));
+ assertThat(arrayIterator.hasNext(), is(true));
+ assertThat(arrayIterator.next(), is("c"));
+ assertThat(arrayIterator.hasNext(), is(false));
+ }
+
+
+}
Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_getArray.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_getArray.java?rev=1165442&r1=1165441&r2=1165442&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_getArray.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_getArray.java Mon Sep 5 22:54:08 2011
@@ -66,7 +66,7 @@ public class JsonRepresentationTest_getA
jsonRepresentation.getArray("aString");
fail();
} catch (IllegalArgumentException e) {
- assertThat(e.getMessage(), is("'aString' (a value) is not an array"));
+ assertThat(e.getMessage(), is("'aString' is not an array"));
}
}
@@ -76,7 +76,7 @@ public class JsonRepresentationTest_getA
jsonRepresentation.getArray("aSubMap");
fail();
} catch (IllegalArgumentException e) {
- assertThat(e.getMessage(), is("'aSubMap' (a map) is not an array"));
+ assertThat(e.getMessage(), is("'aSubMap' is not an array"));
}
}
Added: incubator/isis/trunk/framework/viewer/json/json-applib/src/test/resources/org/apache/isis/viewer/json/applib/listOfStrings.json
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/test/resources/org/apache/isis/viewer/json/applib/listOfStrings.json?rev=1165442&view=auto
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/test/resources/org/apache/isis/viewer/json/applib/listOfStrings.json (added)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/test/resources/org/apache/isis/viewer/json/applib/listOfStrings.json Mon Sep 5 22:54:08 2011
@@ -0,0 +1,3 @@
+[
+ "a", "b", "c"
+]
\ No newline at end of file
Added: incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/CapabilitiesResourceTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/CapabilitiesResourceTest.java?rev=1165442&view=auto
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/CapabilitiesResourceTest.java (added)
+++ incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/CapabilitiesResourceTest.java Mon Sep 5 22:54:08 2011
@@ -0,0 +1,113 @@
+package org.apache.isis.viewer.json.tck;
+
+import static org.apache.isis.core.commons.matchers.IsisMatchers.greaterThan;
+import static org.apache.isis.core.commons.matchers.IsisMatchers.matches;
+import static org.apache.isis.viewer.json.tck.RepresentationMatchers.assertThat;
+import static org.apache.isis.viewer.json.tck.RepresentationMatchers.isArray;
+import static org.apache.isis.viewer.json.tck.RepresentationMatchers.isFollowableLinkToSelf;
+import static org.apache.isis.viewer.json.tck.RepresentationMatchers.isLink;
+import static org.apache.isis.viewer.json.tck.RepresentationMatchers.isMap;
+import static org.apache.isis.viewer.json.tck.RepresentationMatchers.entry;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.hamcrest.Matchers.hasItem;
+import static org.junit.Assert.assertThat;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status.Family;
+
+import org.apache.isis.runtimes.dflt.webserver.WebServer;
+import org.apache.isis.viewer.json.applib.JsonRepresentation;
+import org.apache.isis.viewer.json.applib.RestfulClient;
+import org.apache.isis.viewer.json.applib.RestfulResponse;
+import org.apache.isis.viewer.json.applib.blocks.Link;
+import org.apache.isis.viewer.json.applib.blocks.Method;
+import org.apache.isis.viewer.json.applib.capabilities.CapabilitiesRepresentation;
+import org.apache.isis.viewer.json.applib.capabilities.CapabilitiesResource;
+import org.apache.isis.viewer.json.applib.domainobjects.DomainObjectRepresentation;
+import org.apache.isis.viewer.json.applib.domainobjects.DomainServicesRepresentation;
+import org.apache.isis.viewer.json.applib.domainobjects.DomainServicesResource;
+import org.codehaus.jackson.JsonParseException;
+import org.codehaus.jackson.map.JsonMappingException;
+import org.hamcrest.Matcher;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+
+import com.google.common.collect.Lists;
+
+
+public class CapabilitiesResourceTest {
+
+ @Rule
+ public IsisWebServerRule webServerRule = new IsisWebServerRule();
+
+ private RestfulClient client;
+ private CapabilitiesResource resource;
+
+ @Before
+ public void setUp() throws Exception {
+ WebServer webServer = webServerRule.getWebServer();
+ client = new RestfulClient(webServer.getBase());
+
+ resource = client.getCapabilitiesResource();
+ }
+
+
+ @Test
+ public void representation() throws Exception {
+
+ // when
+ Response servicesResp = resource.capabilities();
+ RestfulResponse<CapabilitiesRepresentation> jsonResp = RestfulResponse.of(servicesResp, CapabilitiesRepresentation.class);
+ assertThat(jsonResp.getStatus().getFamily(), is(Family.SUCCESSFUL));
+
+ // then
+ CapabilitiesRepresentation repr = jsonResp.getEntity();
+ assertThat(repr, isMap());
+
+ assertThat(repr.getSelf(), isLink().method(Method.GET));
+
+ JsonRepresentation capabilities = repr.getCapabilities();
+ assertThat(capabilities, isMap());
+
+ assertThat(capabilities.getString("concurrencyChecking"), is("no"));
+ assertThat(capabilities.getString("transientObjects"), is("no"));
+ assertThat(capabilities.getString("deleteObjects"), is("no"));
+ assertThat(capabilities.getString("simpleArguments"), is("no"));
+ assertThat(capabilities.getString("partialArguments"), is("no"));
+ assertThat(capabilities.getString("followLinks"), is("no"));
+ assertThat(capabilities.getString("validateOnly"), is("no"));
+ assertThat(capabilities.getString("pagination"), is("no"));
+ assertThat(capabilities.getString("sorting"), is("no"));
+ assertThat(capabilities.getString("domainModel"), is("rich"));
+
+ assertThat(repr.getLinks(), is(not(nullValue())));
+ assertThat(repr.getExtensions(), is(not(nullValue())));
+ }
+
+
+ @Test
+ public void linksToSelf() throws Exception {
+ // given
+ CapabilitiesRepresentation repr = givenRepresentation();
+
+ // when, then
+ assertThat(repr, isFollowableLinkToSelf(client));
+ }
+
+
+ private CapabilitiesRepresentation givenRepresentation() throws JsonParseException, JsonMappingException, IOException {
+ return RepresentationMatchers.entityOf(resource.capabilities(), CapabilitiesRepresentation.class);
+ }
+
+
+}
+
\ No newline at end of file
Modified: incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainObjectResourceTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainObjectResourceTest.java?rev=1165442&r1=1165441&r2=1165442&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainObjectResourceTest.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainObjectResourceTest.java Mon Sep 5 22:54:08 2011
@@ -63,8 +63,8 @@ public class DomainObjectResourceTest {
Link self = domainObjectRepr.getSelf();
assertThat(self,
isLink().rel("object").href(matches(".+objects/OID:1")).method(Method.GET));
- assertThat(domainObjectRepr.getDomainType(),
- isLink().rel("type").href(matches(".+" + ApplibValuedEntityRepositoryDefault.class.getName() + ".+")).method(Method.GET));
+// assertThat(domainObjectRepr.getDomainType(),
+// isLink().rel("type").href(matches(".+" + ApplibValuedEntityRepositoryDefault.class.getName() + ".+")).method(Method.GET));
assertThat(domainObjectRepr.getTitle(), is("ApplibValues"));
assertThat(domainObjectRepr.getOid(), is("OID:1"));
Modified: incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/HomePageResourceTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/HomePageResourceTest.java?rev=1165442&r1=1165441&r2=1165442&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/HomePageResourceTest.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/HomePageResourceTest.java Mon Sep 5 22:54:08 2011
@@ -24,6 +24,7 @@ import org.apache.isis.viewer.json.appli
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.junit.Before;
+import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
@@ -44,59 +45,59 @@ public class HomePageResourceTest {
resource = client.getHomePageResource();
}
- @org.junit.Ignore("to get working")
+ @Ignore("cache-control")
@Test
public void returnsHomePageRepresentation() throws Exception {
// given
- Response resourcesResp = resource.resources();
+ Response resp = resource.resources();
// when
- RestfulResponse<HomePageRepresentation> homePageJsonResp = RestfulResponse.of(resourcesResp, HomePageRepresentation.class);
- assertThat(homePageJsonResp.getStatus().getFamily(), is(Family.SUCCESSFUL));
+ RestfulResponse<HomePageRepresentation> jsonResp = RestfulResponse.of(resp, HomePageRepresentation.class);
+ assertThat(jsonResp.getStatus().getFamily(), is(Family.SUCCESSFUL));
// then
- assertThat(homePageJsonResp.getStatus(), is(HttpStatusCode.OK));
+ assertThat(jsonResp.getStatus(), is(HttpStatusCode.OK));
+ assertThat(jsonResp.getHeader(RestfulResponse.Header.CACHE_CONTROL, int.class), is(86400));
+ assertThat(jsonResp.getHeader(RestfulResponse.Header.X_REPRESENTATION_TYPE, String.class), is("homePage"));
+
+ HomePageRepresentation repr = jsonResp.getEntity();
+ assertThat(repr, is(not(nullValue())));
+ assertThat(repr.isMap(), is(true));
+
+ assertThat(repr.getSelf(), isLink(client).method(Method.GET));
+ assertThat(repr.getUser(), isLink(client).method(Method.GET));
+ assertThat(repr.getServices(), isLink(client).method(Method.GET));
+ assertThat(repr.getCapabilities(), isLink(client).method(Method.GET));
- HomePageRepresentation homePageRepr = homePageJsonResp.getEntity();
- assertThat(homePageRepr, is(not(nullValue())));
- assertThat(homePageRepr.isMap(), is(true));
-
- assertThat(homePageRepr.getSelf(), isLink(client).method(Method.GET));
- assertThat(homePageRepr.getUser(), isLink(client).method(Method.GET));
- assertThat(homePageRepr.getServices(), isLink(client).method(Method.GET));
- assertThat(homePageRepr.getCapabilities(), isLink(client).method(Method.GET));
-
- assertThat(homePageRepr.getLinks(), is(not(nullValue())));
- assertThat(homePageRepr.getMetadata(), is(not(nullValue())));
+ assertThat(repr.getLinks(), is(not(nullValue())));
+ assertThat(repr.getExtensions(), is(not(nullValue())));
}
@Test
public void linksToSelf() throws Exception {
// given
- HomePageRepresentation homePageRepr = givenRepresentation();
+ HomePageRepresentation repr = givenRepresentation();
// when, then
- assertThat(homePageRepr, isFollowableLinkToSelf(client));
+ assertThat(repr, isFollowableLinkToSelf(client));
}
- @org.junit.Ignore("to get working")
@Test
public void links() throws Exception {
- HomePageRepresentation homePageRepr = givenRepresentation();
+ HomePageRepresentation repr = givenRepresentation();
// when, then
- assertThat(homePageRepr.getServices(), isLink(client).returning(HttpStatusCode.OK));
- assertThat(homePageRepr.getUser(), isLink(client).returning(HttpStatusCode.OK));
- assertThat(homePageRepr.getCapabilities(), isLink(client).returning(HttpStatusCode.OK));
+ assertThat(repr.getServices(), isLink(client).returning(HttpStatusCode.OK));
+ assertThat(repr.getUser(), isLink(client).returning(HttpStatusCode.OK));
+ assertThat(repr.getCapabilities(), isLink(client).returning(HttpStatusCode.OK));
}
private HomePageRepresentation givenRepresentation() throws JsonParseException, JsonMappingException, IOException {
return entityOf(resource.resources(), HomePageRepresentation.class);
}
- //
}
Modified: incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/RepresentationMatchers.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/RepresentationMatchers.java?rev=1165442&r1=1165441&r2=1165442&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/RepresentationMatchers.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/RepresentationMatchers.java Mon Sep 5 22:54:08 2011
@@ -6,7 +6,7 @@ import javax.ws.rs.core.Response;
import org.apache.isis.viewer.json.applib.HttpStatusCode;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
-import org.apache.isis.viewer.json.applib.LinksToSelf;
+import org.apache.isis.viewer.json.applib.JsonRepresentation.LinksToSelf;
import org.apache.isis.viewer.json.applib.RestfulClient;
import org.apache.isis.viewer.json.applib.RestfulResponse;
import org.apache.isis.viewer.json.applib.blocks.Link;
@@ -122,6 +122,10 @@ public class RepresentationMatchers {
public static abstract class AbstractMatcherBuilder<T> {
protected RestfulClient client;
+ public AbstractMatcherBuilder() {
+ this(null);
+ }
+
public AbstractMatcherBuilder(RestfulClient client) {
this.client = client;
}
@@ -244,5 +248,53 @@ public class RepresentationMatchers {
}
}
+ public static EntryMatcherBuilder entry(String key) {
+ return new EntryMatcherBuilder(key);
+ }
+
+ public static class EntryMatcherBuilder extends AbstractMatcherBuilder<JsonRepresentation> {
+
+ private final String key;
+ private String value;
+ private EntryMatcherBuilder(String key) {
+ this.key = key;
+ }
+
+ public EntryMatcherBuilder value(String value) {
+ this.value = value;
+ return this;
+ }
+
+ @Override
+ public Matcher<JsonRepresentation> build() {
+ return new TypeSafeMatcher<JsonRepresentation>() {
+
+ @Override
+ public void describeTo(Description description) {
+ description.appendText("map with entry with key: " + key);
+ if(value != null) {
+ description.appendText(", and value: " + value);
+ }
+ }
+
+ @Override
+ public boolean matchesSafely(JsonRepresentation item) {
+ if(!item.isMap()) {
+ return false;
+ }
+ String val = item.getString(key);
+ if(val == null) {
+ return false;
+ }
+ if(value != null && !value.equals(val)) {
+ return false;
+ }
+ return true;
+ }
+ };
+ }
+
+ }
+
}
\ No newline at end of file
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/JsonApplication.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/JsonApplication.java?rev=1165442&r1=1165441&r2=1165442&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/JsonApplication.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/JsonApplication.java Mon Sep 5 22:54:08 2011
@@ -18,7 +18,9 @@
*/
package org.apache.isis.viewer.json.viewer;
+import org.apache.isis.viewer.json.viewer.resources.capabilities.CapabilitiesResourceServerside;
import org.apache.isis.viewer.json.viewer.resources.domainobjects.DomainObjectResourceServerside;
+import org.apache.isis.viewer.json.viewer.resources.domainobjects.DomainServiceResourceServerside;
import org.apache.isis.viewer.json.viewer.resources.domaintypes.DomainTypeResourceServerside;
import org.apache.isis.viewer.json.viewer.resources.home.HomePageResourceServerside;
import org.apache.isis.viewer.json.viewer.resources.services.DomainServicesResourceServerside;
@@ -32,6 +34,8 @@ public class JsonApplication extends Abs
addSingleton(new DomainServicesResourceServerside());
addSingleton(new UserResourceServerside());
addSingleton(new DomainObjectResourceServerside());
+ addSingleton(new DomainServiceResourceServerside());
+ addSingleton(new CapabilitiesResourceServerside());
}
}
Copied: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/LinkBuilder.java (from r1165265, incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/LinkRepBuilder.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?p2=incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/LinkBuilder.java&p1=incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/LinkRepBuilder.java&r1=1165265&r2=1165442&rev=1165442&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/LinkRepBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/LinkBuilder.java Mon Sep 5 22:54:08 2011
@@ -19,10 +19,10 @@ package org.apache.isis.viewer.json.view
import org.apache.isis.viewer.json.applib.JsonRepresentation;
import org.apache.isis.viewer.json.viewer.ResourceContext;
-public class LinkRepBuilder extends RepresentationBuilder<LinkRepBuilder> {
+public class LinkBuilder extends RepresentationBuilder<LinkBuilder> {
- public static LinkRepBuilder newBuilder(ResourceContext resourceContext, String rel, String hrefFormat, Object... args) {
- return new LinkRepBuilder(resourceContext, rel, String.format(hrefFormat, args));
+ public static LinkBuilder newBuilder(ResourceContext resourceContext, String rel, String hrefFormat, Object... args) {
+ return new LinkBuilder(resourceContext, rel, String.format(hrefFormat, args));
}
private final String rel;
@@ -32,20 +32,20 @@ public class LinkRepBuilder extends Repr
private String title;
private JsonRepresentation arguments;
- private LinkRepBuilder(ResourceContext resourceContext, String rel, String href) {
+ private LinkBuilder(ResourceContext resourceContext, String rel, String href) {
super(resourceContext);
this.rel = rel;
this.href = href;
}
- public LinkRepBuilder withHttpMethod(HttpMethod method) {
+ public LinkBuilder withHttpMethod(HttpMethod method) {
this.method = method;
return this;
}
- public LinkRepBuilder withTitle(String title) {
+ public LinkBuilder withTitle(String title) {
this.title = title;
return this;
}
- public LinkRepBuilder withArguments(JsonRepresentation arguments) {
+ public LinkBuilder withArguments(JsonRepresentation arguments) {
this.arguments = arguments;
return this;
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/RepresentationBuilder.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/RepresentationBuilder.java?rev=1165442&r1=1165441&r2=1165442&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/RepresentationBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/RepresentationBuilder.java Mon Sep 5 22:54:08 2011
@@ -35,7 +35,7 @@ public abstract class RepresentationBuil
}
public T withSelf(String href) {
- representation.put("self", LinkRepBuilder.newBuilder(resourceContext, "self", href).build());
+ representation.put("self", LinkBuilder.newBuilder(resourceContext, "self", href).build());
return asT(this);
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/capabilities/CapabilitiesResourceServerside.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/capabilities/CapabilitiesResourceServerside.java?rev=1165442&r1=1165441&r2=1165442&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/capabilities/CapabilitiesResourceServerside.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/capabilities/CapabilitiesResourceServerside.java Mon Sep 5 22:54:08 2011
@@ -26,7 +26,7 @@ import javax.ws.rs.core.Response;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
import org.apache.isis.viewer.json.applib.capabilities.CapabilitiesResource;
-import org.apache.isis.viewer.json.viewer.representations.LinkRepBuilder;
+import org.apache.isis.viewer.json.viewer.representations.LinkBuilder;
import org.apache.isis.viewer.json.viewer.resources.ResourceAbstract;
/**
@@ -43,7 +43,24 @@ public class CapabilitiesResourceServers
init();
JsonRepresentation representation = JsonRepresentation.newMap();
- representation.put("self", LinkRepBuilder.newBuilder(getResourceContext(), "self", "capabilities/").build());
+ representation.put("self", LinkBuilder.newBuilder(getResourceContext(), "self", "capabilities/").build());
+
+ JsonRepresentation capabilities = JsonRepresentation.newMap();
+ representation.put("capabilities", capabilities);
+
+ capabilities.put("concurrencyChecking", "no");
+ capabilities.put("transientObjects", "no");
+ capabilities.put("deleteObjects", "no");
+ capabilities.put("simpleArguments", "no");
+ capabilities.put("partialArguments", "no");
+ capabilities.put("followLinks", "no");
+ capabilities.put("validateOnly", "no");
+ capabilities.put("pagination", "no");
+ capabilities.put("sorting", "no");
+ capabilities.put("domainModel", "rich");
+
+ representation.put("links", JsonRepresentation.newArray());
+ representation.put("extensions", JsonRepresentation.newMap());
return responseOfOk(asJson(representation));
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/AbstractMemberRepBuilder.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/AbstractMemberRepBuilder.java?rev=1165442&r1=1165441&r2=1165442&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/AbstractMemberRepBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/AbstractMemberRepBuilder.java Mon Sep 5 22:54:08 2011
@@ -26,7 +26,7 @@ import org.apache.isis.core.metamodel.sp
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
import org.apache.isis.viewer.json.viewer.ResourceContext;
-import org.apache.isis.viewer.json.viewer.representations.LinkRepBuilder;
+import org.apache.isis.viewer.json.viewer.representations.LinkBuilder;
import org.apache.isis.viewer.json.viewer.representations.RepresentationBuilder;
public abstract class AbstractMemberRepBuilder<R extends RepresentationBuilder<R>, T extends ObjectMember> extends RepresentationBuilder<R> {
@@ -49,7 +49,7 @@ public abstract class AbstractMemberRepB
JsonRepresentation selfRep = JsonRepresentation.newMap();
String url = AbstractMemberRepBuilder.urlForMember(objectAdapter, memberType, objectMember, getOidStringifier());
- JsonRepresentation memberLinkRep = LinkRepBuilder.newBuilder(resourceContext, "member", url).build();
+ JsonRepresentation memberLinkRep = LinkBuilder.newBuilder(resourceContext, "member", url).build();
selfRep.put("link", memberLinkRep);
JsonRepresentation linkTo = DomainObjectRepBuilder.newLinkToBuilder(resourceContext, objectAdapter, getOidStringifier()).build();
@@ -78,7 +78,7 @@ public abstract class AbstractMemberRepB
String urlForMember = urlForMember(mutatorSpec.suffix);
JsonRepresentation arguments = mutatorArgs(mutatorSpec);
JsonRepresentation detailsLink =
- LinkRepBuilder.newBuilder(resourceContext, mutator, urlForMember)
+ LinkBuilder.newBuilder(resourceContext, mutator, urlForMember)
.withHttpMethod(mutatorSpec.httpMethod)
.withArguments(arguments)
.build();
@@ -128,7 +128,7 @@ public abstract class AbstractMemberRepB
return;
}
String urlForMember = urlForMember();
- JsonRepresentation detailsLink = LinkRepBuilder.newBuilder(resourceContext, memberType.name().toLowerCase(), urlForMember).build();
+ JsonRepresentation detailsLink = LinkBuilder.newBuilder(resourceContext, memberType.name().toLowerCase(), urlForMember).build();
representation.put("details", detailsLink);
}