You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2020/12/08 17:45:53 UTC

[isis] branch master updated: ISIS-2475: fixes DomainTypeResourceServerside to return only entities and viewmodels, but non of the other types discovered by the spec loader

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new db8b0d8  ISIS-2475: fixes DomainTypeResourceServerside to return only entities and viewmodels, but non of the other types discovered by the spec loader
db8b0d8 is described below

commit db8b0d84e1ab38ff982b644b9aa8302e88a1df56
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Dec 8 18:45:37 2020 +0100

    ISIS-2475: fixes DomainTypeResourceServerside to return only entities
    and viewmodels, but non of the other types discovered by the spec loader
    
    also don't pass all method parameters through the spec loader during
    type introspection, as this registered too many types
---
 .../isis/core/metamodel/specloader/SpecificationCacheDefault.java | 6 ++++++
 .../core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java | 8 +++++---
 .../viewer/resources/DomainObjectResourceServerside.java          | 3 +--
 .../viewer/resources/DomainTypeResourceServerside.java            | 5 +++--
 4 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationCacheDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationCacheDefault.java
index 7b0d929..7548a44 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationCacheDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationCacheDefault.java
@@ -58,6 +58,12 @@ class SpecificationCacheDefault<T extends ObjectSpecification> implements Specif
             if(spec==null) {
                 spec = mappingFunction.apply(cls);
                 internalPut(spec);
+
+//debug                
+//                if(cls.getSimpleName().equals("MarkupStream")) {
+//                    System.out.println("!!! MarkupStream");
+//                }
+                
             }
             return spec;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java
index 445f7cc..3049f56 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java
@@ -463,9 +463,11 @@ public class FacetedMethodsBuilder {
         }
 
         // ensure we can load specs for all the params
-        if (!loadParamSpecs(actionMethod)) {
-            return false;
-        }
+//don't!! has side effect of pulling in all param types
+//even those that should be ignored by the metamodel        
+//        if (!loadParamSpecs(actionMethod)) {
+//            return false;
+//        }
         
         if(isMixinMain(actionMethod)) {
             // we are introspecting a mixin type, so accept this method for further processing
diff --git a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainObjectResourceServerside.java b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainObjectResourceServerside.java
index 9cc0ab0..fd37967 100644
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainObjectResourceServerside.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainObjectResourceServerside.java
@@ -45,7 +45,6 @@ import org.apache.isis.applib.layout.component.DomainObjectLayoutData;
 import org.apache.isis.applib.layout.component.PropertyLayoutData;
 import org.apache.isis.applib.layout.grid.Grid;
 import org.apache.isis.applib.layout.links.Link;
-import org.apache.isis.applib.services.command.Command;
 import org.apache.isis.commons.internal.base._Bytes;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.codec._UrlDecoderUtil;
@@ -59,9 +58,9 @@ import org.apache.isis.core.metamodel.interactions.managed.ManagedMember;
 import org.apache.isis.core.metamodel.interactions.managed.MemberInteraction.AccessIntent;
 import org.apache.isis.core.metamodel.interactions.managed.PropertyInteraction;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects.EntityUtil;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.ManagedObjects.EntityUtil;
 import org.apache.isis.core.runtime.iactn.InteractionTracker;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.Rel;
diff --git a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainTypeResourceServerside.java b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainTypeResourceServerside.java
index 4c4e18f..857d917 100644
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainTypeResourceServerside.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainTypeResourceServerside.java
@@ -94,11 +94,12 @@ public class DomainTypeResourceServerside extends ResourceAbstract implements Do
         val resourceContext = createResourceContext(
                 RepresentationType.TYPE_LIST, Where.ANYWHERE, RepresentationService.Intent.NOT_APPLICABLE);
 
-        val allSpecifications = getSpecificationLoader().snapshotSpecifications();
+        val domainTypeSpecifications = getSpecificationLoader().snapshotSpecifications()
+                .filter(spec->spec.isEntityOrViewModel());
 
         final TypeListReprRenderer renderer = 
                 new TypeListReprRenderer(resourceContext, null, JsonRepresentation.newMap());
-        renderer.with(allSpecifications).includesSelf();
+        renderer.with(domainTypeSpecifications).includesSelf();
 
         return Responses.ofOk(renderer, Caching.ONE_DAY).build();
     }