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 2015/11/29 13:22:49 UTC
[1/2] isis git commit: ISIS-1273: refactored RepresentationService
impl ...
Repository: isis
Updated Branches:
refs/heads/master 651fb1bba -> 587a8bd62
http://git-wip-us.apache.org/repos/asf/isis/blob/587a8bd6/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
index f8c28ee..029f042 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
@@ -48,6 +48,7 @@ import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
+import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
import org.apache.isis.viewer.restfulobjects.rendering.util.Util;
import org.apache.isis.viewer.restfulobjects.server.ResourceContext;
import org.apache.isis.viewer.restfulobjects.server.util.OidUtils;
@@ -78,13 +79,18 @@ public abstract class ResourceAbstract {
private ResourceContext resourceContext;
- protected void init(final Where where) {
- init(RepresentationType.GENERIC, where);
+ protected void init(
+ final Where where,
+ final RepresentationService.Intent intent) {
+ init(RepresentationType.GENERIC, where, intent);
}
- protected void init(final RepresentationType representationType, Where where) {
+ protected void init(
+ final RepresentationType representationType,
+ Where where,
+ final RepresentationService.Intent intent) {
String queryStringIfAny = getUrlDecodedQueryStringIfAny();
- init(representationType, where, queryStringIfAny);
+ init(representationType, where, intent, queryStringIfAny);
}
private String getUrlDecodedQueryStringIfAny() {
@@ -95,14 +101,16 @@ public abstract class ResourceAbstract {
protected void init(
final RepresentationType representationType,
final Where where,
+ final RepresentationService.Intent intent,
final InputStream arguments) {
final String urlDecodedQueryString = Util.asStringUtf8(arguments);
- init(representationType, where, urlDecodedQueryString);
+ init(representationType, where, intent, urlDecodedQueryString);
}
protected void init(
final RepresentationType representationType,
final Where where,
+ final RepresentationService.Intent intent,
final String urlUnencodedQueryString) {
if (!IsisContext.inSession()) {
throw RestfulObjectsApplicationException.create(HttpStatusCode.UNAUTHORIZED);
@@ -112,7 +120,7 @@ public abstract class ResourceAbstract {
}
this.resourceContext = new ResourceContext(
- representationType, httpHeaders, providers, uriInfo, request, where, urlUnencodedQueryString, httpServletRequest, httpServletResponse,
+ representationType, httpHeaders, providers, uriInfo, request, where, intent, urlUnencodedQueryString, httpServletRequest, httpServletResponse,
securityContext,
getDeploymentType(), getConfiguration(),
getServicesInjector(), getSpecificationLoader(),
http://git-wip-us.apache.org/repos/asf/isis/blob/587a8bd6/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/UserResourceServerside.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/UserResourceServerside.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/UserResourceServerside.java
index 0910aeb..17c4b54 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/UserResourceServerside.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/UserResourceServerside.java
@@ -35,13 +35,14 @@ import org.apache.isis.viewer.restfulobjects.applib.user.UserResource;
import org.apache.isis.viewer.restfulobjects.rendering.Caching;
import org.apache.isis.viewer.restfulobjects.rendering.Responses;
import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
+import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
public class UserResourceServerside extends ResourceAbstract implements UserResource {
@Override
@Produces({ MediaType.APPLICATION_JSON, RestfulMediaType.APPLICATION_JSON_USER })
public Response user() {
- init(RepresentationType.USER, Where.NOWHERE);
+ init(RepresentationType.USER, Where.NOWHERE, RepresentationService.Intent.NOT_APPLICABLE);
final UserReprRenderer renderer = new UserReprRenderer(getResourceContext(), null, JsonRepresentation.newMap());
renderer.includesSelf().with(getAuthenticationSession());
@@ -72,7 +73,7 @@ public class UserResourceServerside extends ResourceAbstract implements UserReso
@Override
@Produces({ MediaType.APPLICATION_JSON, RestfulMediaType.APPLICATION_JSON_HOME_PAGE })
public Response logout() {
- init(RepresentationType.HOME_PAGE, Where.NOWHERE);
+ init(RepresentationType.HOME_PAGE, Where.NOWHERE, RepresentationService.Intent.NOT_APPLICABLE);
final HomePageReprRenderer renderer = new HomePageReprRenderer(getResourceContext(), null, JsonRepresentation.newMap());
renderer.includesSelf();
http://git-wip-us.apache.org/repos/asf/isis/blob/587a8bd6/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/VersionResourceServerside.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/VersionResourceServerside.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/VersionResourceServerside.java
index bdbd8ad..2442d8d 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/VersionResourceServerside.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/VersionResourceServerside.java
@@ -36,6 +36,7 @@ import org.apache.isis.viewer.restfulobjects.applib.version.VersionResource;
import org.apache.isis.viewer.restfulobjects.rendering.Caching;
import org.apache.isis.viewer.restfulobjects.rendering.Responses;
import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
+import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
/**
* Implementation note: it seems to be necessary to annotate the implementation
@@ -49,7 +50,7 @@ public class VersionResourceServerside extends ResourceAbstract implements Versi
@GET
@Produces({ MediaType.APPLICATION_JSON, RestfulMediaType.APPLICATION_JSON_VERSION })
public Response version() {
- init(RepresentationType.VERSION, Where.NOWHERE);
+ init(RepresentationType.VERSION, Where.NOWHERE, RepresentationService.Intent.NOT_APPLICABLE);
fakeRuntimeExceptionIfXFail();
final VersionReprRenderer renderer = new VersionReprRenderer(getResourceContext(), null, JsonRepresentation.newMap());
http://git-wip-us.apache.org/repos/asf/isis/blob/587a8bd6/core/viewer-restfulobjects-server/src/test/java/org/apache/isis/viewer/restfulobjects/server/ResourceContextTest_ensureCompatibleAcceptHeader.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/test/java/org/apache/isis/viewer/restfulobjects/server/ResourceContextTest_ensureCompatibleAcceptHeader.java b/core/viewer-restfulobjects-server/src/test/java/org/apache/isis/viewer/restfulobjects/server/ResourceContextTest_ensureCompatibleAcceptHeader.java
index 9c60ec0..33e537e 100644
--- a/core/viewer-restfulobjects-server/src/test/java/org/apache/isis/viewer/restfulobjects/server/ResourceContextTest_ensureCompatibleAcceptHeader.java
+++ b/core/viewer-restfulobjects-server/src/test/java/org/apache/isis/viewer/restfulobjects/server/ResourceContextTest_ensureCompatibleAcceptHeader.java
@@ -161,7 +161,7 @@ public class ResourceContextTest_ensureCompatibleAcceptHeader {
private ResourceContext instantiateResourceContext(
final RepresentationType representationType) {
- return new ResourceContext(representationType, httpHeaders, null, null, null, null, null, httpServletRequest, null, null, null, null, null, null, null, null, null, null);
+ return new ResourceContext(representationType, httpHeaders, null, null, null, null, null, null, httpServletRequest, null, null, null, null, null, null, null, null, null, null);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/587a8bd6/core/viewer-restfulobjects-server/src/test/java/org/apache/isis/viewer/restfulobjects/server/ResourceContextTest_getArg.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/test/java/org/apache/isis/viewer/restfulobjects/server/ResourceContextTest_getArg.java b/core/viewer-restfulobjects-server/src/test/java/org/apache/isis/viewer/restfulobjects/server/ResourceContextTest_getArg.java
index 7a3ced3..21ad08e 100644
--- a/core/viewer-restfulobjects-server/src/test/java/org/apache/isis/viewer/restfulobjects/server/ResourceContextTest_getArg.java
+++ b/core/viewer-restfulobjects-server/src/test/java/org/apache/isis/viewer/restfulobjects/server/ResourceContextTest_getArg.java
@@ -56,7 +56,7 @@ public class ResourceContextTest_getArg {
givenServletRequestQueryString(queryString);
givenServletRequestParameterMapEmpty();
- resourceContext = new ResourceContext(null, null, null, null, null, null, (String)null, httpServletRequest, null, null, null, null, null, null, null, null, null, null) {
+ resourceContext = new ResourceContext(null, null, null, null, null, null, null, (String)null, httpServletRequest, null, null, null, null, null, null, null, null, null, null) {
@Override
void init(final RepresentationType representationType) {
//
@@ -72,7 +72,7 @@ public class ResourceContextTest_getArg {
givenServletRequestQueryString(queryString);
givenServletRequestParameterMapEmpty();
- resourceContext = new ResourceContext(null, null, null, null, null, null, (String)null, httpServletRequest, null, null, null, null, null, null, null, null, null, null) {
+ resourceContext = new ResourceContext(null, null, null, null, null, null, null, (String)null, httpServletRequest, null, null, null, null, null, null, null, null, null, null) {
@Override
void init(final RepresentationType representationType) {
//
[2/2] isis git commit: ISIS-1273: refactored RepresentationService
impl ...
Posted by da...@apache.org.
ISIS-1273: refactored RepresentationService impl ...
... as a default fallback impl of ContentNegotiationService
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/587a8bd6
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/587a8bd6
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/587a8bd6
Branch: refs/heads/master
Commit: 587a8bd622c9511389b92102c4308f6dd0dfabab
Parents: 651fb1b
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sun Nov 29 12:22:24 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Sun Nov 29 12:22:41 2015 +0000
----------------------------------------------------------------------
.../src/main/asciidoc/documentation.adoc | 3 +
.../rendering/RendererContext.java | 18 +-
.../rendering/RendererContext4.java | 3 +-
.../rendering/RendererContext5.java | 4 +-
.../rendering/RendererContext6.java | 33 +++
.../ObjectAndActionInvocation.java | 12 +-
.../domainobjects/ObjectAndCollection2.java | 39 +++
.../domainobjects/ObjectAndProperty2.java | 36 +++
...NegotiationServiceForRestfulObjectsV1_0.java | 173 +++++++++++++
.../service/RepresentationService.java | 38 +--
.../RepresentationServiceForRestfulObjects.java | 255 +++++++------------
.../conneg/ContentNegotiationService.java | 2 -
.../restfulobjects/server/ResourceContext.java | 19 +-
.../DomainObjectResourceServerside.java | 73 +++---
.../server/resources/DomainResourceHelper.java | 44 ++--
.../DomainServiceResourceServerside.java | 41 ++-
.../resources/DomainTypeResourceServerside.java | 19 +-
.../resources/HomePageResourceServerside.java | 3 +-
.../server/resources/ResourceAbstract.java | 20 +-
.../resources/UserResourceServerside.java | 5 +-
.../resources/VersionResourceServerside.java | 3 +-
...ontextTest_ensureCompatibleAcceptHeader.java | 2 +-
.../server/ResourceContextTest_getArg.java | 4 +-
23 files changed, 565 insertions(+), 284 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/587a8bd6/adocs/documentation/src/main/asciidoc/documentation.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/documentation.adoc b/adocs/documentation/src/main/asciidoc/documentation.adoc
index 88b25e5..4ef5b1c 100644
--- a/adocs/documentation/src/main/asciidoc/documentation.adoc
+++ b/adocs/documentation/src/main/asciidoc/documentation.adoc
@@ -144,6 +144,9 @@ tools (not ASF):
* link:release-notes.html[Release Notes]
* link:migration-notes.html[Migration Notes]
+*Get involved!*
+
+* Our link:https://issues.apache.org/jira/secure/RapidBoard.jspa?rapidView=87[*Kanban board*] maps out the JIRA issues we are looking to tackle in the next few releases
|====
http://git-wip-us.apache.org/repos/asf/isis/blob/587a8bd6/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 3ee6991..7477085 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
@@ -32,25 +32,25 @@ import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.DomainObjec
public interface RendererContext {
- public String urlFor(final String url);
+ String urlFor(final String url);
- public AuthenticationSession getAuthenticationSession();
+ AuthenticationSession getAuthenticationSession();
- public IsisConfiguration getConfiguration();
+ IsisConfiguration getConfiguration();
- public PersistenceSession getPersistenceSession();
+ PersistenceSession getPersistenceSession();
/**
* @deprecated - replaced by {@link #getPersistenceSession()}.
*/
@Deprecated
- public AdapterManager getAdapterManager();
+ AdapterManager getAdapterManager();
- public Where getWhere();
+ Where getWhere();
- public List<List<String>> getFollowLinks();
+ List<List<String>> getFollowLinks();
- public Localization getLocalization();
+ Localization getLocalization();
boolean honorUiHints();
@@ -71,6 +71,6 @@ public interface RendererContext {
* @param objectAdapter - the object proposed to be rendered eagerly
* @return whether this adapter has already been rendered (implying the caller should not render the value).
*/
- public boolean canEagerlyRender(ObjectAdapter objectAdapter);
+ boolean canEagerlyRender(ObjectAdapter objectAdapter);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/587a8bd6/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext4.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext4.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext4.java
index f8ffe58..129f1a0 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext4.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext4.java
@@ -19,13 +19,12 @@
package org.apache.isis.viewer.restfulobjects.rendering;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.runtime.system.DeploymentType;
/**
* TODO: roll-up in the future (introduced only so that API does not break)
*/
public interface RendererContext4 extends RendererContext3 {
- public InteractionInitiatedBy getInteractionInitiatedBy();
+ InteractionInitiatedBy getInteractionInitiatedBy();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/587a8bd6/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext5.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext5.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext5.java
index 76b8b95..8233ea9 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext5.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext5.java
@@ -26,7 +26,7 @@ import org.apache.isis.core.metamodel.spec.SpecificationLoader;
*/
public interface RendererContext5 extends RendererContext4 {
- public SpecificationLoader getSpecificationLoader();
- public ServicesInjector getServicesInjector();
+ SpecificationLoader getSpecificationLoader();
+ ServicesInjector getServicesInjector();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/587a8bd6/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext6.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext6.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext6.java
new file mode 100644
index 0000000..febbaed
--- /dev/null
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext6.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.viewer.restfulobjects.rendering;
+
+import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
+
+/**
+ * TODO: roll-up in the future (introduced only so that API does not break)
+ */
+public interface RendererContext6 extends RendererContext5 {
+
+ /**
+ * Applies only when rendering a domain object.
+ */
+ RepresentationService.Intent getIntent();
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/587a8bd6/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectAndActionInvocation.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectAndActionInvocation.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectAndActionInvocation.java
index 10795a2..a8c16fb 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectAndActionInvocation.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectAndActionInvocation.java
@@ -28,12 +28,19 @@ public class ObjectAndActionInvocation {
private final ObjectAction action;
private final JsonRepresentation arguments;
private final ObjectAdapter returnedAdapter;
+ private final ActionResultReprRenderer.SelfLink selfLink;
- public ObjectAndActionInvocation(final ObjectAdapter objectAdapter, final ObjectAction action, final JsonRepresentation arguments, final ObjectAdapter returnedAdapter) {
+ public ObjectAndActionInvocation(
+ final ObjectAdapter objectAdapter,
+ final ObjectAction action,
+ final JsonRepresentation arguments,
+ final ObjectAdapter returnedAdapter,
+ final ActionResultReprRenderer.SelfLink selfLink) {
this.objectAdapter = objectAdapter;
this.action = action;
this.arguments = arguments;
this.returnedAdapter = returnedAdapter;
+ this.selfLink = selfLink;
}
public ObjectAdapter getObjectAdapter() {
@@ -52,4 +59,7 @@ public class ObjectAndActionInvocation {
return returnedAdapter;
}
+ public ActionResultReprRenderer.SelfLink getSelfLink() {
+ return selfLink;
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/587a8bd6/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectAndCollection2.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectAndCollection2.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectAndCollection2.java
new file mode 100644
index 0000000..3666609
--- /dev/null
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectAndCollection2.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.viewer.restfulobjects.rendering.domainobjects;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+
+public class ObjectAndCollection2 extends ObjectAndCollection {
+
+ private final MemberReprMode memberReprMode;
+
+ public ObjectAndCollection2(
+ final ObjectAdapter objectAdapter,
+ final OneToManyAssociation collection,
+ final MemberReprMode memberReprMode) {
+ super(objectAdapter, collection);
+ this.memberReprMode = memberReprMode;
+ }
+
+ public MemberReprMode getMemberReprMode() {
+ return memberReprMode;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/587a8bd6/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectAndProperty2.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectAndProperty2.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectAndProperty2.java
new file mode 100644
index 0000000..a827402
--- /dev/null
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectAndProperty2.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.viewer.restfulobjects.rendering.domainobjects;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+
+public class ObjectAndProperty2 extends ObjectAndProperty {
+
+ private final MemberReprMode memberReprMode;
+
+ public ObjectAndProperty2(final ObjectAdapter objectAdapter, final OneToOneAssociation property, final MemberReprMode memberReprMode) {
+ super(objectAdapter, property);
+ this.memberReprMode = memberReprMode;
+ }
+
+ public MemberReprMode getMemberReprMode() {
+ return memberReprMode;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/587a8bd6/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/ContentNegotiationServiceForRestfulObjectsV1_0.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/ContentNegotiationServiceForRestfulObjectsV1_0.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/ContentNegotiationServiceForRestfulObjectsV1_0.java
new file mode 100644
index 0000000..b6e218a
--- /dev/null
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/ContentNegotiationServiceForRestfulObjectsV1_0.java
@@ -0,0 +1,173 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.isis.viewer.restfulobjects.rendering.service;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.ResponseBuilder;
+
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.DomainServiceLayout;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.version.Version;
+import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.rendering.Caching;
+import org.apache.isis.viewer.restfulobjects.rendering.Responses;
+import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ActionResultReprRenderer;
+import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.DomainObjectReprRenderer;
+import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectActionReprRenderer;
+import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndAction;
+import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndActionInvocation;
+import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndCollection;
+import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndCollection2;
+import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndProperty;
+import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndProperty2;
+import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectCollectionReprRenderer;
+import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectPropertyReprRenderer;
+import org.apache.isis.viewer.restfulobjects.rendering.service.conneg.ContentNegotiationService;
+
+@DomainService(
+ nature = NatureOfService.DOMAIN
+)
+@DomainServiceLayout(
+ menuOrder = "" + Integer.MAX_VALUE // default
+)
+public class ContentNegotiationServiceForRestfulObjectsV1_0 implements ContentNegotiationService {
+
+ private static final DateFormat ETAG_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
+
+ @PostConstruct
+ public void init(final Map<String, String> properties) {
+
+ }
+
+ @PreDestroy
+ public void shutdown() {
+ }
+
+ @Override
+ public ResponseBuilder buildResponse(
+ final RepresentationService.Context2 renderContext2,
+ final ObjectAdapter objectAdapter) {
+
+ final DomainObjectReprRenderer renderer =
+ new DomainObjectReprRenderer(renderContext2, null, JsonRepresentation.newMap());
+ renderer.with(objectAdapter).includesSelf();
+
+ final ResponseBuilder responseBuilder = Responses.ofOk(renderer, Caching.NONE);
+
+ if(renderContext2 instanceof RepresentationService.Context6) {
+ final RepresentationService.Context6 context6 = (RepresentationService.Context6) renderContext2;
+ final RepresentationService.Intent intent = context6.getIntent();
+ if(intent == RepresentationService.Intent.JUST_CREATED) {
+ responseBuilder.status(Response.Status.CREATED);
+ }
+ }
+
+ final Version version = objectAdapter.getVersion();
+ if (version != null && version.getTime() != null) {
+ responseBuilder.tag(ETAG_FORMAT.format(version.getTime()));
+ }
+
+ return responseBuilder(responseBuilder);
+ }
+
+ @Override
+ public ResponseBuilder buildResponse(
+ final RepresentationService.Context2 renderContext2,
+ final ObjectAndProperty objectAndProperty) {
+
+ final ObjectPropertyReprRenderer renderer = new ObjectPropertyReprRenderer(renderContext2);
+ renderer.with(objectAndProperty)
+ .usingLinkTo(renderContext2.getAdapterLinkTo());
+
+ if(objectAndProperty instanceof ObjectAndProperty2) {
+ final ObjectAndProperty2 objectAndProperty2 = (ObjectAndProperty2) objectAndProperty;
+ renderer
+ .withMemberMode(objectAndProperty2.getMemberReprMode());
+
+ }
+
+ final ResponseBuilder responseBuilder = Responses.ofOk(renderer, Caching.NONE);
+ return responseBuilder;
+ }
+
+ @Override
+ public ResponseBuilder buildResponse(
+ final RepresentationService.Context2 renderContext2,
+ final ObjectAndCollection objectAndCollection) {
+
+ final ObjectCollectionReprRenderer renderer = new ObjectCollectionReprRenderer(renderContext2);
+ renderer.with(objectAndCollection)
+ .usingLinkTo(renderContext2.getAdapterLinkTo());
+
+ if(objectAndCollection instanceof ObjectAndCollection2) {
+ final ObjectAndCollection2 objectAndCollection2 = (ObjectAndCollection2) objectAndCollection;
+
+ renderer.withMemberMode(objectAndCollection2.getMemberReprMode());
+ }
+
+ final ResponseBuilder responseBuilder = Responses.ofOk(renderer, Caching.NONE);
+
+ return responseBuilder(responseBuilder);
+ }
+
+ @Override
+ public ResponseBuilder buildResponse(
+ final RepresentationService.Context2 renderContext2,
+ final ObjectAndAction objectAndAction) {
+
+ final ObjectActionReprRenderer renderer = new ObjectActionReprRenderer(renderContext2);
+ renderer.with(objectAndAction)
+ .usingLinkTo(renderContext2.getAdapterLinkTo())
+ .asStandalone();
+
+ final ResponseBuilder responseBuilder = Responses.ofOk(renderer, Caching.NONE);
+
+ return responseBuilder(responseBuilder);
+ }
+
+ @Override
+ public ResponseBuilder buildResponse(
+ final RepresentationService.Context2 renderContext2,
+ final ObjectAndActionInvocation objectAndActionInvocation) {
+
+ final ActionResultReprRenderer renderer = new ActionResultReprRenderer(renderContext2, objectAndActionInvocation.getSelfLink());
+ renderer.with(objectAndActionInvocation)
+ .using(renderContext2.getAdapterLinkTo());
+
+ final ResponseBuilder responseBuilder = Responses.ofOk(renderer, Caching.NONE);
+ Responses.addLastModifiedAndETagIfAvailable(responseBuilder, objectAndActionInvocation.getObjectAdapter().getVersion());
+
+ return responseBuilder(responseBuilder);
+ }
+
+ /**
+ * For easy subclassing to further customize, eg additional headers
+ */
+ protected ResponseBuilder responseBuilder(final ResponseBuilder responseBuilder) {
+ return responseBuilder;
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/587a8bd6/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 30fa1b7..1f2e720 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
@@ -20,15 +20,12 @@ import javax.ws.rs.core.Response;
import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext2;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext3;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext4;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext5;
+import org.apache.isis.viewer.restfulobjects.rendering.RendererContext6;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ActionResultReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.MemberReprMode;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAdapterLinkTo;
@@ -47,15 +44,23 @@ import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndPr
*/
public interface RepresentationService {
- public enum Intent {
+ /**
+ * As returned by {@link RendererContext6#getIntent()}, applies only to the representation of
+ * domain objects.
+ */
+ enum Intent {
/**
- * ie return a 201
+ * object just created, ie return a 201
*/
JUST_CREATED,
/**
- * ie return a 200
+ * object already persistent, ie return a 200
+ */
+ ALREADY_PERSISTENT,
+ /**
+ * representation is not of a domain object, so does not apply.
*/
- ALREADY_PERSISTENT
+ NOT_APPLICABLE
}
/**
@@ -96,20 +101,17 @@ public interface RepresentationService {
ObjectAndActionInvocation objectAndActionInvocation,
ActionResultReprRenderer.SelfLink selfLink);
- public static interface Context extends RendererContext {
+ interface Context extends RendererContext {
ObjectAdapterLinkTo getAdapterLinkTo();
}
- public static interface Context2 extends Context, RendererContext2 {
- ObjectAdapterLinkTo getAdapterLinkTo();
+ interface Context2 extends Context, RendererContext2 {
+ }
+ interface Context3 extends Context2, RendererContext3 {
}
- public static interface Context3 extends Context2, RendererContext3 {
- DeploymentType getDeploymentType();
+ interface Context4 extends Context3, RendererContext4 {
}
- public static interface Context4 extends Context3, RendererContext4 {
- InteractionInitiatedBy getInteractionInitiatedBy();
+ interface Context5 extends Context4, RendererContext5 {
}
- public static interface Context5 extends Context4, RendererContext5 {
- public SpecificationLoader getSpecificationLoader();
- public ServicesInjector getServicesInjector();
+ interface Context6 extends Context5, RendererContext6 {
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/587a8bd6/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceForRestfulObjects.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceForRestfulObjects.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceForRestfulObjects.java
index 7ca8374..4beba01 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceForRestfulObjects.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceForRestfulObjects.java
@@ -16,32 +16,26 @@
*/
package org.apache.isis.viewer.restfulobjects.rendering.service;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
import java.util.List;
+import java.util.Map;
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
+import com.google.common.base.Function;
+
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.version.Version;
-import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
-import org.apache.isis.viewer.restfulobjects.rendering.Caching;
-import org.apache.isis.viewer.restfulobjects.rendering.Responses;
-import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ActionResultReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ActionResultReprRenderer.SelfLink;
-import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.DomainObjectReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.MemberReprMode;
-import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectActionReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndAction;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndActionInvocation;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndCollection;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndProperty;
-import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectCollectionReprRenderer;
-import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectPropertyReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.service.conneg.ContentNegotiationService;
@DomainService(
@@ -49,67 +43,44 @@ import org.apache.isis.viewer.restfulobjects.rendering.service.conneg.ContentNeg
)
public class RepresentationServiceForRestfulObjects implements RepresentationService {
- private static final DateFormat ETAG_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
- // //////////////////////////////////////////////////////////////
- // objectRepresentation
- // //////////////////////////////////////////////////////////////
+ @PostConstruct
+ public void init(final Map<String, String> properties) {
+
+ }
+
@Override
@Programmatic
public Response objectRepresentation(
final Context rendererContext,
final ObjectAdapter objectAdapter) {
- return objectRepresentation(rendererContext, objectAdapter, Intent.ALREADY_PERSISTENT);
+
+ final Context2 renderContext2 = asContext2(rendererContext);
+ final ResponseBuilder responseBuilder = buildResponse(new Function<ContentNegotiationService, ResponseBuilder>() {
+ @Override
+ public ResponseBuilder apply(final ContentNegotiationService connegService) {
+ return connegService.buildResponse(renderContext2, objectAdapter);
+ }
+ });
+
+ assertContentNegotiationServiceHandled(responseBuilder);
+ return buildResponse(responseBuilder);
}
+ /**
+ * @deprecated - use {@link #objectRepresentation(Context, ObjectAdapter, Intent)}
+ */
+ @Deprecated
@Override
@Programmatic
public Response objectRepresentation(
final Context rendererContext,
final ObjectAdapter objectAdapter,
- final Intent intent) {
-
- ResponseBuilder responseBuilder = null;
-
- if(rendererContext instanceof Context2) {
- final Context2 renderContext2 = (Context2) rendererContext;
-
- final List<ContentNegotiationService> contentNegotiationServices =
- lookupService(renderContext2, ContentNegotiationService.class);
- for (final ContentNegotiationService contentNegotiationService : contentNegotiationServices) {
- responseBuilder = contentNegotiationService.buildResponse(renderContext2, objectAdapter);
- if(responseBuilder != null) {
- break;
- }
- }
- }
-
- if (responseBuilder == null) {
- // fall through
- final DomainObjectReprRenderer renderer = new DomainObjectReprRenderer(rendererContext, null, JsonRepresentation.newMap());
-
- renderer.with(objectAdapter).includesSelf();
-
- responseBuilder = Responses.ofOk(renderer, Caching.NONE);
-
- final Version version = objectAdapter.getVersion();
- if (version != null && version.getTime() != null) {
- responseBuilder.tag(ETAG_FORMAT.format(version.getTime()));
- }
- }
-
- if(intent == Intent.JUST_CREATED) {
- responseBuilder.status(Response.Status.CREATED);
- }
-
- return buildResponse(responseBuilder);
+ final Intent unused) {
+ return objectRepresentation(rendererContext, objectAdapter);
}
- // //////////////////////////////////////////////////////////////
- // propertyDetails
- // //////////////////////////////////////////////////////////////
-
@Override
@Programmatic
@@ -118,38 +89,18 @@ public class RepresentationServiceForRestfulObjects implements RepresentationSer
final ObjectAndProperty objectAndProperty,
final MemberReprMode memberReprMode) {
- ResponseBuilder responseBuilder = null;
-
- if(rendererContext instanceof Context2) {
- final Context2 renderContext2 = (Context2) rendererContext;
-
- final List<ContentNegotiationService> contentNegotiationServices =
- lookupService(renderContext2, ContentNegotiationService.class);
- for (final ContentNegotiationService contentNegotiationService : contentNegotiationServices) {
- responseBuilder = contentNegotiationService.buildResponse(renderContext2, objectAndProperty);
- if(responseBuilder != null) {
- break;
- }
+ final Context2 renderContext2 = asContext2(rendererContext);
+ final ResponseBuilder responseBuilder = buildResponse(new Function<ContentNegotiationService, ResponseBuilder>() {
+ @Override
+ public ResponseBuilder apply(final ContentNegotiationService connegService) {
+ return connegService.buildResponse(renderContext2, objectAndProperty);
}
- }
-
- if(responseBuilder == null) {
- // fall through
-
- final ObjectPropertyReprRenderer renderer = new ObjectPropertyReprRenderer(rendererContext);
- renderer.with(objectAndProperty)
- .usingLinkTo(rendererContext.getAdapterLinkTo())
- .withMemberMode(memberReprMode);
-
- responseBuilder = Responses.ofOk(renderer, Caching.NONE);
- }
+ });
+ assertContentNegotiationServiceHandled(responseBuilder);
return buildResponse(responseBuilder);
}
- // //////////////////////////////////////////////////////////////
- // collectionDetails
- // //////////////////////////////////////////////////////////////
@Override
@Programmatic
@@ -158,38 +109,20 @@ public class RepresentationServiceForRestfulObjects implements RepresentationSer
final ObjectAndCollection objectAndCollection,
final MemberReprMode memberReprMode) {
- ResponseBuilder responseBuilder = null;
-
- if(rendererContext instanceof Context2) {
- final Context2 renderContext2 = (Context2) rendererContext;
-
- final List<ContentNegotiationService> contentNegotiationServices =
- lookupService(renderContext2, ContentNegotiationService.class);
- for (final ContentNegotiationService contentNegotiationService : contentNegotiationServices) {
- responseBuilder = contentNegotiationService.buildResponse(renderContext2, objectAndCollection);
- if(responseBuilder != null) {
- break;
- }
+ final Context2 renderContext2 = asContext2(rendererContext);
+ final ResponseBuilder responseBuilder = buildResponse(new Function<ContentNegotiationService, ResponseBuilder>() {
+ @Override
+ public ResponseBuilder apply(final ContentNegotiationService connegService) {
+ return connegService.buildResponse(renderContext2, objectAndCollection);
}
- }
-
- if(responseBuilder == null) {
- // fall through
- final ObjectCollectionReprRenderer renderer = new ObjectCollectionReprRenderer(rendererContext);
- renderer.with(objectAndCollection)
- .usingLinkTo(rendererContext.getAdapterLinkTo())
- .withMemberMode(memberReprMode);
-
- responseBuilder = Responses.ofOk(renderer, Caching.NONE);
- }
-
+ });
+ assertContentNegotiationServiceHandled(responseBuilder);
return buildResponse(responseBuilder);
}
- // //////////////////////////////////////////////////////////////
- // action Prompt
- // //////////////////////////////////////////////////////////////
+
+
@Override
@Programmatic
@@ -197,38 +130,18 @@ public class RepresentationServiceForRestfulObjects implements RepresentationSer
final Context rendererContext,
final ObjectAndAction objectAndAction) {
- ResponseBuilder responseBuilder = null;
-
- if(rendererContext instanceof Context2) {
- final Context2 renderContext2 = (Context2) rendererContext;
-
- final List<ContentNegotiationService> contentNegotiationServices =
- lookupService(renderContext2, ContentNegotiationService.class);
- for (final ContentNegotiationService contentNegotiationService : contentNegotiationServices) {
- responseBuilder = contentNegotiationService.buildResponse(renderContext2, objectAndAction);
- if(responseBuilder != null) {
- break;
- }
+ final Context2 renderContext2 = asContext2(rendererContext);
+ final ResponseBuilder responseBuilder = buildResponse(new Function<ContentNegotiationService, ResponseBuilder>() {
+ @Override
+ public ResponseBuilder apply(final ContentNegotiationService connegService) {
+ return connegService.buildResponse(renderContext2, objectAndAction);
}
- }
-
- if(responseBuilder == null) {
- // fall through
- final ObjectActionReprRenderer renderer = new ObjectActionReprRenderer(rendererContext);
- renderer.with(objectAndAction)
- .usingLinkTo(rendererContext.getAdapterLinkTo())
- .asStandalone();
-
- responseBuilder = Responses.ofOk(renderer, Caching.NONE);
- }
-
+ });
+ assertContentNegotiationServiceHandled(responseBuilder);
return buildResponse(responseBuilder);
}
- // //////////////////////////////////////////////////////////////
- // action Result
- // //////////////////////////////////////////////////////////////
@Override
@Programmatic
@@ -237,43 +150,65 @@ public class RepresentationServiceForRestfulObjects implements RepresentationSer
final ObjectAndActionInvocation objectAndActionInvocation,
final SelfLink selfLink) {
- ResponseBuilder responseBuilder = null;
+ final Context2 renderContext2 = asContext2(rendererContext);
+ final ResponseBuilder responseBuilder = buildResponse(new Function<ContentNegotiationService, ResponseBuilder>() {
+ @Override
+ public ResponseBuilder apply(final ContentNegotiationService connegService) {
+ return connegService.buildResponse(renderContext2, objectAndActionInvocation);
+ }
+ });
- if(rendererContext instanceof Context2) {
- final Context2 renderContext2 = (Context2) rendererContext;
+ assertContentNegotiationServiceHandled(responseBuilder);
+ return buildResponse(responseBuilder);
+ }
- final List<ContentNegotiationService> contentNegotiationServices =
- lookupService(renderContext2, ContentNegotiationService.class);
- for (final ContentNegotiationService contentNegotiationService : contentNegotiationServices) {
- responseBuilder = contentNegotiationService.buildResponse(renderContext2, objectAndActionInvocation);
- if(responseBuilder != null) {
- break;
- }
- }
+ private Context2 asContext2(final Context rendererContext) {
+ if (rendererContext instanceof Context2) {
+ final Context2 context = (Context2) rendererContext;
+ return context;
}
+ throw new IllegalArgumentException(String.format(
+ "The %s requires that the context to implement %s",
+ RepresentationServiceForRestfulObjects.class.getSimpleName(), Context2.class.getName()));
+ }
+ void assertContentNegotiationServiceHandled(final ResponseBuilder responseBuilder) {
if (responseBuilder == null) {
- // fall through
- final ActionResultReprRenderer renderer = new ActionResultReprRenderer(rendererContext, selfLink);
- renderer.with(objectAndActionInvocation)
- .using(rendererContext.getAdapterLinkTo());
-
- responseBuilder = Responses.ofOk(renderer, Caching.NONE);
- Responses.addLastModifiedAndETagIfAvailable(responseBuilder, objectAndActionInvocation.getObjectAdapter().getVersion());
+ throw new IllegalStateException("Could not locate " + ContentNegotiationService.class.getSimpleName() + " to handle request");
}
-
- return buildResponse(responseBuilder);
}
- protected <T> List<T> lookupService(final Context2 renderContext2, final Class<T> serviceClass) {
- return renderContext2.getPersistenceSession().getServicesInjector().lookupServices(serviceClass);
+ /**
+ * Iterates over all {@link #contentNegotiationServices injected} {@link ContentNegotiationService}s to find one
+ * that returns a {@link ResponseBuilder} using the provided function.
+ *
+ * <p>
+ * There will always be at least one such service, namely the
+ * {@link ContentNegotiationServiceForRestfulObjectsV1_0}.
+ * </p>
+ *
+ * @param connegServiceBuildResponse - the function to ask of the {@link ContentNegotiationService}.
+ */
+ ResponseBuilder buildResponse(
+ final Function<ContentNegotiationService, ResponseBuilder> connegServiceBuildResponse) {
+ ResponseBuilder responseBuilder = null;
+ for (final ContentNegotiationService contentNegotiationService : contentNegotiationServices) {
+ responseBuilder = connegServiceBuildResponse.apply(contentNegotiationService);
+ if(responseBuilder != null) {
+ return responseBuilder;
+ }
+ }
+ return null;
}
/**
- * Overridable to allow further customization.
+ * Overriddable to allow further customization.
*/
protected Response buildResponse(final ResponseBuilder responseBuilder) {
return responseBuilder.build();
}
+
+ @Inject
+ List<ContentNegotiationService> contentNegotiationServices;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/587a8bd6/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationService.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationService.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationService.java
index f6b1352..dcce78c 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationService.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationService.java
@@ -34,11 +34,9 @@ import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationSer
public interface ContentNegotiationService {
- @Programmatic
@PostConstruct
public void init(Map<String, String> properties);
- @Programmatic
@PreDestroy
public void shutdown();
http://git-wip-us.apache.org/repos/asf/isis/blob/587a8bd6/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 149d638..f739491 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
@@ -52,11 +52,12 @@ import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest.DomainModel;
import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest.RequestParameter;
import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
-import org.apache.isis.viewer.restfulobjects.rendering.RendererContext5;
+import org.apache.isis.viewer.restfulobjects.rendering.RendererContext6;
import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
+import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
import org.apache.isis.viewer.restfulobjects.rendering.util.Util;
-public class ResourceContext implements RendererContext5 {
+public class ResourceContext implements RendererContext6 {
private final HttpHeaders httpHeaders;
private final UriInfo uriInfo;
@@ -77,6 +78,7 @@ public class ResourceContext implements RendererContext5 {
private List<List<String>> followLinks;
private final Where where;
+ private final RepresentationService.Intent intent;
private final InteractionInitiatedBy interactionInitiatedBy;
private final String urlUnencodedQueryString;
@@ -91,6 +93,7 @@ public class ResourceContext implements RendererContext5 {
final UriInfo uriInfo,
final Request request,
final Where where,
+ final RepresentationService.Intent intent,
final String urlUnencodedQueryStringIfAny,
final HttpServletRequest httpServletRequest,
final HttpServletResponse httpServletResponse,
@@ -108,6 +111,8 @@ public class ResourceContext implements RendererContext5 {
this.providers = providers;
this.uriInfo = uriInfo;
this.request = request;
+ this.where = where;
+ this.intent = intent;
this.urlUnencodedQueryString = urlUnencodedQueryStringIfAny;
this.httpServletRequest = httpServletRequest;
this.httpServletResponse = httpServletResponse;
@@ -118,7 +123,6 @@ public class ResourceContext implements RendererContext5 {
this.authenticationSession = authenticationSession;
this.persistenceSession = persistenceSession;
this.specificationLoader = specificationLoader;
- this.where = where;
this.deploymentType = deploymentType;
this.interactionInitiatedBy = interactionInitiatedBy;
@@ -330,6 +334,14 @@ public class ResourceContext implements RendererContext5 {
return where;
}
+ /**
+ * Only applies to rendering of objects
+ * @return
+ */
+ @Override
+ public RepresentationService.Intent getIntent() {
+ return intent;
+ }
//region > canEagerlyRender
private Set<Oid> rendered = Sets.newHashSet();
@@ -400,5 +412,4 @@ public class ResourceContext implements RendererContext5 {
return getUriInfo().getBaseUri().toString() + url;
}
-
}
http://git-wip-us.apache.org/repos/asf/isis/blob/587a8bd6/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainObjectResourceServerside.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainObjectResourceServerside.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainObjectResourceServerside.java
index 75691d9..8948555 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainObjectResourceServerside.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainObjectResourceServerside.java
@@ -68,7 +68,7 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
})
public Response persist(@PathParam("domainType") String domainType, final InputStream object) {
- init(RepresentationType.DOMAIN_OBJECT, Where.OBJECT_FORMS);
+ init(RepresentationType.DOMAIN_OBJECT, Where.OBJECT_FORMS, RepresentationService.Intent.JUST_CREATED);
final String objectStr = Util.asStringUtf8(object);
final JsonRepresentation objectRepr = Util.readAsMap(objectStr);
@@ -100,7 +100,7 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
}
getResourceContext().getPersistenceSession().makePersistentInTransaction(objectAdapter);
- return getDomainResourceHelper(objectAdapter).objectRepresentation(RepresentationService.Intent.JUST_CREATED);
+ return newDomainResourceHelper(objectAdapter).objectRepresentation(RepresentationService.Intent.JUST_CREATED);
}
@@ -118,15 +118,11 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
})
@PrettyPrinting
public Response object(@PathParam("domainType") String domainType, @PathParam("instanceId") final String instanceId) {
- init(RepresentationType.DOMAIN_OBJECT, Where.OBJECT_FORMS);
+ init(RepresentationType.DOMAIN_OBJECT, Where.OBJECT_FORMS, RepresentationService.Intent.ALREADY_PERSISTENT);
final ObjectAdapter objectAdapter = getObjectAdapterElseThrowNotFound(domainType, instanceId);
- return getDomainResourceHelper(objectAdapter).objectRepresentation();
- }
-
- private DomainResourceHelper getDomainResourceHelper(final ObjectAdapter objectAdapter) {
- return new DomainResourceHelper(getResourceContext(), objectAdapter);
+ return newDomainResourceHelper(objectAdapter).objectRepresentation();
}
@@ -141,7 +137,7 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
@PrettyPrinting
public Response object(@PathParam("domainType") String domainType, @PathParam("instanceId") final String instanceId, final InputStream object) {
- init(RepresentationType.DOMAIN_OBJECT, Where.OBJECT_FORMS);
+ init(RepresentationType.DOMAIN_OBJECT, Where.OBJECT_FORMS, RepresentationService.Intent.ALREADY_PERSISTENT);
final String objectStr = Util.asStringUtf8(object);
final JsonRepresentation argRepr = Util.readAsMap(objectStr);
@@ -161,7 +157,7 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
throw RestfulObjectsApplicationException.createWithBody(HttpStatusCode.BAD_REQUEST, argRepr, validity.getReason());
}
- return getDomainResourceHelper(objectAdapter).objectRepresentation();
+ return newDomainResourceHelper(objectAdapter).objectRepresentation();
}
@Override
@@ -188,10 +184,10 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
})
@PrettyPrinting
public Response propertyDetails(@PathParam("domainType") String domainType, @PathParam("instanceId") final String instanceId, @PathParam("propertyId") final String propertyId) {
- init(RepresentationType.OBJECT_PROPERTY, Where.OBJECT_FORMS);
+ init(RepresentationType.OBJECT_PROPERTY, Where.OBJECT_FORMS, RepresentationService.Intent.NOT_APPLICABLE);
final ObjectAdapter objectAdapter = getObjectAdapterElseThrowNotFound(domainType, instanceId);
- final DomainResourceHelper helper = getDomainResourceHelper(objectAdapter);
+ final DomainResourceHelper helper = newDomainResourceHelper(objectAdapter);
return helper.propertyDetails(
propertyId,
@@ -208,10 +204,10 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
MediaType.APPLICATION_XML, RestfulMediaType.APPLICATION_XML_OBJECT_PROPERTY, RestfulMediaType.APPLICATION_XML_ERROR
})
public Response modifyProperty(@PathParam("domainType") String domainType, @PathParam("instanceId") final String instanceId, @PathParam("propertyId") final String propertyId, final InputStream body) {
- init(Where.OBJECT_FORMS);
+ init(Where.OBJECT_FORMS, RepresentationService.Intent.NOT_APPLICABLE);
final ObjectAdapter objectAdapter = getObjectAdapterElseThrowNotFound(domainType, instanceId);
- final DomainResourceHelper helper = getDomainResourceHelper(objectAdapter);
+ final DomainResourceHelper helper = newDomainResourceHelper(objectAdapter);
final ObjectAdapterAccessHelper accessHelper = new ObjectAdapterAccessHelper(getResourceContext(), objectAdapter);
final OneToOneAssociation property = accessHelper.getPropertyThatIsVisibleForIntent(propertyId,
@@ -245,10 +241,10 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
MediaType.APPLICATION_XML, RestfulMediaType.APPLICATION_XML_OBJECT_PROPERTY, RestfulMediaType.APPLICATION_XML_ERROR
})
public Response clearProperty(@PathParam("domainType") String domainType, @PathParam("instanceId") final String instanceId, @PathParam("propertyId") final String propertyId) {
- init(Where.OBJECT_FORMS);
+ init(Where.OBJECT_FORMS, RepresentationService.Intent.NOT_APPLICABLE);
final ObjectAdapter objectAdapter = getObjectAdapterElseThrowNotFound(domainType, instanceId);
- final DomainResourceHelper helper = getDomainResourceHelper(objectAdapter);
+ final DomainResourceHelper helper = newDomainResourceHelper(objectAdapter);
final ObjectAdapterAccessHelper accessHelper = new ObjectAdapterAccessHelper(getResourceContext(), objectAdapter);
final OneToOneAssociation property = accessHelper.getPropertyThatIsVisibleForIntent(
@@ -286,11 +282,11 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
})
@PrettyPrinting
public Response accessCollection(@PathParam("domainType") String domainType, @PathParam("instanceId") final String instanceId, @PathParam("collectionId") final String collectionId) {
- init(RepresentationType.OBJECT_COLLECTION, Where.PARENTED_TABLES);
+ init(RepresentationType.OBJECT_COLLECTION, Where.PARENTED_TABLES, RepresentationService.Intent.NOT_APPLICABLE);
final ObjectAdapter objectAdapter = getObjectAdapterElseThrowNotFound(domainType, instanceId);
- return getDomainResourceHelper(objectAdapter).collectionDetails(collectionId, MemberReprMode.READ);
+ return newDomainResourceHelper(objectAdapter).collectionDetails(collectionId, MemberReprMode.READ);
}
@Override
@@ -302,10 +298,10 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
MediaType.APPLICATION_XML, RestfulMediaType.APPLICATION_XML_OBJECT_COLLECTION, RestfulMediaType.APPLICATION_XML_ERROR
})
public Response addToSet(@PathParam("domainType") String domainType, @PathParam("instanceId") final String instanceId, @PathParam("collectionId") final String collectionId, final InputStream body) {
- init(Where.PARENTED_TABLES);
+ init(Where.PARENTED_TABLES, RepresentationService.Intent.NOT_APPLICABLE);
final ObjectAdapter objectAdapter = getObjectAdapterElseThrowNotFound(domainType, instanceId);
- final DomainResourceHelper helper = getDomainResourceHelper(objectAdapter);
+ final DomainResourceHelper helper = newDomainResourceHelper(objectAdapter);
final ObjectAdapterAccessHelper accessHelper = new ObjectAdapterAccessHelper(getResourceContext(), objectAdapter);
final OneToManyAssociation collection = accessHelper.getCollectionThatIsVisibleForIntent(
@@ -339,10 +335,10 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
MediaType.APPLICATION_XML, RestfulMediaType.APPLICATION_XML_OBJECT_COLLECTION, RestfulMediaType.APPLICATION_XML_ERROR
})
public Response addToList(@PathParam("domainType") String domainType, @PathParam("instanceId") final String instanceId, @PathParam("collectionId") final String collectionId, final InputStream body) {
- init(Where.PARENTED_TABLES);
+ init(Where.PARENTED_TABLES, RepresentationService.Intent.NOT_APPLICABLE);
final ObjectAdapter objectAdapter = getObjectAdapterElseThrowNotFound(domainType, instanceId);
- final DomainResourceHelper helper = getDomainResourceHelper(objectAdapter);
+ final DomainResourceHelper helper = newDomainResourceHelper(objectAdapter);
final ObjectAdapterAccessHelper accessHelper = new ObjectAdapterAccessHelper(getResourceContext(), objectAdapter);
final OneToManyAssociation collection = accessHelper.getCollectionThatIsVisibleForIntent(
@@ -376,10 +372,10 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
MediaType.APPLICATION_XML, RestfulMediaType.APPLICATION_XML_OBJECT_COLLECTION, RestfulMediaType.APPLICATION_XML_ERROR
})
public Response removeFromCollection(@PathParam("domainType") String domainType, @PathParam("instanceId") final String instanceId, @PathParam("collectionId") final String collectionId) {
- init(Where.PARENTED_TABLES);
+ init(Where.PARENTED_TABLES, RepresentationService.Intent.NOT_APPLICABLE);
final ObjectAdapter objectAdapter = getObjectAdapterElseThrowNotFound(domainType, instanceId);
- final DomainResourceHelper helper = getDomainResourceHelper(objectAdapter);
+ final DomainResourceHelper helper = newDomainResourceHelper(objectAdapter);
final ObjectAdapterAccessHelper accessHelper = new ObjectAdapterAccessHelper(getResourceContext(), objectAdapter);
final OneToManyAssociation collection = accessHelper.getCollectionThatIsVisibleForIntent(
@@ -413,10 +409,10 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
})
@PrettyPrinting
public Response actionPrompt(@PathParam("domainType") String domainType, @PathParam("instanceId") final String instanceId, @PathParam("actionId") final String actionId) {
- init(RepresentationType.OBJECT_ACTION, Where.OBJECT_FORMS);
+ init(RepresentationType.OBJECT_ACTION, Where.OBJECT_FORMS, RepresentationService.Intent.NOT_APPLICABLE);
final ObjectAdapter objectAdapter = getObjectAdapterElseThrowNotFound(domainType, instanceId);
- final DomainResourceHelper helper = getDomainResourceHelper(objectAdapter);
+ final DomainResourceHelper helper = newDomainResourceHelper(objectAdapter);
return helper.actionPrompt(actionId);
}
@@ -456,12 +452,12 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
final @QueryParam("x-isis-querystring") String xIsisUrlEncodedQueryString) {
final String urlUnencodedQueryString = UrlEncodingUtils.urlDecodeNullSafe(xIsisUrlEncodedQueryString != null? xIsisUrlEncodedQueryString: httpServletRequest.getQueryString());
- init(RepresentationType.ACTION_RESULT, Where.STANDALONE_TABLES, urlUnencodedQueryString);
+ init(RepresentationType.ACTION_RESULT, Where.STANDALONE_TABLES, RepresentationService.Intent.NOT_APPLICABLE, urlUnencodedQueryString);
final JsonRepresentation arguments = getResourceContext().getQueryStringAsJsonRepr();
final ObjectAdapter objectAdapter = getObjectAdapterElseThrowNotFound(domainType, instanceId);
- final DomainResourceHelper helper = getDomainResourceHelper(objectAdapter);
+ final DomainResourceHelper helper = newDomainResourceHelper(objectAdapter);
return helper.invokeActionQueryOnly(actionId, arguments);
}
@@ -481,12 +477,12 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
final @PathParam("actionId") String actionId,
final InputStream body) {
- init(RepresentationType.ACTION_RESULT, Where.STANDALONE_TABLES, body);
+ init(RepresentationType.ACTION_RESULT, Where.STANDALONE_TABLES, RepresentationService.Intent.NOT_APPLICABLE, body);
final JsonRepresentation arguments = getResourceContext().getQueryStringAsJsonRepr();
final ObjectAdapter objectAdapter = getObjectAdapterElseThrowNotFound(domainType, instanceId);
- final DomainResourceHelper helper = getDomainResourceHelper(objectAdapter);
+ final DomainResourceHelper helper = newDomainResourceHelper(objectAdapter);
return helper.invokeActionIdempotent(actionId, arguments);
}
@@ -500,13 +496,18 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
MediaType.APPLICATION_XML, RestfulMediaType.APPLICATION_XML_ACTION_RESULT, RestfulMediaType.APPLICATION_XML_ERROR
})
@PrettyPrinting
- public Response invokeAction(@PathParam("domainType") String domainType, @PathParam("instanceId") final String instanceId, @PathParam("actionId") final String actionId, final InputStream body) {
- init(RepresentationType.ACTION_RESULT, Where.STANDALONE_TABLES, body);
+ public Response invokeAction(
+ @PathParam("domainType") String domainType,
+ @PathParam("instanceId") final String instanceId,
+ @PathParam("actionId") final String actionId,
+ final InputStream body) {
+ init(RepresentationType.ACTION_RESULT, Where.STANDALONE_TABLES, RepresentationService.Intent.NOT_APPLICABLE,
+ body);
final JsonRepresentation arguments = getResourceContext().getQueryStringAsJsonRepr();
final ObjectAdapter objectAdapter = getObjectAdapterElseThrowNotFound(domainType, instanceId);
- final DomainResourceHelper helper = getDomainResourceHelper(objectAdapter);
+ final DomainResourceHelper helper = newDomainResourceHelper(objectAdapter);
return helper.invokeAction(actionId, arguments);
}
@@ -516,4 +517,10 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
throw RestfulObjectsApplicationException.createWithMessage(RestfulResponse.HttpStatusCode.METHOD_NOT_ALLOWED, "Deleting an action invocation resource is not allowed.");
}
+
+ private DomainResourceHelper newDomainResourceHelper(final ObjectAdapter objectAdapter) {
+ return new DomainResourceHelper(getResourceContext(), objectAdapter);
+ }
+
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/587a8bd6/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 da73995..abc56ef 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
@@ -38,7 +38,7 @@ import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
-import org.apache.isis.viewer.restfulobjects.rendering.RendererContext5;
+import org.apache.isis.viewer.restfulobjects.rendering.RendererContext6;
import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ActionResultReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.DomainObjectLinkTo;
@@ -47,22 +47,24 @@ import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAdapt
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndAction;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndActionInvocation;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndCollection;
-import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndProperty;
+import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndProperty2;
import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
import org.apache.isis.viewer.restfulobjects.server.ResourceContext;
public class DomainResourceHelper {
- static class RepresentationServiceContextAdapter implements RepresentationService.Context5 {
+ static class RepresentationServiceContextAdapter implements RepresentationService.Context6 {
- private final RendererContext5 rendererContext;
+ private final RendererContext6 rendererContext;
private final ObjectAdapterLinkTo adapterLinkTo;
+ private RepresentationService.Intent intent;
RepresentationServiceContextAdapter(
- final RendererContext5 rendererContext,
+ final RendererContext6 rendererContext,
final ObjectAdapterLinkTo adapterLinkTo) {
this.rendererContext = rendererContext;
this.adapterLinkTo = adapterLinkTo;
+ this.intent = rendererContext.getIntent();
}
@Override
@@ -179,28 +181,34 @@ public class DomainResourceHelper {
public ServicesInjector getServicesInjector() {
return rendererContext.getServicesInjector();
}
+
+ @Override
+ public RepresentationService.Intent getIntent() {
+ return intent;
+ }
}
+ private final RepresentationServiceContextAdapter representationServiceContext;
private final RepresentationService representationService;
- private RepresentationServiceContextAdapter representationServiceContext;
public DomainResourceHelper(final ResourceContext resourceContext, final ObjectAdapter objectAdapter) {
- this.resourceContext = resourceContext;
- this.objectAdapter = objectAdapter;
-
- using(new DomainObjectLinkTo());
-
- representationService = lookupService(RepresentationService.class);
+ this(resourceContext, objectAdapter, new DomainObjectLinkTo());
}
- public DomainResourceHelper using(final ObjectAdapterLinkTo adapterLinkTo) {
+ public DomainResourceHelper(
+ final ResourceContext resourceContext,
+ final ObjectAdapter objectAdapter,
+ final ObjectAdapterLinkTo adapterLinkTo) {
+
+ this.resourceContext = resourceContext;
+ this.objectAdapter = objectAdapter;
representationServiceContext = new RepresentationServiceContextAdapter(resourceContext, adapterLinkTo);
- adapterLinkTo.usingUrlBase(resourceContext)
- .with(objectAdapter);
+ adapterLinkTo.usingUrlBase(this.resourceContext)
+ .with(this.objectAdapter);
- return this;
+ representationService = lookupService(RepresentationService.class);
}
private final ResourceContext resourceContext;
@@ -245,7 +253,7 @@ public class DomainResourceHelper {
final OneToOneAssociation property = accessHelper.getPropertyThatIsVisibleForIntent(propertyId, ObjectAdapterAccessHelper.Intent.ACCESS);
- return representationService.propertyDetails(representationServiceContext, new ObjectAndProperty(objectAdapter, property), memberMode);
+ return representationService.propertyDetails(representationServiceContext, new ObjectAndProperty2(objectAdapter, property, memberMode), memberMode);
}
@@ -359,7 +367,7 @@ public class DomainResourceHelper {
final ObjectAdapter returnedAdapter = action.execute(objectAdapter, argArray2, InteractionInitiatedBy.USER);
final ObjectAndActionInvocation objectAndActionInvocation =
- new ObjectAndActionInvocation(this.objectAdapter, action, arguments, returnedAdapter);
+ new ObjectAndActionInvocation(objectAdapter, action, arguments, returnedAdapter, selfLink);
// response
return representationService.actionResult(representationServiceContext, objectAndActionInvocation, selfLink);
http://git-wip-us.apache.org/repos/asf/isis/blob/587a8bd6/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainServiceResourceServerside.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainServiceResourceServerside.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainServiceResourceServerside.java
index 62c1268..4fcad7f 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainServiceResourceServerside.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainServiceResourceServerside.java
@@ -18,12 +18,22 @@ package org.apache.isis.viewer.restfulobjects.server.resources;
import java.io.InputStream;
import java.util.List;
-import javax.ws.rs.*;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
+
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
+
import org.apache.isis.applib.annotation.NatureOfService;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.core.commons.url.UrlEncodingUtils;
@@ -37,9 +47,10 @@ import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainServiceResource;
import org.apache.isis.viewer.restfulobjects.rendering.Caching;
import org.apache.isis.viewer.restfulobjects.rendering.Responses;
+import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.DomainObjectReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.DomainServiceLinkTo;
-import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
+import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
import org.apache.isis.viewer.restfulobjects.rendering.service.conneg.PrettyPrinting;
@Path("/services")
@@ -66,7 +77,7 @@ public class DomainServiceResourceServerside extends ResourceAbstract implements
@Path("/")
@Produces({ MediaType.APPLICATION_JSON, RestfulMediaType.APPLICATION_JSON_LIST, RestfulMediaType.APPLICATION_JSON_ERROR })
public Response services() {
- init(RepresentationType.LIST, Where.STANDALONE_TABLES);
+ init(RepresentationType.LIST, Where.STANDALONE_TABLES, RepresentationService.Intent.NOT_APPLICABLE);
final List<ObjectAdapter> serviceAdapters =
Lists.newArrayList(
@@ -109,7 +120,7 @@ public class DomainServiceResourceServerside extends ResourceAbstract implements
})
@PrettyPrinting
public Response service(@PathParam("serviceId") final String serviceId) {
- init(RepresentationType.DOMAIN_OBJECT, Where.OBJECT_FORMS);
+ init(RepresentationType.DOMAIN_OBJECT, Where.OBJECT_FORMS, RepresentationService.Intent.ALREADY_PERSISTENT);
final ObjectAdapter serviceAdapter = getServiceAdapter(serviceId);
@@ -150,10 +161,10 @@ public class DomainServiceResourceServerside extends ResourceAbstract implements
})
@PrettyPrinting
public Response actionPrompt(@PathParam("serviceId") final String serviceId, @PathParam("actionId") final String actionId) {
- init(RepresentationType.OBJECT_ACTION, Where.OBJECT_FORMS);
+ init(RepresentationType.OBJECT_ACTION, Where.OBJECT_FORMS, RepresentationService.Intent.ALREADY_PERSISTENT);
final ObjectAdapter serviceAdapter = getServiceAdapter(serviceId);
- final DomainResourceHelper helper = new DomainResourceHelper(getResourceContext(), serviceAdapter).using(new DomainServiceLinkTo());
+ final DomainResourceHelper helper = newDomainResourceHelper(serviceAdapter);
return helper.actionPrompt(actionId);
}
@@ -192,13 +203,13 @@ public class DomainServiceResourceServerside extends ResourceAbstract implements
final String urlUnencodedQueryString = UrlEncodingUtils.urlDecodeNullSafe(xIsisUrlEncodedQueryString != null? xIsisUrlEncodedQueryString: httpServletRequest.getQueryString());
- init(RepresentationType.ACTION_RESULT, Where.STANDALONE_TABLES, urlUnencodedQueryString);
+ init(RepresentationType.ACTION_RESULT, Where.STANDALONE_TABLES, RepresentationService.Intent.NOT_APPLICABLE, urlUnencodedQueryString);
final JsonRepresentation arguments = getResourceContext().getQueryStringAsJsonRepr();
final ObjectAdapter serviceAdapter = getServiceAdapter(serviceId);
- final DomainResourceHelper helper = new DomainResourceHelper(getResourceContext(), serviceAdapter).using(new DomainServiceLinkTo());
+ final DomainResourceHelper helper = newDomainResourceHelper(serviceAdapter);
return helper.invokeActionQueryOnly(actionId, arguments);
}
@@ -217,17 +228,16 @@ public class DomainServiceResourceServerside extends ResourceAbstract implements
final @PathParam("serviceId") String serviceId,
final @PathParam("actionId") String actionId,
final InputStream body) {
- init(RepresentationType.ACTION_RESULT, Where.STANDALONE_TABLES, body);
+ init(RepresentationType.ACTION_RESULT, Where.STANDALONE_TABLES, RepresentationService.Intent.NOT_APPLICABLE, body);
final JsonRepresentation arguments = getResourceContext().getQueryStringAsJsonRepr();
final ObjectAdapter serviceAdapter = getServiceAdapter(serviceId);
- final DomainResourceHelper helper = new DomainResourceHelper(getResourceContext(), serviceAdapter).using(new DomainServiceLinkTo());
+ final DomainResourceHelper helper = newDomainResourceHelper(serviceAdapter);
return helper.invokeActionIdempotent(actionId, arguments);
}
-
@Override
@POST
@Path("/{serviceId}/actions/{actionId}/invoke")
@@ -238,12 +248,12 @@ public class DomainServiceResourceServerside extends ResourceAbstract implements
})
@PrettyPrinting
public Response invokeAction(@PathParam("serviceId") final String serviceId, @PathParam("actionId") final String actionId, final InputStream body) {
- init(RepresentationType.ACTION_RESULT, Where.STANDALONE_TABLES, body);
+ init(RepresentationType.ACTION_RESULT, Where.STANDALONE_TABLES, RepresentationService.Intent.NOT_APPLICABLE, body);
final JsonRepresentation arguments = getResourceContext().getQueryStringAsJsonRepr();
final ObjectAdapter serviceAdapter = getServiceAdapter(serviceId);
- final DomainResourceHelper helper = new DomainResourceHelper(getResourceContext(), serviceAdapter).using(new DomainServiceLinkTo());
+ final DomainResourceHelper helper = newDomainResourceHelper(serviceAdapter);
return helper.invokeAction(actionId, arguments);
}
@@ -253,4 +263,9 @@ public class DomainServiceResourceServerside extends ResourceAbstract implements
throw RestfulObjectsApplicationException.createWithMessage(RestfulResponse.HttpStatusCode.METHOD_NOT_ALLOWED, "Deleting an action invocation resource is not allowed.");
}
+ private DomainResourceHelper newDomainResourceHelper(final ObjectAdapter serviceAdapter) {
+ return new DomainResourceHelper(getResourceContext(), serviceAdapter, new DomainServiceLinkTo());
+ }
+
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/587a8bd6/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainTypeResourceServerside.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainTypeResourceServerside.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainTypeResourceServerside.java
index 1135ba9..885bc54 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainTypeResourceServerside.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainTypeResourceServerside.java
@@ -48,6 +48,7 @@ import org.apache.isis.viewer.restfulobjects.applib.util.UrlEncodingUtils;
import org.apache.isis.viewer.restfulobjects.rendering.Caching;
import org.apache.isis.viewer.restfulobjects.rendering.LinkBuilder;
import org.apache.isis.viewer.restfulobjects.rendering.Responses;
+import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
import org.apache.isis.viewer.restfulobjects.rendering.domaintypes.ActionDescriptionReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.domaintypes.ActionParameterDescriptionReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.domaintypes.CollectionDescriptionReprRenderer;
@@ -59,7 +60,7 @@ import org.apache.isis.viewer.restfulobjects.rendering.domaintypes.ParentSpecAnd
import org.apache.isis.viewer.restfulobjects.rendering.domaintypes.PropertyDescriptionReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.domaintypes.TypeActionResultReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.domaintypes.TypeListReprRenderer;
-import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
+import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
import org.apache.isis.viewer.restfulobjects.rendering.util.Util;
import org.apache.isis.viewer.restfulobjects.server.util.UrlParserUtils;
@@ -77,7 +78,7 @@ public class DomainTypeResourceServerside extends ResourceAbstract implements Do
@Produces({ MediaType.APPLICATION_JSON, RestfulMediaType.APPLICATION_JSON_TYPE_LIST })
public Response domainTypes() {
final RepresentationType representationType = RepresentationType.TYPE_LIST;
- init(representationType, Where.ANYWHERE);
+ init(representationType, Where.ANYWHERE, RepresentationService.Intent.NOT_APPLICABLE);
final Collection<ObjectSpecification> allSpecifications = getSpecificationLoader().allSpecifications();
@@ -93,7 +94,7 @@ public class DomainTypeResourceServerside extends ResourceAbstract implements Do
@Produces({ MediaType.APPLICATION_JSON, RestfulMediaType.APPLICATION_JSON_DOMAIN_TYPE })
public Response domainType(@PathParam("domainType") final String domainType) {
- init(RepresentationType.DOMAIN_TYPE, Where.ANYWHERE);
+ init(RepresentationType.DOMAIN_TYPE, Where.ANYWHERE, RepresentationService.Intent.NOT_APPLICABLE);
final ObjectSpecification objectSpec = getSpecificationLoader().lookupBySpecId(ObjectSpecId.of(domainType));
@@ -109,7 +110,7 @@ public class DomainTypeResourceServerside extends ResourceAbstract implements Do
@Produces({ MediaType.APPLICATION_JSON, RestfulMediaType.APPLICATION_JSON_PROPERTY_DESCRIPTION })
public Response typeProperty(@PathParam("domainType") final String domainType, @PathParam("propertyId") final String propertyId) {
final RepresentationType representationType = RepresentationType.PROPERTY_DESCRIPTION;
- init(representationType, Where.ANYWHERE);
+ init(representationType, Where.ANYWHERE, RepresentationService.Intent.NOT_APPLICABLE);
final ObjectSpecification parentSpec = getSpecificationLoader().lookupBySpecId(ObjectSpecId.of(domainType));
if (parentSpec == null) {
@@ -134,7 +135,7 @@ public class DomainTypeResourceServerside extends ResourceAbstract implements Do
@Produces({ MediaType.APPLICATION_JSON, RestfulMediaType.APPLICATION_JSON_COLLECTION_DESCRIPTION })
public Response typeCollection(@PathParam("domainType") final String domainType, @PathParam("collectionId") final String collectionId) {
final RepresentationType representationType = RepresentationType.COLLECTION_DESCRIPTION;
- init(representationType, Where.ANYWHERE);
+ init(representationType, Where.ANYWHERE, RepresentationService.Intent.NOT_APPLICABLE);
final ObjectSpecification parentSpec = getSpecificationLoader().lookupBySpecId(ObjectSpecId.of(domainType));
if (parentSpec == null) {
@@ -159,7 +160,7 @@ public class DomainTypeResourceServerside extends ResourceAbstract implements Do
@Produces({ MediaType.APPLICATION_JSON, RestfulMediaType.APPLICATION_JSON_ACTION_DESCRIPTION })
public Response typeAction(@PathParam("domainType") final String domainType, @PathParam("actionId") final String actionId) {
final RepresentationType representationType = RepresentationType.ACTION_DESCRIPTION;
- init(representationType, Where.ANYWHERE);
+ init(representationType, Where.ANYWHERE, RepresentationService.Intent.NOT_APPLICABLE);
final ObjectSpecification parentSpec = getSpecificationLoader().lookupBySpecId(ObjectSpecId.of(domainType));
if (parentSpec == null) {
@@ -184,7 +185,7 @@ public class DomainTypeResourceServerside extends ResourceAbstract implements Do
@Produces({ MediaType.APPLICATION_JSON, RestfulMediaType.APPLICATION_JSON_ACTION_PARAMETER_DESCRIPTION })
public Response typeActionParam(@PathParam("domainType") final String domainType, @PathParam("actionId") final String actionId, @PathParam("paramName") final String paramName) {
final RepresentationType representationType = RepresentationType.ACTION_PARAMETER_DESCRIPTION;
- init(representationType, Where.ANYWHERE);
+ init(representationType, Where.ANYWHERE, RepresentationService.Intent.NOT_APPLICABLE);
final ObjectSpecification parentSpec = getSpecificationLoader().lookupBySpecId(ObjectSpecId.of(domainType));
if (parentSpec == null) {
@@ -218,7 +219,7 @@ public class DomainTypeResourceServerside extends ResourceAbstract implements Do
@QueryParam("supertype") final String superTypeStr, // simple style
@QueryParam("args") final String argsUrlEncoded // formal style
) {
- init(Where.ANYWHERE);
+ init(Where.ANYWHERE, RepresentationService.Intent.NOT_APPLICABLE);
final String supertype = domainTypeFor(superTypeStr, argsUrlEncoded, "supertype");
@@ -249,7 +250,7 @@ public class DomainTypeResourceServerside extends ResourceAbstract implements Do
@QueryParam("args") final String argsUrlEncoded // formal style
) {
- init(Where.ANYWHERE);
+ init(Where.ANYWHERE, RepresentationService.Intent.NOT_APPLICABLE);
final String subtype = domainTypeFor(subTypeStr, argsUrlEncoded, "subtype");
http://git-wip-us.apache.org/repos/asf/isis/blob/587a8bd6/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/HomePageResourceServerside.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/HomePageResourceServerside.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/HomePageResourceServerside.java
index 675acff..e0519b8 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/HomePageResourceServerside.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/HomePageResourceServerside.java
@@ -34,13 +34,14 @@ import org.apache.isis.viewer.restfulobjects.applib.homepage.HomePageResource;
import org.apache.isis.viewer.restfulobjects.rendering.Caching;
import org.apache.isis.viewer.restfulobjects.rendering.Responses;
import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
+import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
public class HomePageResourceServerside extends ResourceAbstract implements HomePageResource {
@Override
@Produces({ MediaType.APPLICATION_JSON, RestfulMediaType.APPLICATION_JSON_HOME_PAGE })
public Response homePage() {
- init(RepresentationType.HOME_PAGE, Where.NOWHERE);
+ init(RepresentationType.HOME_PAGE, Where.NOWHERE, RepresentationService.Intent.NOT_APPLICABLE);
final HomePageReprRenderer renderer = new HomePageReprRenderer(getResourceContext(), null, JsonRepresentation.newMap());
renderer.includesSelf();