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/01/16 22:56:39 UTC
[isis] branch master updated: ISIS-2265: simplifies adapter
visibility processing
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 a6379d4 ISIS-2265: simplifies adapter visibility processing
a6379d4 is described below
commit a6379d46cc79b896bc46c06cec628f9d7605acf0
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Jan 16 23:55:52 2020 +0100
ISIS-2265: simplifies adapter visibility processing
---
...ctionInvocationFacetForDomainEventAbstract.java | 11 ++++-------
.../CollectionAccessorFacetViaAccessor.java | 11 ++++-------
.../facets/collections/modify/CollectionFacet.java | 13 +------------
.../ActionParameterAutoCompleteFacetViaMethod.java | 16 +++++-----------
.../method/ActionChoicesFacetViaMethod.java | 10 ++++------
.../ActionParameterChoicesFacetViaMethod.java | 19 +++++++------------
.../method/PropertyAutoCompleteFacetMethod.java | 16 +++++-----------
.../method/PropertyChoicesFacetViaMethod.java | 16 +++++-----------
.../isis/core/metamodel/spec/ManagedObject.java | 22 +++++++++++++++++++++-
.../metamodel/facets/CollectionFacetUtilsTest.java | 10 +++++-----
10 files changed, 61 insertions(+), 83 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
index 3be74a0..1bc20bc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
@@ -59,7 +59,6 @@ import org.apache.isis.core.metamodel.facets.DomainEventHelper;
import org.apache.isis.core.metamodel.facets.ImperativeFacet;
import org.apache.isis.core.metamodel.facets.actions.publish.PublishedActionFacet;
import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
-import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
import org.apache.isis.core.metamodel.services.ixn.InteractionDtoServiceInternal;
import org.apache.isis.core.metamodel.services.publishing.PublisherDispatchService;
@@ -362,13 +361,11 @@ implements ImperativeFacet {
val requiredContainerType = method.getReturnType();
- val visiblePojoStream = ManagedObject.VisibilityUtil
- .streamVisiblePojos(resultAdapter, interactionInitiatedBy);
-
- final Object visibleObjects = CollectionFacet.Utils.collect(visiblePojoStream, requiredContainerType);
+ val autofittedObjectContainer = ManagedObject.VisibilityUtil
+ .visiblePojosAutofit(resultAdapter, interactionInitiatedBy, requiredContainerType);
- if (visibleObjects != null) {
- return getObjectManager().adapt(visibleObjects);
+ if (autofittedObjectContainer != null) {
+ return getObjectManager().adapt(autofittedObjectContainer);
}
// would be null if unable to take a copy (unrecognized return type)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
index d5c3aa4..3f91789 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
@@ -27,7 +27,6 @@ import java.util.Map;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.ImperativeFacet;
-import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacetAbstract;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -76,13 +75,11 @@ implements ImperativeFacet {
final boolean filterForVisibility = getConfiguration().getCore().getMetaModel().isFilterVisibility();
if(filterForVisibility) {
- val visiblePojoStream = ManagedObject.VisibilityUtil
- .streamVisiblePojos(collectionAdapter, interactionInitiatedBy);
+ val autofittedObjectContainer = ManagedObject.VisibilityUtil
+ .visiblePojosAutofit(collectionAdapter, interactionInitiatedBy, method.getReturnType());
- final Object visibleObjects = CollectionFacet.Utils.collect(visiblePojoStream, method.getReturnType());
-
- if (visibleObjects != null) {
- return visibleObjects;
+ if (autofittedObjectContainer != null) {
+ return autofittedObjectContainer;
}
// would be null if unable to take a copy (unrecognized return type)
// fallback to returning the original adapter, without filtering for visibility
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionFacet.java
index eadfb88..cdbb10e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionFacet.java
@@ -47,7 +47,6 @@ import org.apache.isis.core.commons.internal.collections._Lists;
import org.apache.isis.core.commons.internal.collections._Sets;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
-import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -131,7 +130,7 @@ public interface CollectionFacet extends Facet {
}
@UtilityClass
- public static class Utils {
+ public static class AutofitUtils {
/**
* Copies the iterable into the specified type.
@@ -164,16 +163,6 @@ public interface CollectionFacet extends Facet {
}
- public static Object[] collectAsPojoArray(
- final Stream<Object> pojoStream,
- final ObjectSpecification spec,
- final ObjectManager objectManger) {
-
- val optionPojo = pojoStream.collect(Collectors.toList());
- final ManagedObject collection = objectManger.adapt(optionPojo);
- return toArrayOfPojos(collection);
- }
-
// -- HELPER
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 ea8ee12..0d21fc2 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
@@ -27,9 +27,7 @@ import java.util.Map;
import org.apache.isis.core.commons.internal._Constants;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
import org.apache.isis.core.metamodel.facets.ImperativeFacet;
-import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
import org.apache.isis.core.metamodel.facets.param.autocomplete.ActionParameterAutoCompleteFacetAbstract;
import org.apache.isis.core.metamodel.facets.param.autocomplete.MinLengthUtil;
import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -89,16 +87,12 @@ implements ImperativeFacet {
if (collectionOrArray == null) {
return _Constants.emptyObjects;
}
- final ManagedObject collectionAdapter = getObjectManager().adapt(collectionOrArray);
+ val collectionAdapter = getObjectManager().adapt(collectionOrArray);
- final FacetedMethodParameter facetedMethodParameter = (FacetedMethodParameter) getFacetHolder();
- final Class<?> parameterType = facetedMethodParameter.getType();
-
- val visiblePojoStream = ManagedObject.VisibilityUtil
- .streamVisiblePojos(collectionAdapter, interactionInitiatedBy);
-
- val parameterSpec = getSpecification(parameterType);
- return CollectionFacet.Utils.collectAsPojoArray(visiblePojoStream, parameterSpec, getObjectManager());
+ val visiblePojos = ManagedObject.VisibilityUtil
+ .visiblePojosAsArray(collectionAdapter, interactionInitiatedBy);
+
+ return visiblePojos;
}
@Override
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 daeff8e..52b3f25 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
@@ -27,7 +27,6 @@ import java.util.Map;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.ImperativeFacet;
-import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
import org.apache.isis.core.metamodel.facets.param.choices.ActionChoicesFacetAbstract;
import org.apache.isis.core.metamodel.spec.DomainModelException;
import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -95,11 +94,10 @@ public class ActionChoicesFacetViaMethod extends ActionChoicesFacetAbstract impl
}
val collectionAdapter = getObjectManager().adapt(collectionOrArray);
- val visiblePojoStream = ManagedObject.VisibilityUtil
- .streamVisiblePojos(collectionAdapter, interactionInitiatedBy);
-
- val parameterSpec = getSpecification(parameterType);
- return CollectionFacet.Utils.collectAsPojoArray(visiblePojoStream, parameterSpec, getObjectManager());
+ val visiblePojos = ManagedObject.VisibilityUtil
+ .visiblePojosAsArray(collectionAdapter, interactionInitiatedBy);
+
+ return visiblePojos;
}
@Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
index 3d6dd22..2744d65 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
@@ -27,9 +27,7 @@ import java.util.Map;
import org.apache.isis.core.commons.internal._Constants;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
import org.apache.isis.core.metamodel.facets.ImperativeFacet;
-import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
import org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoicesFacetAbstract;
import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -72,21 +70,18 @@ implements ImperativeFacet {
final List<ManagedObject> pendingArgs,
final InteractionInitiatedBy interactionInitiatedBy) {
- final Object choices =
- ManagedObject.InvokeUtil.invokeAutofit(
- method, owningAdapter, pendingArgs);
+ final Object choices = ManagedObject.InvokeUtil
+ .invokeAutofit(method, owningAdapter, pendingArgs);
if (choices == null) {
return _Constants.emptyObjects;
}
- final ManagedObject objectAdapter = getObjectManager().adapt(choices);
- final FacetedMethodParameter facetedMethodParameter = (FacetedMethodParameter) getFacetHolder();
- final Class<?> parameterType = facetedMethodParameter.getType();
+
+ val objectAdapter = getObjectManager().adapt(choices);
- val visiblePjoStream = ManagedObject.VisibilityUtil
- .streamVisiblePojos(objectAdapter, interactionInitiatedBy);
+ val visiblePojos = ManagedObject.VisibilityUtil
+ .visiblePojosAsArray(objectAdapter, interactionInitiatedBy);
- val parameterSpec = getSpecification(parameterType);
- return CollectionFacet.Utils.collectAsPojoArray(visiblePjoStream, parameterSpec, getObjectManager());
+ return visiblePojos;
}
@Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
index a6cfb63..cf60454 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
@@ -26,9 +26,7 @@ import java.util.Map;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.FacetedMethod;
import org.apache.isis.core.metamodel.facets.ImperativeFacet;
-import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
import org.apache.isis.core.metamodel.facets.param.autocomplete.MinLengthUtil;
import org.apache.isis.core.metamodel.facets.properties.autocomplete.PropertyAutoCompleteFacetAbstract;
import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -82,15 +80,11 @@ public class PropertyAutoCompleteFacetMethod extends PropertyAutoCompleteFacetAb
}
val collectionAdapter = getObjectManager().adapt(collectionOrArray);
-
- final FacetedMethod facetedMethod = (FacetedMethod) getFacetHolder();
- final Class<?> propertyType = facetedMethod.getType();
-
- val visiblePojoStream = ManagedObject.VisibilityUtil
- .streamVisiblePojos(collectionAdapter, interactionInitiatedBy);
-
- val propertySpec = getSpecification(propertyType);
- return CollectionFacet.Utils.collectAsPojoArray(visiblePojoStream, propertySpec, getObjectManager());
+
+ val visiblePojos = ManagedObject.VisibilityUtil
+ .visiblePojosAsArray(collectionAdapter, interactionInitiatedBy);
+
+ return visiblePojos;
}
@Override
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 72ed3ce..5a5035f 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
@@ -26,9 +26,7 @@ import java.util.Map;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.FacetedMethod;
import org.apache.isis.core.metamodel.facets.ImperativeFacet;
-import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
import org.apache.isis.core.metamodel.facets.properties.choices.PropertyChoicesFacetAbstract;
import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -76,17 +74,13 @@ public class PropertyChoicesFacetViaMethod extends PropertyChoicesFacetAbstract
val collectionAdapter = getObjectManager().adapt(options);
- final FacetedMethod facetedMethod = (FacetedMethod) getFacetHolder();
- final Class<?> propertyType = facetedMethod.getType();
-
- val visiblePojoStream = ManagedObject.VisibilityUtil
- .streamVisiblePojos(collectionAdapter, interactionInitiatedBy);
-
- val propertySpec = getSpecification(propertyType);
- return CollectionFacet.Utils.collectAsPojoArray(visiblePojoStream, propertySpec, getObjectManager());
+ val visiblePojos = ManagedObject.VisibilityUtil
+ .visiblePojosAsArray(collectionAdapter, interactionInitiatedBy);
+
+ return visiblePojos;
- //XXX legacy of
+ //XXX legacy of, (not checking visibility)
// final Object options = ManagedObject.InvokeUtil.invoke(method, owningAdapter);
// if (options == null) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
index 640490d..96709fe 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
@@ -379,7 +379,7 @@ public interface ManagedObject {
.filter(VisibilityUtil.filterOn(interactionInitiatedBy));
}
- public static Stream<Object> streamVisiblePojos(
+ private static Stream<Object> streamVisiblePojos(
final ManagedObject collectionAdapter,
final InteractionInitiatedBy interactionInitiatedBy) {
@@ -388,6 +388,26 @@ public interface ManagedObject {
.map(ManagedObject::unwrapSingle);
}
+ public static Object[] visiblePojosAsArray(
+ final ManagedObject collectionAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+
+ return streamVisiblePojos(collectionAdapter, interactionInitiatedBy)
+ .collect(_Arrays.toArray(Object.class));
+ }
+
+ public static Object visiblePojosAutofit(
+ final ManagedObject collectionAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy,
+ final Class<?> requiredContainerType) {
+
+ val visiblePojoStream = streamVisiblePojos(collectionAdapter, interactionInitiatedBy);
+ val autofittedObjectContainer = CollectionFacet.AutofitUtils
+ .collect(visiblePojoStream, requiredContainerType);
+ return autofittedObjectContainer;
+ }
+
+
/**
* @param adapter - an adapter around the domain object whose visibility is being checked
* @param interactionInitiatedBy
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/CollectionFacetUtilsTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/CollectionFacetUtilsTest.java
index bb603e9..f1d9605 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/CollectionFacetUtilsTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/CollectionFacetUtilsTest.java
@@ -78,7 +78,7 @@ public class CollectionFacetUtilsTest {
Collection.class
);
for (Class<?> collectionType : collectionTypes) {
- Object o = CollectionFacet.Utils.collect(iterable.stream(), collectionType);
+ Object o = CollectionFacet.AutofitUtils.collect(iterable.stream(), collectionType);
assertThat(o, is(not(nullValue())));
assertThat(collectionType.isAssignableFrom(o.getClass()), is(true));
@@ -91,7 +91,7 @@ public class CollectionFacetUtilsTest {
@Test
public void whenArray() throws Exception {
- Object o = CollectionFacet.Utils.collect(iterable.stream(), String[].class);
+ Object o = CollectionFacet.AutofitUtils.collect(iterable.stream(), String[].class);
assertThat(o instanceof String[], is(true));
String[] copy = (String[])o;
@@ -100,7 +100,7 @@ public class CollectionFacetUtilsTest {
@Test
public void whenNotSupported() throws Exception {
- Object o = CollectionFacet.Utils.collect(iterable.stream(), Map.class);
+ Object o = CollectionFacet.AutofitUtils.collect(iterable.stream(), Map.class);
assertThat(o, is(nullValue()));
}
@@ -109,7 +109,7 @@ public class CollectionFacetUtilsTest {
expectedException.expect(IllegalArgumentException.class);
- CollectionFacet.Utils.collect(iterable.stream(), null);
+ CollectionFacet.AutofitUtils.collect(iterable.stream(), null);
}
@Test
@@ -117,7 +117,7 @@ public class CollectionFacetUtilsTest {
expectedException.expect(IllegalArgumentException.class);
- CollectionFacet.Utils.collect(null, List.class);
+ CollectionFacet.AutofitUtils.collect(null, List.class);
}