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/05 15:31:28 UTC
[isis] 01/05: ISIS-1976: make ObjectAdapter.pojo final
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 1d8dfcf1f80933c3fcb8bdf159171e8d39c15e57
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Sep 5 15:43:52 2018 +0200
ISIS-1976: make ObjectAdapter.pojo final
Task-Url: https://issues.apache.org/jira/browse/ISIS-1976
---
.../isis/core/metamodel/adapter/ObjectAdapter.java | 36 +++++++++++--------
.../javautilcollection/JavaArrayFacet.java | 2 +-
.../BooleanPrimitiveValueSemanticsProvider.java | 32 ++++++++---------
.../facets/value/booleans/BooleanValueFacet.java | 10 +++---
.../BooleanWrapperValueSemanticsProvider.java | 42 +++++++++++-----------
.../runtime/persistence/adapter/PojoAdapter.java | 34 +++++++++++++-----
.../adaptermanager/ObjectAdapterContext.java | 4 +--
7 files changed, 92 insertions(+), 68 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 a17fac2..48b4745 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
@@ -108,13 +108,6 @@ public interface ObjectAdapter extends Instance {
Instance getInstance(Specification specification);
/**
- * Sometimes it is necessary to manage the replacement of the underlying
- * domain object (by another component such as an object store). This method
- * allows the adapter to be kept while the domain object is replaced.
- */
- void replacePojo(Object pojo);
-
- /**
* For (stand-alone) collections, returns the element type.
*
* <p>
@@ -169,12 +162,6 @@ public interface ObjectAdapter extends Instance {
*/
Oid getOid();
-// /**
-// * Since {@link Oid}s are now immutable, it is the reference from the
-// * {@link ObjectAdapter} to its {@link Oid} that must now be updated.
-// */
-// void replaceOid(Oid persistedOid);
-
/**
* Returns either itself (if this is a root) or the parented collections, the
* adapter corresponding to their {@link ParentedCollectionOid#getRootOid() root oid}.
@@ -499,11 +486,32 @@ public interface ObjectAdapter extends Instance {
/**
*
- * @param persistedRootOid
+ * @param newOid
* @return a copy of this adapter, having a new RootOid
* @since 2.0.0-M2
*/
ObjectAdapter withOid(RootOid newOid);
+ /**
+ *
+ * @param newPojo
+ * @return a copy of this adapter, having a new Pojo
+ * @since 2.0.0-M2
+ */
+ ObjectAdapter withPojo(Object newPojo);
+
+ @Deprecated
+ public static interface Friend {
+ /**
+ * Sometimes it is necessary to manage the replacement of the underlying
+ * domain object (by another component such as an object store). This method
+ * allows the adapter to be kept while the domain object is replaced.
+ */
+ void replacePojo(Object pojo);
+ }
+
+ @Deprecated
+ Friend friend();
+
}
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 be02897..315027c 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
@@ -49,7 +49,7 @@ public class JavaArrayFacet extends CollectionFacetAbstract {
for (int i = 0; i < length; i++) {
array[i] = initData[i].getObject();
}
- arrayAdapter.replacePojo(array);
+ arrayAdapter.friend().replacePojo(array);
}
/**
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanPrimitiveValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanPrimitiveValueSemanticsProvider.java
index d359c94..c0bfdd3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanPrimitiveValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanPrimitiveValueSemanticsProvider.java
@@ -56,21 +56,21 @@ public class BooleanPrimitiveValueSemanticsProvider extends BooleanValueSemantic
// BooleanValueFacet impl
// //////////////////////////////////////////////////////////////////
- @Override
- public void reset(final ObjectAdapter object) {
- object.replacePojo(Boolean.FALSE);
- }
-
- @Override
- public void set(final ObjectAdapter object) {
- object.replacePojo(Boolean.TRUE);
- }
-
- @Override
- public void toggle(final ObjectAdapter object) {
- final boolean current = ((Boolean) object.getObject()).booleanValue();
- final boolean toggled = !current;
- object.replacePojo(Boolean.valueOf(toggled));
- }
+// @Override
+// public void reset(final ObjectAdapter object) {
+// object.replacePojo(Boolean.FALSE);
+// }
+//
+// @Override
+// public void set(final ObjectAdapter object) {
+// object.replacePojo(Boolean.TRUE);
+// }
+//
+// @Override
+// public void toggle(final ObjectAdapter object) {
+// final boolean current = ((Boolean) object.getObject()).booleanValue();
+// final boolean toggled = !current;
+// object.replacePojo(Boolean.valueOf(toggled));
+// }
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanValueFacet.java
index 785c0e1..2e61cc2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanValueFacet.java
@@ -26,9 +26,9 @@ public interface BooleanValueFacet extends Facet {
boolean isSet(ObjectAdapter object);
- void set(ObjectAdapter object);
-
- void reset(ObjectAdapter object);
-
- void toggle(ObjectAdapter object);
+// void set(ObjectAdapter object);
+//
+// void reset(ObjectAdapter object);
+//
+// void toggle(ObjectAdapter object);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanWrapperValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanWrapperValueSemanticsProvider.java
index 234684d..69431bd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanWrapperValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanWrapperValueSemanticsProvider.java
@@ -46,26 +46,26 @@ public class BooleanWrapperValueSemanticsProvider extends BooleanValueSemanticsP
// BooleanValueFacet impl
// //////////////////////////////////////////////////////////////////
- @Override
- public void reset(final ObjectAdapter adapter) {
- adapter.replacePojo(Boolean.FALSE);
- }
-
- @Override
- public void set(final ObjectAdapter adapter) {
- adapter.replacePojo(Boolean.TRUE);
- }
-
- @Override
- public void toggle(final ObjectAdapter adapter) {
- final Object currentObj = adapter.getObject();
- if (currentObj == null) {
- set(adapter);
- return;
- }
- final boolean current = ((Boolean) currentObj).booleanValue();
- final boolean toggled = !current;
- adapter.replacePojo(Boolean.valueOf(toggled));
- }
+// @Override
+// public void reset(final ObjectAdapter adapter) {
+// adapter.replacePojo(Boolean.FALSE);
+// }
+//
+// @Override
+// public void set(final ObjectAdapter adapter) {
+// adapter.replacePojo(Boolean.TRUE);
+// }
+//
+// @Override
+// public void toggle(final ObjectAdapter adapter) {
+// final Object currentObj = adapter.getObject();
+// if (currentObj == null) {
+// set(adapter);
+// return;
+// }
+// final boolean current = ((Boolean) currentObj).booleanValue();
+// final boolean toggled = !current;
+// adapter.replacePojo(Boolean.valueOf(toggled));
+// }
}
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 91a32a7..f80048c 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
@@ -108,15 +108,15 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
return pojo;
}
- /**
- * Sometimes it is necessary to manage the replacement of the underlying
- * domain object (by another component such as an object store). This method
- * allows the adapter to be kept while the domain object is replaced.
- */
- @Override
- public void replacePojo(final Object pojo) {
- this.pojo = pojo;
- }
+// /**
+// * Sometimes it is necessary to manage the replacement of the underlying
+// * domain object (by another component such as an object store). This method
+// * allows the adapter to be kept while the domain object is replaced.
+// */
+// @Override
+// public void replacePojo(final Object pojo) {
+// this.pojo = pojo;
+// }
// -- getOid
@Override
@@ -401,5 +401,21 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
public ObjectAdapter withOid(RootOid newOid) {
return new PojoAdapter(pojo, newOid, authenticationSession, specificationLoader, persistenceSession);
}
+
+ @Override
+ public ObjectAdapter withPojo(Object newPojo) {
+ return new PojoAdapter(newPojo, oid, authenticationSession, specificationLoader, persistenceSession);
+ }
+
+
+ @Override
+ public Friend friend() {
+ return new Friend() {
+ @Override
+ public void replacePojo(Object pojo) {
+ PojoAdapter.this.pojo = pojo;
+ }
+ };
+ }
}
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 a01bb45..a13a6cc 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
@@ -427,7 +427,7 @@ public class ObjectAdapterContext {
if (collectionPojoActuallyOnPojo != collectionPojoWrappedByAdapter) {
pojoAdapterMap.remove(collectionAdapter);
- collectionAdapter.replacePojo(collectionPojoActuallyOnPojo);
+ collectionAdapter.friend().replacePojo(collectionPojoActuallyOnPojo);
pojoAdapterMap.add(collectionPojoActuallyOnPojo, collectionAdapter);
}
}
@@ -470,7 +470,7 @@ public class ObjectAdapterContext {
@Deprecated
public void remapRecreatedPojo(ObjectAdapter adapter, final Object pojo) {
removeAdapterFromCache(adapter);
- adapter.replacePojo(pojo);
+ adapter.friend().replacePojo(pojo);
mapAndInjectServices(adapter);
}