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 2020/06/05 08:29:03 UTC
[isis] branch master updated: ISIS-2340: ManagedObjects: move and
gather entity utility methods (2)
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 a3972aa ISIS-2340: ManagedObjects: move and gather entity utility methods (2)
a3972aa is described below
commit a3972aa89cf90fc0425637a2699b8984ddebb0cc
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Jun 5 10:28:32 2020 +0200
ISIS-2340: ManagedObjects: move and gather entity utility methods (2)
---
.../interactions/managed/ManagedMember.java | 4 +-
.../services/title/TitleServiceDefault.java | 3 +-
.../isis/core/metamodel/spec/ManagedObject.java | 4 -
.../isis/core/metamodel/spec/ManagedObjects.java | 88 ++++++++++++----------
.../transaction/ChangedObjectsService.java | 3 +-
.../wicket/ui/panels/FormExecutorDefault.java | 5 +-
6 files changed, 57 insertions(+), 50 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedMember.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedMember.java
index 91df6c6..0470352 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedMember.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedMember.java
@@ -27,7 +27,7 @@ import org.apache.isis.core.commons.internal.base._Casts;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.consent.Veto;
import org.apache.isis.core.metamodel.spec.ManagedObject;
-import org.apache.isis.core.metamodel.spec.ManagedObjects;
+import org.apache.isis.core.metamodel.spec.ManagedObjects.EntityUtil;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
@@ -90,7 +90,7 @@ public abstract class ManagedMember {
@NonNull private ManagedObject owner;
public ManagedObject getOwner() {
- return owner = ManagedObjects.reattach(owner);
+ return owner = EntityUtil.reattach(owner);
}
public abstract ObjectMember getMember();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitleServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitleServiceDefault.java
index 1c112e8..4102aec 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitleServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitleServiceDefault.java
@@ -31,6 +31,7 @@ import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.title.TitleService;
import org.apache.isis.applib.services.wrapper.WrapperFactory;
import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects.EntityUtil;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
import lombok.val;
@@ -60,7 +61,7 @@ public class TitleServiceDefault implements TitleService {
val pojo = unwrapped(domainObject);
val objectAdapter = ManagedObject.of(specificationLoader::loadSpecification, pojo);
- val destroyed = ManagedObject._isDestroyed(objectAdapter);
+ val destroyed = EntityUtil.isDestroyed(objectAdapter);
if(!destroyed) {
return objectAdapter.getSpecification().getTitle(null, objectAdapter);
} else {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
index b50e149..c9d5892 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
@@ -244,10 +244,6 @@ public interface ManagedObject {
return identifier;
}
- static boolean _isDestroyed(ManagedObject adapter) {
- return EntityUtil.getEntityState(adapter) == EntityState.PERSISTABLE_DESTROYED;
- }
-
static void _whenFirstIsBookmarkable_ensureSecondIsAsWell(
ManagedObject first,
ManagedObject second) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
index 337f884..c18d350 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
@@ -234,6 +234,7 @@ public final class ManagedObjects {
@UtilityClass
public static final class EntityUtil {
+ @NonNull
public static EntityState getEntityState(@Nullable ManagedObject adapter) {
if(adapter==null) {
return EntityState.NOT_PERSISTABLE;
@@ -253,51 +254,58 @@ public final class ManagedObjects {
return entityFacet.getEntityState(pojo);
}
- }
-
- /**
- * @param managedObject
- * @return managedObject
- * @throws AssertionError if managedObject is a detached entity
- */
- public static ManagedObject requiresAttached(@NonNull ManagedObject managedObject) {
- val entityState = EntityUtil.getEntityState(managedObject);
- if(entityState.isPersistable()) {
- // ensure we have an attached entity
- _Assert.assertEquals(
- EntityState.PERSISTABLE_ATTACHED,
- entityState,
- ()-> String.format("entity %s is required to be attached (not detached) at this stage",
- managedObject.getSpecification().getSpecId()));
- }
- return managedObject;
- }
-
- @Nullable
- public static ManagedObject reattach(@Nullable ManagedObject managedObject) {
- if(isNullOrUnspecifiedOrEmpty(managedObject)) {
- return managedObject;
- }
- val entityState = EntityUtil.getEntityState(managedObject);
- if(!entityState.isPersistable()) {
- return managedObject;
- }
- if(!entityState.isDetached()) {
+ /**
+ * @param managedObject
+ * @return managedObject
+ * @throws AssertionError if managedObject is a detached entity
+ */
+ @NonNull
+ public static ManagedObject requiresAttached(@NonNull ManagedObject managedObject) {
+ val entityState = EntityUtil.getEntityState(managedObject);
+ if(entityState.isPersistable()) {
+ // ensure we have an attached entity
+ _Assert.assertEquals(
+ EntityState.PERSISTABLE_ATTACHED,
+ entityState,
+ ()-> String.format("entity %s is required to be attached (not detached) at this stage",
+ managedObject.getSpecification().getSpecId()));
+ }
return managedObject;
}
- val objectIdentifier = identify(managedObject)
- .map(RootOid::getIdentifier);
-
- if(!objectIdentifier.isPresent()) {
- return managedObject;
+ @Nullable
+ public static ManagedObject reattach(@Nullable ManagedObject managedObject) {
+ if(isNullOrUnspecifiedOrEmpty(managedObject)) {
+ return managedObject;
+ }
+ val entityState = EntityUtil.getEntityState(managedObject);
+ if(!entityState.isPersistable()) {
+ return managedObject;
+ }
+ if(!entityState.isDetached()) {
+ return managedObject;
+ }
+
+ val objectIdentifier = identify(managedObject)
+ .map(RootOid::getIdentifier);
+
+ if(!objectIdentifier.isPresent()) {
+ return managedObject;
+ }
+
+ val objectLoadRequest = ObjectLoader.Request.of(
+ managedObject.getSpecification(),
+ objectIdentifier.get());
+
+ return managedObject.getObjectManager().loadObject(objectLoadRequest);
}
- val objectLoadRequest = ObjectLoader.Request.of(
- managedObject.getSpecification(),
- objectIdentifier.get());
+ // -- SHORTCUTS
+
+ public static boolean isDestroyed(@Nullable ManagedObject adapter) {
+ return EntityUtil.getEntityState(adapter).isDestroyed();
+ }
- return managedObject.getObjectManager().loadObject(objectLoadRequest);
}
// -- VISIBILITY UTIL
@@ -367,7 +375,7 @@ public final class ManagedObjects {
}
val spec = adapter.getSpecification();
if(spec.isEntity()) {
- if(ManagedObject._isDestroyed(adapter)) {
+ if(EntityUtil.isDestroyed(adapter)) {
return false;
}
}
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/transaction/ChangedObjectsService.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/transaction/ChangedObjectsService.java
index 1350387..fb25302 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/transaction/ChangedObjectsService.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/transaction/ChangedObjectsService.java
@@ -38,6 +38,7 @@ import org.apache.isis.applib.services.TransactionScopeListener;
import org.apache.isis.core.commons.internal.collections._Maps;
import org.apache.isis.core.commons.internal.collections._Sets;
import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects.EntityUtil;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
@@ -222,7 +223,7 @@ public class ChangedObjectsService implements TransactionScopeListener {
val preAndPostValues = changedObjectProperties.remove(adapterAndProperty);
ManagedObject adapter = adapterAndProperty.getAdapter();
- if(ManagedObject._isDestroyed(adapter)) {
+ if(EntityUtil.isDestroyed(adapter)) {
// don't touch the object!!!
// JDO, for example, will complain otherwise...
preAndPostValues.setPost(IsisTransactionPlaceholder.DELETED);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
index c70bd0b..c54d214 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
@@ -49,6 +49,7 @@ import org.apache.isis.core.commons.internal.exceptions._Exceptions;
import org.apache.isis.core.metamodel.facets.actions.redirect.RedirectFacet;
import org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacet;
import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects.EntityUtil;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
import org.apache.isis.core.runtime.events.RuntimeEventService;
import org.apache.isis.core.runtime.iactn.IsisInteractionFactory;
@@ -156,7 +157,7 @@ implements FormExecutor {
// update target, since version updated (concurrency checks)
targetAdapter = targetEntityModel.getManagedObject();
- if(!ManagedObject._isDestroyed(targetAdapter)) {
+ if(!EntityUtil.isDestroyed(targetAdapter)) {
targetEntityModel.resetPropertyModels();
}
@@ -185,7 +186,7 @@ implements FormExecutor {
targetEntityModel.setObject(resultAdapter);
targetAdapter = targetEntityModel.getManagedObject();
}
- if(!ManagedObject._isDestroyed(targetAdapter)) {
+ if(!EntityUtil.isDestroyed(targetAdapter)) {
targetEntityModel.resetPropertyModels();
}