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/20 16:18:23 UTC

[16/36] isis git commit: ISIS-785: now sets the type on the FactedMethodParameter peer object when represents collection, meaning that ...

ISIS-785: now sets the type on the FactedMethodParameter peer object when represents collection, meaning that ...

... an action "foo(Collection<Customer> cust)" is compatible with supporting method "List<Customer> choices0Foo()"

Still WIP ... at this point, fails when attempt to invoke the action, passing an object rather than a collection of objects.


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

Branch: refs/heads/master
Commit: 8d807129115c82fc172252fd1cf8776c44dbdc59
Parents: b993efe
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Jan 18 13:22:49 2017 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Jan 18 13:22:49 2017 +0000

----------------------------------------------------------------------
 .../isis/core/metamodel/facets/FacetedMethod.java |  7 +++++--
 .../isis/core/metamodel/facets/TypedHolder.java   |  4 ++--
 .../core/metamodel/facets/TypedHolderDefault.java |  2 +-
 .../specimpl/ObjectActionParameterAbstract.java   | 18 ++++++------------
 .../GivenAuditableAnnotationFacetFactoryTest.java |  7 +++++--
 5 files changed, 19 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/8d807129/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetedMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetedMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetedMethod.java
index e4b165d..e59a3e4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetedMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetedMethod.java
@@ -126,8 +126,11 @@ public class FacetedMethod extends TypedHolderDefault implements IdentifiedHolde
                 }
             }
 
-            FacetUtil.addFacet(typeOfFacet);
-            continue;
+            // copy over (corresponds to similar code for OneToManyAssociation in FacetMethodsBuilder).
+            if(typeOfFacet != null ) {
+                FacetUtil.addFacet(typeOfFacet);
+                fmp.setType(typeOfFacet.value());
+            }
 
         }
         return Collections.unmodifiableList(actionParams);

http://git-wip-us.apache.org/repos/asf/isis/blob/8d807129/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/TypedHolder.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/TypedHolder.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/TypedHolder.java
index a26963c..d1a9868 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/TypedHolder.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/TypedHolder.java
@@ -36,8 +36,8 @@ public interface TypedHolder extends FacetHolder {
     /**
      * The type of a {@link FeatureType#PROPERTY property}, the referenced type
      * of a {@link FeatureType#COLLECTION collection}, the return type of an
-     * {@link FeatureType#ACTION action} and the type of a
-     * {@link FeatureType#ACTION_PARAMETER action parameter}.
+     * {@link FeatureType#ACTION action} and for {@link FeatureType#ACTION_PARAMETER action parameter}s
+     * either the scalar type or the inferred generic type if a collection.
      */
     public Class<?> getType();
 

http://git-wip-us.apache.org/repos/asf/isis/blob/8d807129/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/TypedHolderDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/TypedHolderDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/TypedHolderDefault.java
index 8b04f05..a27f4b6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/TypedHolderDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/TypedHolderDefault.java
@@ -40,7 +40,7 @@ public class TypedHolderDefault extends FacetHolderImpl implements TypedHolder {
     }
 
     /**
-     * For {@link FeatureType#COLLECTION collection}s, represents the element
+     * For {@link FeatureType#COLLECTION collection}s, and for some {@link FeatureType#ACTION_PARAMETER}s, represents the element
      * type.
      */
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/8d807129/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 1aaebff..9c1e2fc 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
@@ -42,10 +42,8 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 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.actcoll.typeof.TypeOfFacet;
 import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
-import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
 import org.apache.isis.core.metamodel.facets.object.choices.ChoicesFacetFromBoundedAbstract;
 import org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet;
 import org.apache.isis.core.metamodel.facets.param.autocomplete.ActionParameterAutoCompleteFacet;
@@ -59,9 +57,9 @@ import org.apache.isis.core.metamodel.services.persistsession.PersistenceSession
 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.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public abstract class ObjectActionParameterAbstract implements ObjectActionParameter {
 
@@ -425,16 +423,12 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
             final ObjectSpecification choiceWrappedSpec = specificationLookup.loadSpecification(choiceWrappedClass);
             final ObjectSpecification paramWrappedSpec = specificationLookup.loadSpecification(paramWrappedClass);
 
-            // TODO: remove this eventually... need to introduce OneToManyParameter
-            if(paramWrappedSpec.isParentedOrFreeCollection()) {
-                final CollectionFacet collectionFacet = paramWrappedSpec.getFacet(CollectionFacet.class);
-                final TypeOfFacet typeOfFacet = collectionFacet.getTypeOfFacet();
-                final ObjectSpecification collectionOfParamSpec = typeOfFacet.valueSpec();
-                System.out.println(collectionOfParamSpec.getFullIdentifier());
-            }
-            
+
+            // TODO: should implement this instead as a MetaModelValidator
             if (!choiceWrappedSpec.isOfType(paramWrappedSpec)) {
-                throw new DomainModelException("Type incompatible with parameter type; expected " + paramSpec.getFullIdentifier() + ", but was " + choiceClass.getName());
+                throw new DomainModelException(String.format(
+                        "Type incompatible with parameter type; expected %s, but was %s",
+                                paramSpec.getFullIdentifier(), choiceClass.getName()));
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/8d807129/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableAnnotationFacetFactoryTest.java
index 18b1ade..ea06673 100644
--- a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableAnnotationFacetFactoryTest.java
@@ -18,10 +18,12 @@
  */
 package org.apache.isis.objectstore.jdo.metamodel.facets.object.auditable;
 
-import junit.framework.Assert;
-
 import java.util.List;
+
 import javax.jdo.annotations.PersistenceCapable;
+
+import org.junit.Assert;
+
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
@@ -31,6 +33,7 @@ import org.apache.isis.core.metamodel.facets.object.domainobject.auditing.Audita
 import org.apache.isis.core.objectstore.jdo.applib.annotations.Auditable;
 
 
+
 public class GivenAuditableAnnotationFacetFactoryTest extends
         AbstractFacetFactoryTest {