You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2013/02/19 09:06:15 UTC
[3/4] ISIS-233: working toward RO spec 1.0.0
http://git-wip-us.apache.org/repos/asf/isis/blob/e5093edb/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ListReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ListReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ListReprRenderer.java
index be278e1..8ba44ad 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ListReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ListReprRenderer.java
@@ -25,37 +25,22 @@ import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
-import org.apache.isis.viewer.restfulobjects.rendering.RendererFactory;
-import org.apache.isis.viewer.restfulobjects.rendering.RendererFactoryRegistry;
-import org.apache.isis.viewer.restfulobjects.rendering.ReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.ReprRendererAbstract;
-import org.apache.isis.viewer.restfulobjects.rendering.ReprRendererFactoryAbstract;
public class ListReprRenderer extends ReprRendererAbstract<ListReprRenderer, Collection<ObjectAdapter>> {
- public static class Factory extends ReprRendererFactoryAbstract {
- public Factory() {
- super(RepresentationType.LIST);
- }
-
- @Override
- public ReprRenderer<?, ?> newRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
- return new ListReprRenderer(resourceContext, linkFollower, getRepresentationType(), representation);
- }
- }
-
private ObjectAdapterLinkTo linkTo;
private Collection<ObjectAdapter> objectAdapters;
private ObjectSpecification elementType;
private ObjectSpecification returnType;
- private ListReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final RepresentationType representationType, final JsonRepresentation representation) {
- super(resourceContext, linkFollower, representationType, representation);
+ public ListReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
+ super(resourceContext, linkFollower, RepresentationType.LIST, representation);
usingLinkToBuilder(new DomainObjectLinkTo());
}
public ListReprRenderer usingLinkToBuilder(final ObjectAdapterLinkTo objectAdapterLinkToBuilder) {
- this.linkTo = objectAdapterLinkToBuilder.usingUrlBase(resourceContext);
+ this.linkTo = objectAdapterLinkToBuilder.usingUrlBase(rendererContext);
return this;
}
@@ -103,8 +88,7 @@ public class ListReprRenderer extends ReprRendererAbstract<ListReprRenderer, Col
values.arrayAdd(linkToObject);
if (linkFollower.matches(linkToObject)) {
- final RendererFactory factory = RendererFactoryRegistry.instance.find(RepresentationType.DOMAIN_OBJECT);
- final DomainObjectReprRenderer renderer = (DomainObjectReprRenderer) factory.newRenderer(getResourceContext(), linkFollower, JsonRepresentation.newMap());
+ final DomainObjectReprRenderer renderer = new DomainObjectReprRenderer(getRendererContext(), linkFollower, JsonRepresentation.newMap());
final JsonRepresentation domainObject = renderer.with(adapter).render();
linkToObject.mapPut("value", domainObject);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/e5093edb/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
index 49bf8c5..82d1d3c 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
@@ -30,10 +30,6 @@ import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
-import org.apache.isis.viewer.restfulobjects.rendering.RendererFactory;
-import org.apache.isis.viewer.restfulobjects.rendering.RendererFactoryRegistry;
-import org.apache.isis.viewer.restfulobjects.rendering.ReprRenderer;
-import org.apache.isis.viewer.restfulobjects.rendering.ReprRendererFactoryAbstract;
import org.apache.isis.viewer.restfulobjects.rendering.domaintypes.ActionDescriptionReprRenderer;
import org.codehaus.jackson.node.NullNode;
@@ -41,20 +37,8 @@ import com.google.common.collect.Lists;
public class ObjectActionReprRenderer extends AbstractObjectMemberReprRenderer<ObjectActionReprRenderer, ObjectAction> {
- public static class Factory extends ReprRendererFactoryAbstract {
-
- public Factory() {
- super(RepresentationType.OBJECT_ACTION);
- }
-
- @Override
- public ReprRenderer<?, ?> newRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
- return new ObjectActionReprRenderer(resourceContext, linkFollower, getRepresentationType(), representation);
- }
- }
-
- private ObjectActionReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final RepresentationType representationType, final JsonRepresentation representation) {
- super(resourceContext, linkFollower, representationType, representation, Where.OBJECT_FORMS);
+ public ObjectActionReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
+ super(resourceContext, linkFollower, RepresentationType.OBJECT_ACTION, representation, Where.OBJECT_FORMS);
}
@Override
@@ -80,8 +64,7 @@ public class ObjectActionReprRenderer extends AbstractObjectMemberReprRenderer<O
*/
@Override
protected void followDetailsLink(final JsonRepresentation detailsLink) {
- final RendererFactory factory = RendererFactoryRegistry.instance.find(RepresentationType.OBJECT_ACTION);
- final ObjectActionReprRenderer renderer = (ObjectActionReprRenderer) factory.newRenderer(getResourceContext(), getLinkFollower(), JsonRepresentation.newMap());
+ final ObjectActionReprRenderer renderer = new ObjectActionReprRenderer(getRendererContext(), getLinkFollower(), JsonRepresentation.newMap());
renderer.with(new ObjectAndAction(objectAdapter, objectMember)).usingLinkTo(linkTo).asFollowed();
detailsLink.mapPut("value", renderer.render());
}
@@ -110,7 +93,7 @@ public class ObjectActionReprRenderer extends AbstractObjectMemberReprRenderer<O
return super.linkToForMutatorInvoke();
}
final DomainServiceLinkTo linkTo = new DomainServiceLinkTo();
- return linkTo.usingUrlBase(getResourceContext()).with(contributingServiceAdapter());
+ return linkTo.usingUrlBase(getRendererContext()).with(contributingServiceAdapter());
}
private ObjectAdapter contributingServiceAdapter() {
@@ -139,7 +122,7 @@ public class ObjectActionReprRenderer extends AbstractObjectMemberReprRenderer<O
if (objectMember.isContributed()) {
final ObjectActionParameter actionParameter = objectMember.getParameters().get(i);
if (actionParameter.getSpecification().isOfType(objectAdapter.getSpecification())) {
- return DomainObjectReprRenderer.newLinkToBuilder(resourceContext, Rel.OBJECT, objectAdapter).build();
+ return DomainObjectReprRenderer.newLinkToBuilder(rendererContext, Rel.VALUE, objectAdapter).build();
}
}
// force a null into the map
@@ -187,7 +170,7 @@ public class ObjectActionReprRenderer extends AbstractObjectMemberReprRenderer<O
// REVIEW: previously was using the spec of the parameter, but think instead it should be the spec of the adapter itself
// final ObjectSpecification choiceSpec = param.getSpecification();
final ObjectSpecification choiceSpec = choiceAdapter.getSpecification();
- list.add(DomainObjectReprRenderer.valueOrRef(resourceContext, choiceAdapter, choiceSpec));
+ list.add(DomainObjectReprRenderer.valueOrRef(rendererContext, choiceAdapter, choiceSpec));
}
return list;
}
@@ -200,7 +183,7 @@ public class ObjectActionReprRenderer extends AbstractObjectMemberReprRenderer<O
// REVIEW: previously was using the spec of the parameter, but think instead it should be the spec of the adapter itself
// final ObjectSpecification defaultSpec = param.getSpecification();
final ObjectSpecification defaultSpec = defaultAdapter.getSpecification();
- return DomainObjectReprRenderer.valueOrRef(resourceContext, defaultAdapter, defaultSpec);
+ return DomainObjectReprRenderer.valueOrRef(rendererContext, defaultAdapter, defaultSpec);
}
// ///////////////////////////////////////////////////
@@ -209,14 +192,14 @@ public class ObjectActionReprRenderer extends AbstractObjectMemberReprRenderer<O
@Override
protected void addLinksToFormalDomainModel() {
- getLinks().arrayAdd(ActionDescriptionReprRenderer.newLinkToBuilder(resourceContext, Rel.DESCRIBEDBY, objectAdapter.getSpecification(), objectMember).build());
+ getLinks().arrayAdd(ActionDescriptionReprRenderer.newLinkToBuilder(rendererContext, Rel.DESCRIBEDBY, objectAdapter.getSpecification(), objectMember).build());
}
@Override
protected void addLinksIsisProprietary() {
if (objectMember.isContributed()) {
final ObjectAdapter serviceAdapter = contributingServiceAdapter();
- final JsonRepresentation contributedByLink = DomainObjectReprRenderer.newLinkToBuilder(resourceContext, Rel.CONTRIBUTED_BY, serviceAdapter).build();
+ final JsonRepresentation contributedByLink = DomainObjectReprRenderer.newLinkToBuilder(rendererContext, Rel.CONTRIBUTED_BY, serviceAdapter).build();
getLinks().arrayAdd(contributedByLink);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/e5093edb/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java
index 8640e7f..46aec3e 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java
@@ -30,30 +30,14 @@ import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
import org.apache.isis.viewer.restfulobjects.rendering.LinkBuilder;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
-import org.apache.isis.viewer.restfulobjects.rendering.RendererFactory;
-import org.apache.isis.viewer.restfulobjects.rendering.RendererFactoryRegistry;
-import org.apache.isis.viewer.restfulobjects.rendering.ReprRenderer;
-import org.apache.isis.viewer.restfulobjects.rendering.ReprRendererFactoryAbstract;
import org.apache.isis.viewer.restfulobjects.rendering.domaintypes.CollectionDescriptionReprRenderer;
import com.google.common.collect.Lists;
public class ObjectCollectionReprRenderer extends AbstractObjectMemberReprRenderer<ObjectCollectionReprRenderer, OneToManyAssociation> {
- public static class Factory extends ReprRendererFactoryAbstract {
-
- public Factory() {
- super(RepresentationType.OBJECT_COLLECTION);
- }
-
- @Override
- public ReprRenderer<?, ?> newRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
- return new ObjectCollectionReprRenderer(resourceContext, linkFollower, getRepresentationType(), representation);
- }
- }
-
- private ObjectCollectionReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final RepresentationType representationType, final JsonRepresentation representation) {
- super(resourceContext, linkFollower, representationType, representation, Where.PARENTED_TABLES);
+ public ObjectCollectionReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
+ super(resourceContext, linkFollower, RepresentationType.OBJECT_COLLECTION, representation, Where.PARENTED_TABLES);
}
@Override
@@ -87,7 +71,7 @@ public class ObjectCollectionReprRenderer extends AbstractObjectMemberReprRender
final List<JsonRepresentation> list = Lists.newArrayList();
for (final ObjectAdapter elementAdapter : facet.iterable(valueAdapter)) {
- final LinkBuilder newBuilder = DomainObjectReprRenderer.newLinkToBuilder(resourceContext, Rel.OBJECT, elementAdapter);
+ final LinkBuilder newBuilder = DomainObjectReprRenderer.newLinkToBuilder(rendererContext, Rel.VALUE, elementAdapter);
list.add(newBuilder.build());
}
@@ -104,8 +88,7 @@ public class ObjectCollectionReprRenderer extends AbstractObjectMemberReprRender
*/
@Override
protected void followDetailsLink(final JsonRepresentation detailsLink) {
- final RendererFactory factory = RendererFactoryRegistry.instance.find(RepresentationType.OBJECT_COLLECTION);
- final ObjectCollectionReprRenderer renderer = (ObjectCollectionReprRenderer) factory.newRenderer(getResourceContext(), getLinkFollower(), JsonRepresentation.newMap());
+ final ObjectCollectionReprRenderer renderer = new ObjectCollectionReprRenderer(getRendererContext(), getLinkFollower(), JsonRepresentation.newMap());
renderer.with(new ObjectAndCollection(objectAdapter, objectMember)).asFollowed();
detailsLink.mapPut("value", renderer.render());
}
@@ -139,7 +122,7 @@ public class ObjectCollectionReprRenderer extends AbstractObjectMemberReprRender
@Override
protected void addLinksToFormalDomainModel() {
- final LinkBuilder linkBuilder = CollectionDescriptionReprRenderer.newLinkToBuilder(resourceContext, Rel.DESCRIBEDBY, objectAdapter.getSpecification(), objectMember);
+ final LinkBuilder linkBuilder = CollectionDescriptionReprRenderer.newLinkToBuilder(rendererContext, Rel.DESCRIBEDBY, objectAdapter.getSpecification(), objectMember);
getLinks().arrayAdd(linkBuilder.build());
}
http://git-wip-us.apache.org/repos/asf/isis/blob/e5093edb/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
index 99bf332..0080524 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
@@ -28,10 +28,6 @@ import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
-import org.apache.isis.viewer.restfulobjects.rendering.RendererFactory;
-import org.apache.isis.viewer.restfulobjects.rendering.RendererFactoryRegistry;
-import org.apache.isis.viewer.restfulobjects.rendering.ReprRenderer;
-import org.apache.isis.viewer.restfulobjects.rendering.ReprRendererFactoryAbstract;
import org.apache.isis.viewer.restfulobjects.rendering.domaintypes.PropertyDescriptionReprRenderer;
import org.codehaus.jackson.node.NullNode;
@@ -39,20 +35,8 @@ import com.google.common.collect.Lists;
public class ObjectPropertyReprRenderer extends AbstractObjectMemberReprRenderer<ObjectPropertyReprRenderer, OneToOneAssociation> {
- public static class Factory extends ReprRendererFactoryAbstract {
-
- public Factory() {
- super(RepresentationType.OBJECT_PROPERTY);
- }
-
- @Override
- public ReprRenderer<?, ?> newRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
- return new ObjectPropertyReprRenderer(resourceContext, linkFollower, getRepresentationType(), representation);
- }
- }
-
- private ObjectPropertyReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final RepresentationType representationType, final JsonRepresentation representation) {
- super(resourceContext, linkFollower, representationType, representation, Where.OBJECT_FORMS);
+ public ObjectPropertyReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
+ super(resourceContext, linkFollower, RepresentationType.OBJECT_PROPERTY, representation, Where.OBJECT_FORMS);
}
@Override
@@ -88,7 +72,7 @@ public class ObjectPropertyReprRenderer extends AbstractObjectMemberReprRenderer
// REVIEW: previously was using the spec of the member, but think instead it should be the spec of the adapter itself
// final ObjectSpecification valueSpec = objectMember.getSpecification();
ObjectSpecification valueSpec = valueAdapter.getSpecification();
- return DomainObjectReprRenderer.valueOrRef(resourceContext, valueAdapter, valueSpec);
+ return DomainObjectReprRenderer.valueOrRef(rendererContext, valueAdapter, valueSpec);
}
// ///////////////////////////////////////////////////
@@ -100,8 +84,7 @@ public class ObjectPropertyReprRenderer extends AbstractObjectMemberReprRenderer
*/
@Override
protected void followDetailsLink(final JsonRepresentation detailsLink) {
- final RendererFactory factory = RendererFactoryRegistry.instance.find(RepresentationType.OBJECT_PROPERTY);
- final ObjectPropertyReprRenderer renderer = (ObjectPropertyReprRenderer) factory.newRenderer(getResourceContext(), getLinkFollower(), JsonRepresentation.newMap());
+ final ObjectPropertyReprRenderer renderer = new ObjectPropertyReprRenderer(getRendererContext(), getLinkFollower(), JsonRepresentation.newMap());
renderer.with(new ObjectAndProperty(objectAdapter, objectMember)).asFollowed();
detailsLink.mapPut("value", renderer.render());
}
@@ -145,7 +128,7 @@ public class ObjectPropertyReprRenderer extends AbstractObjectMemberReprRenderer
// REVIEW: previously was using the spec of the member, but think instead it should be the spec of the adapter itself
// final ObjectSpecification choiceSpec = objectMember.getSpecification();
final ObjectSpecification choiceSpec = objectAdapter.getSpecification();
- list.add(DomainObjectReprRenderer.valueOrRef(resourceContext, choiceAdapter, choiceSpec));
+ list.add(DomainObjectReprRenderer.valueOrRef(rendererContext, choiceAdapter, choiceSpec));
}
return list;
}
@@ -156,7 +139,7 @@ public class ObjectPropertyReprRenderer extends AbstractObjectMemberReprRenderer
@Override
protected void addLinksToFormalDomainModel() {
- getLinks().arrayAdd(PropertyDescriptionReprRenderer.newLinkToBuilder(getResourceContext(), Rel.DESCRIBEDBY, objectAdapter.getSpecification(), objectMember).build());
+ getLinks().arrayAdd(PropertyDescriptionReprRenderer.newLinkToBuilder(getRendererContext(), Rel.DESCRIBEDBY, objectAdapter.getSpecification(), objectMember).build());
}
@Override
http://git-wip-us.apache.org/repos/asf/isis/blob/e5093edb/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ScalarValueReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ScalarValueReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ScalarValueReprRenderer.java
index 0ce4116..cf51c5a 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ScalarValueReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ScalarValueReprRenderer.java
@@ -24,31 +24,29 @@ import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
-import org.apache.isis.viewer.restfulobjects.rendering.ReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.ReprRendererAbstract;
import org.apache.isis.viewer.restfulobjects.rendering.ReprRendererException;
-import org.apache.isis.viewer.restfulobjects.rendering.ReprRendererFactoryAbstract;
public class ScalarValueReprRenderer extends ReprRendererAbstract<ScalarValueReprRenderer, ObjectAdapter> {
private final JsonValueEncoder jsonValueEncoder = new JsonValueEncoder();
private ObjectSpecification returnType;
- public static class Factory extends ReprRendererFactoryAbstract {
- public Factory() {
- super(RepresentationType.SCALAR_VALUE);
- }
-
- @Override
- public ReprRenderer<?, ?> newRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
- return new ScalarValueReprRenderer(resourceContext, linkFollower, getRepresentationType(), representation);
- }
+ ScalarValueReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
+ super(resourceContext, linkFollower, null, representation); // null for representationType (there is none)
}
- private ScalarValueReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final RepresentationType representationType, final JsonRepresentation representation) {
- super(resourceContext, linkFollower, representationType, representation);
+ /**
+ * Fail early...
+ *
+ * <p>
+ * In case I forget in the future that scalar values don't have a representation.
+ */
+ @Override
+ public RepresentationType getRepresentationType() {
+ throw new UnsupportedOperationException("no representationType defined for scalar values");
}
-
+
@Override
public ScalarValueReprRenderer with(final ObjectAdapter objectAdapter) {
final EncodableFacet facet = objectAdapter.getSpecification().getFacet(EncodableFacet.class);
@@ -60,7 +58,7 @@ public class ScalarValueReprRenderer extends ReprRendererAbstract<ScalarValueRep
representation.mapPut("value", value);
return this;
}
-
+
@Override
public JsonRepresentation render() {
http://git-wip-us.apache.org/repos/asf/isis/blob/e5093edb/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/AbstractTypeMemberReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/AbstractTypeMemberReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/AbstractTypeMemberReprRenderer.java
index 1347e41..5424533 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/AbstractTypeMemberReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/AbstractTypeMemberReprRenderer.java
@@ -57,7 +57,7 @@ public abstract class AbstractTypeMemberReprRenderer<R extends ReprRendererAbstr
@Override
protected void addLinkUpToParent() {
- final LinkBuilder parentLinkBuilder = DomainTypeReprRenderer.newLinkToBuilder(resourceContext, Rel.UP, objectSpecification);
+ final LinkBuilder parentLinkBuilder = DomainTypeReprRenderer.newLinkToBuilder(rendererContext, Rel.UP, objectSpecification);
getLinks().arrayAdd(parentLinkBuilder.build());
}
@@ -68,7 +68,7 @@ public abstract class AbstractTypeMemberReprRenderer<R extends ReprRendererAbstr
}
final ObjectMember objectMember = getObjectFeature();
- final LinkBuilder linkBuilder = LinkBuilder.newBuilder(getResourceContext(), Rel.SELF, getRepresentationType(), "domainTypes/%s/%s%s", getParentSpecification().getFullIdentifier(), getMemberType().getUrlPart(), objectMember.getId());
+ final LinkBuilder linkBuilder = LinkBuilder.newBuilder(getRendererContext(), Rel.SELF.getName(), getRepresentationType(), "domainTypes/%s/%s%s", getParentSpecification().getFullIdentifier(), getMemberType().getUrlPart(), objectMember.getId());
getLinks().arrayAdd(linkBuilder.build());
}
http://git-wip-us.apache.org/repos/asf/isis/blob/e5093edb/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/ActionDescriptionReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/ActionDescriptionReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/ActionDescriptionReprRenderer.java
index e6ff5f7..2388c09 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/ActionDescriptionReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/ActionDescriptionReprRenderer.java
@@ -28,32 +28,18 @@ import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
import org.apache.isis.viewer.restfulobjects.rendering.LinkBuilder;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
-import org.apache.isis.viewer.restfulobjects.rendering.ReprRenderer;
-import org.apache.isis.viewer.restfulobjects.rendering.ReprRendererFactoryAbstract;
public class ActionDescriptionReprRenderer extends AbstractTypeMemberReprRenderer<ActionDescriptionReprRenderer, ObjectAction> {
- public static class Factory extends ReprRendererFactoryAbstract {
-
- public Factory() {
- super(RepresentationType.ACTION_DESCRIPTION);
- }
-
- @Override
- public ReprRenderer<?, ?> newRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
- return new ActionDescriptionReprRenderer(resourceContext, linkFollower, getRepresentationType(), representation);
- }
- }
-
public static LinkBuilder newLinkToBuilder(final RendererContext resourceContext, final Rel rel, final ObjectSpecification objectSpecification, final ObjectAction objectAction) {
final String typeFullName = objectSpecification.getFullIdentifier();
final String actionId = objectAction.getId();
final String url = "domainTypes/" + typeFullName + "/actions/" + actionId;
- return LinkBuilder.newBuilder(resourceContext, rel, RepresentationType.ACTION_DESCRIPTION, url);
+ return LinkBuilder.newBuilder(resourceContext, rel.getName(), RepresentationType.ACTION_DESCRIPTION, url);
}
- public ActionDescriptionReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final RepresentationType representationType, final JsonRepresentation representation) {
- super(resourceContext, linkFollower, representationType, representation);
+ public ActionDescriptionReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
+ super(resourceContext, linkFollower, RepresentationType.ACTION_DESCRIPTION, representation);
}
@Override
@@ -67,7 +53,7 @@ public class ActionDescriptionReprRenderer extends AbstractTypeMemberReprRendere
final JsonRepresentation parameterList = JsonRepresentation.newArray();
final List<ObjectActionParameter> parameters = getObjectFeature().getParameters();
for (final ObjectActionParameter parameter : parameters) {
- final LinkBuilder linkBuilder = ActionParameterDescriptionReprRenderer.newLinkToBuilder(getResourceContext(), Rel.ACTION_PARAM, objectSpecification, parameter);
+ final LinkBuilder linkBuilder = ActionParameterDescriptionReprRenderer.newLinkToBuilder(getRendererContext(), Rel.ACTION_PARAM, objectSpecification, parameter);
parameterList.arrayAdd(linkBuilder.build());
}
@@ -80,7 +66,7 @@ public class ActionDescriptionReprRenderer extends AbstractTypeMemberReprRendere
return;
}
final ObjectSpecification typeOfSpec = facet.valueSpec();
- final LinkBuilder linkBuilder = DomainTypeReprRenderer.newLinkToBuilder(getResourceContext(), Rel.ELEMENT_TYPE, typeOfSpec);
+ final LinkBuilder linkBuilder = DomainTypeReprRenderer.newLinkToBuilder(getRendererContext(), Rel.ELEMENT_TYPE, typeOfSpec);
getLinks().arrayAdd(linkBuilder.build());
}
@@ -89,7 +75,7 @@ public class ActionDescriptionReprRenderer extends AbstractTypeMemberReprRendere
if (returnType == null) {
return;
}
- final LinkBuilder linkBuilder = DomainTypeReprRenderer.newLinkToBuilder(getResourceContext(), Rel.RETURN_TYPE, returnType);
+ final LinkBuilder linkBuilder = DomainTypeReprRenderer.newLinkToBuilder(getRendererContext(), Rel.RETURN_TYPE, returnType);
getLinks().arrayAdd(linkBuilder.build());
}
http://git-wip-us.apache.org/repos/asf/isis/blob/e5093edb/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/ActionParameterDescriptionReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/ActionParameterDescriptionReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/ActionParameterDescriptionReprRenderer.java
index e605952..8c7a53f 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/ActionParameterDescriptionReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/ActionParameterDescriptionReprRenderer.java
@@ -26,34 +26,20 @@ import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
import org.apache.isis.viewer.restfulobjects.rendering.LinkBuilder;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
-import org.apache.isis.viewer.restfulobjects.rendering.ReprRenderer;
-import org.apache.isis.viewer.restfulobjects.rendering.ReprRendererFactoryAbstract;
public class ActionParameterDescriptionReprRenderer extends AbstractTypeFeatureReprRenderer<ActionParameterDescriptionReprRenderer, ObjectActionParameter> {
- public static class Factory extends ReprRendererFactoryAbstract {
-
- public Factory() {
- super(RepresentationType.ACTION_PARAMETER_DESCRIPTION);
- }
-
- @Override
- public ReprRenderer<?, ?> newRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
- return new ActionParameterDescriptionReprRenderer(resourceContext, linkFollower, getRepresentationType(), representation);
- }
- }
-
public static LinkBuilder newLinkToBuilder(final RendererContext resourceContext, final Rel rel, final ObjectSpecification objectSpecification, final ObjectActionParameter objectActionParameter) {
final String typeFullName = objectSpecification.getFullIdentifier();
final ObjectAction objectAction = objectActionParameter.getAction();
final String actionId = objectAction.getId();
final String paramName = objectActionParameter.getName();
final String url = String.format("domainTypes/%s/actions/%s/params/%s", typeFullName, actionId, paramName);
- return LinkBuilder.newBuilder(resourceContext, rel, RepresentationType.ACTION_PARAMETER_DESCRIPTION, url).withId(deriveId(objectActionParameter));
+ return LinkBuilder.newBuilder(resourceContext, rel.andParam("id", deriveId(objectActionParameter)), RepresentationType.ACTION_PARAMETER_DESCRIPTION, url);
}
- public ActionParameterDescriptionReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final RepresentationType representationType, final JsonRepresentation representation) {
- super(resourceContext, linkFollower, representationType, representation);
+ public ActionParameterDescriptionReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
+ super(resourceContext, linkFollower, RepresentationType.ACTION_PARAMETER_DESCRIPTION, representation);
}
@Override
@@ -79,14 +65,14 @@ public class ActionParameterDescriptionReprRenderer extends AbstractTypeFeatureR
if (!includesSelf) {
return;
}
- getLinks().arrayAdd(newLinkToBuilder(getResourceContext(), Rel.SELF, getParentSpecification(), getObjectFeature()).build());
+ getLinks().arrayAdd(newLinkToBuilder(getRendererContext(), Rel.SELF, getParentSpecification(), getObjectFeature()).build());
}
@Override
protected void addLinkUpToParent() {
final ObjectAction parentAction = this.objectFeature.getAction();
- final LinkBuilder parentLinkBuilder = ActionDescriptionReprRenderer.newLinkToBuilder(resourceContext, Rel.UP, objectSpecification, parentAction);
+ final LinkBuilder parentLinkBuilder = ActionDescriptionReprRenderer.newLinkToBuilder(rendererContext, Rel.UP, objectSpecification, parentAction);
getLinks().arrayAdd(parentLinkBuilder.build());
}
@@ -103,7 +89,7 @@ public class ActionParameterDescriptionReprRenderer extends AbstractTypeFeatureR
@Override
protected void addLinksSpecificToFeature() {
- final LinkBuilder linkBuilder = DomainTypeReprRenderer.newLinkToBuilder(resourceContext, Rel.RETURN_TYPE, objectFeature.getSpecification());
+ final LinkBuilder linkBuilder = DomainTypeReprRenderer.newLinkToBuilder(rendererContext, Rel.RETURN_TYPE, objectFeature.getSpecification());
getLinks().arrayAdd(linkBuilder.build());
}
http://git-wip-us.apache.org/repos/asf/isis/blob/e5093edb/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/CollectionDescriptionReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/CollectionDescriptionReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/CollectionDescriptionReprRenderer.java
index fffd379..28338e7 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/CollectionDescriptionReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/CollectionDescriptionReprRenderer.java
@@ -24,32 +24,18 @@ import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
import org.apache.isis.viewer.restfulobjects.rendering.LinkBuilder;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
-import org.apache.isis.viewer.restfulobjects.rendering.ReprRenderer;
-import org.apache.isis.viewer.restfulobjects.rendering.ReprRendererFactoryAbstract;
public class CollectionDescriptionReprRenderer extends AbstractTypeMemberReprRenderer<CollectionDescriptionReprRenderer, OneToManyAssociation> {
- public static class Factory extends ReprRendererFactoryAbstract {
-
- public Factory() {
- super(RepresentationType.COLLECTION_DESCRIPTION);
- }
-
- @Override
- public ReprRenderer<?, ?> newRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
- return new CollectionDescriptionReprRenderer(resourceContext, linkFollower, getRepresentationType(), representation);
- }
- }
-
public static LinkBuilder newLinkToBuilder(final RendererContext resourceContext, final Rel rel, final ObjectSpecification objectSpecification, final OneToManyAssociation collection) {
final String typeFullName = objectSpecification.getFullIdentifier();
final String collectionId = collection.getId();
final String url = "domainTypes/" + typeFullName + "/collections/" + collectionId;
- return LinkBuilder.newBuilder(resourceContext, rel, RepresentationType.COLLECTION_DESCRIPTION, url);
+ return LinkBuilder.newBuilder(resourceContext, rel.getName(), RepresentationType.COLLECTION_DESCRIPTION, url);
}
- public CollectionDescriptionReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final RepresentationType representationType, final JsonRepresentation representation) {
- super(resourceContext, linkFollower, representationType, representation);
+ public CollectionDescriptionReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
+ super(resourceContext, linkFollower, RepresentationType.COLLECTION_DESCRIPTION, representation);
}
@Override
@@ -62,7 +48,7 @@ public class CollectionDescriptionReprRenderer extends AbstractTypeMemberReprRen
if (elementType == null) {
return;
}
- final LinkBuilder linkBuilder = DomainTypeReprRenderer.newLinkToBuilder(getResourceContext(), Rel.ELEMENT_TYPE, elementType);
+ final LinkBuilder linkBuilder = DomainTypeReprRenderer.newLinkToBuilder(getRendererContext(), Rel.ELEMENT_TYPE, elementType);
getLinks().arrayAdd(linkBuilder.build());
}
http://git-wip-us.apache.org/repos/asf/isis/blob/e5093edb/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/DomainTypeReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/DomainTypeReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/DomainTypeReprRenderer.java
index 6ad82fd..6a27775 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/DomainTypeReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/DomainTypeReprRenderer.java
@@ -30,36 +30,23 @@ import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
import org.apache.isis.viewer.restfulobjects.rendering.LinkBuilder;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
-import org.apache.isis.viewer.restfulobjects.rendering.ReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.ReprRendererAbstract;
-import org.apache.isis.viewer.restfulobjects.rendering.ReprRendererFactoryAbstract;
import org.codehaus.jackson.node.NullNode;
import com.google.common.base.Strings;
public class DomainTypeReprRenderer extends ReprRendererAbstract<DomainTypeReprRenderer, ObjectSpecification> {
- public static class Factory extends ReprRendererFactoryAbstract {
- public Factory() {
- super(RepresentationType.DOMAIN_TYPE);
- }
-
- @Override
- public ReprRenderer<?, ?> newRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
- return new DomainTypeReprRenderer(resourceContext, linkFollower, getRepresentationType(), representation);
- }
- }
-
public static LinkBuilder newLinkToBuilder(final RendererContext resourceContext, final Rel rel, final ObjectSpecification objectSpec) {
final String typeFullName = objectSpec.getFullIdentifier();
final String url = "domainTypes/" + typeFullName;
- return LinkBuilder.newBuilder(resourceContext, rel, RepresentationType.DOMAIN_TYPE, url);
+ return LinkBuilder.newBuilder(resourceContext, rel.getName(), RepresentationType.DOMAIN_TYPE, url);
}
private ObjectSpecification objectSpecification;
- public DomainTypeReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final RepresentationType representationType, final JsonRepresentation representation) {
- super(resourceContext, linkFollower, representationType, representation);
+ public DomainTypeReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
+ super(resourceContext, linkFollower, RepresentationType.DOMAIN_TYPE, representation);
}
@Override
@@ -77,7 +64,7 @@ public class DomainTypeReprRenderer extends ReprRendererAbstract<DomainTypeReprR
// self
if (includesSelf) {
- final JsonRepresentation selfLink = newLinkToBuilder(getResourceContext(), Rel.SELF, objectSpecification).build();
+ final JsonRepresentation selfLink = newLinkToBuilder(getRendererContext(), Rel.SELF, objectSpecification).build();
getLinks().arrayAdd(selfLink);
}
@@ -100,17 +87,17 @@ public class DomainTypeReprRenderer extends ReprRendererAbstract<DomainTypeReprR
for (final ObjectAssociation association : associations) {
if (association.isOneToOneAssociation()) {
final OneToOneAssociation property = (OneToOneAssociation) association;
- final LinkBuilder linkBuilder = PropertyDescriptionReprRenderer.newLinkToBuilder(getResourceContext(), Rel.PROPERTY, objectSpecification, property);
+ final LinkBuilder linkBuilder = PropertyDescriptionReprRenderer.newLinkToBuilder(getRendererContext(), Rel.PROPERTY, objectSpecification, property);
membersList.arrayAdd(linkBuilder.build());
} else if (association.isOneToManyAssociation()) {
final OneToManyAssociation collection = (OneToManyAssociation) association;
- final LinkBuilder linkBuilder = CollectionDescriptionReprRenderer.newLinkToBuilder(getResourceContext(), Rel.PROPERTY, objectSpecification, collection);
+ final LinkBuilder linkBuilder = CollectionDescriptionReprRenderer.newLinkToBuilder(getRendererContext(), Rel.PROPERTY, objectSpecification, collection);
membersList.arrayAdd(linkBuilder.build());
}
}
final List<ObjectAction> actions = objectSpecification.getObjectActions(Contributed.INCLUDED);
for (final ObjectAction action : actions) {
- final LinkBuilder linkBuilder = ActionDescriptionReprRenderer.newLinkToBuilder(getResourceContext(), Rel.ACTION, objectSpecification, action);
+ final LinkBuilder linkBuilder = ActionDescriptionReprRenderer.newLinkToBuilder(getRendererContext(), Rel.ACTION, objectSpecification, action);
membersList.arrayAdd(linkBuilder.build());
}
}
@@ -127,32 +114,23 @@ public class DomainTypeReprRenderer extends ReprRendererAbstract<DomainTypeReprR
private void addTypeActions() {
getTypeActions().arrayAdd(linkToIsSubtypeOf());
getTypeActions().arrayAdd(linkToIsSupertypeOf());
- getTypeActions().arrayAdd(linkToNewTransientInstance());
}
private JsonRepresentation linkToIsSubtypeOf() {
final String url = "domainTypes/" + objectSpecification.getFullIdentifier() + "/typeactions/isSubtypeOf/invoke";
- final LinkBuilder linkBuilder = LinkBuilder.newBuilder(getResourceContext(), Rel.TYPE_ACTION, RepresentationType.TYPE_ACTION_RESULT, url);
- final JsonRepresentation arguments = argumentsTo(getResourceContext(), "supertype", null);
- final JsonRepresentation link = linkBuilder.withArguments(arguments).withId("isSubtypeOf").build();
+ final LinkBuilder linkBuilder = LinkBuilder.newBuilder(getRendererContext(), Rel.INVOKE.andParam("typeaction", "isSubtypeOf"), RepresentationType.TYPE_ACTION_RESULT, url);
+ final JsonRepresentation arguments = argumentsTo(getRendererContext(), "supertype", null);
+ final JsonRepresentation link = linkBuilder.withArguments(arguments).build();
return link;
}
private JsonRepresentation linkToIsSupertypeOf() {
final String url = "domainTypes/" + objectSpecification.getFullIdentifier() + "/typeactions/isSupertypeOf/invoke";
- final LinkBuilder linkBuilder = LinkBuilder.newBuilder(getResourceContext(), Rel.TYPE_ACTION, RepresentationType.TYPE_ACTION_RESULT, url);
- final JsonRepresentation arguments = argumentsTo(getResourceContext(), "subtype", null);
- final JsonRepresentation link = linkBuilder.withArguments(arguments).withId("isSupertypeOf").build();
- return link;
- }
-
- private JsonRepresentation linkToNewTransientInstance() {
- final String url = "domainTypes/" + objectSpecification.getFullIdentifier() + "/typeactions/newTransientInstance/invoke";
-
- final LinkBuilder linkBuilder = LinkBuilder.newBuilder(getResourceContext(), Rel.TYPE_ACTION, RepresentationType.TYPE_ACTION_RESULT, url);
- final JsonRepresentation link = linkBuilder.withId("newTransientInstance").build();
+ final LinkBuilder linkBuilder = LinkBuilder.newBuilder(getRendererContext(), Rel.INVOKE.andParam("typeaction", "isSupertypeOf"), RepresentationType.TYPE_ACTION_RESULT, url);
+ final JsonRepresentation arguments = argumentsTo(getRendererContext(), "subtype", null);
+ final JsonRepresentation link = linkBuilder.withArguments(arguments).build();
return link;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/e5093edb/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/PropertyDescriptionReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/PropertyDescriptionReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/PropertyDescriptionReprRenderer.java
index ba3e0fd..8fa12fc 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/PropertyDescriptionReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/PropertyDescriptionReprRenderer.java
@@ -25,32 +25,18 @@ import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
import org.apache.isis.viewer.restfulobjects.rendering.LinkBuilder;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
-import org.apache.isis.viewer.restfulobjects.rendering.ReprRenderer;
-import org.apache.isis.viewer.restfulobjects.rendering.ReprRendererFactoryAbstract;
public class PropertyDescriptionReprRenderer extends AbstractTypeMemberReprRenderer<PropertyDescriptionReprRenderer, OneToOneAssociation> {
- public static class Factory extends ReprRendererFactoryAbstract {
-
- public Factory() {
- super(RepresentationType.PROPERTY_DESCRIPTION);
- }
-
- @Override
- public ReprRenderer<?, ?> newRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
- return new PropertyDescriptionReprRenderer(resourceContext, linkFollower, getRepresentationType(), representation);
- }
- }
-
public static LinkBuilder newLinkToBuilder(final RendererContext resourceContext, final Rel rel, final ObjectSpecification objectSpecification, final OneToOneAssociation property) {
final String typeFullName = objectSpecification.getFullIdentifier();
final String propertyId = property.getId();
final String url = "domainTypes/" + typeFullName + "/properties/" + propertyId;
- return LinkBuilder.newBuilder(resourceContext, rel, RepresentationType.PROPERTY_DESCRIPTION, url);
+ return LinkBuilder.newBuilder(resourceContext, rel.getName(), RepresentationType.PROPERTY_DESCRIPTION, url);
}
- public PropertyDescriptionReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final RepresentationType representationType, final JsonRepresentation representation) {
- super(resourceContext, linkFollower, representationType, representation);
+ public PropertyDescriptionReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
+ super(resourceContext, linkFollower, RepresentationType.PROPERTY_DESCRIPTION, representation);
}
@Override
@@ -72,7 +58,7 @@ public class PropertyDescriptionReprRenderer extends AbstractTypeMemberReprRende
if (returnType == null) {
return;
}
- final LinkBuilder linkBuilder = DomainTypeReprRenderer.newLinkToBuilder(getResourceContext(), Rel.RETURN_TYPE, returnType);
+ final LinkBuilder linkBuilder = DomainTypeReprRenderer.newLinkToBuilder(getRendererContext(), Rel.RETURN_TYPE, returnType);
getLinks().arrayAdd(linkBuilder.build());
}
http://git-wip-us.apache.org/repos/asf/isis/blob/e5093edb/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/TypeActionResultReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/TypeActionResultReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/TypeActionResultReprRenderer.java
index d748343..8a40a9c 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/TypeActionResultReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/TypeActionResultReprRenderer.java
@@ -22,29 +22,16 @@ import org.apache.isis.viewer.restfulobjects.applib.LinkRepresentation;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
-import org.apache.isis.viewer.restfulobjects.rendering.ReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.ReprRendererAbstract;
-import org.apache.isis.viewer.restfulobjects.rendering.ReprRendererFactoryAbstract;
public class TypeActionResultReprRenderer extends ReprRendererAbstract<TypeActionResultReprRenderer, ObjectSpecification> {
- public static class Factory extends ReprRendererFactoryAbstract {
- public Factory() {
- super(RepresentationType.TYPE_ACTION_RESULT);
- }
-
- @Override
- public ReprRenderer<?, ?> newRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
- return new TypeActionResultReprRenderer(resourceContext, linkFollower, getRepresentationType(), representation);
- }
- }
-
private ObjectSpecification objectSpecification;
private LinkRepresentation selfLink;
private Object value;
- public TypeActionResultReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final RepresentationType representationType, final JsonRepresentation representation) {
- super(resourceContext, linkFollower, representationType, representation);
+ public TypeActionResultReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
+ super(resourceContext, linkFollower, RepresentationType.TYPE_ACTION_RESULT, representation);
}
@Override
http://git-wip-us.apache.org/repos/asf/isis/blob/e5093edb/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/TypeListReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/TypeListReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/TypeListReprRenderer.java
index e3317d2..f7a1dd0 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/TypeListReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/TypeListReprRenderer.java
@@ -27,27 +27,14 @@ import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
import org.apache.isis.viewer.restfulobjects.rendering.LinkBuilder;
import org.apache.isis.viewer.restfulobjects.rendering.LinkFollower;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
-import org.apache.isis.viewer.restfulobjects.rendering.ReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.ReprRendererAbstract;
-import org.apache.isis.viewer.restfulobjects.rendering.ReprRendererFactoryAbstract;
public class TypeListReprRenderer extends ReprRendererAbstract<TypeListReprRenderer, Collection<ObjectSpecification>> {
private Collection<ObjectSpecification> specifications;
- public static class Factory extends ReprRendererFactoryAbstract {
- public Factory() {
- super(RepresentationType.TYPE_LIST);
- }
-
- @Override
- public ReprRenderer<?, ?> newRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
- return new TypeListReprRenderer(resourceContext, linkFollower, getRepresentationType(), representation);
- }
- }
-
- private TypeListReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final RepresentationType representationType, final JsonRepresentation representation) {
- super(resourceContext, linkFollower, representationType, representation);
+ public TypeListReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
+ super(resourceContext, linkFollower, RepresentationType.TYPE_LIST, representation);
}
@Override
@@ -66,7 +53,7 @@ public class TypeListReprRenderer extends ReprRendererAbstract<TypeListReprRende
final JsonRepresentation specList = JsonRepresentation.newArray();
for (final ObjectSpecification objectSpec : specifications) {
- final LinkBuilder linkBuilder = LinkBuilder.newBuilder(getResourceContext(), Rel.DOMAIN_TYPE, RepresentationType.DOMAIN_TYPE, "domainTypes/%s", objectSpec.getFullIdentifier());
+ final LinkBuilder linkBuilder = LinkBuilder.newBuilder(getRendererContext(), Rel.DOMAIN_TYPE.getName(), RepresentationType.DOMAIN_TYPE, "domainTypes/%s", objectSpec.getFullIdentifier());
specList.arrayAdd(linkBuilder.build());
}
http://git-wip-us.apache.org/repos/asf/isis/blob/e5093edb/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/eventserializer/RestfulObjectsSpecEventSerializer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/eventserializer/RestfulObjectsSpecEventSerializer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/eventserializer/RestfulObjectsSpecEventSerializer.java
index 8e87490..b154e9b 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/eventserializer/RestfulObjectsSpecEventSerializer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/eventserializer/RestfulObjectsSpecEventSerializer.java
@@ -25,8 +25,6 @@ public class RestfulObjectsSpecEventSerializer implements EventSerializer {
private final static JsonMapper jsonMapper = JsonMapper.instance();
- private final static DomainObjectReprRenderer.Factory objectRendererFactory = new DomainObjectReprRenderer.Factory();
-
private final static String BASE_URL_KEY = "isis.viewer.restfulobjects.RestfulObjectsSpecEventSerializer.baseUrl";
private static final String BASE_URL_DEFAULT = "http://localhost:8080/restful/";
@@ -65,7 +63,7 @@ public class RestfulObjectsSpecEventSerializer implements EventSerializer {
}
JsonRepresentation asPayloadRepr(final RendererContext rendererContext, EventPayload payload) {
- final DomainObjectReprRenderer renderer = (DomainObjectReprRenderer) objectRendererFactory.newRenderer(rendererContext, null, JsonRepresentation.newMap());
+ final DomainObjectReprRenderer renderer = new DomainObjectReprRenderer(rendererContext, null, JsonRepresentation.newMap());
final ObjectAdapter objectAdapter = rendererContext.getAdapterManager().adapterFor(payload);
renderer.with(objectAdapter).asEventSerialization();
return renderer.render();
http://git-wip-us.apache.org/repos/asf/isis/blob/e5093edb/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/util/OidUtils.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/util/OidUtils.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/util/OidUtils.java
index b2bb20c..e202bf8 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/util/OidUtils.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/util/OidUtils.java
@@ -22,6 +22,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.oid.Oid;
import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
import org.apache.isis.core.metamodel.adapter.oid.RootOid;
+import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
public final class OidUtils {
@@ -29,7 +30,22 @@ public final class OidUtils {
private OidUtils() {
}
- public static String getOidStr(final RendererContext resourceContext, final ObjectAdapter objectAdapter) {
+ public static String getDomainType(final ObjectAdapter objectAdapter) {
+ Oid oid = objectAdapter.getOid();
+ if(oid == null || !(oid instanceof TypedOid)) {
+ return null;
+ }
+ TypedOid typedOid = (TypedOid) oid;
+ return typedOid.getObjectSpecId().asString();
+ }
+
+ public static String getInstanceId(final RendererContext renderContext, final ObjectAdapter objectAdapter) {
+ String oidStr = getOidStr(renderContext, objectAdapter);
+ // REVIEW: it's a bit hokey to join these together just to split them out again.
+ return oidStr != null ? getOidMarshaller().splitInstanceId(oidStr): null;
+ }
+
+ public static String getOidStr(final RendererContext renderContext, final ObjectAdapter objectAdapter) {
final Oid oid = objectAdapter.getOid();
if(!(oid instanceof RootOid)) {
throw new IllegalArgumentException("objectAdapter must be a root adapter");
@@ -37,7 +53,7 @@ public final class OidUtils {
return oid != null ? oid.enString(getOidMarshaller()) : null;
}
- protected static OidMarshaller getOidMarshaller() {
+ private static OidMarshaller getOidMarshaller() {
return new OidMarshaller();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/e5093edb/component/viewer/restfulobjects/rendering/src/test/java/org/apache/isis/viewer/restfulobjects/rendering/LinkFollowerTest_follow.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/test/java/org/apache/isis/viewer/restfulobjects/rendering/LinkFollowerTest_follow.java b/component/viewer/restfulobjects/rendering/src/test/java/org/apache/isis/viewer/restfulobjects/rendering/LinkFollowerTest_follow.java
index e2a38f5..dbb678d 100644
--- a/component/viewer/restfulobjects/rendering/src/test/java/org/apache/isis/viewer/restfulobjects/rendering/LinkFollowerTest_follow.java
+++ b/component/viewer/restfulobjects/rendering/src/test/java/org/apache/isis/viewer/restfulobjects/rendering/LinkFollowerTest_follow.java
@@ -116,6 +116,53 @@ public class LinkFollowerTest_follow {
assertThat(followA.matches(JsonRepresentation.newMap("x", "y", "z", "bad")), is(false));
}
+
+ @Test
+ public void simple_multiplePaths() throws Exception {
+ final List<List<String>> links = asListOfLists("a.b.c,x.y.z");
+
+ final LinkFollower linkFollower = LinkFollower.create(links);
+
+ LinkFollower followA = linkFollower.follow("a");
+ assertThat(followA.isFollowing(), is(true));
+ assertThat(followA.isTerminated(), is(false));
+
+ LinkFollower followX = linkFollower.follow("x");
+ assertThat(followX.isFollowing(), is(true));
+ assertThat(followX.isTerminated(), is(false));
+
+ LinkFollower followXY = followX.follow("y");
+ assertThat(followXY.isFollowing(), is(true));
+ assertThat(followXY.isTerminated(), is(false));
+
+ LinkFollower followXYZ = followXY.follow("z");
+ assertThat(followXYZ.isFollowing(), is(true));
+ assertThat(followXYZ.isTerminated(), is(false));
+
+ LinkFollower followXYZQ = followXY.follow("q");
+ assertThat(followXYZQ.isFollowing(), is(false));
+ assertThat(followXYZQ.isTerminated(), is(true));
+ }
+
+ @Test
+ public void multiplePaths_withCriteria() throws Exception {
+ final List<List<String>> links = asListOfLists("links[rel=urn:org.restfulobjects:rels/version].x,links[rel=urn:org.restfulobjects:rels/user].y");
+
+ final LinkFollower linkFollower = LinkFollower.create(links);
+
+ LinkFollower followRelVersion = linkFollower.follow("links[rel=urn:org.restfulobjects:rels/version]");
+ assertThat(followRelVersion.isFollowing(), is(true));
+ assertThat(followRelVersion.isTerminated(), is(false));
+
+ assertThat(followRelVersion.follow("x").isFollowing(), is(true));
+
+ LinkFollower followRelUser = linkFollower.follow("links[rel=urn:org.restfulobjects:rels/user]");
+ assertThat(followRelUser.isFollowing(), is(true));
+ assertThat(followRelUser.isTerminated(), is(false));
+ assertThat(followRelUser.follow("y").isFollowing(), is(true));
+ }
+
+
private List<List<String>> asListOfLists(final String string) {
return Parser.forListOfListOfStrings().valueOf(string);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/e5093edb/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java b/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
index 07e6064..e5c0ebd 100644
--- a/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
+++ b/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
@@ -159,52 +159,27 @@ public class ResourceContext implements RendererContext {
if (representationType == null) {
return;
}
- final MediaType producedType = representationType.getMediaType();
-
- final List<MediaType> acceptedMediaTypes = acceptedMediaTypes();
- if(Iterables.tryFind(acceptedMediaTypes, accepts(producedType)).isPresent()) {
- return;
- }
- throw RestfulObjectsApplicationException.create(HttpStatusCode.NOT_ACCEPTABLE, "Resource produces %s media type", representationType.getMediaType());
- }
-
- private static Predicate<MediaType> accepts(final MediaType producedType) {
- return new Predicate<MediaType>() {
- @Override
- public boolean apply(MediaType accepted) {
- return producedType.isCompatible(accepted);
+ // RestEasy will check the basic media types...
+ // ... so we just need to check the profile paramter
+ final String producedProfile = representationType.getMediaTypeProfile();
+ if(producedProfile != null) {
+ for (MediaType mediaType : httpHeaders.getAcceptableMediaTypes()) {
+ String acceptedProfileValue = mediaType.getParameters().get("profile");
+ if(acceptedProfileValue == null) {
+ continue;
+ }
+ if(!producedProfile.equals(acceptedProfileValue)) {
+ throw RestfulObjectsApplicationException.create(HttpStatusCode.NOT_ACCEPTABLE);
+ }
}
- };
-
+ }
}
protected boolean contains(final com.google.common.net.MediaType producedType, final List<MediaType> acceptableMediaTypes) {
return acceptableMediaTypes.contains(producedType);
}
- /**
- * If no media type has a profile parameter, then simply return all the
- * media types.
- *
- * <p>
- * Otherwise, though, filter out the {@link MediaType#APPLICATION_JSON_TYPE
- * generic application/json} media type if it is present.
- */
- private List<MediaType> acceptedMediaTypes() {
- final List<MediaType> acceptableMediaTypes = getHttpHeaders().getAcceptableMediaTypes();
- if (Collections2.filter(acceptableMediaTypes, MEDIA_TYPE_CONTAINS_PROFILE).isEmpty()) {
- return acceptableMediaTypes;
- }
- return Lists.newArrayList(Iterables.filter(acceptableMediaTypes, MEDIA_TYPE_NOT_GENERIC_APPLICATION_JSON));
- }
-
- private boolean compatible(final MediaType acceptedMediaType, final RepresentationType representationType) {
- final MediaType producedJaxRsMediaType = representationType.getMediaType();
- final String profile = acceptedMediaType.getParameters().get("profile");
- return profile == null ? acceptedMediaType.isCompatible(producedJaxRsMediaType) : acceptedMediaType.equals(producedJaxRsMediaType);
- }
-
public List<List<String>> getFollowLinks() {
return followLinks;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/e5093edb/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RestfulObjectsApplication.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RestfulObjectsApplication.java b/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RestfulObjectsApplication.java
index d29af4a..8cbbda1 100644
--- a/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RestfulObjectsApplication.java
+++ b/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RestfulObjectsApplication.java
@@ -18,15 +18,11 @@
*/
package org.apache.isis.viewer.restfulobjects.server;
-import org.apache.isis.viewer.restfulobjects.rendering.RendererFactoryRegistry;
import org.apache.isis.viewer.restfulobjects.server.resources.DomainObjectResourceServerside;
import org.apache.isis.viewer.restfulobjects.server.resources.DomainServiceResourceServerside;
import org.apache.isis.viewer.restfulobjects.server.resources.DomainTypeResourceServerside;
-import org.apache.isis.viewer.restfulobjects.server.resources.HomePageReprRenderer;
import org.apache.isis.viewer.restfulobjects.server.resources.HomePageResourceServerside;
-import org.apache.isis.viewer.restfulobjects.server.resources.UserReprRenderer;
import org.apache.isis.viewer.restfulobjects.server.resources.UserResourceServerside;
-import org.apache.isis.viewer.restfulobjects.server.resources.VersionReprRenderer;
import org.apache.isis.viewer.restfulobjects.server.resources.VersionResourceServerside;
public class RestfulObjectsApplication extends AbstractJaxRsApplication {
@@ -44,10 +40,6 @@ public class RestfulObjectsApplication extends AbstractJaxRsApplication {
addSingleton(new RestfulObjectsApplicationExceptionMapper());
addSingleton(new RuntimeExceptionMapper());
- RendererFactoryRegistry.instance.register(new HomePageReprRenderer.Factory());
- RendererFactoryRegistry.instance.register(new UserReprRenderer.Factory());
- RendererFactoryRegistry.instance.register(new VersionReprRenderer.Factory());
-
// TODO: doesn't get injected
// addSingleton(new TypedReprBuilderFactoryRegistry());
http://git-wip-us.apache.org/repos/asf/isis/blob/e5093edb/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RuntimeExceptionMapper.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RuntimeExceptionMapper.java b/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RuntimeExceptionMapper.java
index 763681b..47f41b4 100644
--- a/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RuntimeExceptionMapper.java
+++ b/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RuntimeExceptionMapper.java
@@ -32,13 +32,19 @@ import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.isis.viewer.restfulobjects.applib.RestfulMediaType;
import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
import org.apache.isis.viewer.restfulobjects.applib.util.JsonMapper;
+import org.jboss.resteasy.spi.Failure;
@Provider
public class RuntimeExceptionMapper implements ExceptionMapper<RuntimeException> {
@Override
public Response toResponse(final RuntimeException ex) {
- final ResponseBuilder builder = Response.status(HttpStatusCode.INTERNAL_SERVER_ERROR.getJaxrsStatusType()).type(RestfulMediaType.APPLICATION_JSON_ERROR).entity(jsonFor(ex));
+ HttpStatusCode statusCode = HttpStatusCode.INTERNAL_SERVER_ERROR;
+ if(ex instanceof Failure) {
+ Failure failure = (Failure) ex;
+ statusCode = HttpStatusCode.statusFor(failure.getErrorCode());
+ }
+ final ResponseBuilder builder = Response.status(statusCode.getJaxrsStatusType()).type(RestfulMediaType.APPLICATION_JSON_ERROR).entity(jsonFor(ex));
return builder.build();
}