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 <ahu...@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()