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 2017/01/19 11:09:17 UTC

[11/24] isis git commit: ISIS-785: ObjectAction{Contributee/MixedIn} now create either OneToOneAction{ContributeeMixedIn} or OneToManyAction{Contributee/MixedIn} as appropriate...

ISIS-785: ObjectAction{Contributee/MixedIn} now create either OneToOneAction{ContributeeMixedIn} or OneToManyAction{Contributee/MixedIn} as appropriate...

.. using similar logic to that in ObjectActionDefault.


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

Branch: refs/heads/maint-1.13.3
Commit: 4639eab23db11cc858f0722694a88bc84eee20e7
Parents: 30d23e0
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Jan 18 11:28:33 2017 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Jan 18 11:28:33 2017 +0000

----------------------------------------------------------------------
 .../specimpl/ObjectActionContributee.java       | 20 +++++++++++++++-----
 .../specimpl/ObjectActionDefault.java           | 16 ++++++----------
 .../specimpl/ObjectActionMixedIn.java           | 19 +++++++++++++++----
 3 files changed, 36 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/4639eab2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java
index 1e74b24..0d3fc46 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java
@@ -32,6 +32,8 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.MultiTypedFacet;
+import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
+import org.apache.isis.core.metamodel.facets.TypedHolder;
 import org.apache.isis.core.metamodel.interactions.InteractionUtils;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
@@ -111,8 +113,9 @@ public class ObjectActionContributee extends ObjectActionDefault implements Cont
         }
 
         final List<ObjectActionParameter> serviceParameters = serviceAction.getParameters();
-        final List<ObjectActionParameter> contributeeParameters = Lists.newArrayList();
+        final List<FacetedMethodParameter> paramPeers = getFacetedMethod().getParameters();
 
+        final List<ObjectActionParameter> contributeeParameters = Lists.newArrayList();
         int contributeeParamNum = 0;
 
         for (int serviceParamNum = 0; serviceParamNum < serviceParameters.size(); serviceParamNum++ ) {
@@ -121,13 +124,20 @@ public class ObjectActionContributee extends ObjectActionDefault implements Cont
                 continue;
             }
 
+            final TypedHolder paramPeer = paramPeers.get(serviceParamNum);
+            final ObjectSpecification specification = ObjectMemberAbstract
+                    .getSpecification(getSpecificationLoader(), paramPeer.getType());
+
             final ObjectActionParameterAbstract serviceParameter =
                     (ObjectActionParameterAbstract) serviceParameters.get(serviceParamNum);
 
-            final ObjectActionParameterContributee contributedParam;
-            contributedParam = new OneToOneActionParameterContributee(
-                    getServiceAdapter(), serviceParameter,
-                    contributeeParamNum, this);
+            final ObjectActionParameterContributee contributedParam =
+                    specification.isNotCollection()
+                            ? new OneToOneActionParameterContributee(
+                                    getServiceAdapter(), serviceParameter, contributeeParamNum, this)
+                            : new OneToManyActionParameterContributee(
+                                    getServiceAdapter(), serviceParameter, contributeeParamNum, this);
+
             contributeeParameters.add(contributedParam);
 
             contributeeParamNum++;

http://git-wip-us.apache.org/repos/asf/isis/blob/4639eab2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
index edae87e..79258f7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
@@ -191,23 +191,19 @@ public class ObjectActionDefault extends ObjectMemberAbstract implements ObjectA
             return parameters;
         }
         final int parameterCount = getParameterCount();
-        final List<ObjectActionParameter> parameters = Lists.newArrayList();
         final List<FacetedMethodParameter> paramPeers = getFacetedMethod().getParameters();
 
-        for (int i = 0; i < parameterCount; i++) {
-            final TypedHolder paramPeer = paramPeers.get(i);
+        final List<ObjectActionParameter> parameters = Lists.newArrayList();
+        for (int paramNum = 0; paramNum < parameterCount; paramNum++) {
+            final TypedHolder paramPeer = paramPeers.get(paramNum);
 
-            @SuppressWarnings("unused")
             final ObjectSpecification specification = ObjectMemberAbstract
                     .getSpecification(getSpecificationLoader(), paramPeer.getType());
 
             // previously we threw an exception here if the specification represented a collection.  No longer!
-            final ObjectActionParameter parameter;
-            if(specification.isNotCollection()) {
-                parameter = new OneToOneActionParameterDefault(i, this, paramPeer);
-            } else {
-                parameter = new OneToManyActionParameterDefault(i, this, paramPeer);
-            }
+            final ObjectActionParameter parameter = specification.isNotCollection() ?
+                    new OneToOneActionParameterDefault(paramNum, this, paramPeer) :
+                    new OneToManyActionParameterDefault(paramNum, this, paramPeer);
 
             parameters.add(parameter);
         }

http://git-wip-us.apache.org/repos/asf/isis/blob/4639eab2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java
index 752ffaa..8b9e963 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java
@@ -30,6 +30,8 @@ import org.apache.isis.core.metamodel.consent.InteractionResultSet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
+import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
+import org.apache.isis.core.metamodel.facets.TypedHolder;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred;
 import org.apache.isis.core.metamodel.interactions.InteractionUtils;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
@@ -128,13 +130,22 @@ public class ObjectActionMixedIn extends ObjectActionDefault implements MixedInM
             return parameters;
         }
         final List<ObjectActionParameter> mixinActionParameters = mixinAction.getParameters();
+        final List<FacetedMethodParameter> paramPeers = getFacetedMethod().getParameters();
+
         final List<ObjectActionParameter> mixedInParameters = Lists.newArrayList();
 
-        for (ObjectActionParameter mixinActionParameter : mixinActionParameters) {
+        for(int paramNum = 0; paramNum < mixinActionParameters.size(); paramNum++) {
+
             final ObjectActionParameterAbstract mixinParameter =
-                    (ObjectActionParameterAbstract) mixinActionParameter;
-            final ObjectActionParameterMixedIn mixedInParameter;
-            mixedInParameter = new OneToOneActionParameterMixedIn(mixinParameter, this);
+                    (ObjectActionParameterAbstract) mixinActionParameters.get(paramNum);
+
+            final TypedHolder paramPeer = paramPeers.get(paramNum);
+            final ObjectSpecification specification = ObjectMemberAbstract
+                    .getSpecification(getSpecificationLoader(), paramPeer.getType());
+
+            final ObjectActionParameterMixedIn mixedInParameter = specification.isNotCollection()
+                    ? new OneToOneActionParameterMixedIn(mixinParameter, this)
+                    : new OneToManyActionParameterMixedIn(mixinParameter, this);
             mixedInParameters.add(mixedInParameter);
         }
         return mixedInParameters;