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 2021/04/15 14:11:03 UTC

[isis] branch master updated: ISIS-2569: do not use SpecLoader#loadSpecification(Class) - (8)

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 41bc87e  ISIS-2569: do not use SpecLoader#loadSpecification(Class) - (8)
41bc87e is described below

commit 41bc87ee19eb817e71a9c3c63c84ef5f1660407c
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Apr 15 16:10:47 2021 +0200

    ISIS-2569: do not use SpecLoader#loadSpecification(Class) - (8)
    
    ... when outside the scope of initial spec loading (its optimized for
    initial loading, skips introspecting members)
---
 .../apache/isis/core/metamodel/layout/LayoutFacetUtil.java  |  3 ++-
 .../metamodel/services/grid/GridSystemServiceAbstract.java  |  4 ++--
 .../services/grid/bootstrap3/GridSystemServiceBS3.java      |  2 +-
 .../metamodel/services/layout/LayoutServiceDefault.java     |  8 +++++---
 .../services/metamodel/MetaModelServiceDefault.java         | 13 +++++++++----
 5 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/LayoutFacetUtil.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/LayoutFacetUtil.java
index ce3741e..8de7dfd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/LayoutFacetUtil.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/LayoutFacetUtil.java
@@ -56,6 +56,7 @@ import org.apache.isis.core.metamodel.facets.objectvalue.renderedadjusted.Render
 import org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
+import lombok.NonNull;
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 import lombok.experimental.UtilityClass;
@@ -313,7 +314,7 @@ public class LayoutFacetUtil {
     @RequiredArgsConstructor(staticName = "of")
     public static class MetamodelToGridOverridingVisitor extends Grid.VisitorAdapter  {
 
-        private final ObjectSpecification objectSpec; 
+        private final @NonNull ObjectSpecification objectSpec; 
 
         @Override
         public void visit(final ActionLayoutData actionLayoutData) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java
index e2ee052..d103359 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java
@@ -177,7 +177,7 @@ implements GridSystemService<G> {
             final G fcGrid,
             final Class<?> domainClass) {
 
-        val objectSpec = specificationLoader.loadSpecification(domainClass);
+        val objectSpec = specificationLoader.specForTypeElseFail(domainClass);
 
         val oneToOneAssociationById = ObjectMember.mapById(getOneToOneAssociations(objectSpec));
         val oneToManyAssociationById = ObjectMember.mapById(getOneToManyAssociations(objectSpec));
@@ -358,7 +358,7 @@ implements GridSystemService<G> {
     @Override
     public void complete(final G grid, final Class<?> domainClass) {
         normalize(grid, domainClass);
-        val objectSpec = specificationLoader.loadSpecification(domainClass);
+        val objectSpec = specificationLoader.specForTypeElseFail(domainClass);
         grid.visit(MetamodelToGridOverridingVisitor.of(objectSpec));
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridSystemServiceBS3.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridSystemServiceBS3.java
index 00577a8..bed6818 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridSystemServiceBS3.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridSystemServiceBS3.java
@@ -172,7 +172,7 @@ public class GridSystemServiceBS3 extends GridSystemServiceAbstract<BS3Grid> {
             final Class<?> domainClass) {
 
         val bs3Grid = (BS3Grid) grid;
-        val objectSpec = specificationLoader.loadSpecification(domainClass);
+        val objectSpec = specificationLoader.specForTypeElseFail(domainClass);
 
         val oneToOneAssociationById = ObjectMember.mapById(getOneToOneAssociations(objectSpec));
         val oneToManyAssociationById = ObjectMember.mapById(getOneToManyAssociations(objectSpec));
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java
index 3867a98..b077bd6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java
@@ -70,9 +70,11 @@ public class LayoutServiceDefault implements LayoutService {
     protected Grid toGrid(final Class<?> domainClass, final Style style) {
 
         if (style == Style.CURRENT) {
-            final ObjectSpecification objectSpec = specificationLoader.loadSpecification(domainClass);
-            final GridFacet facet = objectSpec.getFacet(GridFacet.class);
-            return facet != null? facet.getGrid(null): null;
+            
+            return specificationLoader.specForType(domainClass)
+                    .flatMap(spec->spec.lookupFacet(GridFacet.class))
+                    .map(gridFacet->gridFacet.getGrid(null))
+                    .orElse(null);
         }
 
         // don't use the grid from the facet, because it will be modified subsequently.
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
index f64e9b1..0692fb9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
@@ -79,9 +79,11 @@ public class MetaModelServiceDefault implements MetaModelService {
         if(domainType == null) {
             return null;
         }
-        final ObjectSpecification objectSpecification = specificationLoader.loadSpecification(domainType);
-        final ObjectSpecIdFacet objectSpecIdFacet = objectSpecification.getFacet(ObjectSpecIdFacet.class);
-        return objectSpecIdFacet.value();
+        
+        return specificationLoader.specForType(domainType)
+        .flatMap(spec->spec.lookupFacet(ObjectSpecIdFacet.class))
+        .map(ObjectSpecIdFacet::value)
+        .orElse(null);
     }
 
     @Override
@@ -155,7 +157,10 @@ public class MetaModelServiceDefault implements MetaModelService {
         if(domainType == null) {
             return null;
         }
-        final ObjectSpecification objectSpec = specificationLoader.loadSpecification(domainType);
+        final ObjectSpecification objectSpec = specificationLoader.specForType(domainType).orElse(null);
+        if(objectSpec == null) {
+            return BeanSort.UNKNOWN;
+        }
         if(objectSpec.isManagedBean()) {
             return BeanSort.MANAGED_BEAN_CONTRIBUTING;
         }