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 2014/10/24 18:03:29 UTC
[15/15] git commit: ISIS-933: config properties to override RO
defaults for simplified/suppressed representations.
ISIS-933: config properties to override RO defaults for simplified/suppressed representations.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/d8492e28
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/d8492e28
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/d8492e28
Branch: refs/heads/master
Commit: d8492e2840e7dcbf7a5e7793516f045f47ad4cd2
Parents: e0da955
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Oct 24 16:38:56 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Oct 24 17:02:15 2014 +0100
----------------------------------------------------------------------
...WithJdkProperties_thenRepresentation_ok.java | 4 +-
.../rendering/RendererContext.java | 13 ++-
.../AbstractObjectMemberReprRenderer.java | 22 ++--
.../domainobjects/DomainObjectReprRenderer.java | 87 +++++++++------
.../domainobjects/JsonValueEncoder.java | 109 +++++++++++--------
.../domainobjects/ObjectActionReprRenderer.java | 9 +-
.../ObjectCollectionReprRenderer.java | 39 ++++---
.../ObjectPropertyReprRenderer.java | 33 ++++--
.../service/RepresentationService.java | 5 +
...onValueEncoderTest_appendValueAndFormat.java | 50 ++++-----
.../restfulobjects/server/ResourceContext.java | 79 +++++++++++---
.../server/resources/DomainResourceHelper.java | 40 +++++++
.../WEB-INF/viewer_restfulobjects.properties | 45 +++++++-
.../WEB-INF/viewer_restfulobjects.properties | 49 ++++++++-
14 files changed, 431 insertions(+), 153 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/d8492e28/core/tck/tck-viewer-restfulobjects/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithJdkProperties_thenRepresentation_ok.java
----------------------------------------------------------------------
diff --git a/core/tck/tck-viewer-restfulobjects/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithJdkProperties_thenRepresentation_ok.java b/core/tck/tck-viewer-restfulobjects/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithJdkProperties_thenRepresentation_ok.java
index 06384cf..a658574 100644
--- a/core/tck/tck-viewer-restfulobjects/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithJdkProperties_thenRepresentation_ok.java
+++ b/core/tck/tck-viewer-restfulobjects/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithJdkProperties_thenRepresentation_ok.java
@@ -86,7 +86,7 @@ public class Get_givenEntityWithJdkProperties_thenRepresentation_ok {
property = domainObjectRepr.getProperty("bigIntegerProperty");
assertThat(property.getMemberType(), is("property"));
- assertThat(property.getFormat(), is("big-integer(18)"));
+ assertThat(property.getFormat(), is("big-integer"));
assertThat(property.getXIsisFormat(), is("javamathbiginteger"));
scalarRepr = property.getRepresentation("value").as(ScalarValueRepresentation.class);
assertThat(scalarRepr.isString(), is(true));
@@ -95,7 +95,7 @@ public class Get_givenEntityWithJdkProperties_thenRepresentation_ok {
property = domainObjectRepr.getProperty("bigIntegerProperty2");
assertThat(property.getMemberType(), is("property"));
- assertThat(property.getFormat(), is("big-integer(18)"));
+ assertThat(property.getFormat(), is("big-integer"));
scalarRepr = property.getRepresentation("value").as(ScalarValueRepresentation.class);
assertThat(scalarRepr.isString(), is(true));
BigInteger bigInteger2 = scalarRepr.asBigInteger(property.getFormat());
http://git-wip-us.apache.org/repos/asf/isis/blob/d8492e28/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext.java
index 0111c11..ecf5114 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext.java
@@ -46,7 +46,18 @@ public interface RendererContext {
public List<List<String>> getFollowLinks();
public Localization getLocalization();
-
+
+ boolean honorUiHints();
+
+ boolean objectPropertyValuesOnly();
+
+ boolean suppressDescribedByLinks();
+ boolean suppressUpdateLink();
+ boolean suppressMemberId();
+ boolean suppressMemberLinks();
+ boolean suppressMemberExtensions();
+ boolean suppressMemberDisabledReason();
+
/**
* To avoid infinite loops when {@link Render.Type#EAGERLY eagerly} rendering graphs
* of objects as {@link DomainObjectReprRenderer#asEventSerialization() events}.
http://git-wip-us.apache.org/repos/asf/isis/blob/d8492e28/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/AbstractObjectMemberReprRenderer.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/AbstractObjectMemberReprRenderer.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/AbstractObjectMemberReprRenderer.java
index d7f187c..04440bf 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/AbstractObjectMemberReprRenderer.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/AbstractObjectMemberReprRenderer.java
@@ -153,13 +153,16 @@ public abstract class AbstractObjectMemberReprRenderer<R extends ReprRendererAbs
* For subclasses to call from their {@link #render()} method.
*/
protected void renderMemberContent() {
- representation.mapPut("id", objectMember.getId());
-
+
+ if(!rendererContext.suppressMemberId()) {
+ representation.mapPut("id", objectMember.getId());
+ }
+
if(!mode.isArguments()) {
representation.mapPut("memberType", objectMemberType.getName());
}
- if (mode.isInline()) {
+ if (mode.isInline() && !rendererContext.suppressMemberLinks()) {
addDetailsLinkIfPersistent();
}
@@ -172,9 +175,11 @@ public abstract class AbstractObjectMemberReprRenderer<R extends ReprRendererAbs
}
if (mode.isFollowed() || mode.isStandalone() || mode.isMutated()) {
- addMutatorsIfEnabled();
+ addMutatorLinksIfEnabled();
- putExtensionsIsisProprietary();
+ if(!mode.isInline() || !rendererContext.suppressUpdateLink()) {
+ putExtensionsIsisProprietary();
+ }
addLinksToFormalDomainModel();
addLinksIsisProprietary();
}
@@ -196,10 +201,10 @@ public abstract class AbstractObjectMemberReprRenderer<R extends ReprRendererAbs
getLinks().arrayAdd(linkTo.builder(Rel.UP).build());
}
- protected abstract void addMutatorsIfEnabled();
+ protected abstract void addMutatorLinksIfEnabled();
/**
- * For subclasses to call back to when {@link #addMutatorsIfEnabled() adding
+ * For subclasses to call back to when {@link #addMutatorLinksIfEnabled() adding
* mutators}.
*/
protected void addLinkFor(final MutatorSpec mutatorSpec) {
@@ -260,6 +265,9 @@ public abstract class AbstractObjectMemberReprRenderer<R extends ReprRendererAbs
protected abstract void followDetailsLink(JsonRepresentation detailsLink);
protected final void putDisabledReasonIfDisabled() {
+ if(rendererContext.suppressMemberDisabledReason()) {
+ return;
+ }
final String disabledReasonRep = usability().getReason();
representation.mapPut("disabledReason", disabledReasonRep);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d8492e28/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
index 3bc4e51..fa12f8e 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
@@ -103,7 +103,7 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
/**
* Override the default {@link ObjectAdapterLinkTo} (that is used for
- * generating links in {@link #linkTo(ObjectAdapter)}).
+ * generating links.
*/
public DomainObjectReprRenderer usingLinkToBuilder(final ObjectAdapterLinkTo objectAdapterLinkToBuilder) {
this.linkToBuilder = objectAdapterLinkToBuilder.usingUrlBase(rendererContext);
@@ -155,14 +155,14 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
withMembers(objectAdapter);
// described by
- if (mode.includeDescribedBy()) {
+ if (mode.includeDescribedBy() && !rendererContext.suppressDescribedByLinks()) {
addLinkToDescribedBy();
}
if(isService && mode.includeUp()) {
addLinkToUp();
}
- if (!mode.isArgs()) {
+ if (!mode.isArgs() && !rendererContext.objectPropertyValuesOnly()) {
// update/persist
addPersistLinkIfTransientAndPersistable();
addUpdatePropertiesLinkIfRequired();
@@ -220,12 +220,19 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
private DomainObjectReprRenderer withMembers(final ObjectAdapter objectAdapter) {
final JsonRepresentation appendTo =
mode.isUpdatePropertiesLinkArgs() ? representation : JsonRepresentation.newMap();
- final List<ObjectAssociation> associations = objectAdapter.getSpecification().getAssociations(Contributed.EXCLUDED);
- addAssociations(objectAdapter, appendTo, associations);
+ final List<ObjectAssociation> associations = objectAdapter.getSpecification().getAssociations(Contributed.INCLUDED);
- if (mode.isRegular()) {
- final List<ObjectAction> actions = objectAdapter.getSpecification().getObjectActions(Contributed.INCLUDED);
- addActions(objectAdapter, actions, appendTo);
+ addProperties(objectAdapter, appendTo, associations);
+
+ if(!rendererContext.objectPropertyValuesOnly()) {
+ if (!mode.isArgs()) {
+ addCollections(objectAdapter, appendTo, associations);
+ }
+
+ if (mode.isRegular()) {
+ final List<ObjectAction> actions = objectAdapter.getSpecification().getObjectActions(Contributed.INCLUDED);
+ addActions(objectAdapter, actions, appendTo);
+ }
}
if(!mode.isUpdatePropertiesLinkArgs()) {
representation.mapPut("members", appendTo);
@@ -233,7 +240,7 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
return this;
}
- private void addAssociations(final ObjectAdapter objectAdapter, final JsonRepresentation members, final List<ObjectAssociation> associations) {
+ private void addProperties(final ObjectAdapter objectAdapter, final JsonRepresentation members, final List<ObjectAssociation> associations) {
final LinkFollowSpecs linkFollower = getLinkFollowSpecs().follow("members");
for (final ObjectAssociation assoc : associations) {
@@ -243,38 +250,54 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
continue;
}
}
- if (assoc instanceof OneToOneAssociation) {
- final OneToOneAssociation property = (OneToOneAssociation) assoc;
+ if (!(assoc instanceof OneToOneAssociation)) {
+ continue;
+ }
- final ObjectPropertyReprRenderer renderer = new ObjectPropertyReprRenderer(getRendererContext(), linkFollower, property.getId(), JsonRepresentation.newMap());
+ final OneToOneAssociation property = (OneToOneAssociation) assoc;
+ final ObjectPropertyReprRenderer renderer = new ObjectPropertyReprRenderer(getRendererContext(), linkFollower, property.getId(), JsonRepresentation.newMap());
+ renderer.with(new ObjectAndProperty(objectAdapter, property)).usingLinkTo(linkToBuilder);
- renderer.with(new ObjectAndProperty(objectAdapter, property)).usingLinkTo(linkToBuilder);
+ if (mode.isArgs()) {
+ renderer.asArguments();
+ }
+ if(mode.isEventSerialization()) {
+ renderer.asEventSerialization();
+ }
- if (mode.isArgs()) {
- renderer.asArguments();
- }
- if(mode.isEventSerialization()) {
- renderer.asEventSerialization();
- }
+ final JsonRepresentation propertyValueRepresentation = renderer.render();
+ final JsonRepresentation propertyRepr = rendererContext.objectPropertyValuesOnly()
+ ? propertyValueRepresentation.getRepresentation("value")
+ : propertyValueRepresentation;
+ members.mapPut(assoc.getId(), propertyRepr);
+ }
+ }
- members.mapPut(assoc.getId(), renderer.render());
+ private void addCollections(final ObjectAdapter objectAdapter, final JsonRepresentation members, final List<ObjectAssociation> associations) {
+ final LinkFollowSpecs linkFollower = getLinkFollowSpecs().follow("members");
+ for (final ObjectAssociation assoc : associations) {
+
+ if (mode.checkVisibility()) {
+ final Consent visibility = assoc.isVisible(getRendererContext().getAuthenticationSession(), objectAdapter, rendererContext.getWhere());
+ if (!visibility.isAllowed()) {
+ continue;
+ }
}
- if (mode.isArgs()) {
+ if (!(assoc instanceof OneToManyAssociation)) {
continue;
}
- if (assoc instanceof OneToManyAssociation) {
- final OneToManyAssociation collection = (OneToManyAssociation) assoc;
- final ObjectCollectionReprRenderer renderer = new ObjectCollectionReprRenderer(getRendererContext(), linkFollower, collection.getId(), JsonRepresentation.newMap());
+ final OneToManyAssociation collection = (OneToManyAssociation) assoc;
- renderer.with(new ObjectAndCollection(objectAdapter, collection)).usingLinkTo(linkToBuilder);
- if(mode.isEventSerialization()) {
- renderer.asEventSerialization();
- }
+ final ObjectCollectionReprRenderer renderer = new ObjectCollectionReprRenderer(getRendererContext(), linkFollower, collection.getId(), JsonRepresentation.newMap());
- members.mapPut(assoc.getId(), renderer.render());
+ renderer.with(new ObjectAndCollection(objectAdapter, collection)).usingLinkTo(linkToBuilder);
+ if(mode.isEventSerialization()) {
+ renderer.asEventSerialization();
}
+
+ members.mapPut(assoc.getId(), renderer.render());
}
}
@@ -341,8 +364,10 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
final DomainObjectReprRenderer renderer = new DomainObjectReprRenderer(getRendererContext(), null, JsonRepresentation.newMap());
final JsonRepresentation domainObjectRepr = renderer.with(objectAdapter).asUpdatePropertiesLinkArguments().render();
- final LinkBuilder updateLinkBuilder = LinkBuilder.newBuilder(getRendererContext(), Rel.UPDATE.getName(), RepresentationType.DOMAIN_OBJECT, "objects/%s/%s", getDomainType(), getInstanceId()).withHttpMethod(RestfulHttpMethod.PUT).withArguments(domainObjectRepr);
- getLinks().arrayAdd(updateLinkBuilder.build());
+ if(!rendererContext.suppressUpdateLink()) {
+ final LinkBuilder updateLinkBuilder = LinkBuilder.newBuilder(getRendererContext(), Rel.UPDATE.getName(), RepresentationType.DOMAIN_OBJECT, "objects/%s/%s", getDomainType(), getInstanceId()).withHttpMethod(RestfulHttpMethod.PUT).withArguments(domainObjectRepr);
+ getLinks().arrayAdd(updateLinkBuilder.build());
+ }
}
// ///////////////////////////////////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/d8492e28/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
index d5530a3..37d4025 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
@@ -82,9 +82,11 @@ public final class JsonValueEncoder {
*/
public abstract ObjectAdapter asAdapter(JsonRepresentation repr, String format);
- public void appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr) {
- repr.mapPut("value", unwrapAsObjectElseNullNode(objectAdapter));
- appendFormats(repr, this.format, this.xIsisFormat);
+ public Object appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr, boolean suppressExtensions) {
+ final Object value = unwrapAsObjectElseNullNode(objectAdapter);
+ repr.mapPut("value", value);
+ appendFormats(repr, this.format, this.xIsisFormat, suppressExtensions);
+ return value;
}
public Object asObject(ObjectAdapter objectAdapter, String format) {
@@ -111,7 +113,7 @@ public final class JsonValueEncoder {
return null;
}
@Override
- public void appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr) {
+ public Object appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr, boolean suppressExtensions) {
final Object obj = unwrapAsObjectElseNullNode(objectAdapter);
if(obj instanceof String) {
final String str = (String) obj;
@@ -119,7 +121,8 @@ public final class JsonValueEncoder {
} else {
repr.mapPut("value", obj);
}
- appendFormats(repr, this.format, xIsisFormat);
+ appendFormats(repr, this.format, xIsisFormat, suppressExtensions);
+ return obj;
}
});
@@ -132,7 +135,7 @@ public final class JsonValueEncoder {
return null;
}
@Override
- public void appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr) {
+ public Object appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr, boolean suppressExtensions) {
final Object obj = unwrapAsObjectElseNullNode(objectAdapter);
if(obj instanceof Boolean) {
final Boolean b = (Boolean) obj;
@@ -140,7 +143,8 @@ public final class JsonValueEncoder {
} else {
repr.mapPut("value", obj);
}
- appendFormats(repr, this.format, xIsisFormat);
+ appendFormats(repr, this.format, xIsisFormat, suppressExtensions);
+ return obj;
}
});
@@ -162,7 +166,7 @@ public final class JsonValueEncoder {
return null;
}
@Override
- public void appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr) {
+ public Object appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr, boolean suppressExtensions) {
final Object obj = unwrapAsObjectElseNullNode(objectAdapter);
if(obj instanceof Byte) {
final Byte b = (Byte) obj;
@@ -170,7 +174,8 @@ public final class JsonValueEncoder {
} else {
repr.mapPut("value", obj);
}
- appendFormats(repr, this.format, xIsisFormat);
+ appendFormats(repr, this.format, xIsisFormat, suppressExtensions);
+ return obj;
}
});
@@ -192,7 +197,7 @@ public final class JsonValueEncoder {
return null;
}
@Override
- public void appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr) {
+ public Object appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr, boolean suppressExtensions) {
final Object obj = unwrapAsObjectElseNullNode(objectAdapter);
if(obj instanceof Short) {
final Short s = (Short) obj;
@@ -200,7 +205,8 @@ public final class JsonValueEncoder {
} else {
repr.mapPut("value", obj);
}
- appendFormats(repr, this.format, xIsisFormat);
+ appendFormats(repr, this.format, xIsisFormat, suppressExtensions);
+ return obj;
}
});
@@ -222,7 +228,7 @@ public final class JsonValueEncoder {
return null;
}
@Override
- public void appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr) {
+ public Object appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr, boolean suppressExtensions) {
final Object obj = unwrapAsObjectElseNullNode(objectAdapter);
if(obj instanceof Integer) {
final Integer i = (Integer) obj;
@@ -230,7 +236,8 @@ public final class JsonValueEncoder {
} else {
repr.mapPut("value", obj);
}
- appendFormats(repr, this.format, xIsisFormat);
+ appendFormats(repr, this.format, xIsisFormat, suppressExtensions);
+ return obj;
}
});
@@ -252,7 +259,7 @@ public final class JsonValueEncoder {
return null;
}
@Override
- public void appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr) {
+ public Object appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr, boolean suppressExtensions) {
final Object obj = unwrapAsObjectElseNullNode(objectAdapter);
if(obj instanceof Long) {
final Long l = (Long) obj;
@@ -260,7 +267,8 @@ public final class JsonValueEncoder {
} else {
repr.mapPut("value", obj);
}
- appendFormats(repr, this.format, xIsisFormat);
+ appendFormats(repr, this.format, xIsisFormat, suppressExtensions);
+ return obj;
}
});
@@ -285,7 +293,7 @@ public final class JsonValueEncoder {
return null;
}
@Override
- public void appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr) {
+ public Object appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr, boolean suppressExtensions) {
final Object obj = unwrapAsObjectElseNullNode(objectAdapter);
if(obj instanceof Float) {
final Float f = (Float) obj;
@@ -293,7 +301,8 @@ public final class JsonValueEncoder {
} else {
repr.mapPut("value", obj);
}
- appendFormats(repr, this.format, xIsisFormat);
+ appendFormats(repr, this.format, xIsisFormat, suppressExtensions);
+ return obj;
}
});
@@ -321,7 +330,7 @@ public final class JsonValueEncoder {
return null;
}
@Override
- public void appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr) {
+ public Object appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr, boolean suppressExtensions) {
final Object obj = unwrapAsObjectElseNullNode(objectAdapter);
if(obj instanceof Double) {
final Double d = (Double) obj;
@@ -329,7 +338,8 @@ public final class JsonValueEncoder {
} else {
repr.mapPut("value", obj);
}
- appendFormats(repr, this.format, xIsisFormat);
+ appendFormats(repr, this.format, xIsisFormat, suppressExtensions);
+ return obj;
}
});
@@ -353,7 +363,7 @@ public final class JsonValueEncoder {
return null;
}
@Override
- public void appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr) {
+ public Object appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr, boolean suppressExtensions) {
final Object obj = unwrapAsObjectElseNullNode(objectAdapter);
if(obj instanceof Character) {
final Character c = (Character) obj;
@@ -361,7 +371,8 @@ public final class JsonValueEncoder {
} else {
repr.mapPut("value", obj);
}
- appendFormats(repr, this.format, xIsisFormat);
+ appendFormats(repr, this.format, xIsisFormat, suppressExtensions);
+ return obj;
}
});
@@ -386,7 +397,7 @@ public final class JsonValueEncoder {
return null;
}
@Override
- public void appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr) {
+ public Object appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr, boolean suppressExtensions) {
final Object obj = unwrapAsObjectElseNullNode(objectAdapter);
if(obj instanceof BigInteger) {
final BigInteger bi = (BigInteger) obj;
@@ -394,7 +405,8 @@ public final class JsonValueEncoder {
} else {
repr.mapPut("value", obj);
}
- appendFormats(repr, format != null? format: this.format, xIsisFormat);
+ appendFormats(repr, format != null? format: this.format, xIsisFormat, suppressExtensions);
+ return obj;
}
});
@@ -422,7 +434,7 @@ public final class JsonValueEncoder {
return null;
}
@Override
- public void appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr) {
+ public Object appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr, boolean suppressExtensions) {
final Object obj = unwrapAsObjectElseNullNode(objectAdapter);
if(obj instanceof BigDecimal) {
final BigDecimal bd = (BigDecimal) obj;
@@ -430,7 +442,8 @@ public final class JsonValueEncoder {
} else {
repr.mapPut("value", obj);
}
- appendFormats(repr, format != null ? format : this.format, xIsisFormat);
+ appendFormats(repr, format != null ? format : this.format, xIsisFormat, suppressExtensions);
+ return obj;
}
});
@@ -461,7 +474,7 @@ public final class JsonValueEncoder {
}
@Override
- public void appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr) {
+ public Object appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr, boolean suppressExtensions) {
final Object obj = unwrapAsObjectElseNullNode(objectAdapter);
if(obj instanceof LocalDate) {
final LocalDate date = (LocalDate) obj;
@@ -470,7 +483,8 @@ public final class JsonValueEncoder {
} else {
repr.mapPut("value", obj);
}
- appendFormats(repr, this.format, xIsisFormat);
+ appendFormats(repr, this.format, xIsisFormat, suppressExtensions);
+ return obj;
}
});
@@ -501,7 +515,7 @@ public final class JsonValueEncoder {
}
@Override
- public void appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr) {
+ public Object appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr, boolean suppressExtensions) {
final Object obj = unwrapAsObjectElseNullNode(objectAdapter);
if(obj instanceof LocalDateTime) {
final LocalDateTime date = (LocalDateTime) obj;
@@ -510,7 +524,8 @@ public final class JsonValueEncoder {
} else {
repr.mapPut("value", obj);
}
- appendFormats(repr, this.format, xIsisFormat);
+ appendFormats(repr, this.format, xIsisFormat, suppressExtensions);
+ return obj;
}
});
@@ -541,7 +556,7 @@ public final class JsonValueEncoder {
}
@Override
- public void appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr) {
+ public Object appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr, boolean suppressExtensions) {
final Object obj = unwrapAsObjectElseNullNode(objectAdapter);
if(obj instanceof DateTime) {
final DateTime date = (DateTime) obj;
@@ -550,7 +565,8 @@ public final class JsonValueEncoder {
} else {
repr.mapPut("value", obj);
}
- appendFormats(repr, this.format, xIsisFormat);
+ appendFormats(repr, this.format, xIsisFormat, suppressExtensions);
+ return obj;
}
});
@@ -581,7 +597,7 @@ public final class JsonValueEncoder {
}
@Override
- public void appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr) {
+ public Object appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr, boolean suppressExtensions) {
final Object obj = unwrapAsObjectElseNullNode(objectAdapter);
if(obj instanceof java.util.Date) {
final java.util.Date date = (java.util.Date) obj;
@@ -591,7 +607,8 @@ public final class JsonValueEncoder {
} else {
repr.mapPut("value", obj);
}
- appendFormats(repr, this.format, xIsisFormat);
+ appendFormats(repr, this.format, xIsisFormat, suppressExtensions);
+ return obj;
}
});
@@ -620,7 +637,7 @@ public final class JsonValueEncoder {
}
@Override
- public void appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr) {
+ public Object appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr, boolean suppressExtensions) {
final Object obj = unwrapAsObjectElseNullNode(objectAdapter);
if(obj instanceof java.sql.Date) {
final java.sql.Date date = (java.sql.Date) obj;
@@ -629,7 +646,8 @@ public final class JsonValueEncoder {
} else {
repr.mapPut("value", obj);
}
- appendFormats(repr, this.format, xIsisFormat);
+ appendFormats(repr, this.format, xIsisFormat, suppressExtensions);
+ return obj;
}
});
@@ -659,7 +677,7 @@ public final class JsonValueEncoder {
}
@Override
- public void appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr) {
+ public Object appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr, boolean suppressExtensions) {
final Object obj = unwrapAsObjectElseNullNode(objectAdapter);
if(obj instanceof java.sql.Time) {
final java.sql.Time date = (java.sql.Time) obj;
@@ -668,7 +686,8 @@ public final class JsonValueEncoder {
} else {
repr.mapPut("value", obj);
}
- appendFormats(repr, this.format, xIsisFormat);
+ appendFormats(repr, this.format, xIsisFormat, suppressExtensions);
+ return obj;
}
});
@@ -695,7 +714,7 @@ public final class JsonValueEncoder {
}
@Override
- public void appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr) {
+ public Object appendValueAndFormat(ObjectAdapter objectAdapter, String format, JsonRepresentation repr, boolean suppressExtensions) {
final Object obj = unwrapAsObjectElseNullNode(objectAdapter);
if(obj instanceof java.sql.Timestamp) {
final java.sql.Timestamp date = (java.sql.Timestamp) obj;
@@ -704,7 +723,8 @@ public final class JsonValueEncoder {
} else {
repr.mapPut("value", obj);
}
- appendFormats(repr, this.format, xIsisFormat);
+ appendFormats(repr, this.format, xIsisFormat, suppressExtensions);
+ return obj;
}
});
}
@@ -757,11 +777,11 @@ public final class JsonValueEncoder {
throw new IllegalArgumentException("Could not parse value '" + argValueRepr.asString() + "' as a " + objectSpec.getFullIdentifier());
}
- public static void appendValueAndFormat(ObjectSpecification objectSpec, ObjectAdapter objectAdapter, JsonRepresentation repr, String format) {
+ public static Object appendValueAndFormat(ObjectSpecification objectSpec, ObjectAdapter objectAdapter, JsonRepresentation repr, String format, boolean suppressExtensions) {
final JsonValueConverter jvc = converterBySpec.get(objectSpec.getSpecId());
if(jvc != null) {
- jvc.appendValueAndFormat(objectAdapter, format, repr);
+ return jvc.appendValueAndFormat(objectAdapter, format, repr, suppressExtensions);
} else {
final EncodableFacet encodableFacet = objectSpec.getFacet(EncodableFacet.class);
if (encodableFacet == null) {
@@ -769,7 +789,8 @@ public final class JsonValueEncoder {
}
Object value = objectAdapter != null? encodableFacet.toEncodedString(objectAdapter): NullNode.getInstance();
repr.mapPut("value", value);
- appendFormats(repr, "string", "string");
+ appendFormats(repr, "string", "string", suppressExtensions);
+ return value;
}
}
@@ -793,11 +814,11 @@ public final class JsonValueEncoder {
}
- private static void appendFormats(JsonRepresentation repr, String format, String xIsisFormat) {
+ private static void appendFormats(JsonRepresentation repr, String format, String xIsisFormat, boolean suppressExtensions) {
if(format != null) {
repr.mapPut("format", format);
}
- if(xIsisFormat != null) {
+ if(!suppressExtensions && xIsisFormat != null) {
repr.mapPut("extensions.x-isis-format", xIsisFormat);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d8492e28/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
index 84d512d..864ea39 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
@@ -76,7 +76,7 @@ public class ObjectActionReprRenderer extends AbstractObjectMemberReprRenderer<O
// ///////////////////////////////////////////////////
@Override
- protected void addMutatorsIfEnabled() {
+ protected void addMutatorLinksIfEnabled() {
if (usability().isVetoed()) {
return;
}
@@ -200,11 +200,16 @@ public class ObjectActionReprRenderer extends AbstractObjectMemberReprRenderer<O
@Override
protected void addLinksToFormalDomainModel() {
- getLinks().arrayAdd(ActionDescriptionReprRenderer.newLinkToBuilder(rendererContext, Rel.DESCRIBEDBY, objectAdapter.getSpecification(), objectMember).build());
+ if(rendererContext.suppressDescribedByLinks()) {
+ return;
+ }
+ final JsonRepresentation link = ActionDescriptionReprRenderer.newLinkToBuilder(rendererContext, Rel.DESCRIBEDBY, objectAdapter.getSpecification(), objectMember).build();
+ getLinks().arrayAdd(link);
}
@Override
protected void addLinksIsisProprietary() {
+ // umm...
if (false /*objectMember.isContributed() */) {
final ObjectAdapter serviceAdapter = contributingServiceAdapter();
final JsonRepresentation contributedByLink = DomainObjectReprRenderer.newLinkToBuilder(rendererContext, Rel.CONTRIBUTED_BY, serviceAdapter).build();
http://git-wip-us.apache.org/repos/asf/isis/blob/d8492e28/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java
index 7f09c09..809fe7f 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java
@@ -37,26 +37,25 @@ import org.apache.isis.viewer.restfulobjects.rendering.domaintypes.CollectionDes
public class ObjectCollectionReprRenderer extends AbstractObjectMemberReprRenderer<ObjectCollectionReprRenderer, OneToManyAssociation> {
public ObjectCollectionReprRenderer(
- final RendererContext resourceContext) {
- this(resourceContext, null, null, JsonRepresentation.newMap());
+ final RendererContext rendererContext) {
+ this(rendererContext, null, null, JsonRepresentation.newMap());
}
public ObjectCollectionReprRenderer(
- final RendererContext resourceContext,
+ final RendererContext rendererContext,
final LinkFollowSpecs linkFollowSpecs,
final String collectionId,
final JsonRepresentation representation) {
- super(resourceContext, linkFollowSpecs, collectionId, RepresentationType.OBJECT_COLLECTION, representation, Where.PARENTED_TABLES);
+ super(rendererContext, linkFollowSpecs, collectionId, RepresentationType.OBJECT_COLLECTION, representation, Where.PARENTED_TABLES);
}
@Override
public JsonRepresentation render() {
renderMemberContent();
-
- final RenderFacet renderFacet = objectMember.getFacet(RenderFacet.class);
- boolean eagerlyRender = renderFacet != null && renderFacet.value() == Type.EAGERLY;
-
+
+ boolean eagerlyRender = rendererContext.honorUiHints() && renderEagerly();
+
if ((mode.isInline() && eagerlyRender) || mode.isStandalone() || mode.isMutated() || mode.isEventSerialization() || !objectAdapter.representsPersistent()) {
addValue();
}
@@ -71,6 +70,11 @@ public class ObjectCollectionReprRenderer extends AbstractObjectMemberReprRender
return representation;
}
+ private boolean renderEagerly() {
+ final RenderFacet renderFacet = objectMember.getFacet(RenderFacet.class);
+ return renderFacet != null && renderFacet.value() == Type.EAGERLY;
+ }
+
// ///////////////////////////////////////////////////
// value
// ///////////////////////////////////////////////////
@@ -80,9 +84,8 @@ public class ObjectCollectionReprRenderer extends AbstractObjectMemberReprRender
if (valueAdapter == null) {
return;
}
-
- final RenderFacet renderFacet = objectMember.getFacet(RenderFacet.class);
- boolean eagerlyRender = renderFacet != null && renderFacet.value() == Type.EAGERLY && rendererContext.canEagerlyRender(valueAdapter);
+
+ boolean eagerlyRender = rendererContext.honorUiHints() && renderEagerly(valueAdapter);
final CollectionFacet facet = CollectionFacetUtils.getCollectionFacetFromSpec(valueAdapter);
final List<JsonRepresentation> list = Lists.newArrayList();
@@ -105,6 +108,11 @@ public class ObjectCollectionReprRenderer extends AbstractObjectMemberReprRender
representation.mapPut("value", list);
}
+ private boolean renderEagerly(ObjectAdapter valueAdapter) {
+ final RenderFacet renderFacet = objectMember.getFacet(RenderFacet.class);
+ return renderFacet != null && renderFacet.value() == Type.EAGERLY && rendererContext.canEagerlyRender(valueAdapter);
+ }
+
// ///////////////////////////////////////////////////
// details link
// ///////////////////////////////////////////////////
@@ -124,7 +132,7 @@ public class ObjectCollectionReprRenderer extends AbstractObjectMemberReprRender
// ///////////////////////////////////////////////////
@Override
- protected void addMutatorsIfEnabled() {
+ protected void addMutatorLinksIfEnabled() {
if (usability().isVetoed()) {
return;
}
@@ -148,8 +156,11 @@ public class ObjectCollectionReprRenderer extends AbstractObjectMemberReprRender
@Override
protected void addLinksToFormalDomainModel() {
- final LinkBuilder linkBuilder = CollectionDescriptionReprRenderer.newLinkToBuilder(rendererContext, Rel.DESCRIBEDBY, objectAdapter.getSpecification(), objectMember);
- getLinks().arrayAdd(linkBuilder.build());
+ if(rendererContext.suppressDescribedByLinks()) {
+ return;
+ }
+ final JsonRepresentation link = CollectionDescriptionReprRenderer.newLinkToBuilder(rendererContext, Rel.DESCRIBEDBY, objectAdapter.getSpecification(), objectMember).build();
+ getLinks().arrayAdd(link);
}
@Override
http://git-wip-us.apache.org/repos/asf/isis/blob/d8492e28/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
index 09e329f..f19c312 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
@@ -28,9 +28,10 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.members.render.RenderFacet;
import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
+import org.apache.isis.core.metamodel.facets.value.bigdecimal.BigDecimalValueFacet;
+import org.apache.isis.core.metamodel.facets.value.biginteger.BigIntegerValueFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-import org.apache.isis.core.metamodel.facets.value.bigdecimal.BigDecimalValueFacet;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
@@ -74,7 +75,7 @@ public class ObjectPropertyReprRenderer extends AbstractObjectMemberReprRenderer
// value
// ///////////////////////////////////////////////////
- private void addValue() {
+ private Object addValue() {
final ObjectAdapter valueAdapter = objectMember.get(objectAdapter);
// use the runtime type if we have a value, else the compile time type of the member otherwise
@@ -96,17 +97,25 @@ public class ObjectPropertyReprRenderer extends AbstractObjectMemberReprRenderer
format = String.format("big-decimal(%d,%d)", precision, scale);
}
} else if(specClass == java.math.BigInteger.class) {
- // TODO: need to extend BigIntegerValueFacet similar to BigDecimalValueFacet
+ // look for facet on member, else on the value's spec
+ final BigIntegerValueFacet bigIntegerValueFacet =
+ getFacet(BigIntegerValueFacet.class,
+ objectMember,
+ valueAdapter != null? valueAdapter.getSpecification(): null);
+ if(bigIntegerValueFacet != null) {
+ format = String.format("big-integer");
+ }
}
- JsonValueEncoder.appendValueAndFormat(spec, valueAdapter, representation, format);
- return;
+ return JsonValueEncoder.appendValueAndFormat(spec, valueAdapter, representation, format, rendererContext.suppressMemberExtensions());
}
final RenderFacet renderFacet = objectMember.getFacet(RenderFacet.class);
boolean eagerlyRender = renderFacet != null && renderFacet.value() == Type.EAGERLY && rendererContext.canEagerlyRender(valueAdapter);
if(valueAdapter == null) {
- representation.mapPut("value", NullNode.getInstance());
+ final NullNode value = NullNode.getInstance();
+ representation.mapPut("value", value);
+ return value;
} else {
final TitleFacet titleFacet = spec.getFacet(TitleFacet.class);
final String title = titleFacet.title(valueAdapter, rendererContext.getLocalization());
@@ -122,7 +131,9 @@ public class ObjectPropertyReprRenderer extends AbstractObjectMemberReprRenderer
valueLinkBuilder.withValue(renderer.render());
}
- representation.mapPut("value", valueLinkBuilder.build());
+ final JsonRepresentation valueJsonRepr = valueLinkBuilder.build();
+ representation.mapPut("value", valueJsonRepr);
+ return valueJsonRepr;
}
}
@@ -160,7 +171,7 @@ public class ObjectPropertyReprRenderer extends AbstractObjectMemberReprRenderer
// ///////////////////////////////////////////////////
@Override
- protected void addMutatorsIfEnabled() {
+ protected void addMutatorLinksIfEnabled() {
if (usability().isVetoed()) {
return;
}
@@ -207,7 +218,11 @@ public class ObjectPropertyReprRenderer extends AbstractObjectMemberReprRenderer
@Override
protected void addLinksToFormalDomainModel() {
- getLinks().arrayAdd(PropertyDescriptionReprRenderer.newLinkToBuilder(getRendererContext(), Rel.DESCRIBEDBY, objectAdapter.getSpecification(), objectMember).build());
+ if(rendererContext.suppressDescribedByLinks()) {
+ return;
+ }
+ final JsonRepresentation link = PropertyDescriptionReprRenderer.newLinkToBuilder(getRendererContext(), Rel.DESCRIBEDBY, objectAdapter.getSpecification(), objectMember).build();
+ getLinks().arrayAdd(link);
}
@Override
http://git-wip-us.apache.org/repos/asf/isis/blob/d8492e28/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java
index 0362160..3774254 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java
@@ -23,7 +23,12 @@ import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.*;
/**
+ * Configure the Restful Objects viewer to emit custom representations (rather than the
+ * standard representations defined in the RO spec).
+ *
+ * <p>
* This interface is EXPERIMENTAL and may change in the future.
+ * </p>
*/
public interface RepresentationService {
http://git-wip-us.apache.org/repos/asf/isis/blob/d8492e28/core/viewer-restfulobjects-rendering/src/test/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoderTest_appendValueAndFormat.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/test/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoderTest_appendValueAndFormat.java b/core/viewer-restfulobjects-rendering/src/test/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoderTest_appendValueAndFormat.java
index c9073ce..9ff2fef 100644
--- a/core/viewer-restfulobjects-rendering/src/test/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoderTest_appendValueAndFormat.java
+++ b/core/viewer-restfulobjects-rendering/src/test/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoderTest_appendValueAndFormat.java
@@ -75,7 +75,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
allowingObjectSpecToReturnSpecIdFor(String.class);
allowingObjectAdapterToReturn("aString");
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null);
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null, false);
assertThat(representation.isString("value"), is(true));
assertThat(representation.getString("value"), is("aString"));
@@ -88,7 +88,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
allowingObjectSpecToReturnSpecIdFor(Boolean.class);
allowingObjectAdapterToReturn(Boolean.TRUE);
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null);
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null, false);
assertThat(representation.isBoolean("value"), is(true));
assertThat(representation.getBoolean("value"), is(Boolean.TRUE));
@@ -100,7 +100,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
allowingObjectSpecToReturnSpecIdFor(boolean.class);
allowingObjectAdapterToReturn(true);
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null);
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null, false);
assertThat(representation.isBoolean("value"), is(true));
assertThat(representation.getBoolean("value"), is(true));
@@ -112,7 +112,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
allowingObjectSpecToReturnSpecIdFor(Byte.class);
allowingObjectAdapterToReturn(Byte.valueOf((byte)123));
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null);
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null, false);
assertThat(representation.isIntegralNumber("value"), is(true));
assertThat(representation.getByte("value"), is(Byte.valueOf((byte)123)));
@@ -125,7 +125,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
allowingObjectSpecToReturnSpecIdFor(byte.class);
allowingObjectAdapterToReturn((byte)123);
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null);
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null, false);
assertThat(representation.isIntegralNumber("value"), is(true));
assertThat(representation.getByte("value"), is((byte)123));
@@ -138,7 +138,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
allowingObjectSpecToReturnSpecIdFor(Short.class);
allowingObjectAdapterToReturn(Short.valueOf((short)12345));
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null);
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null, false);
assertThat(representation.isIntegralNumber("value"), is(true));
assertThat(representation.getShort("value"), is(Short.valueOf((short)12345)));
@@ -151,7 +151,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
allowingObjectSpecToReturnSpecIdFor(short.class);
allowingObjectAdapterToReturn((short)12345);
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null);
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null, false);
assertThat(representation.isIntegralNumber("value"), is(true));
assertThat(representation.getShort("value"), is((short)12345));
@@ -164,7 +164,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
allowingObjectSpecToReturnSpecIdFor(Integer.class);
allowingObjectAdapterToReturn(Integer.valueOf(12345678));
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null);
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null, false);
assertThat(representation.isIntegralNumber("value"), is(true));
assertThat(representation.getInt("value"), is(Integer.valueOf(12345678)));
@@ -177,7 +177,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
allowingObjectSpecToReturnSpecIdFor(int.class);
allowingObjectAdapterToReturn(12345678);
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null);
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null, false);
assertThat(representation.isIntegralNumber("value"), is(true));
assertThat(representation.getInt("value"), is(12345678));
@@ -190,7 +190,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
allowingObjectSpecToReturnSpecIdFor(Long.class);
allowingObjectAdapterToReturn(Long.valueOf(12345678901234L));
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null);
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null, false);
assertThat(representation.isIntegralNumber("value"), is(true));
assertThat(representation.getLong("value"), is(Long.valueOf(12345678901234L)));
@@ -203,7 +203,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
allowingObjectSpecToReturnSpecIdFor(long.class);
allowingObjectAdapterToReturn(12345678901234L);
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null);
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null, false);
assertThat(representation.isIntegralNumber("value"), is(true));
assertThat(representation.getLong("value"), is(12345678901234L));
@@ -216,7 +216,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
allowingObjectSpecToReturnSpecIdFor(Float.class);
allowingObjectAdapterToReturn(Float.valueOf((float)123.45));
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null);
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null, false);
assertThat(representation.isDecimal("value"), is(true));
assertThat(representation.getFloat("value"), is(Float.valueOf((float)123.45)));
@@ -229,7 +229,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
allowingObjectSpecToReturnSpecIdFor(Float.class);
allowingObjectAdapterToReturn((float)123.45);
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null);
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null, false);
assertThat(representation.isDecimal("value"), is(true));
assertThat(representation.getFloat("value"), is((float)123.45));
@@ -242,7 +242,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
allowingObjectSpecToReturnSpecIdFor(Double.class);
allowingObjectAdapterToReturn(Double.valueOf(12345.6789));
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null);
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null, false);
assertThat(representation.isDecimal("value"), is(true));
assertThat(representation.getDouble("value"), is(Double.valueOf(12345.6789)));
@@ -255,7 +255,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
allowingObjectSpecToReturnSpecIdFor(double.class);
allowingObjectAdapterToReturn(12345.6789);
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null);
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null, false);
assertThat(representation.isDecimal("value"), is(true));
assertThat(representation.getDouble("value"), is(12345.6789));
@@ -268,7 +268,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
allowingObjectSpecToReturnSpecIdFor(Character.class);
allowingObjectAdapterToReturn(Character.valueOf('a'));
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null);
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null, false);
assertThat(representation.isString("value"), is(true));
assertThat(representation.getChar("value"), is(Character.valueOf('a')));
@@ -281,7 +281,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
allowingObjectSpecToReturnSpecIdFor(char.class);
allowingObjectAdapterToReturn('a');
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null);
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null, false);
assertThat(representation.isString("value"), is(true));
assertThat(representation.getChar("value"), is('a'));
@@ -294,7 +294,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
allowingObjectSpecToReturnSpecIdFor(java.util.Date.class);
allowingObjectAdapterToReturn(asDateTime("2014-04-25T12:34:45Z"));
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null);
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null, false);
assertThat(representation.isString("value"), is(true));
assertThat(representation.getString("value"), is("2014-04-25T12:34:45Z"));
@@ -307,7 +307,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
allowingObjectSpecToReturnSpecIdFor(java.sql.Date.class);
allowingObjectAdapterToReturn(asSqlDate("2014-04-25"));
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null);
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null, false);
assertThat(representation.isString("value"), is(true));
assertThat(representation.getString("value"), is("2014-04-25"));
@@ -320,7 +320,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
allowingObjectSpecToReturnSpecIdFor(org.joda.time.DateTime.class);
allowingObjectAdapterToReturn(new org.joda.time.DateTime(asDateTime("2014-04-25T12:34:45Z")));
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null);
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null, false);
assertThat(representation.isString("value"), is(true));
assertThat(representation.getString("value"), is("2014-04-25T12:34:45Z"));
@@ -333,7 +333,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
allowingObjectSpecToReturnSpecIdFor(org.joda.time.LocalDateTime.class);
allowingObjectAdapterToReturn(new org.joda.time.LocalDateTime(asDateTime("2014-04-25T12:34:45Z")));
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null);
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null, false);
assertThat(representation.isString("value"), is(true));
assertThat(representation.getString("value"), is("2014-04-25T12:34:45Z"));
@@ -346,7 +346,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
allowingObjectSpecToReturnSpecIdFor(org.joda.time.LocalDate.class);
allowingObjectAdapterToReturn(new org.joda.time.LocalDate(2014,4,25));
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null);
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null, false);
assertThat(representation.isString("value"), is(true));
assertThat(representation.getString("value"), is("2014-04-25"));
@@ -360,7 +360,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
final long time = asDateTime("2014-04-25T12:34:45Z").getTime();
allowingObjectAdapterToReturn(new Timestamp(time));
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null);
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, null, false);
assertThat(representation.isLong("value"), is(true));
assertThat(representation.getLong("value"), is(time));
@@ -373,7 +373,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
allowingObjectSpecToReturnSpecIdFor(BigInteger.class);
allowingObjectAdapterToReturn(new BigInteger("12345678901234567890"));
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, "big-integer(22)");
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, "big-integer(22)", false);
assertThat(representation.isString("value"), is(true));
assertThat(representation.isBigInteger("value"), is(true));
assertThat(representation.getBigInteger("value"), is(new BigInteger("12345678901234567890")));
@@ -387,7 +387,7 @@ public class JsonValueEncoderTest_appendValueAndFormat {
allowingObjectSpecToReturnSpecIdFor(BigDecimal.class);
allowingObjectAdapterToReturn(new BigDecimal("12345678901234567890.1234"));
- JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, "big-decimal(27,4)");
+ JsonValueEncoder.appendValueAndFormat(mockObjectSpec, mockObjectAdapter, representation, "big-decimal(27,4)", false);
assertThat(representation.isString("value"), is(true));
assertThat(representation.isBigDecimal("value"), is(true));
assertThat(representation.getBigDecimal("value"), is(new BigDecimal("12345678901234567890.1234")));
http://git-wip-us.apache.org/repos/asf/isis/blob/d8492e28/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
index 46b602a..09aa0a1 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
@@ -54,7 +54,6 @@ public class ResourceContext implements RendererContext {
private final SecurityContext securityContext;
private final Localization localization;
- @SuppressWarnings("unused")
private final IsisConfiguration configuration;
private final AuthenticationSession authenticationSession;
private final PersistenceSession persistenceSession;
@@ -67,9 +66,7 @@ public class ResourceContext implements RendererContext {
private final String urlUnencodedQueryString;
private JsonRepresentation readQueryStringAsMap;
- //////////////////////////////////////////////////////////////////
- // constructor and init
- //////////////////////////////////////////////////////////////////
+ //region > constructor and init
public ResourceContext(
final RepresentationType representationType,
@@ -145,13 +142,10 @@ public class ResourceContext implements RendererContext {
}
}
+ //endregion
- //////////////////////////////////////////////////////////////////
- //
- //////////////////////////////////////////////////////////////////
-
-
+
public HttpHeaders getHttpHeaders() {
return httpHeaders;
}
@@ -233,12 +227,10 @@ public class ResourceContext implements RendererContext {
return securityContext;
}
-
public List<List<String>> getFollowLinks() {
return followLinks;
}
-
public Localization getLocalization() {
return localization;
}
@@ -267,26 +259,81 @@ public class ResourceContext implements RendererContext {
public IsisConfiguration getConfiguration() {
return configuration;
}
-
+
+
public Where getWhere() {
return where;
}
+
+ //region > canEagerlyRender
private Set<Oid> rendered = Sets.newHashSet();
@Override
public boolean canEagerlyRender(ObjectAdapter objectAdapter) {
final Oid oid = objectAdapter.getOid();
return rendered.add(oid);
}
+ //endregion
+
+ //region > configuration settings
+
+ private static final boolean HONOR_UI_HINTS_DEFAULT = false;
+
+ private static final boolean OBJECT_PROPERTY_VALUES_ONLY_DEFAULT = false;
+
+ private static final boolean SUPPRESS_DESCRIBED_BY_LINKS_DEFAULT = false;
+ private static final boolean SUPPRESS_UPDATE_LINK_DEFAULT = false;
+ private static final boolean SUPPRESS_MEMBER_ID_DEFAULT = false;
+ private static final boolean SUPPRESS_MEMBER_LINKS_DEFAULT = false;
+ private static final boolean SUPPRESS_MEMBER_EXTENSIONS_DEFAULT = false;
+ private static final boolean SUPPRESS_MEMBER_DISABLED_REASON_DEFAULT = false;
+
+ @Override
+ public boolean honorUiHints() {
+ return getConfiguration().getBoolean("isis.viewer.restfulobjects.honorUiHints", HONOR_UI_HINTS_DEFAULT);
+ }
- //////////////////////////////////////////////////////////////////
- //
- //////////////////////////////////////////////////////////////////
+ @Override
+ public boolean objectPropertyValuesOnly() {
+ return getConfiguration().getBoolean("isis.viewer.restfulobjects.objectPropertyValuesOnly", OBJECT_PROPERTY_VALUES_ONLY_DEFAULT);
+ }
+ @Override
+ public boolean suppressDescribedByLinks() {
+ return getConfiguration().getBoolean("isis.viewer.restfulobjects.suppressDescribedByLinks", SUPPRESS_DESCRIBED_BY_LINKS_DEFAULT);
+ }
+
+ @Override
+ public boolean suppressUpdateLink() {
+ return getConfiguration().getBoolean("isis.viewer.restfulobjects.suppressUpdateLink", SUPPRESS_UPDATE_LINK_DEFAULT);
+ }
+
+ @Override
+ public boolean suppressMemberId() {
+ return getConfiguration().getBoolean("isis.viewer.restfulobjects.suppressMemberId", SUPPRESS_MEMBER_ID_DEFAULT);
+ }
+
+ @Override
+ public boolean suppressMemberLinks() {
+ return getConfiguration().getBoolean("isis.viewer.restfulobjects.suppressMemberLinks", SUPPRESS_MEMBER_LINKS_DEFAULT);
+ }
+
+ @Override
+ public boolean suppressMemberExtensions() {
+ return getConfiguration().getBoolean("isis.viewer.restfulobjects.suppressMemberExtensions", SUPPRESS_MEMBER_EXTENSIONS_DEFAULT);
+ }
+
+ @Override
+ public boolean suppressMemberDisabledReason() {
+ return getConfiguration().getBoolean("isis.viewer.restfulobjects.suppressMemberDisabledReason", SUPPRESS_MEMBER_DISABLED_REASON_DEFAULT);
+ }
+ //endregion
+
+
+ @Override
public String urlFor(final String url) {
return getUriInfo().getBaseUri().toString() + url;
}
-
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d8492e28/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
index 44f30e6..7cdbd8c 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
@@ -99,6 +99,46 @@ public class DomainResourceHelper {
public boolean canEagerlyRender(ObjectAdapter objectAdapter) {
return rendererContext.canEagerlyRender(objectAdapter);
}
+
+ @Override
+ public boolean honorUiHints() {
+ return rendererContext.honorUiHints();
+ }
+
+ @Override
+ public boolean objectPropertyValuesOnly() {
+ return rendererContext.objectPropertyValuesOnly();
+ }
+
+ @Override
+ public boolean suppressDescribedByLinks() {
+ return rendererContext.suppressDescribedByLinks();
+ }
+
+ @Override
+ public boolean suppressUpdateLink() {
+ return rendererContext.suppressUpdateLink();
+ }
+
+ @Override
+ public boolean suppressMemberId() {
+ return rendererContext.suppressMemberId();
+ }
+
+ @Override
+ public boolean suppressMemberLinks() {
+ return rendererContext.suppressMemberLinks();
+ }
+
+ @Override
+ public boolean suppressMemberExtensions() {
+ return rendererContext.suppressMemberExtensions();
+ }
+
+ @Override
+ public boolean suppressMemberDisabledReason() {
+ return rendererContext.suppressMemberDisabledReason();
+ }
}
private final RepresentationService representationService;
http://git-wip-us.apache.org/repos/asf/isis/blob/d8492e28/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties
index bda9809..0a85fb6 100644
--- a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties
+++ b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties
@@ -20,4 +20,47 @@
#
# the baseUrl for hrefs in the events generated by the RO EventSerializer
-isis.viewer.restfulobjects.RestfulObjectsSpecEventSerializer.baseUrl=http://localhost:8080/restful/
\ No newline at end of file
+isis.viewer.restfulobjects.RestfulObjectsSpecEventSerializer.baseUrl=http://localhost:8080/restful/
+
+# renders param details in the (incorrect) form that they were for GSOC2013 viewers
+# isis.viewer.restfulobjects.gsoc2013.legacyParamDetails=true
+
+# whether to honor UI hints, in particular Render(EAGERLY). Defaults to false.
+#isis.viewer.restfulobjects.honorUiHints=false
+
+
+
+###############################################################################
+# Non-standard configuration settings.
+#
+# If enabled of the following are enabled then the viewer is deviating from the
+# RO spec standard; compatibility may be compromised with RO clients.
+###############################################################################
+
+# whether to show only object properties for object members
+# (on the object representation only)
+# Takes precedence over the other 'suppress' below.
+#isis.viewer.restfulobjects.objectPropertyValuesOnly=true
+
+# whether to suppress "describedby" links. Defaults to false.
+#isis.viewer.restfulobjects.suppressDescribedByLinks=true
+
+# whether to suppress "update" links. Defaults to false.
+#isis.viewer.restfulobjects.suppressUpdateLink=true
+
+# whether to suppress "id" json-prop for object members. Defaults to false.
+#isis.viewer.restfulobjects.suppressMemberId=true
+
+# whether to suppress "links" json-prop for object members
+# (on the object representation only). Defaults to false.
+#isis.viewer.restfulobjects.suppressMemberLinks=true
+
+# whether to suppress "extensions" json-prop for object members
+# (on the object representation only). Defaults to false.
+#isis.viewer.restfulobjects.suppressMemberExtensions=true
+
+# whether to suppress "disabledReason" json-prop for object members
+# (on the object representation only). Defaults to false.
+#isis.viewer.restfulobjects.suppressMemberDisabledReason=true
+
+###############################################################################
http://git-wip-us.apache.org/repos/asf/isis/blob/d8492e28/example/application/todoapp/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties
----------------------------------------------------------------------
diff --git a/example/application/todoapp/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties b/example/application/todoapp/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties
index 4b0a2c7..6fc3d72 100644
--- a/example/application/todoapp/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties
+++ b/example/application/todoapp/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties
@@ -23,4 +23,51 @@
isis.viewer.restfulobjects.RestfulObjectsSpecEventSerializer.baseUrl=http://localhost:8080/restful/
# renders param details in the (incorrect) form that they were for GSOC2013 viewers
-# isis.viewer.restfulobjects.gsoc2013.legacyParamDetails=true
\ No newline at end of file
+# isis.viewer.restfulobjects.gsoc2013.legacyParamDetails=true
+
+# whether to honor UI hints, in particular Render(EAGERLY). Defaults to false.
+#isis.viewer.restfulobjects.honorUiHints=false
+
+
+
+###############################################################################
+# Non-standard configuration settings.
+#
+# If enabled of the following are enabled then the viewer is deviating from the
+# RO spec standard; compatibility may be compromised with RO clients.
+###############################################################################
+
+# whether to show only object properties for object members
+# (on the object representation only)
+# Takes precedence over the other 'suppress' below.
+#isis.viewer.restfulobjects.objectPropertyValuesOnly=true
+isis.viewer.restfulobjects.objectPropertyValuesOnly=true
+
+# whether to suppress "describedby" links. Defaults to false.
+#isis.viewer.restfulobjects.suppressDescribedByLinks=true
+isis.viewer.restfulobjects.suppressDescribedByLinks=true
+
+# whether to suppress "update" links. Defaults to false.
+#isis.viewer.restfulobjects.suppressUpdateLink=true
+isis.viewer.restfulobjects.suppressUpdateLink=true
+
+# whether to suppress "id" json-prop for object members. Defaults to false.
+#isis.viewer.restfulobjects.suppressMemberId=true
+isis.viewer.restfulobjects.suppressMemberId=true
+
+# whether to suppress "links" json-prop for object members
+# (on the object representation only). Defaults to false.
+#isis.viewer.restfulobjects.suppressMemberLinks=true
+isis.viewer.restfulobjects.suppressMemberLinks=true
+
+# whether to suppress "extensions" json-prop for object members
+# (on the object representation only). Defaults to false.
+#isis.viewer.restfulobjects.suppressMemberExtensions=true
+isis.viewer.restfulobjects.suppressMemberExtensions=true
+
+# whether to suppress "disabledReason" json-prop for object members
+# (on the object representation only). Defaults to false.
+#isis.viewer.restfulobjects.suppressMemberDisabledReason=true
+isis.viewer.restfulobjects.suppressMemberDisabledReason=true
+
+###############################################################################