You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2015/10/14 02:28:50 UTC

[05/12] isis git commit: ISIS-1194: move common behaviour between ObjectActionParameterParseable and OnetoOneActionParameterImpl to ObjectActionParameterAbstract. Also...

ISIS-1194: move common behaviour between ObjectActionParameterParseable and OnetoOneActionParameterImpl to ObjectActionParameterAbstract.  Also...

... delete ObjectActionParameterAbstract#set since doesn't seem to be called anywhere.
... (possibly through a long-standing bug), the doCoerceProposedValue of ObjectActionParameterParseable is never called... so delete it.


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/9f83958a
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/9f83958a
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/9f83958a

Branch: refs/heads/ISIS-1213
Commit: 9f83958ade4a821fe75b744c769b10edd71067ea
Parents: 49dc51b
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Oct 13 00:16:32 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Oct 13 00:16:32 2015 +0100

----------------------------------------------------------------------
 .../specimpl/ObjectActionParameterAbstract.java | 53 +++++++++------
 .../ObjectActionParameterParseable.java         | 69 --------------------
 .../specimpl/ObjectSpecificationAbstract.java   |  3 +-
 .../specimpl/OneToOneActionParameterImpl.java   | 55 ++++------------
 4 files changed, 49 insertions(+), 131 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/9f83958a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
index 9f664fc..9a43566 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
@@ -31,6 +31,7 @@ import org.apache.isis.applib.query.QueryFindAllInstances;
 import org.apache.isis.core.commons.lang.ClassExtensions;
 import org.apache.isis.core.commons.lang.ListExtensions;
 import org.apache.isis.core.commons.lang.StringExtensions;
+import org.apache.isis.core.metamodel.adapter.MutableProposedHolder;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.consent.Allow;
@@ -38,6 +39,7 @@ import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.consent.InteractionResultSet;
 import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facetapi.MultiTypedFacet;
 import org.apache.isis.core.metamodel.facets.TypedHolder;
 import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
@@ -53,6 +55,7 @@ import org.apache.isis.core.metamodel.interactions.InteractionUtils;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
 import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
 import org.apache.isis.core.metamodel.spec.DomainModelException;
+import org.apache.isis.core.metamodel.spec.Instance;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
@@ -64,12 +67,43 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
     private final ObjectActionImpl parentAction;
     private final TypedHolder peer;
 
+
+
     protected ObjectActionParameterAbstract(final int number, final ObjectActionImpl objectAction, final TypedHolder peer) {
         this.number = number;
         this.parentAction = objectAction;
         this.peer = peer;
     }
 
+    @Override
+    public FeatureType getFeatureType() {
+        return FeatureType.ACTION_PARAMETER;
+    }
+
+
+    /**
+     * Gets the proposed value of the {@link Instance} (downcast as a
+     * {@link MutableProposedHolder}, wrapping the proposed value into a
+     * {@link ObjectAdapter}.
+     */
+    @Override
+    public ObjectAdapter get(final ObjectAdapter owner, final InteractionInitiatedBy interactionInitiatedBy) {
+        final MutableProposedHolder proposedHolder = getProposedHolder(owner);
+        final Object proposed = proposedHolder.getProposed();
+        return getAdapterMap().adapterFor(proposed);
+    }
+
+
+    protected MutableProposedHolder getProposedHolder(final ObjectAdapter owner) {
+        if (!(owner instanceof MutableProposedHolder)) {
+            throw new IllegalArgumentException("Instance should implement MutableProposedHolder");
+        }
+        return (MutableProposedHolder) owner;
+    }
+
+
+
+
     /**
      * Subclasses should override either {@link #isObject()} or
      * {@link #isCollection()}.
@@ -449,14 +483,6 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
         ObjectSpecification proposedValueSpec;
         if(proposedValue != null) {
             proposedValueAdapter = getAdapterMap().adapterFor(proposedValue);
-            proposedValueSpec = proposedValueAdapter.getSpecification();
-            if(!proposedValueSpec.isOfType(proposedValueSpec)) {
-                proposedValueAdapter = doCoerceProposedValue(adapter, proposedValue, interactionInitiatedBy,
-                        localization
-                );
-            }
-            
-            // check has been coerced into correct type; otherwise give up
             if(proposedValueAdapter == null) {
                 return null;
             }
@@ -481,17 +507,6 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
     }
 
     /**
-     * Optional hook for parsing.
-     */
-    protected ObjectAdapter doCoerceProposedValue(
-            final ObjectAdapter adapter,
-            final Object proposedValue,
-            final InteractionInitiatedBy interactionInitiatedBy,
-            final Localization localization) {
-        return null;
-    }
-
-    /**
      * TODO: this is not ideal, because we can only populate the array for
      * single argument, rather than the entire argument set. Instead, we ought
      * to do this in two passes, one to build up the argument set as a single

http://git-wip-us.apache.org/repos/asf/isis/blob/9f83958a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterParseable.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterParseable.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterParseable.java
index 4aa2c5e..8d44071 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterParseable.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterParseable.java
@@ -19,15 +19,7 @@
 
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
-import org.apache.isis.applib.profiles.Localization;
-import org.apache.isis.core.metamodel.adapter.MutableProposedHolder;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.TypedHolder;
-import org.apache.isis.core.metamodel.facets.object.parseable.ParseableFacet;
-import org.apache.isis.core.metamodel.spec.Instance;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneActionParameter;
 
 public class ObjectActionParameterParseable extends ObjectActionParameterAbstract implements OneToOneActionParameter {
@@ -36,67 +28,6 @@ public class ObjectActionParameterParseable extends ObjectActionParameterAbstrac
         super(index, action, peer);
     }
 
-    protected ObjectAdapter doCoerceProposedValue(
-            final ObjectAdapter adapter,
-            final Object proposedValue,
-            final InteractionInitiatedBy interactionInitiatedBy,
-            final Localization localization) {
-        // try to parse
-        if (!(proposedValue instanceof String)) {
-            return null;
-        }
-        final String proposedString = (String) proposedValue;
 
-        final ObjectSpecification parameterSpecification = getSpecification();
-        final ParseableFacet p = parameterSpecification.getFacet(ParseableFacet.class);
-        try {
-            final ObjectAdapter parsedAdapter = p.parseTextEntry(null, proposedString, interactionInitiatedBy,
-                    localization
-            );
-            return parsedAdapter;
-        } catch(Exception ex) {
-            return null;
-        }
-    }
-
-
-    // //////////////////////////////////////////////////////////////////////
-    // get, set
-    // //////////////////////////////////////////////////////////////////////
-
-    /**
-     * Gets the proposed value of the {@link Instance} (downcast as a
-     * {@link MutableProposedHolder}, wrapping the proposed value into a
-     * {@link ObjectAdapter}.
-     */
-    @Override
-    public ObjectAdapter get(final ObjectAdapter owner, final InteractionInitiatedBy interactionInitiatedBy) {
-        final MutableProposedHolder proposedHolder = getProposedHolder(owner);
-        final Object proposed = proposedHolder.getProposed();
-        return getAdapterMap().adapterFor(proposed);
-    }
-
-    /**
-     * Sets the proposed value of the {@link Instance} (downcast as a
-     * {@link MutableProposedHolder}, unwrapped the proposed value from a
-     * {@link ObjectAdapter}.
-     */
-    public void set(final ObjectAdapter owner, final ObjectAdapter newValue) {
-        final MutableProposedHolder proposedHolder = getProposedHolder(owner);
-        final Object newValuePojo = newValue.getObject();
-        proposedHolder.setProposed(newValuePojo);
-    }
-
-    private MutableProposedHolder getProposedHolder(final ObjectAdapter owner) {
-        if (!(owner instanceof MutableProposedHolder)) {
-            throw new IllegalArgumentException("Instance should implement MutableProposedHolder");
-        }
-        return (MutableProposedHolder) owner;
-    }
-
-    @Override
-    public FeatureType getFeatureType() {
-        return FeatureType.ACTION_PARAMETER;
-    }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/9f83958a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index 548bf43..7d60490 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -82,7 +82,6 @@ import org.apache.isis.core.metamodel.interactions.ObjectValidityContext;
 import org.apache.isis.core.metamodel.layout.DeweyOrderSet;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ActionType;
-import org.apache.isis.core.metamodel.spec.Instance;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.ObjectSpecificationDependencies;
@@ -459,7 +458,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
             }
         }
         final ObjectSpecification superclassSpec = superclass();
-        return superclassSpec != null ? superclassSpec.isOfType(specification) : false;
+        return superclassSpec != null && superclassSpec.isOfType(specification);
     }
 
     //endregion

http://git-wip-us.apache.org/repos/asf/isis/blob/9f83958a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterImpl.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterImpl.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterImpl.java
index ece1864..77b3598 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterImpl.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterImpl.java
@@ -19,12 +19,7 @@
 
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
-import org.apache.isis.core.metamodel.adapter.MutableProposedHolder;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.TypedHolder;
-import org.apache.isis.core.metamodel.spec.Instance;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneActionParameter;
 
 public class OneToOneActionParameterImpl extends ObjectActionParameterAbstract implements OneToOneActionParameter {
@@ -33,10 +28,6 @@ public class OneToOneActionParameterImpl extends ObjectActionParameterAbstract i
         super(index, actionImpl, peer);
     }
 
-    @Override
-    public FeatureType getFeatureType() {
-        return FeatureType.ACTION_PARAMETER;
-    }
 
     @Override
     public boolean isObject() {
@@ -44,39 +35,21 @@ public class OneToOneActionParameterImpl extends ObjectActionParameterAbstract i
     }
 
 
-    // //////////////////////////////////////////////////////////////////////
-    // get, set
-    // //////////////////////////////////////////////////////////////////////
-
-    /**
-     * Gets the proposed value of the {@link Instance} (downcast as a
-     * {@link MutableProposedHolder}, wrapping the proposed value into a
-     * {@link ObjectAdapter}.
-     */
-    @Override
-    public ObjectAdapter get(final ObjectAdapter owner, final InteractionInitiatedBy interactionInitiatedBy) {
-        final MutableProposedHolder proposedHolder = getProposedHolder(owner);
-        final Object proposed = proposedHolder.getProposed();
-        return getAdapterMap().adapterFor(proposed);
-    }
-
-    /**
-     * Sets the proposed value of the {@link Instance} (downcast as a
-     * {@link MutableProposedHolder}, unwrapped the proposed value from a
-     * {@link ObjectAdapter}.
-     */
-    public void set(final ObjectAdapter owner, final ObjectAdapter newValue) {
-        final MutableProposedHolder proposedHolder = getProposedHolder(owner);
-        final Object newValuePojo = newValue.getObject();
-        proposedHolder.setProposed(newValuePojo);
-    }
+//    // //////////////////////////////////////////////////////////////////////
+//    // get, set
+//    // //////////////////////////////////////////////////////////////////////
+//
+//    /**
+//     * Sets the proposed value of the {@link Instance} (downcast as a
+//     * {@link MutableProposedHolder}, unwrapped the proposed value from a
+//     * {@link ObjectAdapter}.
+//     */
+//    public void set(final ObjectAdapter owner, final ObjectAdapter newValue) {
+//        final MutableProposedHolder proposedHolder = getProposedHolder(owner);
+//        final Object newValuePojo = newValue.getObject();
+//        proposedHolder.setProposed(newValuePojo);
+//    }
 
-    private MutableProposedHolder getProposedHolder(final ObjectAdapter owner) {
-        if (!(owner instanceof MutableProposedHolder)) {
-            throw new IllegalArgumentException("Instance should implement MutableProposedHolder");
-        }
-        return (MutableProposedHolder) owner;
-    }
 
 
 }