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/10/30 15:03:20 UTC
[isis] 01/07: ISIS-2158: moving ObjectAdapterContext -> jdo-common
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 7cdb3f4dff83bfbe0559dc138cb787edd192af6b
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Oct 30 08:37:53 2019 +0100
ISIS-2158: moving ObjectAdapterContext -> jdo-common
---
core/applib/pom.xml | 14 +--
.../apache/isis/applib/annotation/Collection.java | 5 +-
.../apache/isis/applib/annotation/Property.java | 5 +-
.../exceprecog/ExceptionRecognizerForType.java | 105 ++++++++++++++-------
.../applib/services/metrics/MetricsService.java | 1 -
.../commons/internal/exceptions/_Exceptions.java | 25 ++++-
.../exceprecog/ExceptionRecognizerDocDefault.java | 1 -
.../specimpl/OneToManyAssociationDefault.java | 14 +--
.../applib/services/jdosupport/IsisJdoSupport.java | 0
.../applib/services/jdosupport/package-info.java | 0
...xceptionRecognizerForJDODataStoreException.java | 7 +-
...traintViolationForeignKeyNoActionException.java | 1 +
...yConstraintViolationUniqueOrIndexException.java | 1 +
...eption.java => JdoNestedExceptionResolver.java} | 29 ++++--
.../adaptermanager/ObjectAdapterContext.java | 0
.../ObjectAdapterContext_DependencyInjection.java | 0
.../ObjectAdapterContext_Factories.java | 0
...ObjectAdapterContext_LifecycleEventSupport.java | 0
.../ObjectAdapterContext_MementoSupport.java | 0
.../ObjectAdapterContext_NewIdentifier.java | 0
...ctAdapterContext_ObjectAdapterByIdProvider.java | 0
...ObjectAdapterContext_ObjectAdapterProvider.java | 0
.../ObjectAdapterContext_ObjectCreation.java | 0
.../ObjectAdapterContext_ServiceLookup.java | 0
.../adaptermanager/ObjectAdapterLegacy.java | 0
.../background/CommandExecutorServiceDefault.java | 47 +++++----
.../isis/runtime/memento/ObjectAdapterMemento.java | 1 -
.../ObjectAdapterMementoSupport_usingDefault.java | 3 +-
extensions/fixtures/pom.xml | 6 ++
.../legacy/teardown/TeardownFixtureAbstract.java | 3 +-
.../legacy/teardown/TeardownFixtureAbstract2.java | 3 +-
extensions/legacy/pom.xml | 6 ++
32 files changed, 172 insertions(+), 105 deletions(-)
diff --git a/core/applib/pom.xml b/core/applib/pom.xml
index 3caa879..2ae2f76 100644
--- a/core/applib/pom.xml
+++ b/core/applib/pom.xml
@@ -71,13 +71,13 @@
</dependency>
<!-- JDO API (non transient, provided by plugin) -->
- <dependency>
- <groupId>javax.jdo</groupId>
- <artifactId>jdo-api</artifactId>
- <version>${jdo-api.version}</version>
- <!-- provided by plugins -->
- <scope>provided</scope>
- </dependency>
+<!-- <dependency> -->
+<!-- <groupId>javax.jdo</groupId> -->
+<!-- <artifactId>jdo-api</artifactId> -->
+<!-- <version>${jdo-api.version}</version> -->
+<!-- provided by plugins -->
+<!-- <scope>provided</scope> -->
+<!-- </dependency> -->
<!-- HSQL-DB -->
<dependency>
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Collection.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Collection.java
index 793e444..fa8944a 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/Collection.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/Collection.java
@@ -25,8 +25,6 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
-import javax.jdo.annotations.NotPersistent;
-
import org.apache.isis.applib.events.domain.CollectionDomainEvent;
/**
@@ -93,7 +91,8 @@ public @interface Collection {
* Indicates whether the collecion should be included or excluded from mementos.
*
* <p>
- * To ensure that the collection is actually not persisted in the objectstore, also annotate with the JDO annotation {@link NotPersistent}.
+ * To ensure that the collection is actually not persisted in the objectstore,
+ * also annotate with the JDO annotation {@link javax.jdo.annotations.NotPersistent}.
* </p>
*/
MementoSerialization mementoSerialization() default MementoSerialization.NOT_SPECIFIED;
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Property.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Property.java
index 22d3a7b..99e87fd 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/Property.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/Property.java
@@ -25,8 +25,6 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
-import javax.jdo.annotations.NotPersistent;
-
import org.apache.isis.applib.conmap.ContentMappingServiceForCommandDto;
import org.apache.isis.applib.conmap.ContentMappingServiceForCommandsDto;
import org.apache.isis.applib.events.domain.PropertyDomainEvent;
@@ -200,7 +198,8 @@ public @interface Property {
* Indicates whether the property should be included or excluded from mementos.
*
* <p>
- * To ensure that the property is actually not persisted in the objectstore, also annotate with the JDO annotation {@link NotPersistent}.
+ * To ensure that the property is actually not persisted in the objectstore, also annotate with the JDO annotation
+ * {@link javax.jdo.annotations.NotPersistent}.
* </p>
*/
MementoSerialization mementoSerialization() default MementoSerialization.NOT_SPECIFIED;
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerForType.java b/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerForType.java
index a36317c..7ace8f5 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerForType.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerForType.java
@@ -21,13 +21,17 @@ package org.apache.isis.applib.services.exceprecog;
import java.util.List;
import java.util.function.Function;
import java.util.function.Predicate;
-
-import javax.jdo.JDODataStoreException;
+import java.util.stream.Stream;
import org.apache.isis.commons.internal.exceptions._Exceptions;
+import static org.apache.isis.commons.internal.exceptions._Exceptions.containsAnyOfTheseMessages;
+import static org.apache.isis.commons.internal.exceptions._Exceptions.getCausalChain;
+
+import lombok.val;
+
/**
- * An specific implementation of {@link ExceptionRecognizer} that looks for an
+ * A specific implementation of {@link ExceptionRecognizer} that looks for an
* exception of the type provided in the constructor
* and, if found anywhere in the causal chain,
* then returns a non-null message indicating that the exception has been recognized.
@@ -38,15 +42,36 @@ import org.apache.isis.commons.internal.exceptions._Exceptions;
*/
public class ExceptionRecognizerForType extends ExceptionRecognizerAbstract {
- protected final static Predicate<Throwable> ofTypeExcluding(final Class<? extends Throwable> exceptionType, final String... messages) {
- return ofType(exceptionType).and(excluding(messages));
+ /**
+ * Introduced in support of eg. {@link javax.jdo.JDODataStoreException}
+ * @since 2.0
+ */
+ @FunctionalInterface
+ public static interface NestedExceptionResolver {
+ Stream<Throwable> streamNestedExceptionsOf(Throwable throwable);
+
+ public static final NestedExceptionResolver NOOP = __->Stream.empty();
+ }
+
+ protected final static Predicate<Throwable> ofTypeExcluding(
+ final Class<? extends Throwable> exceptionType,
+ final NestedExceptionResolver nestedExceptionResolver,
+ final String... messages) {
+
+ return ofType(exceptionType).and(excluding(nestedExceptionResolver, messages));
}
- protected final static Predicate<Throwable> ofTypeIncluding(final Class<? extends Throwable> exceptionType, final String... messages) {
- return ofType(exceptionType).and(including(messages));
+ protected final static Predicate<Throwable> ofTypeIncluding(
+ final Class<? extends Throwable> exceptionType,
+ final NestedExceptionResolver nestedExceptionResolver,
+ final String... messages) {
+
+ return ofType(exceptionType).and(including(nestedExceptionResolver, messages));
}
- protected final static Predicate<Throwable> ofType(final Class<? extends Throwable> exceptionType) {
+ protected final static Predicate<Throwable> ofType(
+ final Class<? extends Throwable> exceptionType) {
+
return input->exceptionType.isAssignableFrom(input.getClass());
}
@@ -58,31 +83,33 @@ public class ExceptionRecognizerForType extends ExceptionRecognizerAbstract {
* <p>
* Intended to prevent too eager matching of an overly general exception type.
*/
- protected final static Predicate<Throwable> excluding(final String... messages) {
+ protected final static Predicate<Throwable> excluding(
+ final NestedExceptionResolver nestedExceptionResolver,
+ final String... messages) {
+
return input->{
- final List<Throwable> causalChain = _Exceptions.getCausalChain(input);
- for (String message : messages) {
- for (Throwable throwable : causalChain) {
- final String throwableMessage = throwable.getMessage();
- if(throwableMessage != null && throwableMessage.contains(message)) {
- return false;
- }
- if(throwable instanceof JDODataStoreException) {
- final JDODataStoreException jdoDataStoreException = (JDODataStoreException) throwable;
- final Throwable[] nestedExceptions = jdoDataStoreException.getNestedExceptions();
- for (Throwable nestedException : nestedExceptions) {
- final String nestedThrowableMessage = nestedException.getMessage();
- if(nestedThrowableMessage != null && nestedThrowableMessage.contains(message)) {
- return false;
- }
- }
- }
+ final List<Throwable> causalChain = getCausalChain(input);
+
+ for (Throwable throwable : causalChain) {
+
+ if(containsAnyOfTheseMessages(throwable, messages)) {
+ return false;
+ }
+
+ val isAnyNestedRecognized = nestedExceptionResolver.streamNestedExceptionsOf(throwable)
+ .anyMatch(nested->_Exceptions.containsAnyOfTheseMessages(throwable, messages));
+
+ if(isAnyNestedRecognized) {
+ return false;
}
+
}
+
return true;
};
}
+
/**
* A {@link Predicate} that {@link Predicate#apply(Object) applies} only if at least one of the message(s)
@@ -92,17 +119,27 @@ public class ExceptionRecognizerForType extends ExceptionRecognizerAbstract {
* <p>
* Intended to prevent more precise matching of a specific general exception type.
*/
- protected final static Predicate<Throwable> including(final String... messages) {
+ protected final static Predicate<Throwable> including(
+ final NestedExceptionResolver nestedExceptionResolver,
+ final String... messages) {
+
return input->{
- final List<Throwable> causalChain = _Exceptions.getCausalChain(input);
- for (String message : messages) {
- for (Throwable throwable : causalChain) {
- final String throwableMessage = throwable.getMessage();
- if(throwableMessage != null && throwableMessage.contains(message)) {
- return true;
- }
+ final List<Throwable> causalChain = getCausalChain(input);
+
+ for (Throwable throwable : causalChain) {
+ if(containsAnyOfTheseMessages(throwable, messages)) {
+ return true;
+ }
+
+ val isAnyNestedRecognized = nestedExceptionResolver.streamNestedExceptionsOf(throwable)
+ .anyMatch(nested->_Exceptions.containsAnyOfTheseMessages(throwable, messages));
+
+ if(isAnyNestedRecognized) {
+ return true;
}
+
}
+
return false;
};
}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/metrics/MetricsService.java b/core/applib/src/main/java/org/apache/isis/applib/services/metrics/MetricsService.java
index 4659460..d66966f 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/metrics/MetricsService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/metrics/MetricsService.java
@@ -19,7 +19,6 @@
package org.apache.isis.applib.services.metrics;
import javax.enterprise.context.RequestScoped;
-import javax.jdo.listener.InstanceLifecycleEvent;
import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.services.iactn.InteractionContext;
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/exceptions/_Exceptions.java b/core/commons/src/main/java/org/apache/isis/commons/internal/exceptions/_Exceptions.java
index 344772e..8598579 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/exceptions/_Exceptions.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/exceptions/_Exceptions.java
@@ -31,6 +31,8 @@ import java.util.stream.Stream;
import javax.annotation.Nullable;
+import org.apache.isis.commons.internal.base._NullSafe;
+import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.functions._Functions;
@@ -263,6 +265,26 @@ public final class _Exceptions {
}
}
+
+ // -- PREDICATES
+
+ public static boolean containsAnyOfTheseMessages(@Nullable Throwable throwable, @Nullable String ... messages) {
+ if(throwable==null) {
+ return false;
+ }
+ val throwableMessage = throwable.getMessage();
+ if(throwableMessage == null || _NullSafe.isEmpty(messages)) {
+ return false;
+ }
+ for (String message : messages) {
+ if(_Strings.isNotEmpty(message)
+ && throwableMessage.contains(message)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
// -- FLUENT EXCEPTION
@@ -374,7 +396,4 @@ public final class _Exceptions {
-
-
-
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/exceprecog/ExceptionRecognizerDocDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/exceprecog/ExceptionRecognizerDocDefault.java
index 4399def..6482c17 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/exceprecog/ExceptionRecognizerDocDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/exceprecog/ExceptionRecognizerDocDefault.java
@@ -22,7 +22,6 @@ package org.apache.isis.metamodel.services.exceprecog;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.inject.Inject;
-import javax.inject.Singleton;
import org.springframework.stereotype.Service;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
index 4877563..8bb8619 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
@@ -165,18 +165,10 @@ extends ObjectAssociationAbstract implements OneToManyAssociation {
}
val objectManager = super.getObjectManager();
- System.err.println("#### likely won't work");
- return objectManager.adapt(collection);
-// val objectIdentifier = ManagedObject._collectionOidIfAny(ownerAdapter).getIdentifier();
-//
-//
-// //val spec = objectManager.loadSpec(collection);
-// val objectLoadRequest = ObjectLoadRequest.ofParentedCollection(ownerAdapter, this);
-// val collectionAdapter = objectManager.loadObject(objectLoadRequest);
-//
-// val newAdapter = getObjectAdapterProvider().adapterForCollection(collection, parentOid, this);
-// return newAdapter.injectServices(getServiceInjector());
+ super.getServiceInjector().injectServicesInto(collection);
+
+ return objectManager.adapt(collection);
}
@Override
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/jdosupport/IsisJdoSupport.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/applib/services/jdosupport/IsisJdoSupport.java
similarity index 100%
rename from core/applib/src/main/java/org/apache/isis/applib/services/jdosupport/IsisJdoSupport.java
rename to core/plugins/jdo/common/src/main/java/org/apache/isis/applib/services/jdosupport/IsisJdoSupport.java
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/jdosupport/package-info.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/applib/services/jdosupport/package-info.java
similarity index 100%
rename from core/applib/src/main/java/org/apache/isis/applib/services/jdosupport/package-info.java
rename to core/plugins/jdo/common/src/main/java/org/apache/isis/applib/services/jdosupport/package-info.java
diff --git a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/exceprecog/ExceptionRecognizerForJDODataStoreException.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/exceprecog/ExceptionRecognizerForJDODataStoreException.java
index 9549f16..e3ee12d 100644
--- a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/exceprecog/ExceptionRecognizerForJDODataStoreException.java
+++ b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/exceprecog/ExceptionRecognizerForJDODataStoreException.java
@@ -24,9 +24,14 @@ public class ExceptionRecognizerForJDODataStoreException extends ExceptionRecogn
public ExceptionRecognizerForJDODataStoreException() {
super(Category.SERVER_ERROR,
- ofTypeExcluding(javax.jdo.JDODataStoreException.class, "NOT NULL check constraint"),
+ ofTypeExcluding(
+ javax.jdo.JDODataStoreException.class,
+ JdoNestedExceptionResolver::streamNestedExceptionsOf,
+ "NOT NULL check constraint"),
prefix("Unable to save changes. " +
"Does similar data already exist, or has referenced data been deleted?"));
}
+
+
}
diff --git a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/exceprecog/ExceptionRecognizerForJDODataStoreExceptionIntegrityConstraintViolationForeignKeyNoActionException.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/exceprecog/ExceptionRecognizerForJDODataStoreExceptionIntegrityConstraintViolationForeignKeyNoActionException.java
index c749ca3..536bd17 100644
--- a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/exceprecog/ExceptionRecognizerForJDODataStoreExceptionIntegrityConstraintViolationForeignKeyNoActionException.java
+++ b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/exceprecog/ExceptionRecognizerForJDODataStoreExceptionIntegrityConstraintViolationForeignKeyNoActionException.java
@@ -29,6 +29,7 @@ extends ExceptionRecognizerForType {
super(Category.CONSTRAINT_VIOLATION,
ofTypeIncluding(
JDODataStoreException.class,
+ JdoNestedExceptionResolver::streamNestedExceptionsOf,
"integrity constraint violation: foreign key no action"),
prefix("Related data exists"));
}
diff --git a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/exceprecog/ExceptionRecognizerForSQLIntegrityConstraintViolationUniqueOrIndexException.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/exceprecog/ExceptionRecognizerForSQLIntegrityConstraintViolationUniqueOrIndexException.java
index cbf2af0..88750af 100644
--- a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/exceprecog/ExceptionRecognizerForSQLIntegrityConstraintViolationUniqueOrIndexException.java
+++ b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/exceprecog/ExceptionRecognizerForSQLIntegrityConstraintViolationUniqueOrIndexException.java
@@ -27,6 +27,7 @@ extends ExceptionRecognizerForType {
super(Category.CONSTRAINT_VIOLATION,
ofTypeIncluding(
java.sql.SQLIntegrityConstraintViolationException.class,
+ ExceptionRecognizerForType.NestedExceptionResolver.NOOP,
"unique constraint or index violation"),
prefix("Data already exists"));
}
diff --git a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/exceprecog/ExceptionRecognizerForJDODataStoreExceptionIntegrityConstraintViolationForeignKeyNoActionException.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/exceprecog/JdoNestedExceptionResolver.java
similarity index 60%
copy from core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/exceprecog/ExceptionRecognizerForJDODataStoreExceptionIntegrityConstraintViolationForeignKeyNoActionException.java
copy to core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/exceprecog/JdoNestedExceptionResolver.java
index c749ca3..6db40a3 100644
--- a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/exceprecog/ExceptionRecognizerForJDODataStoreExceptionIntegrityConstraintViolationForeignKeyNoActionException.java
+++ b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/exceprecog/JdoNestedExceptionResolver.java
@@ -18,19 +18,28 @@
*/
package org.apache.isis.jdo.exceprecog;
+import java.util.stream.Stream;
+
import javax.jdo.JDODataStoreException;
-import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerForType;
+import org.apache.isis.commons.internal.base._NullSafe;
-public class ExceptionRecognizerForJDODataStoreExceptionIntegrityConstraintViolationForeignKeyNoActionException
-extends ExceptionRecognizerForType {
+import lombok.val;
- public ExceptionRecognizerForJDODataStoreExceptionIntegrityConstraintViolationForeignKeyNoActionException() {
- super(Category.CONSTRAINT_VIOLATION,
- ofTypeIncluding(
- JDODataStoreException.class,
- "integrity constraint violation: foreign key no action"),
- prefix("Related data exists"));
- }
+/**
+ * @since 2.0
+ */
+final class JdoNestedExceptionResolver {
+ static Stream<Throwable> streamNestedExceptionsOf(Throwable throwable) {
+
+ if(throwable instanceof JDODataStoreException) {
+ val jdoDataStoreException = (JDODataStoreException) throwable;
+ return _NullSafe.stream(jdoDataStoreException.getNestedExceptions());
+
+ }
+ return Stream.empty();
+
+ }
+
}
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext.java
similarity index 100%
rename from core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext.java
rename to core/plugins/jdo/common/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext.java
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_DependencyInjection.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_DependencyInjection.java
similarity index 100%
rename from core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_DependencyInjection.java
rename to core/plugins/jdo/common/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_DependencyInjection.java
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_Factories.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_Factories.java
similarity index 100%
rename from core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_Factories.java
rename to core/plugins/jdo/common/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_Factories.java
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_LifecycleEventSupport.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_LifecycleEventSupport.java
similarity index 100%
rename from core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_LifecycleEventSupport.java
rename to core/plugins/jdo/common/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_LifecycleEventSupport.java
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_MementoSupport.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_MementoSupport.java
similarity index 100%
rename from core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_MementoSupport.java
rename to core/plugins/jdo/common/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_MementoSupport.java
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_NewIdentifier.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_NewIdentifier.java
similarity index 100%
rename from core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_NewIdentifier.java
rename to core/plugins/jdo/common/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_NewIdentifier.java
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterByIdProvider.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterByIdProvider.java
similarity index 100%
rename from core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterByIdProvider.java
rename to core/plugins/jdo/common/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterByIdProvider.java
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterProvider.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterProvider.java
similarity index 100%
rename from core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterProvider.java
rename to core/plugins/jdo/common/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterProvider.java
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectCreation.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectCreation.java
similarity index 100%
rename from core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectCreation.java
rename to core/plugins/jdo/common/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectCreation.java
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ServiceLookup.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ServiceLookup.java
similarity index 100%
rename from core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ServiceLookup.java
rename to core/plugins/jdo/common/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ServiceLookup.java
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterLegacy.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterLegacy.java
similarity index 100%
rename from core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterLegacy.java
rename to core/plugins/jdo/common/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterLegacy.java
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/background/CommandExecutorServiceDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/background/CommandExecutorServiceDefault.java
index 36b14a4..443b5bf 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/background/CommandExecutorServiceDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/background/CommandExecutorServiceDefault.java
@@ -40,9 +40,8 @@ import org.apache.isis.applib.services.iactn.Interaction;
import org.apache.isis.applib.services.iactn.InteractionContext;
import org.apache.isis.applib.services.sudo.SudoService;
import org.apache.isis.applib.services.xactn.TransactionService;
-import org.apache.isis.commons.internal.collections._Lists;
+import org.apache.isis.commons.internal.collections._Arrays;
import org.apache.isis.commons.internal.exceptions._Exceptions;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.metamodel.facets.actions.action.invocation.CommandUtil;
import org.apache.isis.metamodel.spec.ManagedObject;
@@ -54,7 +53,6 @@ import org.apache.isis.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.metamodel.specloader.SpecificationLoader;
import org.apache.isis.runtime.system.context.IsisContext;
import org.apache.isis.runtime.system.persistence.PersistenceSession;
-import org.apache.isis.runtime.system.persistence.adaptermanager.ObjectAdapterLegacy;
import org.apache.isis.runtime.system.session.IsisSessionFactory;
import org.apache.isis.schema.cmd.v1.ActionDto;
import org.apache.isis.schema.cmd.v1.CommandDto;
@@ -149,13 +147,13 @@ public class CommandExecutorServiceDefault implements CommandExecutorService {
for (OidDto targetOidDto : targetOidDtos) {
- final ObjectAdapter targetAdapter = adapterFor(targetOidDto);
+ val targetAdapter = adapterFor(targetOidDto);
final ObjectAction objectAction = findObjectAction(targetAdapter, memberId);
// we pass 'null' for the mixedInAdapter; if this action _is_ a mixin then
// it will switch the targetAdapter to be the mixedInAdapter transparently
- final ObjectAdapter[] argAdapters = argAdaptersFor(actionDto);
- final ManagedObject resultAdapter = objectAction.execute(
+ final ManagedObject[] argAdapters = argAdaptersFor(actionDto);
+ val resultAdapter = objectAction.execute(
targetAdapter, null, argAdapters, InteractionInitiatedBy.FRAMEWORK);
// flush any Isis PersistenceCommands pending
@@ -185,11 +183,11 @@ public class CommandExecutorServiceDefault implements CommandExecutorService {
final Bookmark bookmark = Bookmark.from(targetOidDto);
final Object targetObject = bookmarkService.lookup(bookmark, FieldResetPolicy.RESET);
- final ObjectAdapter targetAdapter = adapterFor(targetObject);
+ val targetAdapter = adapterFor(targetObject);
final OneToOneAssociation property = findOneToOneAssociation(targetAdapter, memberId);
- final ObjectAdapter newValueAdapter = newValueAdapterFor(propertyDto);
+ val newValueAdapter = newValueAdapterFor(propertyDto);
property.set(targetAdapter, newValueAdapter, InteractionInitiatedBy.FRAMEWORK);
@@ -232,7 +230,7 @@ public class CommandExecutorServiceDefault implements CommandExecutorService {
// //////////////////////////////////////
private static ObjectAction findObjectAction(
- final ObjectAdapter targetAdapter,
+ final ManagedObject targetAdapter,
final String actionId) throws RuntimeException {
final ObjectSpecification specification = targetAdapter.getSpecification();
@@ -245,7 +243,7 @@ public class CommandExecutorServiceDefault implements CommandExecutorService {
}
private static OneToOneAssociation findOneToOneAssociation(
- final ObjectAdapter targetAdapter,
+ final ManagedObject targetAdapter,
final String propertyId) throws RuntimeException {
final ObjectSpecification specification = targetAdapter.getSpecification();
@@ -257,7 +255,7 @@ public class CommandExecutorServiceDefault implements CommandExecutorService {
return property;
}
- private ObjectAdapter newValueAdapterFor(final PropertyDto propertyDto) {
+ private ManagedObject newValueAdapterFor(final PropertyDto propertyDto) {
final ValueWithTypeDto newValue = propertyDto.getNewValue();
final Object arg = CommonDtoUtils.getValue(newValue);
return adapterFor(arg);
@@ -291,17 +289,15 @@ public class CommandExecutorServiceDefault implements CommandExecutorService {
}
- private ObjectAdapter[] argAdaptersFor(final ActionDto actionDto) {
- final List<ParamDto> params = paramDtosFrom(actionDto);
- final List<ObjectAdapter> args = _Lists.newArrayList(
- params.stream()
- .map(paramDto -> {
- final Object arg = CommonDtoUtils.getValue(paramDto);
- return adapterFor(arg);
- })
- .collect(Collectors.toList())
- );
- return args.toArray(new ObjectAdapter[]{});
+ private ManagedObject[] argAdaptersFor(final ActionDto actionDto) {
+
+ val paramDtos = paramDtosFrom(actionDto);
+
+ return paramDtos
+ .stream()
+ .map(CommonDtoUtils::getValue)
+ .map(this::adapterFor)
+ .collect(_Arrays.toArray(ManagedObject.class, paramDtos.size()));
}
private static List<ParamDto> paramDtosFrom(final ActionDto actionDto) {
@@ -315,8 +311,11 @@ public class CommandExecutorServiceDefault implements CommandExecutorService {
return Collections.emptyList();
}
- private ObjectAdapter adapterFor(final Object targetObject) {
- return ObjectAdapterLegacy.__CommandExecutorServiceDefault.adapterFor(targetObject);
+ private ManagedObject adapterFor(final Object pojo) {
+ return ManagedObject.of(getSpecificationLoader()::loadSpecification, pojo);
+
+ //legacy of
+ //return ObjectAdapterLegacy.__CommandExecutorServiceDefault.adapterFor(targetObject);
}
// //////////////////////////////////////
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMemento.java b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMemento.java
index 25f29b8..3786f32 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMemento.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMemento.java
@@ -31,7 +31,6 @@ import org.apache.isis.commons.collections.Cardinality;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.ioc.BeanSort;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
import org.apache.isis.metamodel.adapter.oid.RootOid;
import org.apache.isis.metamodel.spec.ManagedObject;
import org.apache.isis.metamodel.spec.ObjectSpecId;
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoSupport_usingDefault.java b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoSupport_usingDefault.java
index 598a973..5b3a7bf 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoSupport_usingDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoSupport_usingDefault.java
@@ -27,7 +27,6 @@ import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.commons.internal.ioc.BeanSort;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
import org.apache.isis.metamodel.adapter.oid.RootOid;
import org.apache.isis.metamodel.spec.ManagedObject;
import org.apache.isis.metamodel.spec.ObjectSpecId;
@@ -125,7 +124,7 @@ implements ObjectAdapterMementoSupport {
}
private PersistenceSession persistenceSession() {
- return IsisContext.getPersistenceSession().get();
+ return IsisContext.getPersistenceSession().orElse(null);
}
}
diff --git a/extensions/fixtures/pom.xml b/extensions/fixtures/pom.xml
index ec1a4c4..63b88f8 100644
--- a/extensions/fixtures/pom.xml
+++ b/extensions/fixtures/pom.xml
@@ -43,6 +43,12 @@
<dependency>
<groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-plugins-jdo-common</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.isis.core</groupId>
<artifactId>isis-integtestsupport</artifactId>
<scope>provided</scope>
</dependency>
diff --git a/extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/legacy/teardown/TeardownFixtureAbstract.java b/extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/legacy/teardown/TeardownFixtureAbstract.java
index d1b76db..8dbf320 100644
--- a/extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/legacy/teardown/TeardownFixtureAbstract.java
+++ b/extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/legacy/teardown/TeardownFixtureAbstract.java
@@ -63,7 +63,6 @@ public abstract class TeardownFixtureAbstract extends FixtureScript {
protected void postDeleteFrom(final Class<?> cls) {}
- @Inject
- private IsisJdoSupport isisJdoSupport;
+ @Inject private IsisJdoSupport isisJdoSupport;
}
diff --git a/extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/legacy/teardown/TeardownFixtureAbstract2.java b/extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/legacy/teardown/TeardownFixtureAbstract2.java
index e1db35e..33a4cec 100644
--- a/extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/legacy/teardown/TeardownFixtureAbstract2.java
+++ b/extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/legacy/teardown/TeardownFixtureAbstract2.java
@@ -148,6 +148,5 @@ public abstract class TeardownFixtureAbstract2 extends TeardownFixtureAbstract {
protected void postDeleteFrom(Class<?> cls) {
}
- @Inject
- protected IsisJdoSupport isisJdoSupport;
+ @Inject protected IsisJdoSupport isisJdoSupport;
}
diff --git a/extensions/legacy/pom.xml b/extensions/legacy/pom.xml
index f836bea..3001a01 100644
--- a/extensions/legacy/pom.xml
+++ b/extensions/legacy/pom.xml
@@ -57,6 +57,12 @@
<artifactId>isis-applib</artifactId>
<scope>compile</scope>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-plugins-jdo-common</artifactId>
+ <scope>provided</scope>
+ </dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>