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:59:46 UTC
[isis] branch master updated: ISIS-2569: do not use
SpecLoader#loadSpecification(Class) - (7)
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 d3eda46 ISIS-2569: do not use SpecLoader#loadSpecification(Class) - (7)
d3eda46 is described below
commit d3eda465bdb022d8470025931a73ee9fe7276001
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Apr 15 15:59:32 2021 +0200
ISIS-2569: do not use SpecLoader#loadSpecification(Class) - (7)
... when outside the scope of initial spec loading (its optimized for
initial loading, skips introspecting members)
---
.../object/choices/ChoicesFacetFromBoundedAbstract.java | 2 +-
...tableObjectFacetDeclarativeInitializingAbstract.java | 10 +++++-----
.../ActionParameterAutoCompleteFacetViaMethod.java | 2 +-
.../choices/method/ActionChoicesFacetViaMethod.java | 2 +-
.../choices/method/PropertyChoicesFacetViaMethod.java | 2 +-
.../core/metamodel/objectmanager/ObjectManager.java | 17 +++++++++--------
6 files changed, 18 insertions(+), 17 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
index 3590fed..c7bcade 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
@@ -112,7 +112,7 @@ implements
val resulType = getObjectSpecification().getCorrespondingClass();
val query = Query.allInstances(resulType);
- val resultTypeSpec = getObjectManager().loadSpecification(resulType);
+ val resultTypeSpec = specForType(resulType).orElse(null);
val queryRequest = ObjectBulkLoader.Request.of(resultTypeSpec, query);
val allMatching = getObjectManager().queryObjects(queryRequest)
.filter(ManagedObjects.VisibilityUtil.filterOn(interactionInitiatedBy));
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
index 7b85d10..3e9cb08 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
@@ -61,8 +61,8 @@ extends RecreatableObjectFacetAbstract {
}
val objectManager = super.getObjectManager();
- val spec = objectManager.loadSpecification(viewModelPojo);
- val viewModelAdapter = ManagedObject.of(spec, viewModelPojo);
+ val viewModelAdapter = objectManager.adapt(viewModelPojo);
+ val spec = viewModelAdapter.getSpecification();
super.getServiceInjector().injectServicesInto(viewModelPojo);
@@ -88,7 +88,6 @@ extends RecreatableObjectFacetAbstract {
final _Mementos.Memento memento = newMemento();
val objectManager = super.getObjectManager();
- val spec = objectManager.loadSpecification(viewModelPojo);
/*
* ManagedObject that holds the ObjectSpecification used for
@@ -97,7 +96,8 @@ extends RecreatableObjectFacetAbstract {
* Does _not_ perform dependency injection on the domain object. Also bypasses
* caching (if any), that is each call to this method creates a new instance.
*/
- val ownerAdapter = ManagedObject.of(spec, viewModelPojo);
+ val viewModelAdapter = objectManager.adapt(viewModelPojo);
+ val spec = viewModelAdapter.getSpecification();
final Stream<OneToOneAssociation> properties = spec.streamProperties(MixedIn.EXCLUDED);
@@ -108,7 +108,7 @@ extends RecreatableObjectFacetAbstract {
.filter(property->!property.isNotPersisted())
.forEach(property->{
final ManagedObject propertyValue =
- property.get(ownerAdapter, InteractionInitiatedBy.FRAMEWORK);
+ property.get(viewModelAdapter, InteractionInitiatedBy.FRAMEWORK);
if(propertyValue != null && propertyValue.getPojo()!=null) {
memento.put(property.getId(), propertyValue.getPojo());
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
index 8dbcf9c..182d13c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
@@ -94,7 +94,7 @@ implements ImperativeFacet {
if (collectionOrArray == null) {
return Can.empty();
}
- val elementSpec = getObjectManager().loadSpecification(choicesType);
+ val elementSpec = specForTypeElseFail(choicesType);
val visibleChoices = ManagedObjects
.adaptMultipleOfTypeThenAttachThenFilterByVisibility(elementSpec, collectionOrArray, interactionInitiatedBy);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
index 80ffeaa..e5008c7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
@@ -93,7 +93,7 @@ public class ActionChoicesFacetViaMethod extends ActionChoicesFacetAbstract impl
final Class<?> parameterType,
final InteractionInitiatedBy interactionInitiatedBy) {
- val elementSpec = getObjectManager().loadSpecification(parameterType);
+ val elementSpec = specForTypeElseFail(parameterType);
val visibleChoices = ManagedObjects
.adaptMultipleOfTypeThenAttachThenFilterByVisibility(
elementSpec, collectionOrArray, interactionInitiatedBy);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java
index e601dab..0aa353a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java
@@ -69,7 +69,7 @@ public class PropertyChoicesFacetViaMethod extends PropertyChoicesFacetAbstract
final ManagedObject owningAdapter,
final InteractionInitiatedBy interactionInitiatedBy) {
- val elementSpec = getObjectManager().loadSpecification(((FacetedMethod) getFacetHolder()).getType());
+ val elementSpec = specForTypeElseFail(((FacetedMethod) getFacetHolder()).getType());
val optionPojos = ManagedObjects.InvokeUtil.invoke(method, owningAdapter);
//XXX[ISIS-2383] debugging
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManager.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManager.java
index 36e544d..deea36b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManager.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManager.java
@@ -18,6 +18,8 @@
*/
package org.apache.isis.core.metamodel.objectmanager;
+import java.util.Optional;
+
import javax.annotation.Nullable;
import org.apache.isis.commons.collections.Can;
@@ -95,24 +97,23 @@ public interface ObjectManager {
}
@Nullable
- public default ObjectSpecification loadSpecification(@Nullable Object pojo) {
+ public default Optional<ObjectSpecification> specForPojo(final @Nullable Object pojo) {
if(pojo==null) {
- return null;
+ return Optional.empty();
}
- return loadSpecification(pojo.getClass());
+ return specForType(pojo.getClass());
}
- @Nullable
- default ObjectSpecification loadSpecification(@Nullable final Class<?> domainType) {
- return getMetaModelContext().getSpecificationLoader().loadSpecification(domainType);
+ default Optional<ObjectSpecification> specForType(final @Nullable Class<?> domainType) {
+ return getMetaModelContext().getSpecificationLoader().specForType(domainType);
}
- public default ManagedObject adapt(@Nullable Object pojo) {
+ public default ManagedObject adapt(final @Nullable Object pojo) {
if(pojo==null) {
return ManagedObject.unspecified();
}
// could be any pojo, even of a type, that is vetoed for introspection (spec==null)
- val spec = loadSpecification(pojo.getClass());
+ val spec = specForType(pojo.getClass()).orElse(null);
if(spec==null) {
return ManagedObject.unspecified();
}