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 2019/10/29 20:28:16 UTC
[isis] 21/23: ISIS-2158: remove remaining uses of ObjectAdapter in
wicket viewer
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git
commit d6f49b8b0a907b5f7c6e8dc0833efaeaddace841
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Oct 29 13:24:48 2019 +0100
ISIS-2158: remove remaining uses of ObjectAdapter in wicket viewer
---
.../isis/metamodel/adapter/ObjectAdapter.java | 44 +------------------
...ctionInvocationFacetForDomainEventAbstract.java | 2 +-
.../choices/ChoicesFacetFromBoundedAbstract.java | 2 +-
.../accessor/PropertyAccessorFacetViaAccessor.java | 2 +-
.../apache/isis/metamodel/spec/ManagedObject.java | 49 +++++++++++++++++++++-
.../rendering/domainobjects/JsonValueEncoder.java | 4 +-
.../entitysimplelink/EntityLinkSimplePanel.java | 3 +-
.../ObjectAdapterMementoProviderAbstract.java | 2 +-
.../widgets/zclip/ZeroClipboardPanel.java | 10 ++---
.../viewer/wicket/ui/pages/entity/EntityPage.java | 2 +-
10 files changed, 63 insertions(+), 57 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/ObjectAdapter.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/ObjectAdapter.java
index bab04bc..092f0dd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/ObjectAdapter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/ObjectAdapter.java
@@ -25,7 +25,6 @@ import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.services.inject.ServiceInjector;
import org.apache.isis.commons.internal.base._Tuples.Tuple2;
import org.apache.isis.commons.internal.collections._Lists;
@@ -37,11 +36,7 @@ import org.apache.isis.metamodel.commons.ListExtensions;
import org.apache.isis.metamodel.commons.MethodExtensions;
import org.apache.isis.metamodel.commons.MethodUtil;
import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.metamodel.consent.InteractionResult;
import org.apache.isis.metamodel.facets.collections.modify.CollectionFacet;
-import org.apache.isis.metamodel.interactions.InteractionUtils;
-import org.apache.isis.metamodel.interactions.ObjectVisibilityContext;
-import org.apache.isis.metamodel.interactions.VisibilityContext;
import org.apache.isis.metamodel.spec.ManagedObject;
import org.apache.isis.metamodel.spec.ObjectSpecification;
@@ -173,48 +168,11 @@ public interface ObjectAdapter extends ManagedObject {
final InteractionInitiatedBy interactionInitiatedBy) {
return objectAdapters
- .filter(adapter->isVisible(adapter, interactionInitiatedBy))
+ .filter(adapter->ManagedObject.Visibility.isVisible(adapter, interactionInitiatedBy))
.collect(Collectors.toList());
}
- /**
- * @param adapter - an adapter around the domain object whose visibility is being checked
- * @param interactionInitiatedBy
- */
- public static boolean isVisible(
- final ManagedObject adapter,
- final InteractionInitiatedBy interactionInitiatedBy) {
-
- if(adapter == null) {
- // a choices list could include a null (eg example in ToDoItems#choices1Categorized()); want to show as "visible"
- return true;
- }
- if(ManagedObject._isDestroyed(adapter)) {
- return false;
- }
- if(interactionInitiatedBy == InteractionInitiatedBy.FRAMEWORK) {
- return true;
- }
- return isVisibleForUser(adapter);
- }
-
- private static boolean isVisibleForUser(final ManagedObject adapter) {
- final VisibilityContext<?> context = createVisibleInteractionContextForUser(adapter);
- final ObjectSpecification objectSpecification = adapter.getSpecification();
- final InteractionResult visibleResult = InteractionUtils.isVisibleResult(objectSpecification, context);
- return visibleResult.isNotVetoing();
- }
-
- private static VisibilityContext<?> createVisibleInteractionContextForUser(
- final ManagedObject objectAdapter) {
-
- return new ObjectVisibilityContext(
- objectAdapter,
- objectAdapter.getSpecification().getIdentifier(),
- InteractionInitiatedBy.USER,
- Where.OBJECT_FORMS);
- }
}
boolean isTransient();
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
index 21b9b6b..b388477 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
@@ -470,7 +470,7 @@ implements ImperativeFacet {
return resultAdapter;
} else {
- boolean visible = ObjectAdapter.Util.isVisible(resultAdapter, interactionInitiatedBy);
+ boolean visible = ManagedObject.Visibility.isVisible(resultAdapter, interactionInitiatedBy);
return visible ? resultAdapter : null;
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
index baa8508..819c46e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
@@ -111,7 +111,7 @@ implements ChoicesFacet, DisablingInteractionAdvisor, ValidatingInteractionAdvis
val repository = context.getRepositoryService();
final Predicate<ManagedObject> visibilityFilter =
- objectAdapter -> ObjectAdapter.Util.isVisible(objectAdapter, interactionInitiatedBy);
+ objectAdapter -> ManagedObject.Visibility.isVisible(objectAdapter, interactionInitiatedBy);
val query = new QueryFindAllChoices(getObjectSpecification().getFullIdentifier(), visibilityFilter);
return repository.allMatches(query).toArray();
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
index 42a57fb..667fd19 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
@@ -75,7 +75,7 @@ implements ImperativeFacet {
boolean filterForVisibility = super.getMetaModelContext().getConfiguration().getReflector().getFacet().isFilterVisibility();
if(filterForVisibility) {
final ObjectAdapter referencedAdapter = getObjectAdapterProvider().adapterFor(referencedObject);
- final boolean visible = ObjectAdapter.Util
+ final boolean visible = ManagedObject.Visibility
.isVisible(referencedAdapter, interactionInitiatedBy);
if (!visible) {
return null;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java
index 19581e4..5881907 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java
@@ -26,6 +26,7 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.domain.DomainObjectList;
import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.exceptions._Exceptions;
@@ -35,8 +36,13 @@ import org.apache.isis.metamodel.adapter.oid.Oid;
import org.apache.isis.metamodel.adapter.oid.RootOid;
import org.apache.isis.metamodel.adapter.oid.factory.OidFactory;
import org.apache.isis.metamodel.adapter.version.Version;
+import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.metamodel.consent.InteractionResult;
import org.apache.isis.metamodel.facets.collections.modify.CollectionFacet;
import org.apache.isis.metamodel.facets.object.entity.EntityFacet;
+import org.apache.isis.metamodel.interactions.InteractionUtils;
+import org.apache.isis.metamodel.interactions.ObjectVisibilityContext;
+import org.apache.isis.metamodel.interactions.VisibilityContext;
import org.apache.isis.metamodel.specloader.SpecificationLoader;
import org.apache.isis.metamodel.specloader.SpecificationLoaderDefault;
@@ -347,6 +353,48 @@ public interface ManagedObject {
return null;
}
+ // -- VISIBILITY UTILITIES
+
+ static final class Visibility {
+ /**
+ * @param adapter - an adapter around the domain object whose visibility is being checked
+ * @param interactionInitiatedBy
+ */
+ public static boolean isVisible(
+ ManagedObject adapter,
+ InteractionInitiatedBy interactionInitiatedBy) {
+
+ if(adapter == null) {
+ // a choices list could include a null (eg example in ToDoItems#choices1Categorized()); want to show as "visible"
+ return true;
+ }
+ if(ManagedObject._isDestroyed(adapter)) {
+ return false;
+ }
+ if(interactionInitiatedBy == InteractionInitiatedBy.FRAMEWORK) {
+ return true;
+ }
+ return isVisibleForUser(adapter);
+ }
+
+ private static boolean isVisibleForUser(ManagedObject adapter) {
+ val visibilityContext = createVisibleInteractionContextForUser(adapter);
+ val spec = adapter.getSpecification();
+ final InteractionResult visibleResult = InteractionUtils.isVisibleResult(spec, visibilityContext);
+ return visibleResult.isNotVetoing();
+ }
+
+ private static VisibilityContext<?> createVisibleInteractionContextForUser(
+ ManagedObject objectAdapter) {
+
+ return new ObjectVisibilityContext(
+ objectAdapter,
+ objectAdapter.getSpecification().getIdentifier(),
+ InteractionInitiatedBy.USER,
+ Where.OBJECT_FORMS);
+ }
+ }
+
// -- OID UTILITIES
static final class Oids {
@@ -447,6 +495,5 @@ public interface ManagedObject {
// .map(ManagedObject.class::cast);
}
-
}
diff --git a/core/viewer-restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java b/core/viewer-restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
index 789db17..518d3e0 100644
--- a/core/viewer-restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
+++ b/core/viewer-restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
@@ -45,6 +45,7 @@ import static org.apache.isis.commons.internal.base._With.requires;
import lombok.val;
+
/**
* Similar to Isis' value encoding, but with additional support for JSON
* primitives.
@@ -57,7 +58,8 @@ public class JsonValueEncoder {
@PostConstruct
public void init() {
- val pojoToAdapter = (Function<Object, ManagedObject>) pojo ->
+ //XXX no lombok val here
+ Function<Object, ManagedObject> pojoToAdapter = pojo ->
ManagedObject.of(specificationLoader::loadSpecification, pojo);
new JsonValueEncoder_Converters().asList(pojoToAdapter)
diff --git a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java
index 4ce0584..110f545 100644
--- a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java
+++ b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java
@@ -23,7 +23,6 @@ import org.apache.wicket.Component;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.FormComponentPanel;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
import org.apache.isis.metamodel.spec.ManagedObject;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
import org.apache.isis.viewer.wicket.ui.ComponentFactory;
@@ -48,7 +47,7 @@ implements CancelHintRequired {
public EntityLinkSimplePanel(final String id, final EntityModel entityModel) {
super(id, entityModel);
- setType(ObjectAdapter.class);
+ setType(ManagedObject.class);
buildGui();
}
diff --git a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderAbstract.java b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderAbstract.java
index 73d3925..5913b03 100644
--- a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderAbstract.java
+++ b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderAbstract.java
@@ -112,7 +112,7 @@ public abstract class ObjectAdapterMementoProviderAbstract extends ChoiceProvide
/**
* Filters all choices against a term by using their
- * {@link org.apache.isis.metamodel.adapter.ObjectAdapter#titleString(org.apache.isis.metamodel.adapter.ObjectAdapter) title string}
+ * {@link ManagedObject#titleString(ManagedObject) title string}
*
* @param term The term entered by the user
* @param choicesMementos The collections of choices to filter
diff --git a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java
index 90d3a64..0e037d4 100644
--- a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java
+++ b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java
@@ -25,7 +25,7 @@ import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.request.Url;
import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.metamodel.spec.ManagedObject;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
import org.apache.isis.viewer.wicket.model.models.ObjectAdapterModel;
import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
@@ -40,7 +40,7 @@ public class ZeroClipboardPanel extends PanelAbstract<ObjectAdapterModel> {
private static final String ID_COPY_LINK = "copyLink";
private static final String ID_SIMPLE_CLIPBOARD_MODAL_WINDOW = "simpleClipboardModalWindow";
- private AjaxLink<ObjectAdapter> copyLink;
+ private AjaxLink<ManagedObject> copyLink;
private SimpleClipboardModalWindow simpleClipboardModalWindow;
public ZeroClipboardPanel(String id, ObjectAdapterModel entityModel) {
@@ -67,12 +67,12 @@ public class ZeroClipboardPanel extends PanelAbstract<ObjectAdapterModel> {
setVisibilityAllowed(false);
}
- private AjaxLink<ObjectAdapter> createLink(String linkId) {
+ private AjaxLink<ManagedObject> createLink(String linkId) {
return newSimpleClipboardLink(linkId);
}
- private AjaxLink<ObjectAdapter> newSimpleClipboardLink(String linkId) {
- return new AjaxLink<ObjectAdapter>(linkId) {
+ private AjaxLink<ManagedObject> newSimpleClipboardLink(String linkId) {
+ return new AjaxLink<ManagedObject>(linkId) {
private static final long serialVersionUID = 1L;
@Override
diff --git a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
index c90e59c..a68f1e9 100644
--- a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
+++ b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
@@ -181,7 +181,7 @@ public class EntityPage extends PageAbstract {
}
// check that the entity overall can be viewed.
- if(!ObjectAdapter.Util.isVisible(objectAdapter, InteractionInitiatedBy.USER)) {
+ if(!ManagedObject.Visibility.isVisible(objectAdapter, InteractionInitiatedBy.USER)) {
throw new ObjectMember.AuthorizationException();
}