You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2020/01/16 18:18:34 UTC

[isis] branch master updated: ISIS-2265: simplifies CollectionFacet

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 72b2efe  ISIS-2265: simplifies CollectionFacet
72b2efe is described below

commit 72b2efe6aafe3bd050e29fdfaca0619eb46e1c32
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Jan 16 19:18:23 2020 +0100

    ISIS-2265: simplifies CollectionFacet
---
 .../collections/javautilcollection/JavaArrayFacet.java     | 10 ++++------
 .../javautilcollection/JavaCollectionFacet.java            |  9 ++++-----
 .../facets/collections/modify/CollectionFacet.java         | 14 +++++++-------
 .../standalonelist/CollectionFacetOnContainer.java         |  8 ++++----
 4 files changed, 19 insertions(+), 22 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/JavaArrayFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/JavaArrayFacet.java
index bf65b45..931c775 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/JavaArrayFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/JavaArrayFacet.java
@@ -22,7 +22,6 @@ package org.apache.isis.core.metamodel.facets.collections.javautilcollection;
 import java.util.function.Supplier;
 import java.util.stream.Stream;
 
-import org.apache.isis.core.commons.internal.base._Casts;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.collections.CollectionFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -40,10 +39,10 @@ public class JavaArrayFacet extends CollectionFacetAbstract {
     }
 
     @Override
-    public <T extends ManagedObject> Object populatePojo(
+    public Object populatePojo(
             Supplier<Object> emptyCollectionPojoFactory, 
             ObjectSpecification collectionSpec,
-            Stream<T> initData, 
+            Stream<ManagedObject> initData, 
             int elementCount) {
 
         final Object[] array = initData
@@ -53,7 +52,7 @@ public class JavaArrayFacet extends CollectionFacetAbstract {
     }
 
     @Override
-    public <T extends ManagedObject> Stream<T> stream(T arrayAdapter) {
+    public Stream<ManagedObject> stream(ManagedObject arrayAdapter) {
         final Object[] array = pojoArray(arrayAdapter);
         if(isEmpty(array)) {
             return Stream.of();
@@ -62,8 +61,7 @@ public class JavaArrayFacet extends CollectionFacetAbstract {
         val objectManager = super.getObjectManager();
 
         return Stream.of(array)
-                .map(objectManager::adapt)
-                .map(x->_Casts.<T>uncheckedCast(x));
+                .map(objectManager::adapt);
     }
 
     /**
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/JavaCollectionFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/JavaCollectionFacet.java
index 04fd87d..700e5c7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/JavaCollectionFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/JavaCollectionFacet.java
@@ -38,10 +38,10 @@ public class JavaCollectionFacet extends CollectionFacetAbstract {
     }
 
     @Override
-    public <T extends ManagedObject> Object populatePojo(
+    public Object populatePojo(
             Supplier<Object> emptyCollectionPojoFactory, 
             ObjectSpecification collectionSpec,
-            Stream<T> initData, 
+            Stream<ManagedObject> initData, 
             int elementCount) {
 
         final Collection<? super Object> pojoCollection = _Casts.uncheckedCast(emptyCollectionPojoFactory.get());
@@ -56,14 +56,13 @@ public class JavaCollectionFacet extends CollectionFacetAbstract {
     }
 
     @Override
-    public <T extends ManagedObject> Stream<T> stream(T collectionAdapter) {
+    public Stream<ManagedObject> stream(ManagedObject collectionAdapter) {
 
         val objectManager = super.getObjectManager();
 
         return pojoCollection(collectionAdapter)
                 .stream()
-                .map(objectManager::adapt)
-                .map(x->_Casts.<T>uncheckedCast(x));
+                .map(objectManager::adapt);
     }
 
     /**
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionFacet.java
index 345937d..906d0e1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionFacet.java
@@ -20,6 +20,7 @@
 package org.apache.isis.core.metamodel.facets.collections.modify;
 
 import java.util.List;
+import java.util.Optional;
 import java.util.function.Function;
 import java.util.function.Supplier;
 import java.util.stream.Collectors;
@@ -36,8 +37,7 @@ import lombok.val;
 /**
  * Attached to {@link ObjectSpecification}s that represent a collection.
  *
- * <p>
- * Factories of (implementations of this) facet should ensure that a
+ * @implNote Factories of (implementations of this) facet should ensure that a
  * {@link TypeOfFacet} is also attached to the same facet holder. The
  * {@link #getTypeOfFacet()} is a convenience for this.
  */
@@ -51,10 +51,10 @@ public interface CollectionFacet extends Facet {
      * (typically the elements of a collection or array)
      * @since 2.0
      */
-    <T extends ManagedObject> Stream<T> stream(T collectionAdapter);
+    Stream<ManagedObject> stream(ManagedObject collectionAdapter);
 
-    default <T extends ManagedObject> T firstElement(T collectionAdapter) {
-        return stream(collectionAdapter).findFirst().orElse(null);
+    default Optional<ManagedObject> firstElement(ManagedObject collectionAdapter) {
+        return stream(collectionAdapter).findFirst();
     }
 
     /**
@@ -68,10 +68,10 @@ public interface CollectionFacet extends Facet {
      * @return a possibly new instance
      * @since 2.0
      */
-    <T extends ManagedObject> Object populatePojo(
+    Object populatePojo(
             Supplier<Object> emptyCollectionPojoFactory, 
             ObjectSpecification collectionSpec, 
-            Stream<T> elements, 
+            Stream<ManagedObject> elements, 
             int elementCount);
 
     /**
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/CollectionFacetOnContainer.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/CollectionFacetOnContainer.java
index 10ed085..93f3e46 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/CollectionFacetOnContainer.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/CollectionFacetOnContainer.java
@@ -38,8 +38,8 @@ public class CollectionFacetOnContainer extends CollectionFacetAbstract {
     }
 
     @Override
-    public Stream<ManagedObject> stream(ManagedObject wrappedObjectList) {
-        val list = unwrap(wrappedObjectList);
+    public Stream<ManagedObject> stream(ManagedObject container) {
+        val list = unwrap(container);
         return list.stream();
     }
 
@@ -53,10 +53,10 @@ public class CollectionFacetOnContainer extends CollectionFacetAbstract {
     }
 
     @Override
-    public <T extends ManagedObject> Object populatePojo(
+    public Object populatePojo(
             Supplier<Object> emptyCollectionPojoFactory,
             ObjectSpecification collectionSpec,
-            Stream<T> elements, 
+            Stream<ManagedObject> elements, 
             int elementCount) {
 
         throw _Exceptions.unexpectedCodeReach();