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())