This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/causeway.git


The following commit(s) were added to refs/heads/main by this push:
     new be7dcc4103d CAUSEWAY-3938: handle uninitialized mandatory editable 
properties
be7dcc4103d is described below

commit be7dcc4103dd958edb6e916895153367a40b4368
Author: Andi Huber <[email protected]>
AuthorDate: Wed Oct 29 14:42:04 2025 +0100

    CAUSEWAY-3938: handle uninitialized mandatory editable properties
---
 .../metamodel/interactions/managed/PropertyNegotiationModel.java   | 2 +-
 .../testdomain/util/interaction/DomainObjectTesterFactory.java     | 7 ++++++-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/interactions/managed/PropertyNegotiationModel.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/interactions/managed/PropertyNegotiationModel.java
index 7eb7773c352..a89932ab25c 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/interactions/managed/PropertyNegotiationModel.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/interactions/managed/PropertyNegotiationModel.java
@@ -65,7 +65,7 @@ public class PropertyNegotiationModel implements ManagedValue 
{
         var currentValue = managedProperty.getPropertyValue();
         var defaultValue = 
ManagedObjects.isNullOrUnspecifiedOrEmpty(currentValue)
             ? propMeta.isMandatory()
-                    ? propMeta.getDefault(managedProperty.getOwner())
+                    ? ManagedObjects.nullToEmpty(getElementType(), 
propMeta.getDefault(managedProperty.getOwner()))
                     : ManagedObjects.nullToEmpty(getElementType(), 
currentValue)
             : currentValue;
 
diff --git 
a/regressiontests/base/src/main/java/org/apache/causeway/testdomain/util/interaction/DomainObjectTesterFactory.java
 
b/regressiontests/base/src/main/java/org/apache/causeway/testdomain/util/interaction/DomainObjectTesterFactory.java
index 51557c96a23..4e89f0813a0 100644
--- 
a/regressiontests/base/src/main/java/org/apache/causeway/testdomain/util/interaction/DomainObjectTesterFactory.java
+++ 
b/regressiontests/base/src/main/java/org/apache/causeway/testdomain/util/interaction/DomainObjectTesterFactory.java
@@ -73,6 +73,7 @@
 import 
org.apache.causeway.core.metamodel.interactions.managed.PropertyInteraction;
 import 
org.apache.causeway.core.metamodel.interactions.managed.PropertyNegotiationModel;
 import org.apache.causeway.core.metamodel.object.ManagedObject;
+import org.apache.causeway.core.metamodel.object.ManagedObjects;
 import org.apache.causeway.core.metamodel.object.MmUnwrapUtils;
 import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
 import org.apache.causeway.core.metamodel.spec.feature.ObjectAction;
@@ -883,7 +884,11 @@ public void assertValueUpdateUsingNegotiationTextual(
                     var propNeg = managedProperty.startNegotiation();
                     var initialValue = managedProperty.getPropertyValue();
 
-                    assertEquals(initialValue, propNeg.getValue().getValue());
+                    
if(ManagedObjects.isNullOrUnspecifiedOrEmpty(initialValue)) {
+                        
assertTrue(ManagedObjects.isNullOrUnspecifiedOrEmpty(propNeg.getValue().getValue()));
+                    } else {
+                        assertEquals(initialValue, 
propNeg.getValue().getValue());
+                    }
 
                     
propNeg.getValueAsParsableText().setValue(parsableProposedValue);
 

Reply via email to