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(