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:18 UTC

[12/24] isis git commit: ISIS-785: implements getCollectionSemantics for OneToManyActionParameterXxx classes (generalizing similar code in OneToManyAssociation).

ISIS-785: implements getCollectionSemantics for OneToManyActionParameterXxx classes (generalizing similar code in OneToManyAssociation).


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

Branch: refs/heads/maint-1.13.3
Commit: 5b182098e9d4d95de91beff79b07dbbd3e478781
Parents: 4639eab
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Jan 18 11:59:41 2017 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Jan 18 11:59:41 2017 +0000

----------------------------------------------------------------------
 .../spec/feature/OneToManyFeature.java          | 17 +++++++++++++++++
 .../OneToManyActionParameterContributee.java    |  4 +++-
 .../OneToManyActionParameterDefault.java        |  6 +++++-
 .../OneToManyActionParameterMixedIn.java        |  4 +++-
 .../specimpl/OneToManyAssociationDefault.java   | 20 ++------------------
 5 files changed, 30 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/5b182098/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/OneToManyFeature.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/OneToManyFeature.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/OneToManyFeature.java
index d08c751..3ffc9f9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/OneToManyFeature.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/OneToManyFeature.java
@@ -20,7 +20,9 @@
 package org.apache.isis.core.metamodel.spec.feature;
 
 import java.util.Collection;
+import java.util.List;
 import java.util.Queue;
+import java.util.Set;
 
 /**
  * Base interface for {@link OneToManyAssociation} only.
@@ -68,4 +70,19 @@ public interface OneToManyFeature extends ObjectFeature {
     }
 
     CollectionSemantics getCollectionSemantics();
+
+    public static class Util {
+        public static CollectionSemantics semanticsOf(final Class<?> underlyingClass) {
+            if (!Collection.class.isAssignableFrom(underlyingClass)) {
+                return CollectionSemantics.ARRAY;
+            }
+            if (List.class.isAssignableFrom(underlyingClass)) {
+                return CollectionSemantics.LIST;
+            }
+            if (Set.class.isAssignableFrom(underlyingClass)) {
+                return CollectionSemantics.SET;
+            }
+            return CollectionSemantics.OTHER;
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/5b182098/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterContributee.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterContributee.java
index 54eae3c..4db147e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterContributee.java
@@ -18,6 +18,7 @@ package org.apache.isis.core.metamodel.specloader.specimpl;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyActionParameter;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyFeature;
 
 public class OneToManyActionParameterContributee
         extends ObjectActionParameterContributeeAbstract
@@ -33,6 +34,7 @@ public class OneToManyActionParameterContributee
 
     @Override
     public CollectionSemantics getCollectionSemantics() {
-        throw new RuntimeException("TODO: not yet implemented");
+        final Class<?> underlyingClass = getSpecification().getCorrespondingClass();
+        return OneToManyFeature.Util.semanticsOf(underlyingClass);
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/5b182098/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterDefault.java
index 890ed2a..a542f15 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterDefault.java
@@ -21,6 +21,7 @@ package org.apache.isis.core.metamodel.specloader.specimpl;
 
 import org.apache.isis.core.metamodel.facets.TypedHolder;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyActionParameter;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyFeature;
 
 public class OneToManyActionParameterDefault extends ObjectActionParameterAbstract implements OneToManyActionParameter {
 
@@ -33,6 +34,9 @@ public class OneToManyActionParameterDefault extends ObjectActionParameterAbstra
 
     @Override
     public CollectionSemantics getCollectionSemantics() {
-        throw new RuntimeException("TODO: not yet implemented");
+        final Class<?> underlyingClass = getSpecification().getCorrespondingClass();
+        return OneToManyFeature.Util.semanticsOf(underlyingClass);
     }
+
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/5b182098/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterMixedIn.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterMixedIn.java
index b95106c..6ca04c0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterMixedIn.java
@@ -17,6 +17,7 @@
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
 import org.apache.isis.core.metamodel.spec.feature.OneToManyActionParameter;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyFeature;
 
 public class OneToManyActionParameterMixedIn
         extends ObjectActionParameterMixedInAbstract
@@ -30,6 +31,7 @@ public class OneToManyActionParameterMixedIn
 
     @Override
     public CollectionSemantics getCollectionSemantics() {
-        throw new RuntimeException("TODO: not yet implemented");
+        final Class<?> underlyingClass = getSpecification().getCorrespondingClass();
+        return OneToManyFeature.Util.semanticsOf(underlyingClass);
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/5b182098/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
index c9648cb..ca55eee 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
@@ -19,10 +19,6 @@
 
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.commons.util.ToString;
@@ -48,6 +44,7 @@ import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyFeature;
 
 public class OneToManyAssociationDefault extends ObjectAssociationAbstract implements OneToManyAssociation {
 
@@ -69,20 +66,7 @@ public class OneToManyAssociationDefault extends ObjectAssociationAbstract imple
     @Override
     public CollectionSemantics getCollectionSemantics() {
         final Class<?> underlyingClass = getSpecification().getCorrespondingClass();
-        return semanticsOf(underlyingClass);
-    }
-
-    private static CollectionSemantics semanticsOf(final Class<?> underlyingClass) {
-        if (!Collection.class.isAssignableFrom(underlyingClass)) {
-            return CollectionSemantics.ARRAY;
-        }
-        if (List.class.isAssignableFrom(underlyingClass)) {
-            return CollectionSemantics.LIST;
-        }
-        if (Set.class.isAssignableFrom(underlyingClass)) {
-            return CollectionSemantics.SET;
-        }
-        return CollectionSemantics.OTHER;
+        return OneToManyFeature.Util.semanticsOf(underlyingClass);
     }
 
     //region > visible, usable