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 "impact analysis" 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