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/03/13 19:53:23 UTC
[4/8] isis git commit: ISIS-1087: filter out services that are not
MENU for Restful Objects' "services" resource's representation.
ISIS-1087: filter out services that are not MENU for Restful Objects' "services" resource's representation.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/659b1146
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/659b1146
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/659b1146
Branch: refs/heads/master
Commit: 659b1146e757483e0ec9a70b78c3742859fee268
Parents: 47ff9fc
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Mar 13 18:26:15 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Mar 13 18:26:15 2015 +0000
----------------------------------------------------------------------
.../DomainServiceResourceServerside.java | 26 +++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/659b1146/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 3c7ffa2..8ccb0e8 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
@@ -21,9 +21,15 @@ import java.util.List;
import javax.ws.rs.*;
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;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.facets.object.domainservice.DomainServiceFacet;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
import org.apache.isis.viewer.restfulobjects.applib.RestfulMediaType;
@@ -38,6 +44,21 @@ import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplication
@Path("/services")
public class DomainServiceResourceServerside extends ResourceAbstract implements DomainServiceResource {
+ private final static Predicate<ObjectAdapter> NATURE_OF_MENU = new Predicate<ObjectAdapter>() {
+ @Override
+ public boolean apply(final ObjectAdapter input) {
+ final ObjectSpecification specification = input.getSpecification();
+ final DomainServiceFacet facet = specification.getFacet(DomainServiceFacet.class);
+ if (facet == null) {
+ // not expected, because we know these are domain services.
+ return false;
+ }
+ final NatureOfService natureOfService = facet.getNatureOfService();
+ return natureOfService == NatureOfService.VIEW ||
+ natureOfService == NatureOfService.VIEW_MENU_ONLY;
+ }
+ };
+
@Override
@GET
@Path("/")
@@ -45,7 +66,10 @@ public class DomainServiceResourceServerside extends ResourceAbstract implements
public Response services() {
init(RepresentationType.LIST, Where.STANDALONE_TABLES);
- final List<ObjectAdapter> serviceAdapters = getResourceContext().getServiceAdapters();
+ final List<ObjectAdapter> serviceAdapters =
+ Lists.newArrayList(
+ Iterables.filter(
+ getResourceContext().getServiceAdapters(), NATURE_OF_MENU));
final DomainServicesListReprRenderer renderer = new DomainServicesListReprRenderer(getResourceContext(), null, JsonRepresentation.newMap());
renderer.usingLinkToBuilder(new DomainServiceLinkTo())