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 2018/09/11 20:21:44 UTC

[isis] 01/06: ISIS-1976: minor cleanup

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

ahuber pushed a commit to branch ISIS-1976-rethink-object-adapters
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 25522367da6e2a00f36d0a4232969671f4f5402c
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Sep 11 13:16:47 2018 +0200

    ISIS-1976: minor cleanup
    
    Task-Url: https://issues.apache.org/jira/browse/ISIS-1976
---
 .../isis/core/metamodel/adapter/ObjectAdapter.java |  9 ++++--
 .../runtime/persistence/adapter/PojoAdapter.java   | 11 --------
 .../adaptermanager/ObjectAdapterContext.java       | 17 ++++++------
 .../adaptermanager/RootAndCollectionAdapters.java  | 32 ++++++----------------
 4 files changed, 24 insertions(+), 45 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
index c0fdb13..8c7b447 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
@@ -176,13 +176,16 @@ public interface ObjectAdapter extends Instance {
      * Whether this instance belongs to another object (meaning its
      * {@link #getOid()} will be a {@link ParentedCollectionOid}).
      */
-    boolean isParentedCollection();
-
+    default boolean isParentedCollection() {
+        return getOid() instanceof ParentedCollectionOid;
+    }
 
     /**
      * Whether this is a value (standalone, has no oid).
      */
-    boolean isValue();
+    default public boolean isValue() {
+        return getOid().isValue();
+    }
 
 
     public final class Util {
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
index da29ebe..07f4d6a 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
@@ -109,17 +109,6 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
         return oid;
     }
 
-    // -- isParentedCollection, isValue
-
-    @Override
-    public boolean isParentedCollection() {
-        return oid instanceof ParentedCollectionOid;
-    }
-
-    @Override
-    public boolean isValue() {
-        return oid.isValue();
-    }
 
     // -- isTransient, representsPersistent, isDestroyed
     
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext.java
index 1880004..19df8fa 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext.java
@@ -51,7 +51,7 @@ import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
  *  
  * @since 2.0.0-M2
  */
-public class ObjectAdapterContext {
+final public class ObjectAdapterContext {
     
     private static final Logger LOG = LoggerFactory.getLogger(ObjectAdapterContext.class);
     
@@ -441,17 +441,19 @@ public class ObjectAdapterContext {
         // associate the collection adapters with new Oids, and re-map
         LOG.debug("replacing Oids for collection adapter(s) and re-adding into maps");
         
-        for (final ObjectAdapter collectionAdapter : rootAndCollectionAdapters) {
+        rootAndCollectionAdapters.stream()
+        .forEach(collectionAdapter->{
             final ParentedCollectionOid previousCollectionOid = (ParentedCollectionOid) collectionAdapter.getOid();
             final ParentedCollectionOid persistedCollectionOid = previousCollectionOid.asPersistent(persistedRootOid);
             Assert.assertTrue("expected equal", Objects.equals(collectionAdapter.getOid(), persistedCollectionOid));
             addAdapter(collectionAdapter);
-        }
+        });
 
         // some object store implementations may replace collection instances (eg ORM may replace with a cglib-enhanced
         // proxy equivalent.  So, ensure that the collection adapters still wrap the correct pojos.
         LOG.debug("synchronizing collection pojos, remapping in pojo map if required");
-        for (final OneToManyAssociation otma : rootAndCollectionAdapters.getCollections()) {
+        rootAndCollectionAdapters.streamCollections()
+        .forEach(otma->{
             final ObjectAdapter collectionAdapter = rootAndCollectionAdapters.getCollectionAdapter(otma);
 
             final Object collectionPojoWrappedByAdapter = collectionAdapter.getObject();
@@ -464,7 +466,7 @@ public class ObjectAdapterContext {
                         Objects.equals(newCollectionAdapter.getObject(), collectionPojoActuallyOnPojo));
                 cache.addAdapter(collectionAdapter);
             }
-        }
+        });
         
     }
 
@@ -475,9 +477,8 @@ public class ObjectAdapterContext {
         cache.removeAdapter(rootAdapter);
     
         LOG.debug("removing collection adapter(s) from oid map");
-        for (final ObjectAdapter collectionAdapter : rootAndCollectionAdapters) {
-            cache.removeAdapter(collectionAdapter);
-        }
+        rootAndCollectionAdapters.stream()
+        .forEach(cache::removeAdapter);
     }
 
     private static Object getCollectionPojo(final OneToManyAssociation association, final ObjectAdapter ownerAdapter) {
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/RootAndCollectionAdapters.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/RootAndCollectionAdapters.java
index fed267d..0364a46 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/RootAndCollectionAdapters.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/RootAndCollectionAdapters.java
@@ -19,16 +19,10 @@
 
 package org.apache.isis.core.runtime.system.persistence.adaptermanager;
 
-import java.util.Collections;
-import java.util.Iterator;
 import java.util.Map;
-import java.util.Set;
-
-import com.google.common.collect.Maps;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import java.util.stream.Stream;
 
+import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.core.commons.ensure.Assert;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.oid.ParentedCollectionOid;
@@ -45,16 +39,13 @@ import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
  * Used for &quot;impact analysis&quot; when persisting transient root objects; all aggregated adapters
  * must also be persisted.
  */
-class RootAndCollectionAdapters implements Iterable<ObjectAdapter> {
+final class RootAndCollectionAdapters {
     
-    @SuppressWarnings("unused")
-    private static final Logger LOG = LoggerFactory.getLogger(RootAndCollectionAdapters.class);
-
     private final ObjectAdapterContext context;
     private final ObjectAdapter parentAdapter;
     private final RootOid rootAdapterOid;
 
-    private final Map<OneToManyAssociation, ObjectAdapter> collectionAdapters = Maps.newLinkedHashMap();
+    private final Map<OneToManyAssociation, ObjectAdapter> collectionAdapters = _Maps.newLinkedHashMap();
 
     public RootAndCollectionAdapters(
             final ObjectAdapter parentAdapter,
@@ -76,23 +67,22 @@ class RootAndCollectionAdapters implements Iterable<ObjectAdapter> {
      * collection adapter}s (does not include the {@link #getRootAdapter() root
      * adapter}.
      */
-    @Override
-    public Iterator<ObjectAdapter> iterator() {
-        return getCollectionAdapters().values().iterator();
+    public Stream<ObjectAdapter> stream() {
+        return collectionAdapters.values().stream();
     }
 
     /**
      * Which collections are present?
      * @return
      */
-    public Set<OneToManyAssociation> getCollections() {
-        return getCollectionAdapters().keySet();
+    public Stream<OneToManyAssociation> streamCollections() {
+        return collectionAdapters.keySet().stream();
     }
 
     /**
      * Corresponding adapter for each collection (values).
      *
-     * @see #getCollections()
+     * @see #streamCollections()
      */
     public ObjectAdapter getCollectionAdapter(final OneToManyAssociation otma) {
         return collectionAdapters.get(otma);
@@ -120,9 +110,5 @@ class RootAndCollectionAdapters implements Iterable<ObjectAdapter> {
         collectionAdapters.put(otma, collectionAdapter);
     }
 
-    private Map<OneToManyAssociation, ObjectAdapter> getCollectionAdapters() {
-        return Collections.unmodifiableMap(collectionAdapters);
-    }
-
 
 }
\ No newline at end of file