This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new a6664d185d ISIS-3199: purge ObjectRefresher
a6664d185d is described below
commit a6664d185d918fd8edabaca0ecbdaa4d188e0401
Author: Andi Huber <[email protected]>
AuthorDate: Mon Sep 5 07:43:27 2022 +0200
ISIS-3199: purge ObjectRefresher
---
.../isis/commons/internal/assertions/_Assert.java | 75 ++++++++++-----
.../metamodel/objectmanager/ObjectManager.java | 10 --
.../objectmanager/ObjectManagerDefault.java | 3 -
.../objectmanager/refresh/ObjectRefresher.java | 63 -------------
.../refresh/ObjectRefresher_builtinHandlers.java | 101 ---------------------
.../repository/RepositoryServiceDefault.java | 43 +++++----
.../jdosupport/JdoSupportServiceDefault.java | 19 ++--
7 files changed, 86 insertions(+), 228 deletions(-)
diff --git
a/commons/src/main/java/org/apache/isis/commons/internal/assertions/_Assert.java
b/commons/src/main/java/org/apache/isis/commons/internal/assertions/_Assert.java
index 59be48bbe6..61203f5efa 100644
---
a/commons/src/main/java/org/apache/isis/commons/internal/assertions/_Assert.java
+++
b/commons/src/main/java/org/apache/isis/commons/internal/assertions/_Assert.java
@@ -51,17 +51,17 @@ public final class _Assert {
// -- TRUE
- public static void assertTrue(boolean condition) {
+ public static void assertTrue(final boolean condition) {
assertTrue(condition, (String) null);
}
- public static void assertTrue(boolean condition, String message) {
+ public static void assertTrue(final boolean condition, final String
message) {
if (!condition) {
fail(message, true, false);
}
}
- public static void assertTrue(boolean condition, Supplier<String>
lazyMessage) {
+ public static void assertTrue(final boolean condition, final
Supplier<String> lazyMessage) {
if (!condition) {
fail(lazyMessage.get(), true, false);
}
@@ -69,17 +69,17 @@ public final class _Assert {
// -- FALSE
- public static void assertFalse(boolean condition) {
+ public static void assertFalse(final boolean condition) {
assertFalse(condition, (String) null);
}
- public static void assertFalse(boolean condition, String message) {
+ public static void assertFalse(final boolean condition, final String
message) {
if (condition) {
fail(message, false, true);
}
}
- public static void assertFalse(boolean condition, Supplier<String>
lazyMessage) {
+ public static void assertFalse(final boolean condition, final
Supplier<String> lazyMessage) {
if (condition) {
fail(lazyMessage.get(), true, false);
}
@@ -87,17 +87,17 @@ public final class _Assert {
// -- NULL
- public static void assertNull(Object object) {
+ public static void assertNull(final Object object) {
assertNull(object, (String) null);
}
- public static void assertNull(Object object, String message) {
+ public static void assertNull(final Object object, final String message) {
if (object!=null) {
fail(message, "null", "not null");
}
}
- public static void assertNull(Object object, Supplier<String> lazyMessage)
{
+ public static void assertNull(final Object object, final Supplier<String>
lazyMessage) {
if (object!=null) {
fail(lazyMessage.get(), "null", "not null");
}
@@ -105,29 +105,60 @@ public final class _Assert {
// -- NOT NULL
- public static void assertNotNull(Object object) {
+ public static void assertNotNull(final Object object) {
assertNotNull(object, (String) null);
}
- public static void assertNotNull(Object object, String message) {
+ public static void assertNotNull(final Object object, final String
message) {
if (object==null) {
fail(message, "not null", "null");
}
}
- public static void assertNotNull(Object object, Supplier<String>
lazyMessage) {
+ public static void assertNotNull(final Object object, final
Supplier<String> lazyMessage) {
if (object==null) {
fail(lazyMessage.get(), "not null", "null");
}
}
+ // -- SAMENESS
+
+ /**
+ * <em>Assert</em> that {@code left} == {@code right}.
+ * @return {@code left} if assertion holds
+ */
+ public static <T> T assertSameObject(final T left, final Object right) {
+ assertTrue(left == right);
+ return left;
+ }
+
+ /**
+ * <em>Assert</em> that {@code left} == {@code right}.
+ * @return {@code left} if assertion holds
+ */
+ public static <T> T assertSameObject(final T left, final Object right,
final String msg) {
+ assertTrue(left == right, msg);
+ return left;
+ }
+
+ /**
+ * <em>Assert</em> that {@code left} == {@code right}.
+ * @return {@code left} if assertion holds
+ */
+ public static <T> T assertSameObject(final T left, final Object right,
final Supplier<String> lazyMessage) {
+ assertTrue(left == right, lazyMessage);
+ return left;
+ }
+
+ // -- EQUALITY
+
/**
* <em>Assert</em> that {@code expected} and {@code actual} are equal.
* <p>If both are {@code null}, they are considered equal.
*
* @see Object#equals(Object)
*/
- public static void assertEquals(Object left, Object right) {
+ public static void assertEquals(final Object left, final Object right) {
assertEquals(left, right, (String) null);
}
@@ -138,13 +169,13 @@ public final class _Assert {
*
* @see Object#equals(Object)
*/
- public static void assertEquals(Object left, Object right, String message)
{
+ public static void assertEquals(final Object left, final Object right,
final String message) {
if (!Objects.equals(left, right)) {
fail(message, left, right);
}
}
- public static void assertEquals(Object left, Object right,
Supplier<String> lazyMessage) {
+ public static void assertEquals(final Object left, final Object right,
final Supplier<String> lazyMessage) {
if (!Objects.equals(left, right)) {
fail(lazyMessage.get(), left, right);
}
@@ -152,25 +183,25 @@ public final class _Assert {
// -- RANGE CHECKS
- public static void assertRangeContains(_Ints.Range range, int value,
String message) {
+ public static void assertRangeContains(final _Ints.Range range, final int
value, final String message) {
if(!range.contains(value)) {
fail(message, range.toString(), value);
}
}
- public static void assertRangeContains(_Ints.Range range, int value,
Supplier<String> lazyMessage) {
+ public static void assertRangeContains(final _Ints.Range range, final int
value, final Supplier<String> lazyMessage) {
if(!range.contains(value)) {
fail(lazyMessage.get(), range.toString(), value);
}
}
- public static void assertRangeContains(_Longs.Range range, long value,
String message) {
+ public static void assertRangeContains(final _Longs.Range range, final
long value, final String message) {
if(!range.contains(value)) {
fail(message, range.toString(), value);
}
}
- public static void assertRangeContains(_Longs.Range range, long value,
Supplier<String> lazyMessage) {
+ public static void assertRangeContains(final _Longs.Range range, final
long value, final Supplier<String> lazyMessage) {
if(!range.contains(value)) {
fail(lazyMessage.get(), range.toString(), value);
}
@@ -178,7 +209,7 @@ public final class _Assert {
// -- TYPE INSTANCE OF
- public static void assertTypeIsInstanceOf(Class<?> type, Class<?>
requiredType) {
+ public static void assertTypeIsInstanceOf(final Class<?> type, final
Class<?> requiredType) {
if(!requiredType.isAssignableFrom(type)) {
throw _Exceptions.assertionError(String.format(
"unexpected type: <%s> is not an instance of <%s> ",
""+type, ""+requiredType));
@@ -213,11 +244,11 @@ public final class _Assert {
// -- HELPER
- static String buildPrefix(String message) {
+ static String buildPrefix(final String message) {
return _Strings.isNotEmpty(message) ? message + " ==> " : "";
}
- private static void fail(String message, Object expected, Object actual) {
+ private static void fail(final String message, final Object expected,
final Object actual) {
val error = _Exceptions.assertionError(
buildPrefix(message)
+ String.format("expected: <%s> but was: <%s>", ""+expected,
""+actual));
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManager.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManager.java
index 8bde10ba68..ead27b7dc0 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManager.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManager.java
@@ -33,7 +33,6 @@ import org.apache.isis.core.metamodel.object.ManagedObject;
import org.apache.isis.core.metamodel.object.ProtoObject;
import org.apache.isis.core.metamodel.objectmanager.memento.ObjectMemorizer;
import org.apache.isis.core.metamodel.objectmanager.query.ObjectBulkLoader;
-import org.apache.isis.core.metamodel.objectmanager.refresh.ObjectRefresher;
import org.apache.isis.core.metamodel.objectmanager.serialize.ObjectSerializer;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -55,7 +54,6 @@ public interface ObjectManager extends HasMetaModelContext {
ObjectLoader getObjectLoader();
ObjectBulkLoader getObjectBulkLoader();
ObjectBookmarker getObjectBookmarker();
- ObjectRefresher getObjectRefresher();
ObjectSerializer getObjectSerializer();
ObjectMemorizer getObjectMemorizer();
@@ -120,14 +118,6 @@ public interface ObjectManager extends HasMetaModelContext
{
_Exceptions.unrecoverable("failed to bookmark %s",
managedObject.getSpecification()));
}
- /**
- * Reloads the state of the (entity) instance from the data store.
- * @param managedObject
- */
- public default void refreshObject(final ManagedObject managedObject) {
- getObjectRefresher().refreshObject(managedObject);
- }
-
public default Optional<ObjectSpecification> specForPojo(final @Nullable
Object pojo) {
if(pojo==null) {
return Optional.empty();
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManagerDefault.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManagerDefault.java
index f5852c758f..cf159221bd 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManagerDefault.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManagerDefault.java
@@ -31,7 +31,6 @@ import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.objectmanager.memento.ObjectMemorizer;
import org.apache.isis.core.metamodel.objectmanager.query.ObjectBulkLoader;
-import org.apache.isis.core.metamodel.objectmanager.refresh.ObjectRefresher;
import org.apache.isis.core.metamodel.objectmanager.serialize.ObjectSerializer;
import lombok.Getter;
@@ -57,7 +56,6 @@ public class ObjectManagerDefault implements ObjectManager {
@Getter(onMethod_ = {@Override}) private ObjectBulkLoader objectBulkLoader;
@Getter(onMethod_ = {@Override}) private ObjectCreator objectCreator;
@Getter(onMethod_ = {@Override}) private ObjectBookmarker objectBookmarker;
- @Getter(onMethod_ = {@Override}) private ObjectRefresher objectRefresher;
@Getter(onMethod_ = {@Override}) private ObjectSerializer objectSerializer;
@Getter(onMethod_ = {@Override}) private ObjectMemorizer objectMemorizer;
@@ -67,7 +65,6 @@ public class ObjectManagerDefault implements ObjectManager {
objectLoader = ObjectLoader.createDefault(metaModelContext);
objectBulkLoader = ObjectBulkLoader.createDefault(metaModelContext);
objectBookmarker = ObjectBookmarker.createDefault();
- objectRefresher = ObjectRefresher.createDefault();
objectSerializer = ObjectSerializer.createDefault(metaModelContext);
objectMemorizer = ObjectMemorizer.createDefault(metaModelContext);
}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/refresh/ObjectRefresher.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/refresh/ObjectRefresher.java
deleted file mode 100644
index 710f867625..0000000000
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/refresh/ObjectRefresher.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.core.metamodel.objectmanager.refresh;
-
-import org.apache.isis.commons.handler.ChainOfResponsibility;
-import org.apache.isis.commons.internal.collections._Lists;
-import org.apache.isis.core.metamodel.object.ManagedObject;
-
-import lombok.val;
-
-/**
- *
- * @since 2.0
- *
- */
-public interface ObjectRefresher {
-
- /**
- * Reloads the state of the instance from the data store.
- * @param objectLoadRequest
- */
- void refreshObject(ManagedObject managedObject);
-
- // -- HANDLER
-
- static interface Handler
- extends
- ChainOfResponsibility.Handler<ManagedObject, Void> {
- }
-
- // -- FACTORY
-
- public static ObjectRefresher createDefault() {
-
- val chainOfHandlers = _Lists.of(
- new ObjectRefresher_builtinHandlers.GuardAgainstNull(),
- new ObjectRefresher_builtinHandlers.RefreshEntity(),
- new ObjectRefresher_builtinHandlers.RefreshOther());
-
- val chainOfRespo = ChainOfResponsibility.of(chainOfHandlers);
-
- return chainOfRespo::handle;
-
- }
-
-
-}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/refresh/ObjectRefresher_builtinHandlers.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/refresh/ObjectRefresher_builtinHandlers.java
deleted file mode 100644
index 3cecee0d22..0000000000
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/refresh/ObjectRefresher_builtinHandlers.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.core.metamodel.objectmanager.refresh;
-
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.object.ManagedObject;
-
-import lombok.Data;
-import lombok.val;
-
-/**
- *
- * @since 2.0
- *
- */
-final class ObjectRefresher_builtinHandlers {
-
- // -- NULL GUARD
-
- @Data
- public static class GuardAgainstNull implements ObjectRefresher.Handler {
-
- private MetaModelContext metaModelContext;
-
- @Override
- public boolean isHandling(final ManagedObject managedObject) {
-
- if(managedObject==null || managedObject.getPojo()==null) {
- return true;
- }
-
- return false;
- }
-
- @Override
- public Void handle(final ManagedObject managedObject) {
- return null; // noop
- }
-
- }
-
- @Data
- public static class RefreshEntity implements ObjectRefresher.Handler {
-
- @Override
- public boolean isHandling(final ManagedObject request) {
- val spec = request.getSpecification();
- return spec.isEntity();
- }
-
- @Override
- public Void handle(final ManagedObject request) {
-
- val spec = request.getSpecification();
- val entityFacet = spec.entityFacetElseFail();
-
- entityFacet.refresh(request.getPojo());
-
- // we assume that we don't need to inject services again, because
this should
- // already have been done, when the entity object got fetched with
the ObjectLoader
-
- return null;
- }
-
- }
-
- @Data
- public static class RefreshOther implements ObjectRefresher.Handler {
-
- @Override
- public boolean isHandling(final ManagedObject request) {
- // if no one else feels responsible, we do
- return true;
- }
-
- @Override
- public Void handle(final ManagedObject request) {
- return null; // noop
- }
-
- }
-
-
-
-}
diff --git
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/repository/RepositoryServiceDefault.java
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/repository/RepositoryServiceDefault.java
index 87c307623d..9ad3df3915 100644
---
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/repository/RepositoryServiceDefault.java
+++
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/repository/RepositoryServiceDefault.java
@@ -43,17 +43,20 @@ import
org.apache.isis.applib.services.repository.EntityState;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.applib.services.wrapper.WrapperFactory;
import org.apache.isis.applib.services.xactn.TransactionService;
+import org.apache.isis.commons.internal.assertions._Assert;
import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.core.config.IsisConfiguration;
+import org.apache.isis.core.metamodel.context.HasMetaModelContext;
+import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.object.ManagedObjects;
import org.apache.isis.core.metamodel.object.MmEntityUtil;
import org.apache.isis.core.metamodel.object.MmUnwrapUtil;
-import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
import org.apache.isis.core.metamodel.objectmanager.query.ObjectBulkLoader;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.runtimeservices.IsisModuleCoreRuntimeServices;
+import lombok.Getter;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.val;
@@ -64,13 +67,16 @@ import lombok.val;
@Qualifier("Default")
@RequiredArgsConstructor
//@Log4j2
-public class RepositoryServiceDefault implements RepositoryService {
+public class RepositoryServiceDefault
+implements RepositoryService, HasMetaModelContext {
final FactoryService factoryService;
final WrapperFactory wrapperFactory;
final TransactionService transactionService;
final IsisConfiguration isisConfiguration;
- final ObjectManager objectManager;
+
+ @Getter(onMethod_ = {@Override})
+ final MetaModelContext metaModelContext;
private boolean autoFlush;
@@ -82,7 +88,7 @@ public class RepositoryServiceDefault implements
RepositoryService {
@Override
public EntityState getEntityState(final @Nullable Object object) {
- val adapter = objectManager.adapt(unwrapped(object));
+ val adapter = getObjectManager().adapt(unwrapped(object));
return MmEntityUtil.getEntityState(adapter);
}
@@ -94,7 +100,7 @@ public class RepositoryServiceDefault implements
RepositoryService {
@Override
public <T> T persist(final T domainObject) {
- val adapter = objectManager.adapt(unwrapped(domainObject));
+ val adapter = getObjectManager().adapt(unwrapped(domainObject));
if(ManagedObjects.isNullOrUnspecifiedOrEmpty(adapter)) {
throw new PersistFailedException("Object not known to framework
(unable to create/obtain an adapter)");
}
@@ -121,7 +127,7 @@ public class RepositoryServiceDefault implements
RepositoryService {
if (domainObject == null) {
return; // noop
}
- val adapter = objectManager.adapt(unwrapped(domainObject));
+ val adapter = getObjectManager().adapt(unwrapped(domainObject));
if(MmEntityUtil.hasOid(adapter)) {
MmEntityUtil.destroyInCurrentTransaction(adapter);
}
@@ -169,8 +175,7 @@ public class RepositoryServiceDefault implements
RepositoryService {
}
<T> List<T> submitQuery(final Query<T> query) {
- val resultTypeSpec = objectManager.getMetaModelContext()
- .getSpecificationLoader()
+ val resultTypeSpec = getSpecificationLoader()
.specForType(query.getResultType())
.orElse(null);
@@ -179,7 +184,7 @@ public class RepositoryServiceDefault implements
RepositoryService {
}
val queryRequest = ObjectBulkLoader.Request.of(resultTypeSpec, query);
- val allMatching = objectManager.queryObjects(queryRequest);
+ val allMatching = getObjectManager().queryObjects(queryRequest);
final List<T> resultList =
_Casts.uncheckedCast(MmUnwrapUtil.multipleAsList(allMatching));
return resultList;
}
@@ -217,23 +222,27 @@ public class RepositoryServiceDefault implements
RepositoryService {
}
@Override
- public <T> T refresh(final T pojo) {
- val managedObject = objectManager.adapt(pojo);
- objectManager.getObjectRefresher().refreshObject(managedObject);
- return _Casts.uncheckedCast(managedObject.getPojo());
+ public <T> T refresh(final T entity) {
+ if(entity==null) { return null; }
+
+ getSpecificationLoader()
+ .specForType(entity.getClass())
+ .flatMap(ObjectSpecification::entityFacet)
+ .ifPresent(entityFacet->entityFacet.refresh(entity));
+
+ return entity;
}
@Override
public <T> T detach(final T entity) {
if(entity==null) { return null; }
- val mmc = objectManager.getMetaModelContext();
-
- return mmc.getSpecificationLoader()
+ return getSpecificationLoader()
.specForType(entity.getClass())
.flatMap(ObjectSpecification::entityFacet)
.map(entityFacet->entityFacet.detach(entity))
- .map(mmc.getServiceInjector()::injectServicesInto) // just in case
+ .map(detachedEntity->_Assert.assertSameObject(detachedEntity, entity,
()->
+ "expected same (otherwise would need injection points
resolved)"))
.orElse(entity);
}
diff --git
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/jdosupport/JdoSupportServiceDefault.java
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/jdosupport/JdoSupportServiceDefault.java
index a3202ca1d7..b850cb5c9a 100644
---
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/jdosupport/JdoSupportServiceDefault.java
+++
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/jdosupport/JdoSupportServiceDefault.java
@@ -39,21 +39,20 @@ import javax.jdo.query.BooleanExpression;
import org.datanucleus.store.rdbms.RDBMSPropertyNames;
import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.applib.exceptions.UnrecoverableException;
import
org.apache.isis.applib.exceptions.unrecoverable.ObjectPersistenceException;
+import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.collections._Maps;
-import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.persistence.jdo.applib.services.JdoSupportService;
import
org.apache.isis.persistence.jdo.spring.integration.TransactionAwarePersistenceManagerFactoryProxy;
import static org.apache.isis.commons.internal.base._NullSafe.stream;
-import lombok.val;
-
@Service
@Named("isis.persistence.jdo.JdoSupportServiceDefault")
@Priority(PriorityPrecedence.MIDPOINT)
@@ -61,7 +60,7 @@ import lombok.val;
public class JdoSupportServiceDefault implements JdoSupportService {
@Inject private TransactionAwarePersistenceManagerFactoryProxy pmf;
- @Inject private MetaModelContext mmc;
+ @Inject @Lazy private RepositoryService repositoryService;
@Override
public PersistenceManagerFactory getPersistenceManagerFactory() {
@@ -70,10 +69,7 @@ public class JdoSupportServiceDefault implements
JdoSupportService {
@Override
public <T> T refresh(final T domainObject) {
- val objectManager = mmc.getObjectManager();
- val adapter = mmc.getObjectManager().adapt(domainObject);
- objectManager.refreshObject(adapter);
- return domainObject;
+ return repositoryService.refresh(domainObject);
}
@Override
@@ -83,7 +79,6 @@ public class JdoSupportServiceDefault implements
JdoSupportService {
// //////////////////////////////////////
-
@Override
public List<Map<String, Object>> executeSql(final String sql) {
final JDOConnection dataStoreConnection =
getPersistenceManager().getDataStoreConnection();
@@ -191,7 +186,7 @@ public class JdoSupportServiceDefault implements
JdoSupportService {
@Override
- public <T> JDOQLTypedQuery<T> newTypesafeQuery(Class<T> cls) {
+ public <T> JDOQLTypedQuery<T> newTypesafeQuery(final Class<T> cls) {
return getPersistenceManager().newJDOQLTypedQuery(cls);
}
@@ -215,12 +210,12 @@ public class JdoSupportServiceDefault implements
JdoSupportService {
}
@Override
- public void disableMultivaluedFetch(JDOQLTypedQuery<?> query) {
+ public void disableMultivaluedFetch(final JDOQLTypedQuery<?> query) {
query.extension(RDBMSPropertyNames.PROPERTY_RDBMS_QUERY_MULTIVALUED_FETCH,
"none");
}
@Override
- public void disableMultivaluedFetch(Query<?> query) {
+ public void disableMultivaluedFetch(final Query<?> query) {
query.addExtension(RDBMSPropertyNames.PROPERTY_RDBMS_QUERY_MULTIVALUED_FETCH,
"none");
}