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);