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 2021/03/17 11:31:36 UTC
[isis] branch master updated: ISIS-2577: invoke property clearing
with non-null value adapter
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 cb5a32d ISIS-2577: invoke property clearing with non-null value adapter
cb5a32d is described below
commit cb5a32d22c804baf6939ec4c0ff4e4bc33a13a12
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Mar 17 12:31:26 2021 +0100
ISIS-2577: invoke property clearing with non-null value adapter
---
...tySetterOrClearFacetForDomainEventAbstract.java | 26 +++++++++++++++-------
.../update/clear/PropertyClearFacet.java | 10 ++-------
...earFacet.java => PropertyClearingAccessor.java} | 10 +++------
.../update/modify/PropertySetterFacet.java | 17 +-------------
...tterFacet.java => PropertySettingAccessor.java} | 16 +++----------
5 files changed, 27 insertions(+), 52 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterOrClearFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterOrClearFacetForDomainEventAbstract.java
index d930757..f3d77e4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterOrClearFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterOrClearFacetForDomainEventAbstract.java
@@ -34,7 +34,9 @@ import org.apache.isis.core.metamodel.facets.SingleValueFacetAbstract;
import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacet;
+import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearingAccessor;
import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
+import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySettingAccessor;
import org.apache.isis.core.metamodel.interactions.InteractionHead;
import org.apache.isis.core.metamodel.services.ixn.InteractionDtoFactory;
import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -43,11 +45,15 @@ import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import static org.apache.isis.commons.internal.base._Casts.uncheckedCast;
+import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.val;
public abstract class PropertySetterOrClearFacetForDomainEventAbstract
-extends SingleValueFacetAbstract<Class<? extends PropertyDomainEvent<?,?>>> {
+extends SingleValueFacetAbstract<Class<? extends PropertyDomainEvent<?,?>>>
+implements
+ PropertyClearingAccessor,
+ PropertySettingAccessor {
private final DomainEventHelper domainEventHelper;
@@ -120,16 +126,20 @@ extends SingleValueFacetAbstract<Class<? extends PropertyDomainEvent<?,?>>> {
final InteractionInitiatedBy interactionInitiatedBy);
}
+ @Override
public ManagedObject clearProperty(
final OneToOneAssociation owningProperty,
final ManagedObject targetAdapter,
final InteractionInitiatedBy interactionInitiatedBy) {
-
+
+ val emptyValueAdapter = ManagedObject.empty(owningProperty.getSpecification());
+
return setOrClearProperty(EditingVariant.CLEAR,
- owningProperty, targetAdapter, /*newValueAdapter*/ null, interactionInitiatedBy);
+ owningProperty, targetAdapter, emptyValueAdapter, interactionInitiatedBy);
}
+ @Override
public ManagedObject setProperty(
final OneToOneAssociation owningProperty,
final ManagedObject targetAdapter,
@@ -142,11 +152,11 @@ extends SingleValueFacetAbstract<Class<? extends PropertyDomainEvent<?,?>>> {
}
private ManagedObject setOrClearProperty(
- final EditingVariant style,
- final OneToOneAssociation owningProperty,
- final ManagedObject targetAdapter,
- final ManagedObject newValueAdapter,
- final InteractionInitiatedBy interactionInitiatedBy) {
+ final @NonNull EditingVariant style,
+ final @NonNull OneToOneAssociation owningProperty,
+ final @NonNull ManagedObject targetAdapter,
+ final @NonNull ManagedObject newValueAdapter,
+ final @NonNull InteractionInitiatedBy interactionInitiatedBy) {
return getTransactionService()
.callWithinCurrentTransactionElseCreateNew(() ->
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacet.java
index 9b6f16e..44576a4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacet.java
@@ -19,10 +19,7 @@
package org.apache.isis.core.metamodel.facets.properties.update.clear;
-import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
/**
* Mechanism for clearing a property of an object (that is, setting it to
@@ -34,10 +31,7 @@ import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
* fallback the standard model also supports invoking the <tt>setXxx</tt> method
* with <tt>null</tt>.
*/
-public interface PropertyClearFacet extends Facet {
+public interface PropertyClearFacet extends PropertyClearingAccessor, Facet {
- ManagedObject clearProperty(
- final OneToOneAssociation owningProperty,
- final ManagedObject targetAdapter,
- final InteractionInitiatedBy interactionInitiatedBy);
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearingAccessor.java
similarity index 82%
copy from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacet.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearingAccessor.java
index 9b6f16e..f74917c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearingAccessor.java
@@ -27,14 +27,10 @@ import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
/**
* Mechanism for clearing a property of an object (that is, setting it to
* <tt>null</tt>).
- *
- * <p>
- * In the standard Apache Isis Programming Model, typically corresponds to a
- * method named <tt>clearXxx</tt> (for a property <tt>getXxx</tt>). As a
- * fallback the standard model also supports invoking the <tt>setXxx</tt> method
- * with <tt>null</tt>.
+ * @see PropertyClearFacet
+ * @since 2.0
*/
-public interface PropertyClearFacet extends Facet {
+public interface PropertyClearingAccessor extends Facet {
ManagedObject clearProperty(
final OneToOneAssociation owningProperty,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/modify/PropertySetterFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/modify/PropertySetterFacet.java
index 166bfb1..7268af5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/modify/PropertySetterFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/modify/PropertySetterFacet.java
@@ -19,13 +19,10 @@
package org.apache.isis.core.metamodel.facets.properties.update.modify;
-import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacet;
import org.apache.isis.core.metamodel.facets.properties.update.init.PropertyInitializationFacet;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
/**
* The mechanism by which the value of the property can be set.
@@ -38,18 +35,6 @@ import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
* @see PropertyClearFacet
* @see PropertyInitializationFacet
*/
-public interface PropertySetterFacet extends Facet {
+public interface PropertySetterFacet extends PropertySettingAccessor, Facet {
- /**
- * Sets the value of this property.
- *
- * <p>
- * If this is a view model, then the target will be cloned and effectively replaced.
- * </p>
- */
- ManagedObject setProperty(
- final OneToOneAssociation owningAssociation,
- final ManagedObject inObject,
- final ManagedObject value,
- final InteractionInitiatedBy interactionInitiatedBy);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/modify/PropertySetterFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/modify/PropertySettingAccessor.java
similarity index 71%
copy from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/modify/PropertySetterFacet.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/modify/PropertySettingAccessor.java
index 166bfb1..71d0c7d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/modify/PropertySetterFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/modify/PropertySettingAccessor.java
@@ -20,25 +20,15 @@
package org.apache.isis.core.metamodel.facets.properties.update.modify;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
-import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacet;
-import org.apache.isis.core.metamodel.facets.properties.update.init.PropertyInitializationFacet;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
/**
* The mechanism by which the value of the property can be set.
- *
- * <p>
- * In the standard Apache Isis Programming Model, corresponds to invoking the
- * mutator method for a property.
- *
- * @see PropertyOrCollectionAccessorFacet
- * @see PropertyClearFacet
- * @see PropertyInitializationFacet
+ * @see PropertySetterFacet
+ * @since 2.0
*/
-public interface PropertySetterFacet extends Facet {
+public interface PropertySettingAccessor {
/**
* Sets the value of this property.