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/07 10:13:26 UTC
[isis] branch ISIS-1976-rethink-object-adapters updated: ISIS-1976:
prepare for merge (PR 121)
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
The following commit(s) were added to refs/heads/ISIS-1976-rethink-object-adapters by this push:
new 986a797 ISIS-1976: prepare for merge (PR 121)
986a797 is described below
commit 986a7971331f3ed88a98c55199a308d97ab011d3
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Sep 7 12:12:08 2018 +0200
ISIS-1976: prepare for merge (PR 121)
Task-Url: https://issues.apache.org/jira/browse/ISIS-1976
---
.../isis/core/metamodel/adapter/ObjectAdapter.java | 13 -------------
.../metamodel/adapter/ObjectAdapterProvider.java | 1 -
.../persistence/PersistenceSession5_Decouple.java | 21 ++++++++++++++++++++-
.../runtime/persistence/adapter/PojoAdapter.java | 10 ----------
.../ObjectAdapterContext_ObjectAdapterProvider.java | 2 +-
5 files changed, 21 insertions(+), 26 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 86dc643..c0fdb13 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
@@ -487,18 +487,5 @@ public interface ObjectAdapter extends Instance {
*/
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/adapter/ObjectAdapterProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapterProvider.java
index 3b8e0ec..eaf3eb4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapterProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapterProvider.java
@@ -22,7 +22,6 @@ import java.util.List;
import java.util.function.Function;
import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
import org.apache.isis.core.metamodel.adapter.oid.RootOid;
import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
diff --git a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession5_Decouple.java b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession5_Decouple.java
index f5054f0..9eb2613 100644
--- a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession5_Decouple.java
+++ b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession5_Decouple.java
@@ -83,7 +83,24 @@ class PersistenceSession5_Decouple {
final RootOid rootOid,
final ConcurrencyChecking concurrencyChecking) {
- //FIXME[ISIS-1976] guard against service lookup
+ /* FIXME[ISIS-1976] guard against service lookup
+ * https://github.com/apache/isis/pull/121#discussion_r215889748
+ *
+ * Eventually I'm hoping that this code will simplify and then become pluggable.
+ * Assuming that we stop supporting transient pojos, instead this code could
+ * iterate over a set of "PersistenceProviders", following the chain of
+ * responsibility pattern, where the first PersistenceProvider that recognises
+ * the format of the rootOid then takes responsibility for retrieving the
+ * corresponding pojo from its persistence store.
+ *
+ * In the case of a PersistenceProvider for DN, that means a query to the DB. In
+ * the case of a PersistenceProvider for view models, it means unmarshalling the
+ * state from the oid into the pojo. (fyi, there's also the optional SPI
+ * service, UrlEncodingService or something like, whereby the root oid is a key
+ * into some other datastore. So really my "PersistenceProvider" is a
+ * generalization of that concept).
+ */
+
final ObjectAdapter serviceAdapter = objectAdapterContext.lookupServiceAdapterFor(rootOid);
if (serviceAdapter != null) {
return serviceAdapter;
@@ -105,11 +122,13 @@ class PersistenceSession5_Decouple {
throw ex; // just rethrow
} catch(RuntimeException ex) {
+ //FIXME[ISIS-1976] remove
System.err.println("------------------------------------------");
System.err.println("rootOid: "+rootOid.enString());
ex.printStackTrace();
System.err.println("------------------------------------------");
+ //--
throw new PojoRecreationException(rootOid, ex);
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 2411c26..e709e10 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,16 +109,6 @@ 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;
-// }
-
// -- getOid
@Override
public Oid getOid() {
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterProvider.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterProvider.java
index d8f422d..75d6e38 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterProvider.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterProvider.java
@@ -151,7 +151,7 @@ class ObjectAdapterContext_ObjectAdapterProvider implements ObjectAdapterProvide
// -- HELPER
- private _Lazy<List<ObjectAdapter>> serviceAdapters = _Lazy.of(this::initServiceAdapters);
+ private final _Lazy<List<ObjectAdapter>> serviceAdapters = _Lazy.of(this::initServiceAdapters);
private List<ObjectAdapter> initServiceAdapters() {
return servicesInjector.streamRegisteredServiceInstances()