You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2011/10/03 23:46:19 UTC
svn commit: r1178596 - in /incubator/isis/trunk/framework/viewer/json:
json-tck/src/test/java/org/apache/isis/viewer/json/tck/
json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/
json-viewer/src/main/java/org/apache/isis/viewe...
Author: danhaywood
Date: Mon Oct 3 21:46:18 2011
New Revision: 1178596
URL: http://svn.apache.org/viewvc?rev=1178596&view=rev
Log:
ISIS-109: ReprRenderers for the domain type resources
Added:
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeReprRenderer.java
- copied, changed from r1177860, incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeReprBuilder.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypesReprRenderer.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/SpecAndAction.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/SpecAndCollection.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/SpecAndMember.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/SpecAndProperty.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeActionReprRenderer.java
- copied, changed from r1177860, incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeActionReprBuilder.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeCollectionReprRenderer.java
- copied, changed from r1177860, incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeCollectionReprBuilder.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypePropertyReprRenderer.java
- copied, changed from r1177860, incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypePropertyReprBuilder.java
Removed:
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeReprBuilder.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeActionReprBuilder.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeCollectionReprBuilder.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypePropertyReprBuilder.java
Modified:
incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainServiceResourceTest_service_serviceId.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/LinkReprBuilder.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/RendererFactoryRegistry.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/ReprBuilderAbstract.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/ReprRendererAbstract.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectLinkToBuilder.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectReprRenderer.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectResourceServerside.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainResourceHelper.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/MemberType.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectActionReprRenderer.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectCollectionReprRenderer.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectPropertyReprRenderer.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/AbstractTypeMemberReprBuilder.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/HomePageReprRenderer.java
Modified: incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainServiceResourceTest_service_serviceId.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainServiceResourceTest_service_serviceId.java?rev=1178596&r1=1178595&r2=1178596&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainServiceResourceTest_service_serviceId.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainServiceResourceTest_service_serviceId.java Mon Oct 3 21:46:18 2011
@@ -129,12 +129,12 @@ public class DomainServiceResourceTest_s
}
@Test
- public void links_noIcons() throws Exception {
+ public void links() throws Exception {
// given, when
DomainObjectRepresentation repr = givenRepresentation("simples");
// then
- assertThat(repr.getLinks().arraySize(), is(0));
+ assertThat(repr.getLinks().arraySize(), is(1));
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/LinkReprBuilder.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/LinkReprBuilder.java?rev=1178596&r1=1178595&r2=1178596&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/LinkReprBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/LinkReprBuilder.java Mon Oct 3 21:46:18 2011
@@ -16,27 +16,36 @@
*/
package org.apache.isis.viewer.json.viewer.representations;
+import javax.ws.rs.core.MediaType;
+
import org.apache.isis.viewer.json.applib.JsonRepresentation;
+import org.apache.isis.viewer.json.applib.RepresentationType;
import org.apache.isis.viewer.json.viewer.ResourceContext;
public class LinkReprBuilder extends ReprBuilderAbstract<LinkReprBuilder> {
- public static LinkReprBuilder newBuilder(ResourceContext resourceContext, String rel, String hrefFormat, Object... args) {
- return new LinkReprBuilder(resourceContext, rel, String.format(hrefFormat, args));
+ public static LinkReprBuilder newBuilder(ResourceContext resourceContext, String rel, RepresentationType representationType, String hrefFormat, Object... hrefArgs) {
+ return newBuilder(resourceContext, rel, representationType.getMediaType(), hrefFormat, hrefArgs);
+ }
+
+ public static LinkReprBuilder newBuilder(ResourceContext resourceContext, String rel, MediaType mediaType, String hrefFormat, Object... hrefArgs) {
+ return new LinkReprBuilder(resourceContext, rel, String.format(hrefFormat, hrefArgs), mediaType);
}
private final String rel;
private final String href;
+ private final MediaType mediaType;
private HttpMethod method = HttpMethod.GET;
private String title;
private JsonRepresentation arguments;
private JsonRepresentation value;
- protected LinkReprBuilder(ResourceContext resourceContext, String rel, String href) {
+ protected LinkReprBuilder(ResourceContext resourceContext, String rel, String href, MediaType mediaType) {
super(resourceContext);
this.rel = rel;
this.href = href;
+ this.mediaType = mediaType;
}
public LinkReprBuilder withHttpMethod(HttpMethod method) {
this.method = method;
@@ -59,6 +68,7 @@ public class LinkReprBuilder extends Rep
representation.mapPut("rel", rel);
representation.mapPut("href", resourceContext.urlFor(href));
representation.mapPut("method", method);
+ representation.mapPut("type", mediaType.toString());
representation.mapPut("title", title);
representation.mapPut("arguments", arguments);
representation.mapPut("value", value);
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/RendererFactoryRegistry.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/RendererFactoryRegistry.java?rev=1178596&r1=1178595&r2=1178596&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/RendererFactoryRegistry.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/RendererFactoryRegistry.java Mon Oct 3 21:46:18 2011
@@ -30,6 +30,11 @@ import org.apache.isis.viewer.json.viewe
import org.apache.isis.viewer.json.viewer.resources.domainobjects.ObjectCollectionReprRenderer;
import org.apache.isis.viewer.json.viewer.resources.domainobjects.ObjectPropertyReprRenderer;
import org.apache.isis.viewer.json.viewer.resources.domainobjects.ScalarValueReprRenderer;
+import org.apache.isis.viewer.json.viewer.resources.domaintypes.DomainTypeReprRenderer;
+import org.apache.isis.viewer.json.viewer.resources.domaintypes.DomainTypesReprRenderer;
+import org.apache.isis.viewer.json.viewer.resources.domaintypes.TypeActionReprRenderer;
+import org.apache.isis.viewer.json.viewer.resources.domaintypes.TypeCollectionReprRenderer;
+import org.apache.isis.viewer.json.viewer.resources.domaintypes.TypePropertyReprRenderer;
import org.apache.isis.viewer.json.viewer.resources.home.HomePageReprRenderer;
import org.apache.isis.viewer.json.viewer.resources.user.UserReprRenderer;
@@ -56,6 +61,11 @@ public class RendererFactoryRegistry {
register(new ObjectActionReprRenderer.Factory());
register(new ListReprRenderer.Factory());
register(new ScalarValueReprRenderer.Factory());
+ register(new DomainTypesReprRenderer.Factory());
+ register(new DomainTypeReprRenderer.Factory());
+ register(new TypePropertyReprRenderer.Factory());
+ register(new TypeCollectionReprRenderer.Factory());
+ register(new TypeActionReprRenderer.Factory());
}
public void register(RendererFactory factory) {
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/ReprBuilderAbstract.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/ReprBuilderAbstract.java?rev=1178596&r1=1178595&r2=1178596&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/ReprBuilderAbstract.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/ReprBuilderAbstract.java Mon Oct 3 21:46:18 2011
@@ -43,13 +43,6 @@ public abstract class ReprBuilderAbstrac
return resourceContext;
}
- public T withSelf(String href) {
- if(href != null) {
- representation.mapPut("self", LinkReprBuilder.newBuilder(resourceContext, "self", href).render());
- }
- return cast(this);
- }
-
public ReprBuilderAbstract<T> withLinks() {
return withLinks(JsonRepresentation.newArray());
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/ReprRendererAbstract.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/ReprRendererAbstract.java?rev=1178596&r1=1178595&r2=1178596&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/ReprRendererAbstract.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/ReprRendererAbstract.java Mon Oct 3 21:46:18 2011
@@ -21,6 +21,13 @@ public abstract class ReprRendererAbstra
return (R) this;
}
+ public R withSelf(String href) {
+ if(href != null) {
+ representation.mapPut("self", LinkReprBuilder.newBuilder(resourceContext, "self", representationType, href).render());
+ }
+ return cast(this);
+ }
+
@Override
public RepresentationType getRepresentationType() {
return representationType;
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectLinkToBuilder.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/DomainObjectLinkToBuilder.java?rev=1178596&r1=1178595&r2=1178596&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectLinkToBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectLinkToBuilder.java Mon Oct 3 21:46:18 2011
@@ -16,8 +16,11 @@
*/
package org.apache.isis.viewer.json.viewer.resources.domainobjects;
+import javax.ws.rs.core.MediaType;
+
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.viewer.json.applib.RepresentationType;
import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkReprBuilder;
@@ -41,14 +44,14 @@ public class DomainObjectLinkToBuilder i
@Override
public final LinkReprBuilder linkToAdapter() {
StringBuilder buf = objectsBuf();
- return LinkReprBuilder.newBuilder(resourceContext, "object", buf.toString());
+ return LinkReprBuilder.newBuilder(resourceContext, "object", RepresentationType.DOMAIN_OBJECT, buf.toString());
}
@Override
public final LinkReprBuilder linkToMember(String rel, MemberType memberType, ObjectMember objectMember, String... parts) {
StringBuilder buf = objectsBuf();
- buf.append("/").append(memberType.urlPart()).append(objectMember.getId());
+ buf.append("/").append(memberType.getUrlPart()).append(objectMember.getId());
for(String part: parts) {
if(part == null) {
continue;
@@ -56,7 +59,7 @@ public class DomainObjectLinkToBuilder i
buf.append("/").append(part);
}
String url = buf.toString();
- return LinkReprBuilder.newBuilder(resourceContext, rel, url);
+ return LinkReprBuilder.newBuilder(resourceContext, rel, memberType.getRepresentationType(), url);
}
/**
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectReprRenderer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectReprRenderer.java?rev=1178596&r1=1178595&r2=1178596&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectReprRenderer.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectReprRenderer.java Mon Oct 3 21:46:18 2011
@@ -18,6 +18,8 @@ package org.apache.isis.viewer.json.view
import java.util.List;
+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.facets.object.encodeable.EncodableFacet;
@@ -39,6 +41,7 @@ import org.apache.isis.viewer.json.viewe
import org.apache.isis.viewer.json.viewer.representations.ReprRenderer;
import org.apache.isis.viewer.json.viewer.representations.ReprRendererAbstract;
import org.apache.isis.viewer.json.viewer.representations.ReprRendererFactoryAbstract;
+import org.apache.isis.viewer.json.viewer.resources.domaintypes.DomainTypeReprRenderer;
import org.apache.isis.viewer.json.viewer.util.OidUtils;
import com.google.common.base.Function;
@@ -60,10 +63,11 @@ public class DomainObjectReprRenderer ex
public static LinkReprBuilder newLinkToBuilder(ResourceContext resourceContext, String rel, ObjectAdapter elementAdapter) {
String oidStr = resourceContext.getOidStringifier().enString(elementAdapter.getOid());
String url = "objects/" + oidStr;
- return LinkReprBuilder.newBuilder(resourceContext, rel, url);
+ return LinkReprBuilder.newBuilder(resourceContext, rel, RepresentationType.DOMAIN_OBJECT, url);
}
private ObjectAdapterLinkToBuilder linkToBuilder;
+ private ObjectAdapter objectAdapter;
private DomainObjectReprRenderer(ResourceContext resourceContext, RepresentationType representationType, JsonRepresentation representation) {
super(resourceContext, representationType, representation);
@@ -80,18 +84,39 @@ public class DomainObjectReprRenderer ex
}
public DomainObjectReprRenderer with(ObjectAdapter objectAdapter) {
+ this.objectAdapter = objectAdapter;
+ return this;
+ }
+
+ public JsonRepresentation render() {
+
+ // self
if(includesSelf) {
JsonRepresentation self = linkToBuilder.with(objectAdapter).linkToAdapter().render();
representation.mapPut("self", self);
}
+ // title
String title = objectAdapter.titleString();
representation.mapPut("oid", OidUtils.getOidStr(resourceContext, objectAdapter));
representation.mapPut("title", title);
+
+ // members
withMembers(objectAdapter);
- return this;
+
+ // links
+ final JsonRepresentation links = JsonRepresentation.newArray();
+ links.arrayAdd(
+ DomainTypeReprRenderer.newLinkToBuilder(getResourceContext(), "domainType", objectAdapter.getSpecification()).render());
+ withLinks(links);
+
+ // extensions
+ withExtensions();
+
+ return representation;
}
+
private DomainObjectReprRenderer withMembers(ObjectAdapter objectAdapter) {
JsonRepresentation members = JsonRepresentation.newArray();
List<ObjectAssociation> associations = objectAdapter.getSpecification().getAssociations();
@@ -139,19 +164,19 @@ public class DomainObjectReprRenderer ex
}
private void addActions(final ObjectAdapter objectAdapter,
- List<ObjectAction> actions, JsonRepresentation members) {
- for (ObjectAction action : actions) {
+ List<ObjectAction> actions, JsonRepresentation members) {
+ for (ObjectAction action : actions) {
Consent visibility = action.isVisible(getSession(), objectAdapter);
if(!visibility.isAllowed()) {
continue;
}
- if(action.getType().isSet()) {
- ObjectActionSet objectActionSet = (ObjectActionSet) action;
- List<ObjectAction> subactions = objectActionSet.getActions();
- addActions(objectAdapter, subactions, members);
+ if(action.getType().isSet()) {
+ ObjectActionSet objectActionSet = (ObjectActionSet) action;
+ List<ObjectAction> subactions = objectActionSet.getActions();
+ addActions(objectAdapter, subactions, members);
- } else {
-
+ } else {
+
RendererFactory factory = RendererFactoryRegistry.instance.find(RepresentationType.OBJECT_ACTION);
final ObjectActionReprRenderer renderer =
(ObjectActionReprRenderer) factory.newRenderer(getResourceContext(), JsonRepresentation.newMap());
@@ -161,17 +186,11 @@ public class DomainObjectReprRenderer ex
.withDetailsLink();
members.arrayAdd(renderer.render());
- }
+ }
}
- }
-
- public JsonRepresentation render() {
- withLinks();
- withExtensions();
- return representation;
}
-
+
/////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectResourceServerside.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/DomainObjectResourceServerside.java?rev=1178596&r1=1178595&r2=1178596&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectResourceServerside.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectResourceServerside.java Mon Oct 3 21:46:18 2011
@@ -45,7 +45,6 @@ import org.apache.isis.viewer.json.appli
import org.apache.isis.viewer.json.applib.RestfulResponse.HttpStatusCode;
import org.apache.isis.viewer.json.applib.domainobjects.DomainObjectResource;
import org.apache.isis.viewer.json.viewer.JsonApplicationException;
-import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.RendererFactory;
import org.apache.isis.viewer.json.viewer.representations.RendererFactoryRegistry;
import org.apache.isis.viewer.json.viewer.resources.ResourceAbstract;
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainResourceHelper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainResourceHelper.java?rev=1178596&r1=1178595&r2=1178596&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainResourceHelper.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainResourceHelper.java Mon Oct 3 21:46:18 2011
@@ -293,7 +293,9 @@ public class DomainResourceHelper {
private JsonRepresentation representationWithSelfFor(final ObjectAdapter objectAdapter, final ObjectAction action) {
JsonRepresentation representation = JsonRepresentation.newMap();
String oid = OidUtils.getOidStr(resourceContext, objectAdapter);
- final JsonRepresentation repBuilder = LinkReprBuilder.newBuilder(resourceContext, "self", "objects/%s/actions/%s/invoke", oid, action.getId()).render();
+ // TODO: review; can't be more specific with the media type because we don't have a media type for action/invoke
+ final JsonRepresentation repBuilder =
+ LinkReprBuilder.newBuilder(resourceContext, "self", MediaType.APPLICATION_JSON_TYPE, "objects/%s/actions/%s/invoke", oid, action.getId()).render();
representation.mapPut("self", repBuilder);
return representation;
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/MemberType.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/MemberType.java?rev=1178596&r1=1178595&r2=1178596&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/MemberType.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/MemberType.java Mon Oct 3 21:46:18 2011
@@ -31,6 +31,7 @@ import org.apache.isis.core.progmodel.fa
import org.apache.isis.core.progmodel.facets.collections.validate.CollectionValidateAddToFacet;
import org.apache.isis.core.progmodel.facets.collections.validate.CollectionValidateRemoveFromFacet;
import org.apache.isis.core.progmodel.facets.properties.validate.PropertyValidateFacet;
+import org.apache.isis.viewer.json.applib.RepresentationType;
import org.apache.isis.viewer.json.applib.util.Enums;
import org.apache.isis.viewer.json.viewer.representations.HttpMethod;
@@ -38,7 +39,7 @@ import com.google.common.collect.Immutab
public enum MemberType {
- OBJECT_PROPERTY("properties/", "propertyId", "propertyDetails",
+ OBJECT_PROPERTY("properties/", "propertyId", "propertyDetails", RepresentationType.OBJECT_PROPERTY,
ImmutableMap.of(
"modify", MutatorSpec.of(PropertyValidateFacet.class, PropertySetterFacet.class, HttpMethod.PUT, BodyArgs.ONE),
"clear", MutatorSpec.of(PropertyValidateFacet.class, PropertyClearFacet.class, HttpMethod.DELETE, BodyArgs.NONE)
@@ -51,7 +52,7 @@ public enum MemberType {
/**
* {@link #getMutators()} are keyed by {@link CollectionSemantics#getAddToKey()}
*/
- OBJECT_COLLECTION("collections/", "collectionId", "collectionDetails",
+ OBJECT_COLLECTION("collections/", "collectionId", "collectionDetails", RepresentationType.OBJECT_COLLECTION,
ImmutableMap.of(
"addToSet", MutatorSpec.of(CollectionValidateAddToFacet.class, CollectionAddToFacet.class, HttpMethod.PUT, BodyArgs.ONE),
"addToList", MutatorSpec.of(CollectionValidateAddToFacet.class, CollectionAddToFacet.class, HttpMethod.POST, BodyArgs.ONE),
@@ -65,7 +66,7 @@ public enum MemberType {
/**
* {@link #getMutators()} are keyed by {@link ActionSemantics#getInvokeKey()}
*/
- OBJECT_ACTION("actions/", "actionId", "actionDetails",
+ OBJECT_ACTION("actions/", "actionId", "actionDetails", RepresentationType.OBJECT_ACTION,
ImmutableMap.of(
"invokeQueryOnly", MutatorSpec.of(ActionValidationFacet.class, ActionInvocationFacet.class, HttpMethod.GET, BodyArgs.MANY, "invoke"),
"invokeIdempotent", MutatorSpec.of(ActionValidationFacet.class, ActionInvocationFacet.class, HttpMethod.PUT, BodyArgs.MANY, "invoke"),
@@ -78,17 +79,20 @@ public enum MemberType {
}
};
- private final Map<String, MutatorSpec> mutators;
-
private final String urlPart;
+ private final String jsProp;
private final String detailsRel;
private final String name;
- private final String jsProp;
+ private final RepresentationType representationType;
+
+ private final Map<String, MutatorSpec> mutators;
- private MemberType(String urlPart, String jsProp, String detailsRel, Map<String, MutatorSpec> mutators) {
+
+ private MemberType(String urlPart, String jsProp, String detailsRel, RepresentationType representationType, Map<String, MutatorSpec> mutators) {
this.urlPart = urlPart;
this.jsProp = jsProp;
this.detailsRel = detailsRel;
+ this.representationType = representationType;
this.mutators = mutators;
name = Enums.enumToCamelCase(this);
}
@@ -97,7 +101,7 @@ public enum MemberType {
return jsProp;
}
- public String urlPart() {
+ public String getUrlPart() {
return urlPart;
}
@@ -136,6 +140,10 @@ public enum MemberType {
OBJECT_COLLECTION;
}
+ public RepresentationType getRepresentationType() {
+ return representationType;
+ }
+
public String getDetailsRel() {
return detailsRel;
}
@@ -155,4 +163,5 @@ public enum MemberType {
}
+
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectActionReprRenderer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectActionReprRenderer.java?rev=1178596&r1=1178595&r2=1178596&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectActionReprRenderer.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectActionReprRenderer.java Mon Oct 3 21:46:18 2011
@@ -28,8 +28,8 @@ import org.apache.isis.viewer.json.appli
import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.ReprRenderer;
import org.apache.isis.viewer.json.viewer.representations.ReprRendererFactoryAbstract;
-import org.apache.isis.viewer.json.viewer.resources.domaintypes.DomainTypeReprBuilder;
-import org.apache.isis.viewer.json.viewer.resources.domaintypes.TypeActionReprBuilder;
+import org.apache.isis.viewer.json.viewer.resources.domaintypes.DomainTypeReprRenderer;
+import org.apache.isis.viewer.json.viewer.resources.domaintypes.TypeActionReprRenderer;
import org.codehaus.jackson.node.NullNode;
import com.google.common.collect.Lists;
@@ -206,7 +206,7 @@ public class ObjectActionReprRenderer ex
}
private void addLinksFormalDomainModel(JsonRepresentation links, ResourceContext resourceContext) {
- links.arrayAdd(TypeActionReprBuilder.newLinkToBuilder(resourceContext, "typeAction", objectAdapter.getSpecification(), objectMember).render());
+ links.arrayAdd(TypeActionReprRenderer.newLinkToBuilder(resourceContext, "typeAction", objectAdapter.getSpecification(), objectMember).render());
}
private void addLinksIsisProprietary(JsonRepresentation links, ResourceContext resourceContext) {
@@ -216,7 +216,7 @@ public class ObjectActionReprRenderer ex
links.arrayAdd(contributedByLink);
}
- links.arrayAdd(DomainTypeReprBuilder.newLinkToBuilder(resourceContext, "domainType", objectAdapter.getSpecification()).render());
+ links.arrayAdd(DomainTypeReprRenderer.newLinkToBuilder(resourceContext, "domainType", objectAdapter.getSpecification()).render());
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectCollectionReprRenderer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectCollectionReprRenderer.java?rev=1178596&r1=1178595&r2=1178596&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectCollectionReprRenderer.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectCollectionReprRenderer.java Mon Oct 3 21:46:18 2011
@@ -29,8 +29,8 @@ import org.apache.isis.viewer.json.viewe
import org.apache.isis.viewer.json.viewer.representations.LinkReprBuilder;
import org.apache.isis.viewer.json.viewer.representations.ReprRenderer;
import org.apache.isis.viewer.json.viewer.representations.ReprRendererFactoryAbstract;
-import org.apache.isis.viewer.json.viewer.resources.domaintypes.DomainTypeReprBuilder;
-import org.apache.isis.viewer.json.viewer.resources.domaintypes.TypeCollectionReprBuilder;
+import org.apache.isis.viewer.json.viewer.resources.domaintypes.DomainTypeReprRenderer;
+import org.apache.isis.viewer.json.viewer.resources.domaintypes.TypeCollectionReprRenderer;
import com.google.common.collect.Lists;
@@ -140,11 +140,11 @@ public class ObjectCollectionReprRendere
}
private void addLinksFormalDomainModel(JsonRepresentation links, ResourceContext resourceContext) {
- links.arrayAdd(TypeCollectionReprBuilder.newLinkToBuilder(resourceContext, "typeCollection", objectAdapter.getSpecification(), objectMember).render());
+ links.arrayAdd(TypeCollectionReprRenderer.newLinkToBuilder(resourceContext, "typeCollection", objectAdapter.getSpecification(), objectMember).render());
}
private void addLinksIsisProprietary(JsonRepresentation links, ResourceContext resourceContext) {
- links.arrayAdd(DomainTypeReprBuilder.newLinkToBuilder(resourceContext, "domainType", objectAdapter.getSpecification()).render());
+ links.arrayAdd(DomainTypeReprRenderer.newLinkToBuilder(resourceContext, "domainType", objectAdapter.getSpecification()).render());
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectPropertyReprRenderer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectPropertyReprRenderer.java?rev=1178596&r1=1178595&r2=1178596&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectPropertyReprRenderer.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectPropertyReprRenderer.java Mon Oct 3 21:46:18 2011
@@ -27,8 +27,8 @@ import org.apache.isis.viewer.json.appli
import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.ReprRenderer;
import org.apache.isis.viewer.json.viewer.representations.ReprRendererFactoryAbstract;
-import org.apache.isis.viewer.json.viewer.resources.domaintypes.DomainTypeReprBuilder;
-import org.apache.isis.viewer.json.viewer.resources.domaintypes.TypePropertyReprBuilder;
+import org.apache.isis.viewer.json.viewer.resources.domaintypes.DomainTypeReprRenderer;
+import org.apache.isis.viewer.json.viewer.resources.domaintypes.TypePropertyReprRenderer;
import com.google.common.collect.Lists;
@@ -156,11 +156,11 @@ public class ObjectPropertyReprRenderer
}
private void addLinksFormalDomainModel(JsonRepresentation links, ResourceContext resourceContext) {
- links.arrayAdd(TypePropertyReprBuilder.newLinkToBuilder(resourceContext, "typeProperty", objectAdapter.getSpecification(), objectMember).render());
+ links.arrayAdd(TypePropertyReprRenderer.newLinkToBuilder(resourceContext, "typeProperty", objectAdapter.getSpecification(), objectMember).render());
}
private void addLinksIsisProprietary(JsonRepresentation links, ResourceContext resourceContext) {
- links.arrayAdd(DomainTypeReprBuilder.newLinkToBuilder(resourceContext, "domainType", objectAdapter.getSpecification()).render());
+ links.arrayAdd(DomainTypeReprRenderer.newLinkToBuilder(resourceContext, "domainType", objectAdapter.getSpecification()).render());
}
}
\ No newline at end of file
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/AbstractTypeMemberReprBuilder.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/AbstractTypeMemberReprBuilder.java?rev=1178596&r1=1178595&r2=1178596&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/AbstractTypeMemberReprBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/AbstractTypeMemberReprBuilder.java Mon Oct 3 21:46:18 2011
@@ -18,22 +18,53 @@ package org.apache.isis.viewer.json.view
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.viewer.json.applib.JsonRepresentation;
+import org.apache.isis.viewer.json.applib.RepresentationType;
import org.apache.isis.viewer.json.viewer.ResourceContext;
-import org.apache.isis.viewer.json.viewer.representations.ReprBuilderAbstract;
+import org.apache.isis.viewer.json.viewer.representations.LinkReprBuilder;
+import org.apache.isis.viewer.json.viewer.representations.ReprRendererAbstract;
import org.apache.isis.viewer.json.viewer.resources.domainobjects.MemberType;
-public abstract class AbstractTypeMemberReprBuilder<R extends ReprBuilderAbstract<R>, T extends ObjectMember> extends ReprBuilderAbstract<R> {
+public abstract class AbstractTypeMemberReprBuilder<R extends ReprRendererAbstract<R, SpecAndMember<T>>, T extends ObjectMember> extends ReprRendererAbstract<R, SpecAndMember<T>> {
- protected final ObjectSpecification objectSpecification;
- protected final MemberType memberType;
- protected final T objectMember;
-
- public AbstractTypeMemberReprBuilder(ResourceContext resourceContext, ObjectSpecification objectSpecification, MemberType memberType, T objectMember) {
- super(resourceContext);
- this.objectSpecification = objectSpecification;
- this.memberType = memberType;
- this.objectMember = objectMember;
+ protected ObjectSpecification objectSpecification;
+ protected MemberType memberType;
+ protected T objectMember;
+
+ public AbstractTypeMemberReprBuilder(ResourceContext resourceContext, RepresentationType representationType, JsonRepresentation representation) {
+ super(resourceContext, representationType, representation);
+ }
+
+ public ObjectSpecification getObjectSpecification() {
+ return objectSpecification;
+ }
+
+ public T getObjectMember() {
+ return objectMember;
}
+ public MemberType getMemberType() {
+ return memberType;
+ }
+ @Override
+ public R with(SpecAndMember<T> specAndMember) {
+ objectSpecification = specAndMember.getObjectSpecification();
+ objectMember = specAndMember.getObjectMember();
+ memberType = MemberType.determineFrom(objectMember);
+ return cast(this);
+ }
+
+
+ protected void includeSelfIfRequired() {
+ if(!includesSelf) {
+ return;
+ }
+
+ representation.mapPut("self",
+ LinkReprBuilder.newBuilder(getResourceContext(), "self", getRepresentationType(), "domainTypes/%s/%s/%s",
+ getObjectSpecification().getFullIdentifier(), getMemberType().getUrlPart(), getObjectMember().getId()).render());
+ }
+
+
}
\ No newline at end of file
Copied: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeReprRenderer.java (from r1177860, incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeReprBuilder.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeReprRenderer.java?p2=incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeReprRenderer.java&p1=incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeReprBuilder.java&r1=1177860&r2=1178596&rev=1178596&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeReprBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeReprRenderer.java Mon Oct 3 21:46:18 2011
@@ -18,30 +18,59 @@ package org.apache.isis.viewer.json.view
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
+import org.apache.isis.viewer.json.applib.RepresentationType;
import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkReprBuilder;
-import org.apache.isis.viewer.json.viewer.representations.ReprBuilderAbstract;
-
-public class DomainTypeReprBuilder extends ReprBuilderAbstract<DomainTypeReprBuilder> {
-
- public static DomainTypeReprBuilder newBuilder(ResourceContext representationContext) {
- return new DomainTypeReprBuilder(representationContext);
+import org.apache.isis.viewer.json.viewer.representations.ReprRenderer;
+import org.apache.isis.viewer.json.viewer.representations.ReprRendererAbstract;
+import org.apache.isis.viewer.json.viewer.representations.ReprRendererFactoryAbstract;
+
+public class DomainTypeReprRenderer extends ReprRendererAbstract<DomainTypeReprRenderer, ObjectSpecification> {
+
+ public static class Factory extends ReprRendererFactoryAbstract {
+ public Factory() {
+ super(RepresentationType.DOMAIN_TYPE);
+ }
+
+ @Override
+ public ReprRenderer<?, ?> newRenderer(ResourceContext resourceContext, JsonRepresentation representation) {
+ return new DomainTypeReprRenderer(resourceContext, getRepresentationType(), representation);
+ }
}
public static LinkReprBuilder newLinkToBuilder(ResourceContext resourceContext, String rel, ObjectSpecification objectSpec) {
String typeFullName = objectSpec.getFullIdentifier();
String url = "domainTypes/" + typeFullName;
- return LinkReprBuilder.newBuilder(resourceContext, rel, url);
+ return LinkReprBuilder.newBuilder(resourceContext, rel, RepresentationType.DOMAIN_TYPE, url);
+ }
+
+ private ObjectSpecification objectSpecification;
+
+ public DomainTypeReprRenderer(ResourceContext resourceContext, RepresentationType representationType, JsonRepresentation representation) {
+ super(resourceContext, representationType, representation);
}
- public DomainTypeReprBuilder(ResourceContext resourceContext) {
- super(resourceContext);
+ @Override
+ public DomainTypeReprRenderer with(ObjectSpecification objectSpecification) {
+ this.objectSpecification = objectSpecification;
+ return cast(this);
}
public JsonRepresentation render() {
+
+ // self
+ if(includesSelf) {
+ representation.mapPut("self", newLinkToBuilder(getResourceContext(), "self", objectSpecification).render());
+ }
+
+
+
+ // links and extensions
+ representation.mapPut("links", JsonRepresentation.newArray());
+ representation.mapPut("extensions", JsonRepresentation.newMap());
+
return representation;
}
-
}
\ No newline at end of file
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeResourceServerside.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeResourceServerside.java?rev=1178596&r1=1178595&r2=1178596&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeResourceServerside.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeResourceServerside.java Mon Oct 3 21:46:18 2011
@@ -28,12 +28,18 @@ import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
import org.apache.isis.viewer.json.applib.RepresentationType;
import org.apache.isis.viewer.json.applib.RestfulMediaType;
+import org.apache.isis.viewer.json.applib.RestfulResponse.HttpStatusCode;
import org.apache.isis.viewer.json.applib.domaintypes.DomainTypeResource;
+import org.apache.isis.viewer.json.viewer.JsonApplicationException;
import org.apache.isis.viewer.json.viewer.representations.LinkReprBuilder;
+import org.apache.isis.viewer.json.viewer.representations.RendererFactory;
import org.apache.isis.viewer.json.viewer.resources.ResourceAbstract;
+import org.apache.isis.viewer.json.viewer.resources.domainobjects.DomainObjectReprRenderer;
/**
* Implementation note: it seems to be necessary to annotate the implementation with {@link Path} rather than the
@@ -49,19 +55,16 @@ public class DomainTypeResourceServersid
public Response domainTypes() {
init();
- JsonRepresentation representation = JsonRepresentation.newMap();
- representation.mapPut("self", LinkReprBuilder.newBuilder(getResourceContext(), "self", "domainTypes").render());
-
- JsonRepresentation specList = JsonRepresentation.newArray();
final Collection<ObjectSpecification> allSpecifications = getSpecificationLoader().allSpecifications();
- for (ObjectSpecification objectSpec : allSpecifications) {
- final LinkReprBuilder linkBuilder = LinkReprBuilder.newBuilder(getResourceContext(), "domainType", "domainTypes/%s", objectSpec.getFullIdentifier());
- specList.arrayAdd(linkBuilder.render());
- }
+
+ final RendererFactory rendererFactory =
+ rendererFactoryRegistry.find(RepresentationType.DOMAIN_TYPES);
- representation.mapPut("domainTypes", specList);
+ final DomainTypesReprRenderer renderer =
+ (DomainTypesReprRenderer) rendererFactory.newRenderer(getResourceContext(), JsonRepresentation.newMap());
+ renderer.with(allSpecifications).includesSelf();
- return responseOfOk(RepresentationType.DOMAIN_TYPE, Caching.ONE_DAY, representation).build();
+ return responseOfOk(Caching.ONE_DAY, renderer).build();
}
@@ -71,10 +74,16 @@ public class DomainTypeResourceServersid
public Response domainType(@PathParam("domainType") final String domainType){
init();
- JsonRepresentation representation = JsonRepresentation.newMap();
- representation.mapPut("self", LinkReprBuilder.newBuilder(getResourceContext(), "self", "domainTypes/%s", domainType).render());
-
- return responseOfOk(RepresentationType.DOMAIN_TYPE, Caching.ONE_DAY, representation).build();
+ final ObjectSpecification objectSpec = getSpecificationLoader().loadSpecification(domainType);
+
+ final RendererFactory rendererFactory =
+ rendererFactoryRegistry.find(RepresentationType.DOMAIN_TYPE);
+
+ final DomainTypeReprRenderer renderer =
+ (DomainTypeReprRenderer) rendererFactory.newRenderer(getResourceContext(), JsonRepresentation.newMap());
+ renderer.with(objectSpec).includesSelf();
+
+ return responseOfOk(Caching.ONE_DAY, renderer).build();
}
@GET
@@ -85,10 +94,25 @@ public class DomainTypeResourceServersid
@PathParam("propertyId") final String propertyId){
init();
- JsonRepresentation representation = JsonRepresentation.newMap();
- representation.mapPut("self", LinkReprBuilder.newBuilder(getResourceContext(), "self", "domainTypes/%s/properties/%s", domainType, propertyId).render());
+ final ObjectSpecification objectSpec = getSpecificationLoader().loadSpecification(domainType);
+ if(objectSpec == null) {
+ throw JsonApplicationException.create(HttpStatusCode.NOT_FOUND);
+ }
- return responseOfOk(RepresentationType.TYPE_PROPERTY, Caching.ONE_DAY, representation).build();
+ final ObjectMember objectMember = objectSpec.getAssociation(propertyId);
+ if(objectMember == null || objectMember.isOneToManyAssociation()) {
+ throw JsonApplicationException.create(HttpStatusCode.NOT_FOUND);
+ }
+ OneToOneAssociation property = (OneToOneAssociation) objectMember;
+
+ final RendererFactory rendererFactory =
+ rendererFactoryRegistry.find(RepresentationType.TYPE_PROPERTY);
+
+ final TypePropertyReprRenderer renderer =
+ (TypePropertyReprRenderer) rendererFactory.newRenderer(getResourceContext(), JsonRepresentation.newMap());
+ renderer.with(new SpecAndProperty(objectSpec, property)).includesSelf();
+
+ return responseOfOk(Caching.ONE_DAY, renderer).build();
}
@GET
@@ -100,7 +124,8 @@ public class DomainTypeResourceServersid
init();
JsonRepresentation representation = JsonRepresentation.newMap();
- representation.mapPut("self", LinkReprBuilder.newBuilder(getResourceContext(), "self", "domainType/%s/collections/%s", domainType, collectionId).render());
+ representation.mapPut("self",
+ LinkReprBuilder.newBuilder(getResourceContext(), "self", RepresentationType.TYPE_COLLECTION, "domainType/%s/collections/%s", domainType, collectionId).render());
return responseOfOk(RepresentationType.TYPE_COLLECTION, Caching.ONE_DAY, representation).build();
}
@@ -114,7 +139,8 @@ public class DomainTypeResourceServersid
init();
JsonRepresentation representation = JsonRepresentation.newMap();
- representation.mapPut("self", LinkReprBuilder.newBuilder(getResourceContext(), "self", "domainTypes/%s/actions/%s", domainType, actionId).render());
+ representation.mapPut("self",
+ LinkReprBuilder.newBuilder(getResourceContext(), "self", RepresentationType.TYPE_ACTION, "domainTypes/%s/actions/%s", domainType, actionId).render());
return responseOfOk(RepresentationType.TYPE_ACTION, Caching.ONE_DAY, representation).build();
}
@@ -129,7 +155,8 @@ public class DomainTypeResourceServersid
init();
JsonRepresentation representation = JsonRepresentation.newMap();
- representation.mapPut("self", LinkReprBuilder.newBuilder(getResourceContext(), "self", "domainTypes/%s/actions/%s/params/%s", domainType, actionId, paramName).render());
+ representation.mapPut("self",
+ LinkReprBuilder.newBuilder(getResourceContext(), "self", RepresentationType.TYPE_ACTION_PARAMETER, "domainTypes/%s/actions/%s/params/%s", domainType, actionId, paramName).render());
return responseOfOk(RepresentationType.TYPE_COLLECTION, Caching.ONE_DAY, representation).build();
}
Added: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypesReprRenderer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypesReprRenderer.java?rev=1178596&view=auto
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypesReprRenderer.java (added)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypesReprRenderer.java Mon Oct 3 21:46:18 2011
@@ -0,0 +1,64 @@
+package org.apache.isis.viewer.json.viewer.resources.domaintypes;
+
+import java.util.Collection;
+
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.viewer.json.applib.JsonRepresentation;
+import org.apache.isis.viewer.json.applib.RepresentationType;
+import org.apache.isis.viewer.json.viewer.ResourceContext;
+import org.apache.isis.viewer.json.viewer.representations.LinkReprBuilder;
+import org.apache.isis.viewer.json.viewer.representations.ReprRenderer;
+import org.apache.isis.viewer.json.viewer.representations.ReprRendererAbstract;
+import org.apache.isis.viewer.json.viewer.representations.ReprRendererFactoryAbstract;
+
+public class DomainTypesReprRenderer extends ReprRendererAbstract<DomainTypesReprRenderer, Collection<ObjectSpecification>> {
+
+ private Collection<ObjectSpecification> specifications;
+
+ public static class Factory extends ReprRendererFactoryAbstract {
+ public Factory() {
+ super(RepresentationType.DOMAIN_TYPES);
+ }
+
+ @Override
+ public ReprRenderer<?, ?> newRenderer(ResourceContext resourceContext, JsonRepresentation representation) {
+ return new DomainTypesReprRenderer(resourceContext, getRepresentationType(), representation);
+ }
+ }
+
+ private DomainTypesReprRenderer(ResourceContext resourceContext, RepresentationType representationType, JsonRepresentation representation) {
+ super(resourceContext, representationType, representation);
+ }
+
+ @Override
+ public DomainTypesReprRenderer with(Collection<ObjectSpecification> specifications) {
+ this.specifications = specifications;
+ return this;
+ }
+
+ @Override
+ public JsonRepresentation render() {
+
+ // self
+ if(includesSelf) {
+ withSelf("domainTypes");
+ }
+
+ JsonRepresentation specList = JsonRepresentation.newArray();
+ for (ObjectSpecification objectSpec : specifications) {
+ final LinkReprBuilder linkBuilder =
+ LinkReprBuilder.newBuilder(getResourceContext(), "domainType", RepresentationType.DOMAIN_TYPE, "domainTypes/%s", objectSpec.getFullIdentifier());
+ specList.arrayAdd(linkBuilder.render());
+ }
+
+ representation.mapPut("domainTypes", specList);
+
+ // links and extensions
+ representation.mapPut("links", JsonRepresentation.newArray());
+ representation.mapPut("extensions", JsonRepresentation.newMap());
+
+ return representation;
+ }
+
+
+}
\ No newline at end of file
Added: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/SpecAndAction.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/SpecAndAction.java?rev=1178596&view=auto
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/SpecAndAction.java (added)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/SpecAndAction.java Mon Oct 3 21:46:18 2011
@@ -0,0 +1,12 @@
+package org.apache.isis.viewer.json.viewer.resources.domaintypes;
+
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+
+public class SpecAndAction extends SpecAndMember<ObjectAction> {
+
+ public SpecAndAction(ObjectSpecification objectSpecification, ObjectAction action) {
+ super(objectSpecification, action);
+ }
+
+}
\ No newline at end of file
Added: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/SpecAndCollection.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/SpecAndCollection.java?rev=1178596&view=auto
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/SpecAndCollection.java (added)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/SpecAndCollection.java Mon Oct 3 21:46:18 2011
@@ -0,0 +1,12 @@
+package org.apache.isis.viewer.json.viewer.resources.domaintypes;
+
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+
+public class SpecAndCollection extends SpecAndMember<OneToManyAssociation> {
+
+ public SpecAndCollection(ObjectSpecification objectSpecification, OneToManyAssociation collection) {
+ super(objectSpecification, collection);
+ }
+
+}
\ No newline at end of file
Added: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/SpecAndMember.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/SpecAndMember.java?rev=1178596&view=auto
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/SpecAndMember.java (added)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/SpecAndMember.java Mon Oct 3 21:46:18 2011
@@ -0,0 +1,24 @@
+package org.apache.isis.viewer.json.viewer.resources.domaintypes;
+
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+
+public abstract class SpecAndMember<T extends ObjectMember> {
+
+ private final ObjectSpecification objectSpecification;
+ private final T objectMember;
+
+ public SpecAndMember(ObjectSpecification objectSpecification, T objectMember) {
+ this.objectSpecification = objectSpecification;
+ this.objectMember = objectMember;
+ }
+ public ObjectSpecification getObjectSpecification() {
+ return objectSpecification;
+ }
+ public T getObjectMember() {
+ return objectMember;
+ }
+
+
+
+}
\ No newline at end of file
Added: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/SpecAndProperty.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/SpecAndProperty.java?rev=1178596&view=auto
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/SpecAndProperty.java (added)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/SpecAndProperty.java Mon Oct 3 21:46:18 2011
@@ -0,0 +1,12 @@
+package org.apache.isis.viewer.json.viewer.resources.domaintypes;
+
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+
+public class SpecAndProperty extends SpecAndMember<OneToOneAssociation> {
+
+ public SpecAndProperty(ObjectSpecification objectSpecification, OneToOneAssociation property) {
+ super(objectSpecification, property);
+ }
+
+}
\ No newline at end of file
Copied: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeActionReprRenderer.java (from r1177860, incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeActionReprBuilder.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeActionReprRenderer.java?p2=incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeActionReprRenderer.java&p1=incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeActionReprBuilder.java&r1=1177860&r2=1178596&rev=1178596&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeActionReprBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeActionReprRenderer.java Mon Oct 3 21:46:18 2011
@@ -16,32 +16,51 @@
*/
package org.apache.isis.viewer.json.viewer.resources.domaintypes;
+import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
+import org.apache.isis.viewer.json.applib.RepresentationType;
import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkReprBuilder;
-import org.apache.isis.viewer.json.viewer.resources.domainobjects.MemberType;
+import org.apache.isis.viewer.json.viewer.representations.ReprRenderer;
+import org.apache.isis.viewer.json.viewer.representations.ReprRendererFactoryAbstract;
-public class TypeActionReprBuilder extends AbstractTypeMemberReprBuilder<TypeActionReprBuilder, ObjectAction> {
+public class TypeActionReprRenderer extends AbstractTypeMemberReprBuilder<TypeActionReprRenderer, ObjectAction> {
- public static TypeActionReprBuilder newBuilder(ResourceContext representationContext, ObjectSpecification objectSpecification, ObjectAction objectAction) {
- return new TypeActionReprBuilder(representationContext, objectSpecification, objectAction);
+ public static class Factory extends ReprRendererFactoryAbstract {
+
+ public Factory() {
+ super(RepresentationType.TYPE_ACTION);
+ }
+
+ @Override
+ public ReprRenderer<?,?> newRenderer(ResourceContext resourceContext, JsonRepresentation representation) {
+ return new TypeActionReprRenderer(resourceContext, getRepresentationType(), representation);
+ }
}
public static LinkReprBuilder newLinkToBuilder(ResourceContext resourceContext, String rel, ObjectSpecification objectSpecification, ObjectAction objectAction) {
String typeFullName = objectSpecification.getFullIdentifier();
String actionId = objectAction.getId();
String url = "domainTypes/" + typeFullName + "/actions/" + actionId;
- return LinkReprBuilder.newBuilder(resourceContext, rel, url);
+ return LinkReprBuilder.newBuilder(resourceContext, rel, RepresentationType.TYPE_ACTION, url);
}
- public TypeActionReprBuilder(ResourceContext resourceContext, ObjectSpecification objectSpecification, ObjectAction objectAction) {
- super(resourceContext, objectSpecification, MemberType.OBJECT_ACTION, objectAction);
+ public TypeActionReprRenderer(ResourceContext resourceContext, RepresentationType representationType, JsonRepresentation representation) {
+ super(resourceContext, representationType, representation);
}
public JsonRepresentation render() {
+
+ // self
+ includeSelfIfRequired();
+
+ // links and extensions
+ representation.mapPut("links", JsonRepresentation.newArray());
+ representation.mapPut("extensions", JsonRepresentation.newMap());
+
return representation;
}
Copied: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeCollectionReprRenderer.java (from r1177860, incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeCollectionReprBuilder.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeCollectionReprRenderer.java?p2=incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeCollectionReprRenderer.java&p1=incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeCollectionReprBuilder.java&r1=1177860&r2=1178596&rev=1178596&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeCollectionReprBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeCollectionReprRenderer.java Mon Oct 3 21:46:18 2011
@@ -19,28 +19,45 @@ package org.apache.isis.viewer.json.view
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
+import org.apache.isis.viewer.json.applib.RepresentationType;
import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkReprBuilder;
-import org.apache.isis.viewer.json.viewer.resources.domainobjects.MemberType;
+import org.apache.isis.viewer.json.viewer.representations.ReprRenderer;
+import org.apache.isis.viewer.json.viewer.representations.ReprRendererFactoryAbstract;
-public class TypeCollectionReprBuilder extends AbstractTypeMemberReprBuilder<TypeCollectionReprBuilder, OneToManyAssociation> {
+public class TypeCollectionReprRenderer extends AbstractTypeMemberReprBuilder<TypeCollectionReprRenderer, OneToManyAssociation> {
- public static TypeCollectionReprBuilder newBuilder(ResourceContext representationContext, ObjectSpecification objectSpecification, OneToManyAssociation collection) {
- return new TypeCollectionReprBuilder(representationContext, objectSpecification, collection);
+ public static class Factory extends ReprRendererFactoryAbstract {
+
+ public Factory() {
+ super(RepresentationType.TYPE_COLLECTION);
+ }
+
+ @Override
+ public ReprRenderer<?,?> newRenderer(ResourceContext resourceContext, JsonRepresentation representation) {
+ return new TypeCollectionReprRenderer(resourceContext, getRepresentationType(), representation);
+ }
}
public static LinkReprBuilder newLinkToBuilder(ResourceContext resourceContext, String rel, ObjectSpecification objectSpecification, OneToManyAssociation collection) {
String typeFullName = objectSpecification.getFullIdentifier();
String collectionId = collection.getId();
String url = "domainTypes/" + typeFullName + "/collections/" + collectionId;
- return LinkReprBuilder.newBuilder(resourceContext, rel, url);
+ return LinkReprBuilder.newBuilder(resourceContext, rel, RepresentationType.TYPE_COLLECTION, url);
}
- public TypeCollectionReprBuilder(ResourceContext resourceContext, ObjectSpecification objectSpecification, OneToManyAssociation collection) {
- super(resourceContext, objectSpecification, MemberType.OBJECT_COLLECTION, collection);
+ public TypeCollectionReprRenderer(ResourceContext resourceContext, RepresentationType representationType, JsonRepresentation representation) {
+ super(resourceContext, representationType, representation);
}
public JsonRepresentation render() {
+
+ includeSelfIfRequired();
+
+ // links and extensions
+ representation.mapPut("links", JsonRepresentation.newArray());
+ representation.mapPut("extensions", JsonRepresentation.newMap());
+
return representation;
}
Copied: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypePropertyReprRenderer.java (from r1177860, incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypePropertyReprBuilder.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypePropertyReprRenderer.java?p2=incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypePropertyReprRenderer.java&p1=incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypePropertyReprBuilder.java&r1=1177860&r2=1178596&rev=1178596&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypePropertyReprBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypePropertyReprRenderer.java Mon Oct 3 21:46:18 2011
@@ -19,28 +19,46 @@ package org.apache.isis.viewer.json.view
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
+import org.apache.isis.viewer.json.applib.RepresentationType;
import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkReprBuilder;
-import org.apache.isis.viewer.json.viewer.resources.domainobjects.MemberType;
+import org.apache.isis.viewer.json.viewer.representations.ReprRenderer;
+import org.apache.isis.viewer.json.viewer.representations.ReprRendererFactoryAbstract;
-public class TypePropertyReprBuilder extends AbstractTypeMemberReprBuilder<TypePropertyReprBuilder, OneToOneAssociation> {
+public class TypePropertyReprRenderer extends AbstractTypeMemberReprBuilder<TypePropertyReprRenderer, OneToOneAssociation> {
- public static TypePropertyReprBuilder newBuilder(ResourceContext representationContext, ObjectSpecification objectSpecification, OneToOneAssociation property) {
- return new TypePropertyReprBuilder(representationContext, objectSpecification, property);
+ public static class Factory extends ReprRendererFactoryAbstract {
+
+ public Factory() {
+ super(RepresentationType.TYPE_PROPERTY);
+ }
+
+ @Override
+ public ReprRenderer<?,?> newRenderer(ResourceContext resourceContext, JsonRepresentation representation) {
+ return new TypePropertyReprRenderer(resourceContext, getRepresentationType(), representation);
+ }
}
public static LinkReprBuilder newLinkToBuilder(ResourceContext resourceContext, String rel, ObjectSpecification objectSpecification, OneToOneAssociation property) {
String typeFullName = objectSpecification.getFullIdentifier();
String propertyId = property.getId();
String url = "domainTypes/" + typeFullName + "/properties/" + propertyId;
- return LinkReprBuilder.newBuilder(resourceContext, rel, url);
+ return LinkReprBuilder.newBuilder(resourceContext, rel, RepresentationType.TYPE_PROPERTY, url);
}
- public TypePropertyReprBuilder(ResourceContext resourceContext, ObjectSpecification objectSpecification, OneToOneAssociation property) {
- super(resourceContext, objectSpecification, MemberType.OBJECT_COLLECTION, property);
+ public TypePropertyReprRenderer(ResourceContext resourceContext, RepresentationType representationType, JsonRepresentation representation) {
+ super(resourceContext, representationType, representation);
}
public JsonRepresentation render() {
+
+ // self
+ includeSelfIfRequired();
+
+ // links and extensions
+ representation.mapPut("links", JsonRepresentation.newArray());
+ representation.mapPut("extensions", JsonRepresentation.newMap());
+
return representation;
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/home/HomePageReprRenderer.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/home/HomePageReprRenderer.java?rev=1178596&r1=1178595&r2=1178596&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/home/HomePageReprRenderer.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/home/HomePageReprRenderer.java Mon Oct 3 21:46:18 2011
@@ -2,6 +2,8 @@ package org.apache.isis.viewer.json.view
import java.util.List;
+import javax.ws.rs.core.MediaType;
+
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
import org.apache.isis.viewer.json.applib.RepresentationType;
@@ -54,7 +56,7 @@ public class HomePageReprRenderer extend
putLinkToServices(representation);
// capabilities
- representation.mapPut("capabilities", LinkReprBuilder.newBuilder(getResourceContext(), "capabilities", "capabilities").render());
+ putLinkToCapabilities(representation);
// links and extensions
representation.mapPut("links", JsonRepresentation.newArray());
@@ -63,9 +65,15 @@ public class HomePageReprRenderer extend
return representation;
}
+ private void putLinkToCapabilities(final JsonRepresentation representation) {
+ representation.mapPut("capabilities",
+ LinkReprBuilder.newBuilder(getResourceContext(), "capabilities", RepresentationType.CAPABILITIES, "capabilities").render());
+ }
+
private void putLinkToServices(JsonRepresentation representation) {
- final LinkReprBuilder servicesLinkBuilder = LinkReprBuilder.newBuilder(getResourceContext(), "services", "services");
+ final LinkReprBuilder servicesLinkBuilder =
+ LinkReprBuilder.newBuilder(getResourceContext(), "services", RepresentationType.LIST, "services");
final List<String> followLinks = getResourceContext().getArg(QueryParameter.FOLLOW_LINKS);
if(followLinks.contains("services")) {
@@ -86,7 +94,8 @@ public class HomePageReprRenderer extend
}
private void putLinkToUser(JsonRepresentation representation) {
- final LinkReprBuilder userLinkBuilder = LinkReprBuilder.newBuilder(getResourceContext(), "user", "user");
+ final LinkReprBuilder userLinkBuilder =
+ LinkReprBuilder.newBuilder(getResourceContext(), "user", RepresentationType.USER, "user");
final List<String> followLinks = getResourceContext().getArg(QueryParameter.FOLLOW_LINKS);
if(followLinks.contains("user")) {