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 13:44:43 UTC

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

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 97d8b9e  ISIS-2569: do not use SpecLoader#loadSpecification(Class) - (6)
97d8b9e is described below

commit 97d8b9e7ac86af32e90570326f9bddf03291b865
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Apr 15 15:44:26 2021 +0200

    ISIS-2569: do not use SpecLoader#loadSpecification(Class) - (6)
    
    ... when outside the scope of initial spec loading (its optimized for
    initial loading, skips introspecting members)
---
 .../isis/core/metamodel/context/HasMetaModelContext.java      |  9 +++++++--
 .../apache/isis/core/metamodel/context/MetaModelContext.java  | 11 +++++++++--
 .../facets/object/choices/enums/ChoicesFacetEnum.java         |  2 +-
 .../ActionParameterChoicesFacetDerivedFromChoicesFacet.java   |  2 +-
 .../enums/PropertyChoicesFacetDerivedFromChoicesFacet.java    |  2 +-
 .../services/title/TitlesAndTranslationsValidator.java        |  8 +++-----
 6 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/HasMetaModelContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/HasMetaModelContext.java
index f715482..c01bbd2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/HasMetaModelContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/HasMetaModelContext.java
@@ -18,6 +18,7 @@
  */
 package org.apache.isis.core.metamodel.context;
 
+import java.util.Optional;
 import java.util.stream.Stream;
 
 import org.apache.isis.applib.services.factory.FactoryService;
@@ -96,8 +97,12 @@ public interface HasMetaModelContext {
         return getMetaModelContext().getTitleService();
     }
 
-    default ObjectSpecification getSpecification(Class<?> type) {
-        return getMetaModelContext().getSpecification(type);
+    default Optional<ObjectSpecification> specForType(Class<?> type) {
+        return getMetaModelContext().specForType(type);
+    }
+    
+    default ObjectSpecification specForTypeElseFail(Class<?> type) {
+        return getMetaModelContext().specForTypeElseFail(type);
     }
 
     default RepositoryService getRepositoryService() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContext.java
index caf3582..1f56363 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContext.java
@@ -18,8 +18,11 @@
  */
 package org.apache.isis.core.metamodel.context;
 
+import java.util.Optional;
 import java.util.stream.Stream;
 
+import javax.annotation.Nullable;
+
 import org.apache.isis.applib.services.factory.FactoryService;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.applib.services.inject.ServiceInjector;
@@ -67,8 +70,12 @@ public interface MetaModelContext {
     
     SpecificationLoader getSpecificationLoader();
     
-    public default ObjectSpecification getSpecification(final Class<?> type) {
-        return type != null ? getSpecificationLoader().loadSpecification(type) : null;
+    public default Optional<ObjectSpecification> specForType(final @Nullable Class<?> type) {
+        return getSpecificationLoader().specForType(type);
+    }
+    
+    public default ObjectSpecification specForTypeElseFail(final @Nullable Class<?> type) {
+        return getSpecificationLoader().specForTypeElseFail(type);
     }
 
     TranslationService getTranslationService();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/enums/ChoicesFacetEnum.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/enums/ChoicesFacetEnum.java
index fe2214b..f4d1f31 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/enums/ChoicesFacetEnum.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/enums/ChoicesFacetEnum.java
@@ -38,7 +38,7 @@ public class ChoicesFacetEnum extends ChoicesFacetAbstract {
         
         final Object[] choices = enumClass.getEnumConstants();
         
-        val elementSpec = getSpecification(enumClass);
+        val elementSpec = specForTypeElseFail(enumClass);
         this.choices = Can.ofArray(choices)
                 .map(choice->ManagedObject.of(elementSpec, choice));
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java
index 67341d2..80fdaaa 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java
@@ -44,7 +44,7 @@ public class ActionParameterChoicesFacetDerivedFromChoicesFacet extends ActionPa
         
         final FacetHolder facetHolder = getFacetHolder();
         final TypedHolder paramPeer = (TypedHolder) facetHolder;
-        final ObjectSpecification noSpec = getSpecification(paramPeer.getType());
+        final ObjectSpecification noSpec = specForTypeElseFail(paramPeer.getType());
         final ChoicesFacet choicesFacet = noSpec.getFacet(ChoicesFacet.class);
         if (choicesFacet == null) {
             return Can.empty();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacet.java
index 0346710..a4e6398 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacet.java
@@ -41,7 +41,7 @@ public class PropertyChoicesFacetDerivedFromChoicesFacet extends PropertyChoices
             final InteractionInitiatedBy interactionInitiatedBy) {
 
         val facetedMethod = (FacetedMethod) getFacetHolder();
-        val methodSpec = getSpecification(facetedMethod.getType());
+        val methodSpec = specForTypeElseFail(facetedMethod.getType());
         val choicesFacet = methodSpec.getFacet(ChoicesFacet.class);
         if (choicesFacet == null) {
             return Can.empty();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitlesAndTranslationsValidator.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitlesAndTranslationsValidator.java
index 1bf37eb..44e7692 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitlesAndTranslationsValidator.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitlesAndTranslationsValidator.java
@@ -62,10 +62,9 @@ extends MetaModelValidatorAbstract {
                 
                 val deficiencyOrigin = Identifier.classIdentifier(
                         LogicalType.eager(managedBeanAdapter.getBeanClass(), objectType));
-                val facetHolder = specificationLoader.loadSpecification(managedBeanAdapter.getBeanClass());
                 
                 ValidationFailure.raise(
-                        facetHolder.getSpecificationLoader(), 
+                        specificationLoader, 
                         deficiencyOrigin, 
                         String.format(
                                 "Failed to get instance of service bean %s", 
@@ -85,10 +84,9 @@ extends MetaModelValidatorAbstract {
                 
                 val deficiencyOrigin = Identifier.classIdentifier(
                         LogicalType.eager(managedBeanAdapter.getBeanClass(), objectType));
-                val facetHolder = specificationLoader.loadSpecification(managedBeanAdapter.getBeanClass());
 
                 ValidationFailure.raise(
-                        facetHolder.getSpecificationLoader(), 
+                        specificationLoader, 
                         deficiencyOrigin, 
                         String.format(
                                 "Failed to get title for service bean %s", 
@@ -160,7 +158,7 @@ extends MetaModelValidatorAbstract {
 
             } catch (Exception e) {
 
-                val spec = specificationLoader.loadSpecification(MessageRegistry.class);
+                val spec = specificationLoader.specForTypeElseFail(MessageRegistry.class);
                 val deficiencyOrigin = Identifier.classIdentifier(spec.getLogicalType());
 
                 ValidationFailure.raise(