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 2019/02/19 13:55:33 UTC
[isis] branch 2033-IoC updated: ISIS-2033: removes from
PersistenceSession interface
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch 2033-IoC
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/2033-IoC by this push:
new f2d1d9d ISIS-2033: removes from PersistenceSession interface
f2d1d9d is described below
commit f2d1d9daa57c0a1732dee7a376c3f6b551362061
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Feb 19 14:30:24 2019 +0100
ISIS-2033: removes from PersistenceSession interface
'ObjectAdapterProvider.Delegating'
Task-Url: https://issues.apache.org/jira/browse/ISIS-2033
---
.../adapter/ObjectAdapterByIdProvider.java | 6 --
.../metamodel/adapter/ObjectAdapterProvider.java | 5 --
.../RecreatableObjectFacetAbstract.java | 6 --
.../queries/PersistenceQueryProcessor.java | 2 -
.../jdo/persistence/PersistenceSessionBase.java | 7 +-
.../adaptermanager/ObjectAdapterLegacy.java | 90 +++++++++++-----------
.../services/jdosupport/IsisJdoSupportDN4.java | 4 +-
.../isis/jdo/persistence/PersistenceSession4.java | 16 ++--
.../queries/PersistenceQueryProcessorAbstract.java | 15 +++-
.../services/jdosupport/IsisJdoSupportDN5.java | 6 +-
.../isis/jdo/persistence/PersistenceSession5.java | 13 +---
.../queries/PersistenceQueryProcessorAbstract.java | 16 +++-
.../background/CommandExecutorServiceDefault.java | 12 +--
.../context/session/ManagedObjectContextBase.java | 10 +--
.../context/session/ManagedObjectPersistence.java | 5 --
.../system/persistence/PersistenceSession.java | 3 +-
.../core/runtime/system/session/IsisSession.java | 2 +-
.../model/mementos/ObjectAdapterMemento.java | 2 +-
18 files changed, 106 insertions(+), 114 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapterByIdProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapterByIdProvider.java
index a2b78d4..213f45b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapterByIdProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapterByIdProvider.java
@@ -70,12 +70,6 @@ public interface ObjectAdapterByIdProvider {
}
-
-
-
-
-
-
}
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 b4b3866..1351722 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
@@ -21,7 +21,6 @@ package org.apache.isis.core.metamodel.adapter;
import javax.annotation.Nullable;
import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
@@ -79,10 +78,6 @@ public interface ObjectAdapterProvider {
default ObjectAdapter adapterFor(Object domainObject) {
return getObjectAdapterProvider().adapterFor(domainObject);
}
-
- default ObjectAdapter adapterForServicePojo(Object servicePojo) {
- return getObjectAdapterProvider().adapterFor(servicePojo);
- }
default ObjectAdapter adapterForCollection(
final Object pojo,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetAbstract.java
index 1ba58e8..0610273 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetAbstract.java
@@ -19,24 +19,18 @@
package org.apache.isis.core.metamodel.facets.object.recreatable;
-import java.lang.reflect.Array;
import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
import java.util.Map;
import org.apache.isis.applib.ViewModel;
-import org.apache.isis.core.commons.exceptions.IsisException;
import org.apache.isis.core.commons.lang.MethodExtensions;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.MarkerFacetAbstract;
import org.apache.isis.core.metamodel.facets.PostConstructMethodCache;
import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
-import lombok.val;
-
public abstract class RecreatableObjectFacetAbstract extends MarkerFacetAbstract implements ViewModelFacet {
private final PostConstructMethodCache postConstructMethodCache;
diff --git a/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/datanucleus/persistence/queries/PersistenceQueryProcessor.java b/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/datanucleus/persistence/queries/PersistenceQueryProcessor.java
index 4490a68..4ef16d8 100644
--- a/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/datanucleus/persistence/queries/PersistenceQueryProcessor.java
+++ b/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/datanucleus/persistence/queries/PersistenceQueryProcessor.java
@@ -26,5 +26,3 @@ import org.apache.isis.jdo.datanucleus.persistence.PersistenceQuery;
public interface PersistenceQueryProcessor<T extends PersistenceQuery> {
List<ObjectAdapter> process(T query);
}
-
-// Copyright (c) Naked Objects Group Ltd.
diff --git a/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/persistence/PersistenceSessionBase.java b/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/persistence/PersistenceSessionBase.java
index 533d7d9..863ddaf 100644
--- a/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/persistence/PersistenceSessionBase.java
+++ b/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/persistence/PersistenceSessionBase.java
@@ -41,6 +41,7 @@ import org.apache.isis.config.internal._Config;
import org.apache.isis.core.commons.util.ToString;
import org.apache.isis.core.metamodel.MetaModelContext;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
import org.apache.isis.core.metamodel.adapter.oid.Oid;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
import org.apache.isis.core.plugins.ioc.RequestContextService;
@@ -68,6 +69,7 @@ abstract class PersistenceSessionBase implements PersistenceSession {
protected final ServiceInjector serviceInjector;
protected final ServiceRegistry serviceRegistry;
+ protected final ObjectAdapterProvider objectAdapterProvider;
protected final CommandContext commandContext;
protected final CommandService commandService;
@@ -123,6 +125,7 @@ abstract class PersistenceSessionBase implements PersistenceSession {
this.serviceInjector = IsisContext.getServiceInjector();
this.serviceRegistry = IsisContext.getServiceRegistry();
+ this.objectAdapterProvider = IsisContext.getObjectAdapterProvider();
this.jdoPersistenceManagerFactory = jdoPersistenceManagerFactory;
this.fixturesInstalledStateHolder = fixturesInstalledFlag;
@@ -143,7 +146,7 @@ abstract class PersistenceSessionBase implements PersistenceSession {
// sub-components
this.persistenceQueryFactory = new PersistenceQueryFactory(
- obj->this.getObjectAdapterProvider().adapterFor(obj),
+ obj->objectAdapterProvider.adapterFor(obj),
this.specificationLoader);
this.transactionManager = new IsisTransactionManager(this, serviceRegistry);
@@ -276,7 +279,7 @@ abstract class PersistenceSessionBase implements PersistenceSession {
* @return oid for the given domain object
*/
protected @Nullable Oid oidFor(@Nullable Object domainObject) {
- return mapIfPresentElse(adapterFor(domainObject), ObjectAdapter::getOid, null);
+ return mapIfPresentElse(objectAdapterProvider.adapterFor(domainObject), ObjectAdapter::getOid, null);
}
@Override
diff --git a/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/persistence/adaptermanager/ObjectAdapterLegacy.java b/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/persistence/adaptermanager/ObjectAdapterLegacy.java
index 3015970..a946597 100644
--- a/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/persistence/adaptermanager/ObjectAdapterLegacy.java
+++ b/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/persistence/adaptermanager/ObjectAdapterLegacy.java
@@ -35,53 +35,53 @@ import org.apache.isis.schema.common.v1.ValueType;
import org.apache.isis.schema.utils.CommonDtoUtils;
/**
- * TODO was referenced from CommandExecutorServiceDefault
+ * TODO [2033] was referenced from CommandExecutorServiceDefault, is this obsolete?
*/
final class ObjectAdapterLegacy {
- public static ObjectAdapter adapterFor(Object targetObject) {
- if(targetObject instanceof OidDto) {
- final OidDto oidDto = (OidDto) targetObject;
- return adapterFor(oidDto);
- }
- if(targetObject instanceof CollectionDto) {
- final CollectionDto collectionDto = (CollectionDto) targetObject;
- final List<ValueDto> valueDtoList = collectionDto.getValue();
- final List<Object> pojoList = _Lists.newArrayList();
- for (final ValueDto valueDto : valueDtoList) {
- ValueType valueType = collectionDto.getType();
- final Object valueOrOidDto = CommonDtoUtils.getValue(valueDto, valueType);
- // converting from adapter and back means we handle both
- // collections of references and of values
- final ObjectAdapter objectAdapter = adapterFor(valueOrOidDto);
- Object pojo = objectAdapter != null ? objectAdapter.getPojo() : null;
- pojoList.add(pojo);
- }
- return adapterFor(pojoList);
- }
- if(targetObject instanceof Bookmark) {
- final Bookmark bookmark = (Bookmark) targetObject;
- return adapterFor(bookmark);
- }
- return getPersistenceSession().adapterFor(targetObject);
- }
-
- private static ObjectAdapter adapterFor(final OidDto oidDto) {
- final Bookmark bookmark = Bookmark.from(oidDto);
- return adapterFor(bookmark);
- }
-
- private static ObjectAdapter adapterFor(final Bookmark bookmark) {
- final RootOid rootOid = Factory.ofBookmark(bookmark);
- return adapterFor(rootOid);
- }
-
- private static ObjectAdapter adapterFor(final RootOid rootOid) {
- return getPersistenceSession().adapterFor(rootOid);
- }
-
- private static PersistenceSession getPersistenceSession() {
- return IsisContext.getPersistenceSession().orElseThrow(_Exceptions::unexpectedCodeReach);
- }
+// private static ObjectAdapter adapterFor(Object targetObject) {
+// if(targetObject instanceof OidDto) {
+// final OidDto oidDto = (OidDto) targetObject;
+// return adapterFor(oidDto);
+// }
+// if(targetObject instanceof CollectionDto) {
+// final CollectionDto collectionDto = (CollectionDto) targetObject;
+// final List<ValueDto> valueDtoList = collectionDto.getValue();
+// final List<Object> pojoList = _Lists.newArrayList();
+// for (final ValueDto valueDto : valueDtoList) {
+// ValueType valueType = collectionDto.getType();
+// final Object valueOrOidDto = CommonDtoUtils.getValue(valueDto, valueType);
+// // converting from adapter and back means we handle both
+// // collections of references and of values
+// final ObjectAdapter objectAdapter = adapterFor(valueOrOidDto);
+// Object pojo = objectAdapter != null ? objectAdapter.getPojo() : null;
+// pojoList.add(pojo);
+// }
+// return adapterFor(pojoList);
+// }
+// if(targetObject instanceof Bookmark) {
+// final Bookmark bookmark = (Bookmark) targetObject;
+// return adapterFor(bookmark);
+// }
+// return getPersistenceSession().adapterFor(targetObject);
+// }
+//
+// private static ObjectAdapter adapterFor(final OidDto oidDto) {
+// final Bookmark bookmark = Bookmark.from(oidDto);
+// return adapterFor(bookmark);
+// }
+//
+// private static ObjectAdapter adapterFor(final Bookmark bookmark) {
+// final RootOid rootOid = Factory.ofBookmark(bookmark);
+// return adapterFor(rootOid);
+// }
+//
+// private static ObjectAdapter adapterFor(final RootOid rootOid) {
+// return getPersistenceSession().adapterFor(rootOid);
+// }
+//
+// private static PersistenceSession getPersistenceSession() {
+// return IsisContext.getPersistenceSession().orElseThrow(_Exceptions::unexpectedCodeReach);
+// }
}
diff --git a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/applib/services/jdosupport/IsisJdoSupportDN4.java b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/applib/services/jdosupport/IsisJdoSupportDN4.java
index 475125c..dbb60be 100644
--- a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/applib/services/jdosupport/IsisJdoSupportDN4.java
+++ b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/applib/services/jdosupport/IsisJdoSupportDN4.java
@@ -43,6 +43,7 @@ import org.apache.isis.applib.services.inject.ServiceInjector;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.collections._Maps;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
import org.apache.isis.core.metamodel.adapter.concurrency.ConcurrencyChecking;
import org.apache.isis.core.metamodel.exceptions.persistence.ObjectPersistenceException;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
@@ -70,7 +71,7 @@ public class IsisJdoSupportDN4 implements IsisJdoSupport_v3_1 {
@Programmatic
@Override
public <T> T refresh(final T domainObject) {
- final ObjectAdapter adapter = getPersistenceSession().adapterFor(domainObject);
+ final ObjectAdapter adapter = objectAdapterProvider.adapterFor(domainObject);
getPersistenceSession().refreshRoot(adapter);
return domainObject;
}
@@ -208,6 +209,7 @@ public class IsisJdoSupportDN4 implements IsisJdoSupport_v3_1 {
// //////////////////////////////////////
@Inject IsisSessionFactory isisSessionFactory;
+ @Inject ObjectAdapterProvider objectAdapterProvider;
protected PersistenceSession getPersistenceSession() {
return isisSessionFactory.getCurrentSession().getPersistenceSession();
diff --git a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/jdo/persistence/PersistenceSession4.java b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/jdo/persistence/PersistenceSession4.java
index 3ebb610..44ab86c 100644
--- a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/jdo/persistence/PersistenceSession4.java
+++ b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/jdo/persistence/PersistenceSession4.java
@@ -89,6 +89,7 @@ import org.apache.isis.jdo.datanucleus.persistence.queries.PersistenceQueryProce
import org.apache.isis.jdo.persistence.NotPersistableException;
import org.apache.isis.jdo.persistence.PersistenceSessionBase;
import org.apache.isis.jdo.persistence.UnsupportedFindException;
+import org.apache.isis.jdo.persistence.PersistenceSessionBase.State;
import org.apache.isis.jdo.persistence.adaptermanager.ObjectAdapterContext;
import org.apache.isis.jdo.persistence.query.PersistenceQueryFindAllInstances;
import org.apache.isis.jdo.persistence.query.PersistenceQueryFindUsingApplibQueryDefault;
@@ -338,6 +339,8 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
final ObjectAdapter instances = findInstancesInTransaction(query, QueryCardinality.MULTIPLE);
return CollectionFacet.Utils.toAdapterList(instances);
}
+
+
@Override
public <T> ObjectAdapter firstMatchingQuery(final Query<T> query) {
final ObjectAdapter instances = findInstancesInTransaction(query, QueryCardinality.SINGLE);
@@ -372,7 +375,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
()->processPersistenceQuery(processor, persistenceQuery) );
final ObjectSpecification specification = persistenceQuery.getSpecification();
final FreeStandingList results = FreeStandingList.of(specification, instances);
- return adapterFor(results);
+ return objectAdapterProvider.adapterFor(results);
}
/**
@@ -735,7 +738,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
@Override
public void enlistDeletingAndInvokeIsisRemovingCallbackFacet(final Persistable pojo) {
- ObjectAdapter adapter = adapterFor(pojo);
+ ObjectAdapter adapter = objectAdapterProvider.adapterFor(pojo);
changedObjectsServiceInternal.enlistDeleting(adapter);
@@ -812,7 +815,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
*/
@Override
public void enlistCreatedAndRemapIfRequiredThenInvokeIsisInvokePersistingOrUpdatedCallback(final Persistable pojo) {
- final ObjectAdapter adapter = adapterFor(pojo);
+ final ObjectAdapter adapter = objectAdapterProvider.adapterFor(pojo);
final RootOid rootOid = (RootOid) adapter.getOid(); // ok since this is for a Persistable
@@ -863,7 +866,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
*/
@Override
public void ensureRootObject(final Persistable pojo) {
- final Oid oid = adapterFor(pojo).getOid();
+ final Oid oid = objectAdapterProvider.adapterFor(pojo).getOid();
if (!(oid instanceof RootOid)) {
throw new IsisException(MessageFormat.format("Not a RootOid: oid={0}, for {1}", oid, pojo));
}
@@ -904,11 +907,6 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
}
@Override
- public ObjectAdapterProvider getObjectAdapterProvider() {
- return objectAdapterContext.getObjectAdapterProvider();
- }
-
- @Override
public ObjectAdapterByIdProvider getObjectAdapterByIdProvider() {
return objectAdapterContext.getObjectAdapterByIdProvider();
}
diff --git a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
index b8a05ec..fe4a859 100644
--- a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
+++ b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
@@ -22,15 +22,18 @@ import java.util.List;
import javax.jdo.listener.InstanceLifecycleEvent;
+import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.core.commons.ensure.Assert;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
+import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.jdo.datanucleus.persistence.PersistenceQuery;
import org.apache.isis.jdo.datanucleus.persistence.queries.PersistenceQueryProcessor;
import org.apache.isis.jdo.persistence.IsisLifecycleListener;
import org.apache.isis.jdo.persistence.PersistenceSession4;
import org.datanucleus.enhancement.Persistable;
-import org.apache.isis.commons.internal.collections._Lists;
+import lombok.val;
public abstract class PersistenceQueryProcessorAbstract<T extends PersistenceQuery>
implements PersistenceQueryProcessor<T> {
@@ -49,6 +52,8 @@ implements PersistenceQueryProcessor<T> {
* to be called.
*/
protected List<ObjectAdapter> loadAdapters(final List<?> pojos) {
+ val objectAdapterProvider = objectAdapterProvider();
+
final List<ObjectAdapter> adapters = _Lists.newArrayList();
for (final Object pojo : pojos) {
// ought not to be necessary, however for some queries it seems that the
@@ -59,13 +64,19 @@ implements PersistenceQueryProcessor<T> {
adapter = persistenceSession.initializeMapAndCheckConcurrency((Persistable) pojo);
} else {
// a value type
- adapter = persistenceSession.adapterFor(pojo);
+ adapter = objectAdapterProvider.adapterFor(pojo);
}
Assert.assertNotNull(adapter);
adapters.add(adapter);
}
return adapters;
}
+
+ // -- HELPER
+
+ protected static ObjectAdapterProvider objectAdapterProvider() {
+ return IsisContext.getObjectAdapterProvider();
+ }
}
diff --git a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/applib/services/jdosupport/IsisJdoSupportDN5.java b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/applib/services/jdosupport/IsisJdoSupportDN5.java
index 943798a..c07e6be 100644
--- a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/applib/services/jdosupport/IsisJdoSupportDN5.java
+++ b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/applib/services/jdosupport/IsisJdoSupportDN5.java
@@ -45,6 +45,7 @@ import org.apache.isis.applib.services.inject.ServiceInjector;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.collections._Maps;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
import org.apache.isis.core.metamodel.adapter.concurrency.ConcurrencyChecking;
import org.apache.isis.core.metamodel.exceptions.persistence.ObjectPersistenceException;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
@@ -65,8 +66,8 @@ public class IsisJdoSupportDN5 implements IsisJdoSupport_v3_2 {
@Programmatic
@Override
public <T> T refresh(final T domainObject) {
- final ObjectAdapter adapter = getPersistenceSession().adapterFor(domainObject);
- getPersistenceSession().refreshRoot(adapter);
+ final ObjectAdapter adapter = objectAdapterProvider.adapterFor(domainObject);
+ getPersistenceSession().refreshRoot(adapter); //TODO [2033] we can do this without resorting to an adapter
return domainObject;
}
@@ -214,6 +215,7 @@ public class IsisJdoSupportDN5 implements IsisJdoSupport_v3_2 {
// //////////////////////////////////////
@Inject IsisSessionFactory isisSessionFactory;
+ @Inject ObjectAdapterProvider objectAdapterProvider;
protected PersistenceSession getPersistenceSession() {
return isisSessionFactory.getCurrentSession().getPersistenceSession();
diff --git a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/jdo/persistence/PersistenceSession5.java b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/jdo/persistence/PersistenceSession5.java
index f052e62..c096200 100644
--- a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/jdo/persistence/PersistenceSession5.java
+++ b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/jdo/persistence/PersistenceSession5.java
@@ -374,7 +374,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
()->processPersistenceQuery(processor, persistenceQuery) );
final ObjectSpecification specification = persistenceQuery.getSpecification();
final FreeStandingList results = FreeStandingList.of(specification, instances);
- return adapterFor(results);
+ return objectAdapterProvider.adapterFor(results);
}
/**
@@ -737,7 +737,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
@Override
public void enlistDeletingAndInvokeIsisRemovingCallbackFacet(final Persistable pojo) {
- ObjectAdapter adapter = adapterFor(pojo);
+ ObjectAdapter adapter = objectAdapterProvider.adapterFor(pojo);
changedObjectsServiceInternal.enlistDeleting(adapter);
@@ -814,7 +814,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
*/
@Override
public void enlistCreatedAndRemapIfRequiredThenInvokeIsisInvokePersistingOrUpdatedCallback(final Persistable pojo) {
- final ObjectAdapter adapter = adapterFor(pojo);
+ final ObjectAdapter adapter = objectAdapterProvider.adapterFor(pojo);
final RootOid rootOid = (RootOid) adapter.getOid(); // ok since this is for a Persistable
@@ -865,7 +865,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
*/
@Override
public void ensureRootObject(final Persistable pojo) {
- final Oid oid = adapterFor(pojo).getOid();
+ final Oid oid = objectAdapterProvider.adapterFor(pojo).getOid();
if (!(oid instanceof RootOid)) {
throw new IsisException(MessageFormat.format("Not a RootOid: oid={0}, for {1}", oid, pojo));
}
@@ -906,11 +906,6 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
}
@Override
- public ObjectAdapterProvider getObjectAdapterProvider() {
- return objectAdapterContext.getObjectAdapterProvider();
- }
-
- @Override
public ObjectAdapterByIdProvider getObjectAdapterByIdProvider() {
return objectAdapterContext.getObjectAdapterByIdProvider();
}
diff --git a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
index f6ac1ba..ca77642 100644
--- a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
+++ b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
@@ -22,17 +22,19 @@ import java.util.List;
import javax.jdo.listener.InstanceLifecycleEvent;
-import org.datanucleus.enhancement.Persistable;
-
import org.apache.isis.applib.services.jdosupport.IsisJdoSupport_v3_2;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.core.commons.ensure.Assert;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.jdo.datanucleus.persistence.PersistenceQuery;
import org.apache.isis.jdo.datanucleus.persistence.queries.PersistenceQueryProcessor;
import org.apache.isis.jdo.persistence.IsisLifecycleListener;
import org.apache.isis.jdo.persistence.PersistenceSession5;
+import org.datanucleus.enhancement.Persistable;
+
+import lombok.val;
public abstract class PersistenceQueryProcessorAbstract<T extends PersistenceQuery>
implements PersistenceQueryProcessor<T> {
@@ -51,6 +53,8 @@ implements PersistenceQueryProcessor<T> {
* to be called.
*/
protected List<ObjectAdapter> loadAdapters(final List<?> pojos) {
+ val objectAdapterProvider = objectAdapterProvider();
+
final List<ObjectAdapter> adapters = _Lists.newArrayList();
for (final Object pojo : pojos) {
// ought not to be necessary, however for some queries it seems that the
@@ -62,7 +66,7 @@ implements PersistenceQueryProcessor<T> {
Assert.assertNotNull(adapter);
} else {
// a value type
- adapter = persistenceSession.adapterFor(pojo);
+ adapter = objectAdapterProvider.adapterFor(pojo);
Assert.assertNotNull(adapter);
}
adapters.add(adapter);
@@ -76,5 +80,9 @@ implements PersistenceQueryProcessor<T> {
return IsisContext.getServiceRegistry().lookupServiceElseFail(IsisJdoSupport_v3_2.class);
}
-
+ protected static ObjectAdapterProvider objectAdapterProvider() {
+ return IsisContext.getObjectAdapterProvider();
+ }
+
+
}
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/CommandExecutorServiceDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/CommandExecutorServiceDefault.java
index eb5957d..b26a5e4 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/CommandExecutorServiceDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/CommandExecutorServiceDefault.java
@@ -70,13 +70,13 @@ import org.apache.isis.schema.utils.CommonDtoUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import lombok.extern.slf4j.Slf4j;
+
@Singleton
+@Slf4j
public class CommandExecutorServiceDefault implements CommandExecutorService {
- private final static Logger LOG = LoggerFactory.getLogger(CommandExecutorServiceDefault.class);
-
@Override
- @Programmatic
public void executeCommand(
final CommandExecutorService.SudoPolicy sudoPolicy,
final CommandWithDto commandWithDto) {
@@ -133,7 +133,7 @@ public class CommandExecutorServiceDefault implements CommandExecutorService {
org.apache.isis.applib.annotation.CommandExecuteIn executeIn = commandWithDto.getExecuteIn();
- LOG.info("Executing: {} {} {} {}", executeIn, commandWithDto.getMemberIdentifier(), commandWithDto.getTimestamp(), commandWithDto.getUniqueId());
+ log.info("Executing: {} {} {} {}", executeIn, commandWithDto.getMemberIdentifier(), commandWithDto.getTimestamp(), commandWithDto.getUniqueId());
RuntimeException exceptionIfAny = null;
@@ -218,7 +218,7 @@ public class CommandExecutorServiceDefault implements CommandExecutorService {
} catch (RuntimeException ex) {
- LOG.warn("Exception when executing : {} {}", executeIn, commandWithDto.getMemberIdentifier(), ex);
+ log.warn("Exception when executing : {} {}", executeIn, commandWithDto.getMemberIdentifier(), ex);
exceptionIfAny = ex;
}
@@ -228,7 +228,7 @@ public class CommandExecutorServiceDefault implements CommandExecutorService {
transactionService.nextTransaction(TransactionService.Policy.ALWAYS);
} catch(RuntimeException ex) {
- LOG.warn("Exception when committing : {} {}", executeIn, commandWithDto.getMemberIdentifier(), ex);
+ log.warn("Exception when committing : {} {}", executeIn, commandWithDto.getMemberIdentifier(), ex);
if(exceptionIfAny == null) {
exceptionIfAny = ex;
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/session/ManagedObjectContextBase.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/session/ManagedObjectContextBase.java
index aa52027..d8c956b 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/session/ManagedObjectContextBase.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/session/ManagedObjectContextBase.java
@@ -1,7 +1,5 @@
package org.apache.isis.core.runtime.system.context.session;
-import java.util.function.Supplier;
-
import org.apache.isis.applib.services.inject.ServiceInjector;
import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.commons.internal.base._Lazy;
@@ -39,7 +37,7 @@ public abstract class ManagedObjectContextBase implements ManagedObjectContext {
@Getter protected final ServiceRegistry serviceRegistry;
@Getter protected final SpecificationLoader specificationLoader;
@Getter protected final AuthenticationSession authenticationSession;
- @Getter protected final Supplier<ObjectAdapterProvider> objectAdapterProvider;
+ @Getter protected final ObjectAdapterProvider objectAdapterProvider;
// -- NO ARG CONSTRUCTOR
@@ -49,14 +47,14 @@ public abstract class ManagedObjectContextBase implements ManagedObjectContext {
serviceRegistry = IsisContext.getServiceRegistry();
specificationLoader = IsisContext.getSpecificationLoader();
authenticationSession = IsisContext.getAuthenticationSession().orElse(null);
- objectAdapterProvider = IsisContext::getObjectAdapterProvider;
+ objectAdapterProvider = IsisContext.getObjectAdapterProvider();
}
// -- OBJECT ADAPTER SUPPORT
@Override
public ObjectAdapter adapterOfPojo(Object pojo) {
- return objectAdapterProvider.get().adapterFor(pojo);
+ return objectAdapterProvider.adapterFor(pojo);
}
@Override //FIXME [2033] decouple from JDO
@@ -94,7 +92,7 @@ public abstract class ManagedObjectContextBase implements ManagedObjectContext {
@Override
public ObjectAdapter newTransientInstance(ObjectSpecification domainTypeSpec) {
- return ps().newTransientInstance(domainTypeSpec);
+ return objectAdapterProvider.newTransientInstance(domainTypeSpec);
}
@Override
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/session/ManagedObjectPersistence.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/session/ManagedObjectPersistence.java
index e4ebbfc..a13c7de 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/session/ManagedObjectPersistence.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/session/ManagedObjectPersistence.java
@@ -26,7 +26,6 @@ public interface ManagedObjectPersistence {
//
- ObjectAdapter newTransientInstance(ObjectSpecification domainTypeSpec);
void makePersistentInTransaction(ObjectAdapter objectAdapter);
Object fetchPersistentPojoInTransaction(RootOid rootOid);
@@ -41,10 +40,6 @@ public interface ManagedObjectPersistence {
static ManagedObjectPersistence of(PersistenceSession persistenceSession) {
return new ManagedObjectPersistence() {
- @Override
- public ObjectAdapter newTransientInstance(ObjectSpecification domainTypeSpec) {
- return persistenceSession.newTransientInstance(domainTypeSpec);
- }
@Override
public void makePersistentInTransaction(ObjectAdapter objectAdapter) {
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
index 7fc764f..eb7665f 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
@@ -24,7 +24,6 @@ import org.apache.isis.applib.services.inject.ServiceInjector;
import org.apache.isis.config.IsisConfiguration;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.ObjectAdapterByIdProvider;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
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.ManagedObjectState;
@@ -38,7 +37,7 @@ import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
public interface PersistenceSession
extends
- ObjectAdapterProvider.Delegating, //TODO [2033] remove this interface
+ //ObjectAdapterProvider.Delegating, //TODO [2033] remove this interface
ObjectAdapterByIdProvider.Delegating, //TODO [2033] remove this interface
TransactionalResource { //TODO [2033] remove this interface
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java
index d8defbe..88ce463 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java
@@ -56,7 +56,7 @@ public class IsisSession extends ManagedObjectContextBase {
IsisContext.getServiceRegistry(),
IsisContext.getSpecificationLoader(),
authenticationSession,
- IsisContext::getObjectAdapterProvider);
+ IsisContext.getObjectAdapterProvider());
this.persistenceSession =
persistenceSessionFactory.createPersistenceSession(authenticationSession);
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento.java
index b997cb4..eab072b 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento.java
@@ -100,7 +100,7 @@ public interface ObjectAdapterMemento extends Serializable {
static ObjectAdapterMemento ofPojo(Object pojo) {
val isisSession = IsisSession.currentIfAny();
- val adapterProvider = isisSession.getObjectAdapterProvider().get();
+ val adapterProvider = isisSession.getObjectAdapterProvider();
val objectAdapter = adapterProvider.adapterFor(pojo);
return ofAdapter(objectAdapter);
}