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 {