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

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


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

commit f8b03e29eda5be533dc76aedc82ec22fe7281810
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 0015b2b5709..002ac4e75b8 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
@@ -71,6 +71,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;
@@ -880,7 +881,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