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();
         }