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/06/23 01:06:32 UTC
svn commit: r1138675 - in /incubator/isis/trunk: examples/claims/quickrun/
viewer/restful/
viewer/restful/applib/src/main/java/org/apache/isis/viewer/restful/applib/resources/
viewer/restful/viewer/src/main/java/org/apache/isis/viewer/restful/viewer/re...
Author: danhaywood
Date: Wed Jun 22 23:06:31 2011
New Revision: 1138675
URL: http://svn.apache.org/viewvc?rev=1138675&view=rev
Log:
more work on restful viewer2
Added:
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/RepContext.java
- copied, changed from r1138227, incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/RepresentationContext.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/representations/LinkRep.java
- copied, changed from r1138227, incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/representations/LinkRepresentation.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/representations/TypeRep.java
- copied, changed from r1138227, incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/representations/TypeRepresentation.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/home/HomePageRep.java
- copied, changed from r1138227, incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/home/HomePageRepresentation.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/ActionRep.java
- copied, changed from r1138227, incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/ActionRepresentation.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/CollectionRep.java
- copied, changed from r1138227, incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/CollectionRepresentation.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/DomainObjectRep.java
- copied, changed from r1138227, incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/DomainObjectRepresentation.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/DomainObjectResourceImpl.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/MemberRep.java
- copied, changed from r1138227, incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/MemberRepresentation.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/PropertyRep.java
- copied, changed from r1138227, incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/PropertyRepresentation.java
incubator/isis/trunk/viewer/restful/viewer2/src/test/java/org/
incubator/isis/trunk/viewer/restful/viewer2/src/test/java/org/apache/
incubator/isis/trunk/viewer/restful/viewer2/src/test/java/org/apache/isis/
incubator/isis/trunk/viewer/restful/viewer2/src/test/java/org/apache/isis/viewer/
incubator/isis/trunk/viewer/restful/viewer2/src/test/java/org/apache/isis/viewer/restful/
incubator/isis/trunk/viewer/restful/viewer2/src/test/java/org/apache/isis/viewer/restful/viewer2/
incubator/isis/trunk/viewer/restful/viewer2/src/test/java/org/apache/isis/viewer/restful/viewer2/RepresentationContextTest_relFor.java
Removed:
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/RepresentationContext.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/representations/LinkRepresentation.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/representations/TypeRepresentation.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/home/HomePageRepresentation.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/ActionRepresentation.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/CollectionRepresentation.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/DomainObjectRepresentation.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/MemberRepresentation.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/PropertyRepresentation.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/resources/org/
Modified:
incubator/isis/trunk/examples/claims/quickrun/pom.xml
incubator/isis/trunk/viewer/restful/applib/src/main/java/org/apache/isis/viewer/restful/applib/resources/ServicesResource.java
incubator/isis/trunk/viewer/restful/pom.xml
incubator/isis/trunk/viewer/restful/viewer/src/main/java/org/apache/isis/viewer/restful/viewer/resources/ResourceAbstract.java
incubator/isis/trunk/viewer/restful/viewer/src/main/java/org/apache/isis/viewer/restful/viewer/resources/objects/ObjectResourceImpl.java
incubator/isis/trunk/viewer/restful/viewer2/pom.xml
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/Constants.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/ResourceContext.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/RestfulApplication.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/ResourceAbstract.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/bootstrap/BootstrapResourceImpl.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/home/HomePageResourceImpl.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/services/ServicesResourceImpl.java
incubator/isis/trunk/viewer/restful/viewer2/src/main/resources/index.html
incubator/isis/trunk/viewer/restful/viewer2/src/main/resources/isis-json-support.js
Modified: incubator/isis/trunk/examples/claims/quickrun/pom.xml
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/examples/claims/quickrun/pom.xml?rev=1138675&r1=1138674&r2=1138675&view=diff
==============================================================================
--- incubator/isis/trunk/examples/claims/quickrun/pom.xml (original)
+++ incubator/isis/trunk/examples/claims/quickrun/pom.xml Wed Jun 22 23:06:31 2011
@@ -83,12 +83,10 @@
</dependency>
<!-- isis viewers -->
- <!--
<dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>dnd</artifactId>
</dependency>
- -->
<dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>html</artifactId>
Modified: incubator/isis/trunk/viewer/restful/applib/src/main/java/org/apache/isis/viewer/restful/applib/resources/ServicesResource.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/applib/src/main/java/org/apache/isis/viewer/restful/applib/resources/ServicesResource.java?rev=1138675&r1=1138674&r2=1138675&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/applib/src/main/java/org/apache/isis/viewer/restful/applib/resources/ServicesResource.java (original)
+++ incubator/isis/trunk/viewer/restful/applib/src/main/java/org/apache/isis/viewer/restful/applib/resources/ServicesResource.java Wed Jun 22 23:06:31 2011
@@ -25,7 +25,8 @@ import javax.ws.rs.Produces;
public interface ServicesResource {
@GET
- @Produces({ "application/xhtml+xml", "text/html" })
+ //@Produces({ "application/xhtml+xml", "application/json", "text/html" })
+ @Produces({ "application/json" })
@Path("/")
public String services();
Modified: incubator/isis/trunk/viewer/restful/pom.xml
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/pom.xml?rev=1138675&r1=1138674&r2=1138675&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/pom.xml (original)
+++ incubator/isis/trunk/viewer/restful/pom.xml Wed Jun 22 23:06:31 2011
@@ -112,6 +112,30 @@
<type>test-jar</type>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.isis.viewer</groupId>
+ <artifactId>restful-applib2</artifactId>
+ <version>0.1.2-incubating-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.isis.viewer</groupId>
+ <artifactId>restful-applib2</artifactId>
+ <version>0.1.2-incubating-SNAPSHOT</version>
+ <type>test-jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.isis.viewer</groupId>
+ <artifactId>restful-viewer2</artifactId>
+ <version>0.1.2-incubating-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.isis.viewer</groupId>
+ <artifactId>restful-viewer2</artifactId>
+ <version>0.1.2-incubating-SNAPSHOT</version>
+ <type>test-jar</type>
+ </dependency>
+
</dependencies>
</dependencyManagement>
@@ -119,6 +143,7 @@
<!-- USE -pl xxx TO SELECT A SINGLE MODULE -->
<modules>
<module>applib</module>
+ <module>applib2</module>
<module>viewer</module>
<module>viewer2</module>
</modules>
Modified: incubator/isis/trunk/viewer/restful/viewer/src/main/java/org/apache/isis/viewer/restful/viewer/resources/ResourceAbstract.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer/src/main/java/org/apache/isis/viewer/restful/viewer/resources/ResourceAbstract.java?rev=1138675&r1=1138674&r2=1138675&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer/src/main/java/org/apache/isis/viewer/restful/viewer/resources/ResourceAbstract.java (original)
+++ incubator/isis/trunk/viewer/restful/viewer/src/main/java/org/apache/isis/viewer/restful/viewer/resources/ResourceAbstract.java Wed Jun 22 23:06:31 2011
@@ -118,7 +118,7 @@ public abstract class ResourceAbstract {
return getSpecificationLoader().loadSpecification(specFullName);
}
- protected ObjectAdapter getNakedObject(final String oidEncodedStr) {
+ protected ObjectAdapter getObjectAdapter(final String oidEncodedStr) {
return OidUtils.getNakedObject(oidEncodedStr, getOidStringifier());
}
Modified: incubator/isis/trunk/viewer/restful/viewer/src/main/java/org/apache/isis/viewer/restful/viewer/resources/objects/ObjectResourceImpl.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer/src/main/java/org/apache/isis/viewer/restful/viewer/resources/objects/ObjectResourceImpl.java?rev=1138675&r1=1138674&r2=1138675&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer/src/main/java/org/apache/isis/viewer/restful/viewer/resources/objects/ObjectResourceImpl.java (original)
+++ incubator/isis/trunk/viewer/restful/viewer/src/main/java/org/apache/isis/viewer/restful/viewer/resources/objects/ObjectResourceImpl.java Wed Jun 22 23:06:31 2011
@@ -86,7 +86,7 @@ public class ObjectResourceImpl extends
init();
final String oidStr = UrlDecoderUtils.urlDecode(oidEncodedStr);
- final ObjectAdapter objectAdapter = getNakedObject(oidStr);
+ final ObjectAdapter objectAdapter = getObjectAdapter(oidStr);
if (objectAdapter == null) {
throw new WebApplicationException(responseOfGone("could not determine object"));
}
@@ -220,7 +220,7 @@ public class ObjectResourceImpl extends
final String propertyId = UrlDecoderUtils.urlDecode(propertyEncodedId);
final String proposedValue = UrlDecoderUtils.urlDecode(proposedEncodedValue);
- final ObjectAdapter nakedObject = getNakedObject(oidStr);
+ final ObjectAdapter nakedObject = getObjectAdapter(oidStr);
if (nakedObject == null) {
throw new WebApplicationException(responseOfGone("could not determine object"));
}
@@ -264,7 +264,7 @@ public class ObjectResourceImpl extends
final String oidStr = UrlDecoderUtils.urlDecode(oidEncodedStr);
final String propertyId = UrlDecoderUtils.urlDecode(propertyEncodedId);
- final ObjectAdapter objectAdapter = getNakedObject(oidStr);
+ final ObjectAdapter objectAdapter = getObjectAdapter(oidStr);
if (objectAdapter == null) {
throw new WebApplicationException(responseOfGone("could not determine object"));
}
@@ -309,7 +309,7 @@ public class ObjectResourceImpl extends
final String oidStr = UrlDecoderUtils.urlDecode(oidEncodedStr);
final String collectionId = UrlDecoderUtils.urlDecode(collectionEncodedId);
- final ObjectAdapter objectAdapter = getNakedObject(oidStr);
+ final ObjectAdapter objectAdapter = getObjectAdapter(oidStr);
if (objectAdapter == null) {
throw new WebApplicationException(responseOfGone("could not determine object"));
}
@@ -371,7 +371,7 @@ public class ObjectResourceImpl extends
final String collectionId = UrlDecoderUtils.urlDecode(collectionEncodedId);
final String proposedValueOidStr = UrlDecoderUtils.urlDecode(proposedValueEncodedOidStr);
- final ObjectAdapter objectAdapter = getNakedObject(oidStr);
+ final ObjectAdapter objectAdapter = getObjectAdapter(oidStr);
if (objectAdapter == null) {
throw new WebApplicationException(responseOfGone("could not determine object"));
}
@@ -381,7 +381,7 @@ public class ObjectResourceImpl extends
final OneToManyAssociation collection = (OneToManyAssociation) noSpec.getAssociation(collectionId);
ObjectAdapter proposedValueNO = null;
- proposedValueNO = getNakedObject(proposedValueOidStr);
+ proposedValueNO = getObjectAdapter(proposedValueOidStr);
if (proposedValueNO == null) {
throw new WebApplicationException(responseOfGone("could not determine proposed value"));
@@ -429,7 +429,7 @@ public class ObjectResourceImpl extends
final String[] argsEncoded = argsEncodedArray.toArray(new String[] {});
final String[] args = urlDecode(argsEncoded);
- final ObjectAdapter nakedObject = getNakedObject(oidStr);
+ final ObjectAdapter nakedObject = getObjectAdapter(oidStr);
if (nakedObject == null) {
throw new WebApplicationException(responseOfGone("could not determine object"));
}
@@ -586,7 +586,7 @@ public class ObjectResourceImpl extends
proposedValueNO = parseable.parseTextEntry(nakedObject, proposedValue);
} else {
final String proposedValueOidStr = proposedValue;
- proposedValueNO = getNakedObject(proposedValueOidStr);
+ proposedValueNO = getObjectAdapter(proposedValueOidStr);
}
return proposedValueNO;
}
Modified: incubator/isis/trunk/viewer/restful/viewer2/pom.xml
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer2/pom.xml?rev=1138675&r1=1138674&r2=1138675&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer2/pom.xml (original)
+++ incubator/isis/trunk/viewer/restful/viewer2/pom.xml Wed Jun 22 23:06:31 2011
@@ -41,7 +41,7 @@
<dependencies>
<dependency>
<groupId>org.apache.isis.viewer</groupId>
- <artifactId>restful-applib</artifactId>
+ <artifactId>restful-applib2</artifactId>
</dependency>
<dependency>
@@ -59,24 +59,6 @@
<artifactId>webapp</artifactId>
</dependency>
- <dependency>
- <groupId>org.jboss.resteasy</groupId>
- <artifactId>resteasy-jaxrs</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.resteasy</groupId>
- <artifactId>resteasy-jaxrs</artifactId>
- </dependency>
- <dependency>
- <groupId>org.codehaus.jackson</groupId>
- <artifactId>jackson-core-asl</artifactId>
- </dependency>
- <dependency>
- <groupId>org.codehaus.jackson</groupId>
- <artifactId>jackson-mapper-asl</artifactId>
- </dependency>
-
<!-- the javax:* equivalents of these are excluded in
dependencyManagement of resteasy-jaxrs, so
are required here -->
Modified: incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/Constants.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/Constants.java?rev=1138675&r1=1138674&r2=1138675&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/Constants.java (original)
+++ incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/Constants.java Wed Jun 22 23:06:31 2011
@@ -29,7 +29,7 @@ public final class Constants {
public static final String JQUERY_SRC_JS = "jquery-1.6.1.js";
public static final String JQUERY_MIN_JS = "jquery-1.6.1.min.js";
public static final String URL_ENCODING_CHAR_SET =
- org.apache.isis.viewer.restful.applib.Constants.URL_ENCODING_CHAR_SET;
+ org.apache.isis.viewer.restful.applib2.Constants.URL_ENCODING_CHAR_SET;
private Constants() {
}
Copied: incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/RepContext.java (from r1138227, incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/RepresentationContext.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/RepContext.java?p2=incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/RepContext.java&p1=incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/RepresentationContext.java&r1=1138227&r2=1138675&rev=1138675&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/RepresentationContext.java (original)
+++ incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/RepContext.java Wed Jun 22 23:06:31 2011
@@ -18,13 +18,38 @@
*/
package org.apache.isis.viewer.restful.viewer2;
+import java.util.Arrays;
-public class RepresentationContext {
+import org.apache.isis.viewer.restful.viewer2.resources.objects.DomainObjectRep;
+
+import com.google.common.base.Joiner;
+import com.google.common.base.Predicate;
+import com.google.common.base.Strings;
+import com.google.common.collect.Collections2;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+
+/**
+ * The context within which this representation is being requested.
+ *
+ * <p>
+ * Part of the context is the overall {@link ResourceContext}, which incorporates
+ * such things as the current user, and HTTP headers.
+ *
+ * <p>
+ * The other part of the context is an indication of the attribute that this
+ * representation will be keyed under. This is required in order that
+ * 'rel' links for attributes correctly concatenate. It is also used to
+ * infer whether member representations (which appear in summary form in
+ * the {@link DomainObjectRep} and in more detail in their own resources)
+ * should include a _self attribute or not.
+ */
+public class RepContext {
private final ResourceContext resourceContext;
private final String attribute;
- public RepresentationContext(ResourceContext resourceContext, String attribute) {
+ public RepContext(ResourceContext resourceContext, String attribute) {
this.resourceContext = resourceContext;
this.attribute = attribute;
}
@@ -34,6 +59,20 @@ public class RepresentationContext {
}
public String relFor(String relSuffix) {
- return attribute == null? relSuffix: attribute + (relSuffix!=null?"." + relSuffix:"");
+ return Joiner.on(".").join(
+ Iterables.filter(Arrays.asList(attribute, relSuffix), nonNulls()));
+ }
+
+ private static <T> Predicate<T> nonNulls() {
+ return new Predicate<T>() {
+ @Override
+ public boolean apply(T input) {
+ return input != null;
+ }
+ };
+ }
+
+ public boolean hasAttribute() {
+ return attribute != null;
}
}
Modified: incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/ResourceContext.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/ResourceContext.java?rev=1138675&r1=1138674&r2=1138675&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/ResourceContext.java (original)
+++ incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/ResourceContext.java Wed Jun 22 23:06:31 2011
@@ -27,8 +27,11 @@ import javax.ws.rs.core.UriInfo;
public class ResourceContext {
- public RepresentationContext representationSelfLinkTo(String attribute) {
- return new RepresentationContext(this, attribute);
+ public RepContext repContext() {
+ return repContext(null);
+ }
+ public RepContext repContext(String attribute) {
+ return new RepContext(this, attribute);
}
Modified: incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/RestfulApplication.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/RestfulApplication.java?rev=1138675&r1=1138674&r2=1138675&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/RestfulApplication.java (original)
+++ incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/RestfulApplication.java Wed Jun 22 23:06:31 2011
@@ -20,6 +20,7 @@ package org.apache.isis.viewer.restful.v
import org.apache.isis.viewer.restful.viewer2.resources.bootstrap.BootstrapResourceImpl;
import org.apache.isis.viewer.restful.viewer2.resources.home.HomePageResourceImpl;
+import org.apache.isis.viewer.restful.viewer2.resources.objects.DomainObjectResourceImpl;
import org.apache.isis.viewer.restful.viewer2.resources.services.ServicesResourceImpl;
public class RestfulApplication extends AbstractJaxRsApplication {
@@ -28,6 +29,7 @@ public class RestfulApplication extends
addSingleton(new BootstrapResourceImpl());
addSingleton(new HomePageResourceImpl());
addSingleton(new ServicesResourceImpl());
+ addSingleton(new DomainObjectResourceImpl());
}
}
Copied: incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/representations/LinkRep.java (from r1138227, incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/representations/LinkRepresentation.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/representations/LinkRep.java?p2=incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/representations/LinkRep.java&p1=incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/representations/LinkRepresentation.java&r1=1138227&r2=1138675&rev=1138675&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/representations/LinkRepresentation.java (original)
+++ incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/representations/LinkRep.java Wed Jun 22 23:06:31 2011
@@ -16,14 +16,16 @@
*/
package org.apache.isis.viewer.restful.viewer2.representations;
-import org.apache.isis.viewer.restful.viewer2.RepresentationContext;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.viewer.restful.viewer2.RepContext;
import org.apache.isis.viewer.restful.viewer2.ResourceContext;
+import org.apache.isis.viewer.restful.viewer2.representations.LinkRep.TypeBuilder;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
@JsonSerialize(include=Inclusion.NON_NULL)
-public class LinkRepresentation {
+public class LinkRep {
private String rel;
private String url;
@@ -70,13 +72,16 @@ public class LinkRepresentation {
this.value = value;
}
- public static Builder newBuilder(RepresentationContext representationContext, String relSuffix, String url) {
- return new Builder(representationContext, relSuffix, url);
+ public static LinkRep.TypeBuilder newTypeBuilder(RepContext repContext, String relSuffix, ObjectSpecification objectSpec) {
+ return new LinkRep.TypeBuilder(repContext, relSuffix, objectSpec);
+ }
+ public static Builder newBuilder(RepContext repContext, String relSuffix, String url) {
+ return new Builder(repContext, relSuffix, url);
}
public static class Builder {
- private final RepresentationContext representationContext;
+ private final RepContext representationContext;
private final String relSuffix;
private final String url;
@@ -84,25 +89,25 @@ public class LinkRepresentation {
private String title;
private String body;
- public Builder(RepresentationContext representationContext, String relSuffix, String url) {
+ public Builder(RepContext representationContext, String relSuffix, String url) {
this.representationContext = representationContext;
this.relSuffix = relSuffix;
this.url = url;
}
- public LinkRepresentation.Builder withMethod(HttpMethod method) {
+ public LinkRep.Builder withMethod(HttpMethod method) {
this.method = method;
return this;
}
- public LinkRepresentation.Builder withTitle(String title) {
+ public LinkRep.Builder withTitle(String title) {
this.title = title;
return this;
}
- public LinkRepresentation.Builder withBody(String body) {
+ public LinkRep.Builder withBody(String body) {
this.body = body;
return this;
}
- public LinkRepresentation build() {
- LinkRepresentation linkRepresentation = new LinkRepresentation();
+ public LinkRep build() {
+ LinkRep linkRepresentation = new LinkRep();
linkRepresentation.setMethod(method);
linkRepresentation.setTitle(title);
linkRepresentation.setRel(representationContext.relFor(relSuffix));
@@ -111,4 +116,27 @@ public class LinkRepresentation {
return linkRepresentation;
}
}
+
+ public static class TypeBuilder {
+
+ private final RepContext representationContext;
+ private final String relSuffix;
+ private final ObjectSpecification objectSpec;
+
+ public TypeBuilder(RepContext representationContext, String relSuffix, ObjectSpecification objectSpec) {
+ this.representationContext = representationContext;
+ this.relSuffix = relSuffix;
+ this.objectSpec = objectSpec;
+ }
+
+ public LinkRep build() {
+ Builder typeBuilder = newBuilder(representationContext, relSuffix, urlFor(objectSpec));
+ LinkRep linkRep = typeBuilder.build();
+ return linkRep;
+ }
+
+ private static String urlFor(ObjectSpecification objectSpec) {
+ return "types/application/vnd+" + objectSpec.getFullIdentifier();
+ }
+ }
}
Copied: incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/representations/TypeRep.java (from r1138227, incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/representations/TypeRepresentation.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/representations/TypeRep.java?p2=incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/representations/TypeRep.java&p1=incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/representations/TypeRepresentation.java&r1=1138227&r2=1138675&rev=1138675&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/representations/TypeRepresentation.java (original)
+++ incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/representations/TypeRep.java Wed Jun 22 23:06:31 2011
@@ -16,52 +16,10 @@
*/
package org.apache.isis.viewer.restful.viewer2.representations;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.viewer.restful.viewer2.RepresentationContext;
-import org.apache.isis.viewer.restful.viewer2.ResourceContext;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
@JsonSerialize(include=Inclusion.NON_NULL)
-public class TypeRepresentation {
-
- private LinkRepresentation link;
-
- public LinkRepresentation getLink() {
- return link;
- }
-
- public void setLink(LinkRepresentation link) {
- this.link = link;
- }
-
- public static Builder newBuilder(RepresentationContext representationContext, String relSuffix, ObjectSpecification objectSpec) {
- return new Builder(representationContext, relSuffix, objectSpec);
- }
-
- public static class Builder {
-
- private final RepresentationContext representationContext;
- private final String relSuffix;
- private final ObjectSpecification objectSpec;
-
- public Builder(RepresentationContext representationContext, String relSuffix, ObjectSpecification objectSpec) {
- this.representationContext = representationContext;
- this.relSuffix = relSuffix;
- this.objectSpec = objectSpec;
- }
-
- public TypeRepresentation build() {
- TypeRepresentation typeRepresentation = new TypeRepresentation();
- LinkRepresentation.Builder typeBuilder = LinkRepresentation.newBuilder(representationContext, relSuffix, urlFor(objectSpec));
- LinkRepresentation linkRepresentation = typeBuilder.build();
- typeRepresentation.setLink(linkRepresentation);
- return typeRepresentation;
- }
-
- private static String urlFor(ObjectSpecification objectSpec) {
- return "types/application/vnd+" + objectSpec.getFullIdentifier();
- }
- }
+public class TypeRep {
}
Modified: incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/ResourceAbstract.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/ResourceAbstract.java?rev=1138675&r1=1138674&r2=1138675&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/ResourceAbstract.java (original)
+++ incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/ResourceAbstract.java Wed Jun 22 23:06:31 2011
@@ -43,7 +43,7 @@ import org.apache.isis.runtimes.dflt.run
import org.apache.isis.runtimes.dflt.runtime.system.persistence.OidGenerator;
import org.apache.isis.runtimes.dflt.runtime.system.persistence.PersistenceSession;
import org.apache.isis.viewer.restful.viewer2.ResourceContext;
-import org.apache.isis.viewer.restful.viewer2.resources.objects.DomainObjectRepresentation;
+import org.apache.isis.viewer.restful.viewer2.resources.objects.DomainObjectRep;
import org.apache.isis.viewer.restful.viewer2.util.OidUtils;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
@@ -106,7 +106,7 @@ public abstract class ResourceAbstract {
}
}
- protected String asJsonList(List<DomainObjectRepresentation> services) {
+ protected String asJsonList(List<?> services) {
return asJson(services);
}
@@ -118,7 +118,7 @@ public abstract class ResourceAbstract {
return getSpecificationLoader().loadSpecification(specFullName);
}
- protected ObjectAdapter getNakedObject(final String oidEncodedStr) {
+ protected ObjectAdapter getObjectAdapter(final String oidEncodedStr) {
return OidUtils.getNakedObject(oidEncodedStr, getOidStringifier());
}
Modified: incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/bootstrap/BootstrapResourceImpl.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/bootstrap/BootstrapResourceImpl.java?rev=1138675&r1=1138674&r2=1138675&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/bootstrap/BootstrapResourceImpl.java (original)
+++ incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/bootstrap/BootstrapResourceImpl.java Wed Jun 22 23:06:31 2011
@@ -26,8 +26,8 @@ import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
-import org.apache.isis.viewer.restful.applib.resources.BootstrapResource;
-import org.apache.isis.viewer.restful.applib.resources.HomePageResource;
+import org.apache.isis.viewer.restful.applib2.resources.BootstrapResource;
+import org.apache.isis.viewer.restful.applib2.resources.HomePageResource;
import org.apache.isis.viewer.restful.viewer2.resources.ResourceAbstract;
import com.google.common.io.ByteStreams;
Copied: incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/home/HomePageRep.java (from r1138227, incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/home/HomePageRepresentation.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/home/HomePageRep.java?p2=incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/home/HomePageRep.java&p1=incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/home/HomePageRepresentation.java&r1=1138227&r2=1138675&rev=1138675&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/home/HomePageRepresentation.java (original)
+++ incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/home/HomePageRep.java Wed Jun 22 23:06:31 2011
@@ -16,34 +16,34 @@
*/
package org.apache.isis.viewer.restful.viewer2.resources.home;
-import org.apache.isis.viewer.restful.viewer2.representations.LinkRepresentation;
+import org.apache.isis.viewer.restful.viewer2.representations.LinkRep;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
@JsonSerialize(include=Inclusion.NON_NULL)
-public class HomePageRepresentation {
+public class HomePageRep {
@JsonSerialize(include=Inclusion.NON_NULL)
public static class SelfRepresentation {
- private LinkRepresentation link;
+ private LinkRep link;
- public SelfRepresentation(LinkRepresentation link) {
+ public SelfRepresentation(LinkRep link) {
this.link = link;
}
- public LinkRepresentation getLink() {
+ public LinkRep getLink() {
return link;
}
- public void setLink(LinkRepresentation link) {
+ public void setLink(LinkRep link) {
this.link = link;
}
}
private SelfRepresentation _self;
- private LinkRepresentation services;
- private LinkRepresentation user;
+ private LinkRep services;
+ private LinkRep user;
public SelfRepresentation get_self() {
return _self;
@@ -53,19 +53,19 @@ public class HomePageRepresentation {
this._self = self;
}
- public LinkRepresentation getServices() {
+ public LinkRep getServices() {
return services;
}
- public void setServices(LinkRepresentation services) {
+ public void setServices(LinkRep services) {
this.services = services;
}
- public LinkRepresentation getUser() {
+ public LinkRep getUser() {
return user;
}
- public void setUser(LinkRepresentation user) {
+ public void setUser(LinkRep user) {
this.user = user;
}
Modified: incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/home/HomePageResourceImpl.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/home/HomePageResourceImpl.java?rev=1138675&r1=1138674&r2=1138675&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/home/HomePageResourceImpl.java (original)
+++ incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/home/HomePageResourceImpl.java Wed Jun 22 23:06:31 2011
@@ -22,8 +22,8 @@ import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
-import org.apache.isis.viewer.restful.applib.resources.HomePageResource;
-import org.apache.isis.viewer.restful.viewer2.representations.LinkRepresentation;
+import org.apache.isis.viewer.restful.applib2.resources.HomePageResource;
+import org.apache.isis.viewer.restful.viewer2.representations.LinkRep;
import org.apache.isis.viewer.restful.viewer2.resources.ResourceAbstract;
/**
@@ -39,15 +39,15 @@ public class HomePageResourceImpl extend
public String resources() {
init();
- HomePageRepresentation homePageRepresentation = new HomePageRepresentation();
+ HomePageRep homePageRepresentation = new HomePageRep();
homePageRepresentation.setUser(linkTo("user"));
homePageRepresentation.setServices(linkTo("services"));
return asJson(homePageRepresentation);
}
- protected LinkRepresentation linkTo(String url) {
- return LinkRepresentation.newBuilder(getResourceContext().representationSelfLinkTo(url), null, url).build();
+ protected LinkRep linkTo(String url) {
+ return LinkRep.newBuilder(getResourceContext().repContext(url), null, url).build();
}
Copied: incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/ActionRep.java (from r1138227, incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/ActionRepresentation.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/ActionRep.java?p2=incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/ActionRep.java&p1=incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/ActionRepresentation.java&r1=1138227&r2=1138675&rev=1138675&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/ActionRepresentation.java (original)
+++ incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/ActionRep.java Wed Jun 22 23:06:31 2011
@@ -20,6 +20,6 @@ import org.codehaus.jackson.map.annotate
import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
@JsonSerialize(include=Inclusion.NON_NULL)
-public class ActionRepresentation extends MemberRepresentation {
+public class ActionRep extends MemberRep {
}
Copied: incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/CollectionRep.java (from r1138227, incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/CollectionRepresentation.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/CollectionRep.java?p2=incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/CollectionRep.java&p1=incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/CollectionRepresentation.java&r1=1138227&r2=1138675&rev=1138675&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/CollectionRepresentation.java (original)
+++ incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/CollectionRep.java Wed Jun 22 23:06:31 2011
@@ -16,10 +16,14 @@
*/
package org.apache.isis.viewer.restful.viewer2.resources.objects;
+import java.util.Collection;
+
import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
@JsonSerialize(include=Inclusion.NON_NULL)
-public class CollectionRepresentation extends MemberRepresentation {
+public class CollectionRep extends MemberRep {
+
+ private Collection<?> value;
}
Copied: incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/DomainObjectRep.java (from r1138227, incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/DomainObjectRepresentation.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/DomainObjectRep.java?p2=incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/DomainObjectRep.java&p1=incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/DomainObjectRepresentation.java&r1=1138227&r2=1138675&rev=1138675&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/DomainObjectRepresentation.java (original)
+++ incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/DomainObjectRep.java Wed Jun 22 23:06:31 2011
@@ -16,60 +16,70 @@
*/
package org.apache.isis.viewer.restful.viewer2.resources.objects;
-import java.util.List;
+import java.util.LinkedHashMap;
+import java.util.Map;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.oid.stringable.OidStringifier;
import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
import org.apache.isis.runtimes.dflt.runtime.system.persistence.OidGenerator;
import org.apache.isis.runtimes.dflt.runtime.system.persistence.PersistenceSession;
-import org.apache.isis.viewer.restful.viewer2.RepresentationContext;
-import org.apache.isis.viewer.restful.viewer2.ResourceContext;
-import org.apache.isis.viewer.restful.viewer2.representations.LinkRepresentation;
-import org.apache.isis.viewer.restful.viewer2.representations.TypeRepresentation;
-
-import com.google.common.base.Function;
-
+import org.apache.isis.viewer.restful.viewer2.RepContext;
+import org.apache.isis.viewer.restful.viewer2.representations.LinkRep;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
+import com.google.common.base.Function;
+import com.google.common.collect.Maps;
+
@JsonSerialize(include=Inclusion.NON_NULL)
-public class DomainObjectRepresentation {
+public class DomainObjectRep extends LinkedHashMap<String, Object>{
+
+ private static final long serialVersionUID = 1L;
- public static Function<ObjectAdapter, DomainObjectRepresentation> fromAdapter(final RepresentationContext representationContext) {
- return new Function<ObjectAdapter, DomainObjectRepresentation>() {
+ public static Function<ObjectAdapter, DomainObjectRep> fromAdapter(final RepContext representationContext) {
+ return new Function<ObjectAdapter, DomainObjectRep>() {
@Override
- public DomainObjectRepresentation apply(ObjectAdapter input) {
+ public DomainObjectRep apply(ObjectAdapter input) {
return newBuilder(representationContext, input).build();
}
};
}
+ public static Function<DomainObjectRep, DomainObjectRep.SelfRep> selfOf() {
+ return new Function<DomainObjectRep, SelfRep>() {
+ @Override
+ public SelfRep apply(DomainObjectRep input) {
+ return (SelfRep) input.get("_self");
+ }
+ };
+ }
+
@JsonSerialize(include=Inclusion.NON_NULL)
- public static class SelfRepresentation {
- private LinkRepresentation link;
- private TypeRepresentation type;
+ public static class SelfRep {
+ private LinkRep link;
+ private LinkRep type;
private String title;
- private LinkRepresentation icon;
+ private LinkRep icon;
- public SelfRepresentation(LinkRepresentation link) {
+ public SelfRep(LinkRep link) {
this.link = link;
}
- public LinkRepresentation getLink() {
+ public LinkRep getLink() {
return link;
}
- public void setLink(LinkRepresentation link) {
+ public void setLink(LinkRep link) {
this.link = link;
}
- public TypeRepresentation getType() {
+ public LinkRep getType() {
return type;
}
- public void setType(TypeRepresentation type) {
+ public void setType(LinkRep type) {
this.type = type;
}
@@ -81,71 +91,50 @@ public class DomainObjectRepresentation
this.title = title;
}
- public LinkRepresentation getIcon() {
+ public LinkRep getIcon() {
return icon;
}
- public void setIcon(LinkRepresentation icon) {
+ public void setIcon(LinkRep icon) {
this.icon = icon;
}
}
- private SelfRepresentation _self;
- private List<PropertyRepresentation> properties;
- private List<CollectionRepresentation> collections;
- private List<ActionRepresentation> actions;
-
- public SelfRepresentation get_self() {
- return _self;
- }
- public void set_self(SelfRepresentation self) {
- this._self = self;
- }
- public List<PropertyRepresentation> getProperties() {
- return properties;
- }
- public void setProperties(List<PropertyRepresentation> properties) {
- this.properties = properties;
- }
- public List<CollectionRepresentation> getCollections() {
- return collections;
- }
- public void setCollections(List<CollectionRepresentation> collections) {
- this.collections = collections;
- }
- public List<ActionRepresentation> getActions() {
- return actions;
- }
- public void setActions(List<ActionRepresentation> actions) {
- this.actions = actions;
- }
- public static Builder newBuilder(RepresentationContext representationContext, ObjectAdapter objectAdapter) {
+ public static Builder newBuilder(RepContext representationContext, ObjectAdapter objectAdapter) {
return new Builder(representationContext, objectAdapter);
}
public static class Builder {
- private final RepresentationContext representationContext;
+ private final RepContext repContext;
private final ObjectAdapter objectAdapter;
+ private final Map<String, MemberRep> members = Maps.newLinkedHashMap();
- public Builder(RepresentationContext representationContext, ObjectAdapter objectAdapter) {
- this.representationContext = representationContext;
+ public Builder(RepContext repContext, ObjectAdapter objectAdapter) {
+ this.repContext = repContext;
this.objectAdapter = objectAdapter;
}
- public DomainObjectRepresentation build() {
- DomainObjectRepresentation domainObject = new DomainObjectRepresentation();
- LinkRepresentation selfLink = LinkRepresentation.newBuilder(representationContext, "link", urlFor(objectAdapter)).build();
- TypeRepresentation selfType = TypeRepresentation.newBuilder(representationContext, "type", objectAdapter.getSpecification()).build();
+ public DomainObjectRep build() {
+ DomainObjectRep domainObject = new DomainObjectRep();
+ LinkRep selfLink = LinkRep.newBuilder(repContext, "link", urlFor(objectAdapter)).build();
+ LinkRep selfType = LinkRep.newTypeBuilder(repContext, "type", objectAdapter.getSpecification()).build();
String title = objectAdapter.titleString();
- LinkRepresentation iconLink = LinkRepresentation.newBuilder(representationContext, "icon", iconFor(objectAdapter)).build();
- SelfRepresentation self = new SelfRepresentation(selfLink);
+ LinkRep iconLink = LinkRep.newBuilder(repContext, "icon", iconFor(objectAdapter)).build();
+ SelfRep self = new SelfRep(selfLink);
self.setTitle(title);
self.setIcon(iconLink);
self.setType(selfType);
- domainObject.set_self(self);
+ domainObject.put("_self", self);
+ if(!members.isEmpty()) {
+ for(Map.Entry<String, MemberRep> entry: members.entrySet()) {
+ String memberId = entry.getKey();
+ MemberRep memberRep = entry.getValue();
+ domainObject.put(memberId, memberRep);
+ }
+ }
return domainObject;
}
@@ -155,10 +144,8 @@ public class DomainObjectRepresentation
}
private String urlFor(ObjectAdapter objectAdapter) {
- String className = objectAdapter.getSpecification().getFullIdentifier();
OidStringifier oidStringifier = getOidStringifier();
- String oidStr = oidStringifier.enString(objectAdapter.getOid());
- return className + "|" + oidStr;
+ return DomainObjectRep.urlFor(objectAdapter, oidStringifier);
}
protected OidStringifier getOidStringifier() {
@@ -172,5 +159,16 @@ public class DomainObjectRepresentation
protected PersistenceSession getPersistenceSession() {
return IsisContext.getPersistenceSession();
}
+
+ public void withProperty(String id, PropertyRep propertyRep) {
+ members.put(id, propertyRep);
+ }
+
}
+
+ public static String urlFor(ObjectAdapter objectAdapter, OidStringifier oidStringifier) {
+ String oidStr = oidStringifier.enString(objectAdapter.getOid());
+ return "objects/" + oidStr;
+ }
+
}
Added: incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/DomainObjectResourceImpl.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/DomainObjectResourceImpl.java?rev=1138675&view=auto
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/DomainObjectResourceImpl.java (added)
+++ incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/DomainObjectResourceImpl.java Wed Jun 22 23:06:31 2011
@@ -0,0 +1,126 @@
+/**
+ * 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.restful.viewer2.resources.objects;
+
+import java.io.InputStream;
+import java.util.List;
+
+import javax.ws.rs.DELETE;
+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.WebApplicationException;
+import javax.ws.rs.core.MediaType;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.interactions.InteractionUtils;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
+import org.apache.isis.viewer.restful.applib2.resources.ObjectResource;
+import org.apache.isis.viewer.restful.viewer2.RepContext;
+import org.apache.isis.viewer.restful.viewer2.resources.ResourceAbstract;
+import org.apache.isis.viewer.restful.viewer2.resources.objects.DomainObjectRep.Builder;
+import org.apache.isis.viewer.restful.viewer2.util.UrlDecoderUtils;
+
+@Path("/objects")
+public class DomainObjectResourceImpl extends ResourceAbstract implements ObjectResource {
+
+ @GET
+ @Path("/{oid}")
+ @Produces({ MediaType.APPLICATION_JSON })
+ public String object(@PathParam("oid") final String oidEncodedStr) {
+ init();
+ final String oidStr = UrlDecoderUtils.urlDecode(oidEncodedStr);
+
+ final ObjectAdapter objectAdapter = getObjectAdapter(oidStr);
+ if (objectAdapter == null) {
+ throw new WebApplicationException(responseOfGone("could not determine object"));
+ }
+
+ Builder builder = DomainObjectRep.newBuilder(getResourceContext().repContext(), objectAdapter);
+
+ List<ObjectAssociation> properties = objectAdapter.getSpecification().getAssociations(ObjectAssociationFilters.PROPERTIES);
+ for (ObjectAssociation otoa : properties) {
+ Consent visibility = otoa.isVisible(getSession(), objectAdapter);
+ if(visibility.isAllowed()) {
+ String id = otoa.getId();
+ PropertyRep propertyRep = PropertyRep.newBuilder(getResourceContext().repContext(id), objectAdapter, (OneToOneAssociation)otoa).build();
+ builder.withProperty(id, propertyRep);
+ }
+ }
+
+ DomainObjectRep representation = builder.build();
+ return asJson(representation);
+ }
+
+ @PUT
+ @Path("/{oid}/property/{propertyId}")
+ @Produces({ MediaType.APPLICATION_JSON })
+ public String modifyProperty(@PathParam("oid") final String oidStr,
+ @PathParam("propertyId") final String propertyId, @QueryParam("proposedValue") final String proposedValue) {
+ return null;
+ }
+
+ @DELETE
+ @Path("/{oid}/property/{propertyId}")
+ @Produces({ MediaType.APPLICATION_JSON })
+ public String clearProperty(@PathParam("oid") final String oidStr, @PathParam("propertyId") final String propertyId){
+ return null;
+ }
+
+ @GET
+ @Path("/{oid}/collection/{collectionId}")
+ @Produces({ MediaType.APPLICATION_JSON })
+ public String accessCollection(@PathParam("oid") final String oidStr,
+ @PathParam("collectionId") final String collectionId){
+ return null;
+ }
+
+ @PUT
+ @Path("/{oid}/collection/{collectionId}")
+ @Produces({ MediaType.APPLICATION_JSON })
+ public String addToCollection(@PathParam("oid") final String oidStr,
+ @PathParam("collectionId") final String collectionId,
+ @QueryParam("proposedValue") final String proposedValueOidStr){
+ return null;
+ }
+
+ @DELETE
+ @Path("/{oid}/collection/{collectionId}")
+ @Produces({ MediaType.APPLICATION_JSON })
+ public String removeFromCollection(@PathParam("oid") final String oidStr,
+ @PathParam("collectionId") final String collectionId,
+ @QueryParam("proposedValue") final String proposedValueOidStr){
+ return null;
+ }
+
+ @POST
+ @Path("/{oid}/action/{actionId}")
+ @Produces({ MediaType.APPLICATION_JSON })
+ public String invokeAction(@PathParam("oid") final String oidStr, @PathParam("actionId") final String actionId,
+ final InputStream body){
+ return null;
+ }
+
+}
Copied: incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/MemberRep.java (from r1138227, incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/MemberRepresentation.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/MemberRep.java?p2=incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/MemberRep.java&p1=incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/MemberRepresentation.java&r1=1138227&r2=1138675&rev=1138675&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/MemberRepresentation.java (original)
+++ incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/MemberRep.java Wed Jun 22 23:06:31 2011
@@ -16,15 +16,105 @@
*/
package org.apache.isis.viewer.restful.viewer2.resources.objects;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.oid.stringable.OidStringifier;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
+import org.apache.isis.runtimes.dflt.runtime.system.persistence.OidGenerator;
+import org.apache.isis.runtimes.dflt.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.viewer.restful.viewer2.RepContext;
+import org.apache.isis.viewer.restful.viewer2.representations.LinkRep;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
@JsonSerialize(include=Inclusion.NON_NULL)
-public abstract class MemberRepresentation {
+public abstract class MemberRep {
@JsonSerialize(include=Inclusion.NON_NULL)
- public static class SelfRepresentation {
-
+ public static class SelfRep {
+ private LinkRep link;
+ private String memberType;
+ private LinkRep object;
+ public LinkRep getLink() {
+ return link;
+ }
+ public void setLink(LinkRep link) {
+ this.link = link;
+ }
+ public String getMemberType() {
+ return memberType;
+ }
+ public void setMemberType(String memberType) {
+ this.memberType = memberType;
+ }
+ public LinkRep getObject() {
+ return object;
+ }
+ public void setObject(LinkRep object) {
+ this.object = object;
+ }
+ public static Builder newBuilder(RepContext repContext, ObjectAdapter objectAdapter, OneToOneAssociation otoa) {
+ return new Builder(repContext, objectAdapter, otoa);
+ }
+ public static class Builder {
+
+ private final RepContext repContext;
+ private final ObjectAdapter objectAdapter;
+ private final OneToOneAssociation otoa;
+
+ public Builder(RepContext repContext, ObjectAdapter objectAdapter, OneToOneAssociation otoa) {
+ this.repContext = repContext;
+ this.objectAdapter = objectAdapter;
+ this.otoa = otoa;
+ }
+
+ public SelfRep build() {
+ SelfRep selfRep = new SelfRep();
+ selfRep.setLink(LinkRep.newBuilder(repContext, "link", DomainObjectRep.urlFor(objectAdapter, getOidStringifier())).build());
+ return selfRep;
+ }
+
+ private OidStringifier getOidStringifier() {
+ return getOidGenerator().getOidStringifier();
+ }
+
+ protected OidGenerator getOidGenerator() {
+ return getPersistenceSession().getOidGenerator();
+ }
+
+ protected PersistenceSession getPersistenceSession() {
+ return IsisContext.getPersistenceSession();
+ }
+
+
+ }
+ }
+
+ private SelfRep _self;
+ private LinkRep details;
+ private String disabledReason;
+
+ public SelfRep get_self() {
+ return _self;
}
+ public void set_self(SelfRep _self) {
+ this._self = _self;
+ }
+
+ public LinkRep getDetails() {
+ return details;
+ }
+
+ public void setDetails(LinkRep details) {
+ this.details = details;
+ }
+
+ public String getDisabledReason() {
+ return disabledReason;
+ }
+
+ public void setDisabledReason(String disabledReason) {
+ this.disabledReason = disabledReason;
+ }
}
Copied: incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/PropertyRep.java (from r1138227, incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/PropertyRepresentation.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/PropertyRep.java?p2=incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/PropertyRep.java&p1=incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/PropertyRepresentation.java&r1=1138227&r2=1138675&rev=1138675&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/PropertyRepresentation.java (original)
+++ incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/objects/PropertyRep.java Wed Jun 22 23:06:31 2011
@@ -16,10 +16,150 @@
*/
package org.apache.isis.viewer.restful.viewer2.resources.objects;
+import org.apache.isis.applib.profiles.Localization;
+import org.apache.isis.core.commons.authentication.AuthenticationSession;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.oid.stringable.OidStringifier;
+import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
+import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
+import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
+import org.apache.isis.runtimes.dflt.runtime.system.persistence.OidGenerator;
+import org.apache.isis.runtimes.dflt.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.viewer.restful.viewer2.RepContext;
+import org.apache.isis.viewer.restful.viewer2.representations.HttpMethod;
+import org.apache.isis.viewer.restful.viewer2.representations.LinkRep;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
@JsonSerialize(include=Inclusion.NON_NULL)
-public class PropertyRepresentation extends MemberRepresentation {
+public class PropertyRep extends MemberRep {
+
+ private SelfRep _self;
+ private LinkRep type;
+ private Object value;
+
+
+ public SelfRep get_self() {
+ return _self;
+ }
+
+ public void set_self(SelfRep _self) {
+ this._self = _self;
+ }
+
+ public LinkRep getType() {
+ return type;
+ }
+
+ public void setType(LinkRep type) {
+ this.type = type;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public void setValue(Object value) {
+ this.value = value;
+ }
+
+ public static Builder newBuilder(RepContext repContext, ObjectAdapter objectAdapter, OneToOneAssociation otoa) {
+ return new Builder(repContext, objectAdapter, otoa);
+
+ }
+ public static class Builder {
+
+ private final RepContext repContext;
+ private final ObjectAdapter objectAdapter;
+ private final OneToOneAssociation otoa;
+
+ public Builder(RepContext repContext, ObjectAdapter objectAdapter, OneToOneAssociation otoa) {
+ this.repContext = repContext;
+ this.objectAdapter = objectAdapter;
+ this.otoa = otoa;
+ }
+
+ public PropertyRep build() {
+ PropertyRep propertyRep = new PropertyRep();
+ if(addSelf()) {
+ LinkRep selfLink = LinkRep.newBuilder(repContext, "link", urlFor(objectAdapter, otoa)).build();
+ selfLink.setMethod(HttpMethod.GET);
+ SelfRep selfRep = SelfRep.newBuilder(repContext, objectAdapter, otoa).build();
+ propertyRep.set_self(selfRep);
+ }
+ LinkRep type = LinkRep.newTypeBuilder(repContext, "type", otoa.getSpecification()).build();
+ propertyRep.setType(type);
+ Consent usability = otoa.isUsable(getSession(), objectAdapter);
+ propertyRep.setDisabledReason(usability.getReason());
+ LinkRep detailsLink = LinkRep.newBuilder(repContext, "details", urlFor(objectAdapter, otoa)).build(); // TODO: same as self.link ???
+ propertyRep.setDetails(detailsLink);
+ propertyRep.setValue(obtainValue());
+ return propertyRep;
+ }
+
+ /**
+ * Only add the _self attribute if this representation is being
+ * generated in a context that is not 'under' an attribute of an
+ * owning {@link DomainObjectRep representation}.
+ */
+ private boolean addSelf() {
+ return !repContext.hasAttribute();
+ }
+
+ private Object obtainValue() {
+ ObjectAdapter valueAdapter = otoa.get(objectAdapter);
+ if(valueAdapter == null) {
+ return null;
+ }
+ ObjectSpecification otoaSpec = otoa.getSpecification();
+ ValueFacet valueFacet = otoaSpec.getFacet(ValueFacet.class);
+ if(valueFacet != null) {
+ EncodableFacet encodableFacet = otoaSpec.getFacet(EncodableFacet.class);
+ return encodableFacet.toEncodedString(valueAdapter);
+ }
+ TitleFacet titleFacet = otoaSpec.getFacet(TitleFacet.class);
+ if (titleFacet == null) {
+ // fallback
+ titleFacet = otoaSpec.getFacet(TitleFacet.class);
+ }
+ String title = titleFacet.title(valueAdapter, getLocalization());
+ return LinkRep.newBuilder(repContext, "value", urlFor(valueAdapter)).withTitle(title).build();
+ }
+
+ private String urlFor(ObjectAdapter adapter) {
+ return DomainObjectRep.urlFor(adapter, getOidStringifier());
+ }
+
+ private String urlFor(ObjectAdapter objectAdapter, OneToOneAssociation otoa) {
+ OidStringifier oidStringifier = getOidStringifier();
+ String oidStr = oidStringifier.enString(objectAdapter.getOid());
+ return "objects/" + oidStr + "/property/" + otoa.getId();
+ }
+
+ protected OidStringifier getOidStringifier() {
+ return getOidGenerator().getOidStringifier();
+ }
+
+ protected OidGenerator getOidGenerator() {
+ return getPersistenceSession().getOidGenerator();
+ }
+
+ protected PersistenceSession getPersistenceSession() {
+ return IsisContext.getPersistenceSession();
+ }
+
+ protected AuthenticationSession getSession() {
+ return IsisContext.getAuthenticationSession();
+ }
+
+ protected Localization getLocalization() {
+ return IsisContext.getLocalization();
+ }
+
+ }
}
Modified: incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/services/ServicesResourceImpl.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/services/ServicesResourceImpl.java?rev=1138675&r1=1138674&r2=1138675&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/services/ServicesResourceImpl.java (original)
+++ incubator/isis/trunk/viewer/restful/viewer2/src/main/java/org/apache/isis/viewer/restful/viewer2/resources/services/ServicesResourceImpl.java Wed Jun 22 23:06:31 2011
@@ -21,13 +21,17 @@ package org.apache.isis.viewer.restful.v
import java.util.List;
import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.viewer.restful.applib.resources.ServicesResource;
-import org.apache.isis.viewer.restful.viewer2.RepresentationContext;
+import org.apache.isis.viewer.restful.applib2.resources.ServicesResource;
+import org.apache.isis.viewer.restful.viewer2.RepContext;
import org.apache.isis.viewer.restful.viewer2.resources.ResourceAbstract;
-import org.apache.isis.viewer.restful.viewer2.resources.objects.DomainObjectRepresentation;
+import org.apache.isis.viewer.restful.viewer2.resources.objects.DomainObjectRep;
+import org.apache.isis.viewer.restful.viewer2.resources.objects.DomainObjectRep.SelfRep;
+import com.google.common.base.Function;
+import com.google.common.base.Functions;
import com.google.common.collect.Collections2;
import com.google.common.collect.Lists;
@@ -39,16 +43,23 @@ import com.google.common.collect.Lists;
public class ServicesResourceImpl extends ResourceAbstract implements ServicesResource {
@Override
+ @Produces({ "application/json" })
public String services() {
init();
- return asJsonList(serviceRepresentations());
+ return asJsonList(serviceSelfRepresentations());
}
- protected List<DomainObjectRepresentation> serviceRepresentations() {
+ protected List<DomainObjectRep.SelfRep> serviceSelfRepresentations() {
final List<ObjectAdapter> serviceAdapters = getPersistenceSession().getServices();
- RepresentationContext representationContext = getResourceContext().representationSelfLinkTo("_self");
- return Lists.newArrayList(Collections2.transform(serviceAdapters, DomainObjectRepresentation.fromAdapter(representationContext)));
+ RepContext representationContext = getResourceContext().repContext();
+
+ Function<ObjectAdapter, SelfRep> objectSelfRepresentation =
+ Functions.compose(
+ DomainObjectRep.selfOf(),
+ DomainObjectRep.fromAdapter(representationContext));
+ return Lists.newArrayList(
+ Collections2.transform(serviceAdapters, objectSelfRepresentation));
}
}
Modified: incubator/isis/trunk/viewer/restful/viewer2/src/main/resources/index.html
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer2/src/main/resources/index.html?rev=1138675&r1=1138674&r2=1138675&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer2/src/main/resources/index.html (original)
+++ incubator/isis/trunk/viewer/restful/viewer2/src/main/resources/index.html Wed Jun 22 23:06:31 2011
@@ -5,9 +5,34 @@
<script type="text/javascript" src="/isis-json-support.js"></script>
</head>
<body>
- <div id="app"></div>
+ <div id="services">
+ <p>Services</p>
+ <ul></ul>
+ </div>
+ <div id="breadcrumbs">
+ <ul></ul>
+ </div>
+ <div id="current">
+ <div id="object">
+ <div id="summary">
+ <ul></ul>
+ </div>
+ <div id="properties">
+ <ul></ul>
+ </div>
+ <div id="collections">
+ <ul></ul>
+ </div>
+ </div>
+ <div id="collection">
+ <ul></ul>
+ </div>
+ </div>
+ <div id="actions">
+ <ul></ul>
+ </div>
<script>
- bootstrapApp();
+ bootstrap_app();
</script>
</body>
</html>
\ No newline at end of file
Modified: incubator/isis/trunk/viewer/restful/viewer2/src/main/resources/isis-json-support.js
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer2/src/main/resources/isis-json-support.js?rev=1138675&r1=1138674&r2=1138675&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer2/src/main/resources/isis-json-support.js (original)
+++ incubator/isis/trunk/viewer/restful/viewer2/src/main/resources/isis-json-support.js Wed Jun 22 23:06:31 2011
@@ -1,28 +1,28 @@
+function add_links(ul, linkable) {
+ var el = $("<a>", {
+ href: linkable.link.url,
+ text: linkable.title
+ });
+ ul.append(
+ $("<li/>").append(el)
+ );
+ $.data(el, "isis", linkable);
+}
-function bootstrapApp() {
+function bootstrap_app() {
$.getJSON('/index',
undefined,
- function(data) {
- // load services
- $('#app').html("<div id='services'><p>Services</p><ul/></div>");
- $.getJSON(data.services.url,
- undefined,
- function(data) {
- for(var i=0; i<data.length; i++) {
- var service = data[i]._self;
- var el = $("<a>", {
- href: service.link.url,
- text: service.title
- });
- $("#services ul").append(
- $("<li/>").append(el)
- );
- $.data(el, "isis", service);
- //var x = $.data(el, "isis");
- //var jsonString= JSON.stringify(x, null, " ");
- //alert(jsonString);
- }
- });
+ function load_services (data) {
+ $.getJSON(data.services.url,
+ undefined,
+ function(data) {
+ for(var i=0; i<data.length; i++) {
+ add_links($("#services > ul"), data[i]);
+ //var x = $.data(el, "isis");
+ //var jsonString= JSON.stringify(x, null, " ");
+ //alert(jsonString);
+ }
+ });
});
}
Added: incubator/isis/trunk/viewer/restful/viewer2/src/test/java/org/apache/isis/viewer/restful/viewer2/RepresentationContextTest_relFor.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer2/src/test/java/org/apache/isis/viewer/restful/viewer2/RepresentationContextTest_relFor.java?rev=1138675&view=auto
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer2/src/test/java/org/apache/isis/viewer/restful/viewer2/RepresentationContextTest_relFor.java (added)
+++ incubator/isis/trunk/viewer/restful/viewer2/src/test/java/org/apache/isis/viewer/restful/viewer2/RepresentationContextTest_relFor.java Wed Jun 22 23:06:31 2011
@@ -0,0 +1,57 @@
+/**
+ * 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.restful.viewer2;
+
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.assertThat;
+
+import org.junit.Test;
+
+
+public class RepresentationContextTest_relFor {
+
+ private RepContext context;
+
+ @Test
+ public void bothNonNull() throws Exception {
+ context = new RepContext(null, "attribute");
+ String relFor = context.relFor("relSuffix");
+ assertThat(relFor, is("attribute.relSuffix"));
+ }
+
+ @Test
+ public void attributeNull() throws Exception {
+ context = new RepContext(null, null);
+ String relFor = context.relFor("relSuffix");
+ assertThat(relFor, is("relSuffix"));
+ }
+
+ @Test
+ public void relSuffixNull() throws Exception {
+ context = new RepContext(null, "attribute");
+ String relFor = context.relFor(null);
+ assertThat(relFor, is("attribute"));
+ }
+
+ @Test
+ public void bothNull() throws Exception {
+ context = new RepContext(null, null);
+ String relFor = context.relFor(null);
+ assertThat(relFor, is(""));
+ }
+
+}