This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch CAUSEWAY-2485
in repository https://gitbox.apache.org/repos/asf/causeway.git
The following commit(s) were added to refs/heads/CAUSEWAY-2485 by this push:
new 8ca10b3165 CAUSEWAY-2485: update clob, blob, passwords - all generated
from showcase type generator.
8ca10b3165 is described below
commit 8ca10b3165d142ab1e108111548e38df29c5a4b4
Author: danhaywood <[email protected]>
AuthorDate: Thu May 18 07:19:53 2023 +0100
CAUSEWAY-2485: update clob, blob, passwords - all generated from showcase
type generator.
---
.../types/causeway/blobs/CausewayBlobs-common.adoc | 4 +-
.../causeway/blobs/CausewayBlobs-description.adoc | 1 +
.../dom/types/causeway/blobs/CausewayBlobs.java | 1 +
.../types/causeway/blobs/CausewayBlobs.layout.xml | 24 ++++++------
.../causeway/blobs/holder/CausewayBlobHolder2.java | 2 +-
.../holder/CausewayBlobHolder_actionReturning.java | 2 +-
...usewayBlobHolder_actionReturningCollection.java | 3 +-
.../holder/CausewayBlobHolder_mixinProperty.java | 2 +-
...yBlobHolder_updateReadOnlyOptionalProperty.java | 1 +
...updateReadOnlyOptionalPropertyWithChoices.java} | 15 +++++---
.../CausewayBlobHolder_updateReadOnlyProperty.java | 1 +
...obHolder_updateReadOnlyPropertyWithChoices.java | 2 +
.../dom/types/causeway/blobs/jdo/package-info.java | 0
.../dom/types/causeway/blobs/jpa/package-info.java | 0
.../blobs/persistence/CausewayBlobEntity.java | 3 +-
.../persistence/CausewayBlobEntity.layout.xml | 24 ++++++------
.../CausewayBlobSamples.java} | 25 ++++++-------
.../blobs/vm/CausewayBlobVm-description.adoc | 2 +-
.../types/causeway/blobs/vm/CausewayBlobVm.java | 8 ++--
.../causeway/blobs/vm/CausewayBlobVm.layout.xml | 28 +++++++-------
.../types/causeway/clobs/CausewayClobs-common.adoc | 3 +-
.../causeway/clobs/CausewayClobs-description.adoc | 25 ++++++-------
.../dom/types/causeway/clobs/CausewayClobs.java | 1 +
.../types/causeway/clobs/CausewayClobs.layout.xml | 24 ++++++------
.../causeway/clobs/holder/CausewayClobHolder2.java | 2 +-
.../holder/CausewayClobHolder_actionReturning.java | 2 +-
...usewayClobHolder_actionReturningCollection.java | 3 +-
.../holder/CausewayClobHolder_mixinProperty.java | 2 +-
...yClobHolder_updateReadOnlyOptionalProperty.java | 7 ++--
...updateReadOnlyOptionalPropertyWithChoices.java} | 15 +++++---
.../CausewayClobHolder_updateReadOnlyProperty.java | 1 +
...obHolder_updateReadOnlyPropertyWithChoices.java | 2 +
.../clobs/persistence/CausewayClobEntity.java | 3 +-
.../persistence/CausewayClobEntity.layout.xml | 24 ++++++------
.../CausewayClobSamples.java} | 25 ++++++-------
.../types/causeway/clobs/vm/CausewayClobVm.java | 1 +
.../causeway/clobs/vm/CausewayClobVm.layout.xml | 28 +++++++-------
.../passwords/CausewayPasswords-common.adoc | 3 +-
.../passwords/CausewayPasswords-description.adoc | 23 +++++-------
.../causeway/passwords/CausewayPasswords.java | 2 +-
.../passwords/CausewayPasswords.layout.xml | 24 ++++++------
.../passwords/holder/CausewayPasswordHolder2.java | 2 +-
.../CausewayPasswordHolder_actionReturning.java | 2 +-
...ayPasswordHolder_actionReturningCollection.java | 3 +-
.../CausewayPasswordHolder_mixinProperty.java | 2 +-
...swordHolder_updateReadOnlyOptionalProperty.java | 1 +
...updateReadOnlyOptionalPropertyWithChoices.java} | 26 ++++++++++---
...sewayPasswordHolder_updateReadOnlyProperty.java | 1 +
...rdHolder_updateReadOnlyPropertyWithChoices.java | 3 +-
.../jdo/CausewayPasswordJdo-description.adoc | 2 +-
.../passwords/jdo/CausewayPasswordJdo.java | 1 +
.../jpa/CausewayPasswordJpa-description.adoc | 13 ++-----
.../passwords/jpa/CausewayPasswordJpa.java | 5 ++-
.../persistence/CausewayPasswordEntity.java | 36 +-----------------
.../persistence/CausewayPasswordEntity.layout.xml | 24 ++++++------
.../CausewayPasswordEntity_checkPassword.java} | 40 ++++++++++----------
.../CausewayPasswordEntity_showPassword.java} | 43 ++++++++++------------
.../passwords/persistence/package-info.java | 4 ++
.../CausewayPasswordSamples.java} | 25 ++++++-------
.../vm/CausewayPasswordVm-description.adoc | 10 ++++-
.../causeway/passwords/vm/CausewayPasswordVm.java | 5 +++
.../main/java/demoapp/dom/types/package-info.java | 8 ++++
62 files changed, 321 insertions(+), 303 deletions(-)
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/CausewayBlobs-common.adoc
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/CausewayBlobs-common.adoc
index 5330a0413b..783a0cce6f 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/CausewayBlobs-common.adoc
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/CausewayBlobs-common.adoc
@@ -45,9 +45,10 @@ We also use the interface to contribute a mixin property:
include::holder/CausewayBlobHolder_mixinProperty.java[tags=class]
----
+
== @PropertyLayout(labelPosition=...)
-There is also an extended interface, `CausewayBlobHolder2`, with default
methods demonstrating the use of label positions:
+To demonstrate support for label positions using
`@PropertyLayout(labelPosition=...)`, the entity and view model objects both
implement the extended `CausewayBlobHolder2` interface:
[source,java]
----
@@ -63,4 +64,3 @@ include::holder/CausewayBlobHolder2.java[tags=class]
CAUTION: currently not supported
<.> Hide the label completely.
-
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/CausewayBlobs-description.adoc
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/CausewayBlobs-description.adoc
index 15d03cfb70..bc35aecaeb 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/CausewayBlobs-description.adoc
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/CausewayBlobs-description.adoc
@@ -1,6 +1,7 @@
:Notice: Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with this work
for additional information regarding copyright ownership. The ASF licenses this
file to you under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy of
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by
applicable law or ag [...]
The framework has built-in support for binary large objects, using the `Blob`
data type.
+These can be used either in entities or view models.
NOTE: This is an Apache Causeway specific data type.
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/CausewayBlobs.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/CausewayBlobs.java
index 91e5329201..297235f4ef 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/CausewayBlobs.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/CausewayBlobs.java
@@ -38,6 +38,7 @@ import org.apache.causeway.applib.annotation.Nature;
import org.apache.causeway.applib.annotation.ObjectSupport;
import org.apache.causeway.applib.annotation.PromptStyle;
import org.apache.causeway.applib.annotation.SemanticsOf;
+
import org.apache.causeway.applib.value.Blob;
import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/CausewayBlobs.layout.xml
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/CausewayBlobs.layout.xml
index cec7bca2dc..671874816c 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/CausewayBlobs.layout.xml
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/CausewayBlobs.layout.xml
@@ -38,18 +38,18 @@
</bs3:col>
<bs3:col span="6">
<cpt:fieldSet name="Description" id="description" >
- <cpt:action id="clearHints" position="PANEL" />
- <cpt:action id="rebuildMetamodel"
position="PANEL"/>
- <cpt:action id="downloadLayout"
position="PANEL_DROPDOWN"/>
- <cpt:action id="inspectMetamodel"
position="PANEL_DROPDOWN"/>
- <cpt:action id="downloadMetamodelXml"
position="PANEL_DROPDOWN"/>
- <cpt:action id="downloadJdoMetamodel"
position="PANEL_DROPDOWN"/>
- <cpt:action id="recentCommands"
position="PANEL_DROPDOWN"/>
- <cpt:action id="recentExecutions"
position="PANEL_DROPDOWN"/>
- <cpt:action id="recentAuditTrailEntries"
position="PANEL_DROPDOWN"/>
- <cpt:action id="impersonateWithRoles"
position="PANEL_DROPDOWN"/>
- <cpt:action id="openRestApi"
position="PANEL_DROPDOWN" />
- <cpt:property id="description"/>
+ <cpt:action id="clearHints" position="PANEL" />
+ <cpt:action id="rebuildMetamodel" position="PANEL"/>
+ <cpt:action id="downloadLayout" position="PANEL_DROPDOWN"/>
+ <cpt:action id="inspectMetamodel" position="PANEL_DROPDOWN"/>
+ <cpt:action id="downloadMetamodelXml"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="downloadJdoMetamodel"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="recentCommands" position="PANEL_DROPDOWN"/>
+ <cpt:action id="recentExecutions" position="PANEL_DROPDOWN"/>
+ <cpt:action id="recentAuditTrailEntries"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="impersonateWithRoles"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+ <cpt:property id="description"/>
</cpt:fieldSet>
</bs3:col>
</bs3:row>
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder2.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder2.java
index 9ffd521c81..450623e1ac 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder2.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder2.java
@@ -33,7 +33,7 @@ public interface CausewayBlobHolder2 extends
CausewayBlobHolder {
describedAs =
"@PropertyLayout(labelPosition=LEFT)",
hidden = Where.ALL_TABLES,
- fieldSetId = "label-positions", sequence = "1") // <.>
+ fieldSetId = "label-positions", sequence = "1") // <.>
default Blob getReadOnlyPropertyDerivedLabelPositionLeft() {
return getReadOnlyProperty();
}
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_actionReturning.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_actionReturning.java
index 5377796048..fac12a7f28 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_actionReturning.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_actionReturning.java
@@ -20,11 +20,11 @@ package demoapp.dom.types.causeway.blobs.holder;
import org.apache.causeway.applib.annotation.Action;
import org.apache.causeway.applib.annotation.SemanticsOf;
+
import org.apache.causeway.applib.value.Blob;
import lombok.RequiredArgsConstructor;
-
//tag::class[]
@Action(semantics = SemanticsOf.SAFE)
@RequiredArgsConstructor
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_actionReturningCollection.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_actionReturningCollection.java
index 460828a2d3..79345cb6db 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_actionReturningCollection.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_actionReturningCollection.java
@@ -25,13 +25,13 @@ import javax.inject.Inject;
import org.apache.causeway.applib.annotation.Action;
import org.apache.causeway.applib.annotation.SemanticsOf;
+
import org.apache.causeway.applib.value.Blob;
import lombok.RequiredArgsConstructor;
import demoapp.dom.types.Samples;
-
//tag::class[]
@Action(semantics = SemanticsOf.SAFE)
@RequiredArgsConstructor
@@ -46,5 +46,6 @@ public class CausewayBlobHolder_actionReturningCollection {
@Inject
Samples<Blob> samples;
+
}
//end::class[]
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_mixinProperty.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_mixinProperty.java
index 29feb4e771..3b602597f4 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_mixinProperty.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_mixinProperty.java
@@ -21,11 +21,11 @@ package demoapp.dom.types.causeway.blobs.holder;
import org.apache.causeway.applib.annotation.Property;
import org.apache.causeway.applib.annotation.PropertyLayout;
import org.apache.causeway.applib.annotation.Where;
+
import org.apache.causeway.applib.value.Blob;
import lombok.RequiredArgsConstructor;
-
//tag::class[]
@Property()
@PropertyLayout(hidden = Where.ALL_TABLES, fieldSetId = "contributed",
sequence = "1")
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_updateReadOnlyOptionalProperty.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_updateReadOnlyOptionalProperty.java
index 85a31eab7f..6caa77ce72 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_updateReadOnlyOptionalProperty.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_updateReadOnlyOptionalProperty.java
@@ -25,6 +25,7 @@ import org.apache.causeway.applib.annotation.Optionality;
import org.apache.causeway.applib.annotation.Parameter;
import org.apache.causeway.applib.annotation.PromptStyle;
import org.apache.causeway.applib.annotation.SemanticsOf;
+
import org.apache.causeway.applib.value.Blob;
import lombok.RequiredArgsConstructor;
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_updateReadOnlyPropertyWithChoices.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_updateReadOnlyOptionalPropertyWithChoices.java
similarity index 79%
copy from
examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_updateReadOnlyPropertyWithChoices.java
copy to
examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_updateReadOnlyOptionalPropertyWithChoices.java
index 3a27f0e89a..e7456312e0 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_updateReadOnlyPropertyWithChoices.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_updateReadOnlyOptionalPropertyWithChoices.java
@@ -26,8 +26,11 @@ import javax.inject.Inject;
import org.apache.causeway.applib.annotation.Action;
import org.apache.causeway.applib.annotation.ActionLayout;
import org.apache.causeway.applib.annotation.MemberSupport;
+import org.apache.causeway.applib.annotation.Optionality;
+import org.apache.causeway.applib.annotation.Parameter;
import org.apache.causeway.applib.annotation.PromptStyle;
import org.apache.causeway.applib.annotation.SemanticsOf;
+
import org.apache.causeway.applib.value.Blob;
import lombok.RequiredArgsConstructor;
@@ -41,20 +44,22 @@ import demoapp.dom.types.Samples;
@ActionLayout(
promptStyle = PromptStyle.INLINE
, named = "Update with choices"
- , associateWith = "readOnlyProperty"
+ , associateWith = "readOnlyOptionalProperty"
, sequence = "2")
@RequiredArgsConstructor
-public class CausewayBlobHolder_updateReadOnlyPropertyWithChoices {
+public class CausewayBlobHolder_updateReadOnlyOptionalPropertyWithChoices {
private final CausewayBlobHolder holder;
- @MemberSupport public CausewayBlobHolder act(final Blob newValue) {
- holder.setReadOnlyProperty(newValue);
+ @MemberSupport public CausewayBlobHolder act(
+ @Parameter(optionality = Optionality.OPTIONAL)
+ final Blob newValue) {
+ holder.setReadOnlyOptionalProperty(newValue);
return holder;
}
@MemberSupport public Blob default0Act() {
- return holder.getReadOnlyProperty();
+ return holder.getReadOnlyOptionalProperty();
}
@MemberSupport public List<Blob> choices0Act() {
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_updateReadOnlyProperty.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_updateReadOnlyProperty.java
index 325cf52bf8..048658ab00 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_updateReadOnlyProperty.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_updateReadOnlyProperty.java
@@ -23,6 +23,7 @@ import org.apache.causeway.applib.annotation.ActionLayout;
import org.apache.causeway.applib.annotation.MemberSupport;
import org.apache.causeway.applib.annotation.PromptStyle;
import org.apache.causeway.applib.annotation.SemanticsOf;
+
import org.apache.causeway.applib.value.Blob;
import lombok.RequiredArgsConstructor;
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_updateReadOnlyPropertyWithChoices.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_updateReadOnlyPropertyWithChoices.java
index 3a27f0e89a..e3a5a65771 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_updateReadOnlyPropertyWithChoices.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_updateReadOnlyPropertyWithChoices.java
@@ -28,6 +28,7 @@ import org.apache.causeway.applib.annotation.ActionLayout;
import org.apache.causeway.applib.annotation.MemberSupport;
import org.apache.causeway.applib.annotation.PromptStyle;
import org.apache.causeway.applib.annotation.SemanticsOf;
+
import org.apache.causeway.applib.value.Blob;
import lombok.RequiredArgsConstructor;
@@ -64,5 +65,6 @@ public class
CausewayBlobHolder_updateReadOnlyPropertyWithChoices {
@Inject
Samples<Blob> samples;
+
}
//end::class[]
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/jdo/package-info.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/jdo/package-info.java
new file mode 100644
index 0000000000..e69de29bb2
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/jpa/package-info.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/jpa/package-info.java
new file mode 100644
index 0000000000..e69de29bb2
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/persistence/CausewayBlobEntity.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/persistence/CausewayBlobEntity.java
index 345d11055c..c9102a34c3 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/persistence/CausewayBlobEntity.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/persistence/CausewayBlobEntity.java
@@ -21,12 +21,13 @@ package demoapp.dom.types.causeway.blobs.persistence;
import javax.inject.Named;
import org.apache.causeway.applib.annotation.DomainObject;
-import org.apache.causeway.applib.value.Blob;
import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
import demoapp.dom._infra.values.ValueHolder;
import demoapp.dom.types.causeway.blobs.holder.CausewayBlobHolder2;
+import org.apache.causeway.applib.value.Blob;
+
@Named("demo.CausewayBlobEntity") // shared permissions with concrete sub class
@DomainObject
public abstract class CausewayBlobEntity
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/persistence/CausewayBlobEntity.layout.xml
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/persistence/CausewayBlobEntity.layout.xml
index 11fa6d38b2..e126ed4493 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/persistence/CausewayBlobEntity.layout.xml
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/persistence/CausewayBlobEntity.layout.xml
@@ -37,18 +37,18 @@
</bs3:col>
<bs3:col span="6">
<cpt:fieldSet name="Description" id="description" >
- <cpt:action id="clearHints" position="PANEL" />
- <cpt:action id="rebuildMetamodel"
position="PANEL"/>
- <cpt:action id="downloadLayout"
position="PANEL_DROPDOWN"/>
- <cpt:action id="inspectMetamodel"
position="PANEL_DROPDOWN"/>
- <cpt:action id="downloadMetamodelXml"
position="PANEL_DROPDOWN"/>
- <cpt:action id="downloadJdoMetamodel"
position="PANEL_DROPDOWN"/>
- <cpt:action id="recentCommands"
position="PANEL_DROPDOWN"/>
- <cpt:action id="recentExecutions"
position="PANEL_DROPDOWN"/>
- <cpt:action id="recentAuditTrailEntries"
position="PANEL_DROPDOWN"/>
- <cpt:action id="impersonateWithRoles"
position="PANEL_DROPDOWN"/>
- <cpt:action id="openRestApi"
position="PANEL_DROPDOWN" />
- <cpt:property id="description"/>
+ <cpt:action id="clearHints" position="PANEL" />
+ <cpt:action id="rebuildMetamodel" position="PANEL"/>
+ <cpt:action id="downloadLayout" position="PANEL_DROPDOWN"/>
+ <cpt:action id="inspectMetamodel" position="PANEL_DROPDOWN"/>
+ <cpt:action id="downloadMetamodelXml"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="downloadJdoMetamodel"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="recentCommands" position="PANEL_DROPDOWN"/>
+ <cpt:action id="recentExecutions" position="PANEL_DROPDOWN"/>
+ <cpt:action id="recentAuditTrailEntries"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="impersonateWithRoles"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+ <cpt:property id="description"/>
</cpt:fieldSet>
</bs3:col>
</bs3:row>
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_actionReturning.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/samples/CausewayBlobSamples.java
similarity index 66%
copy from
examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_actionReturning.java
copy to
examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/samples/CausewayBlobSamples.java
index 5377796048..d1eaf0614c 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/holder/CausewayBlobHolder_actionReturning.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/samples/CausewayBlobSamples.java
@@ -16,25 +16,24 @@
* specific language governing permissions and limitations
* under the License.
*/
-package demoapp.dom.types.causeway.blobs.holder;
+package demoapp.dom.types.causeway.blobs.samples;
-import org.apache.causeway.applib.annotation.Action;
-import org.apache.causeway.applib.annotation.SemanticsOf;
-import org.apache.causeway.applib.value.Blob;
+import java.util.stream.Stream;
-import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.apache.causeway.applib.value.Blob;
-//tag::class[]
-@Action(semantics = SemanticsOf.SAFE)
-@RequiredArgsConstructor
-public class CausewayBlobHolder_actionReturning {
+import demoapp.dom.types.Samples;
- private final CausewayBlobHolder holder;
+@Service
+public class CausewayBlobSamples implements Samples<Blob> {
- public Blob act() {
- return holder.getReadOnlyProperty();
+ @Override
+ public Stream<Blob> stream() {
+ return new
org.apache.causeway.core.metamodel.valuesemantics.BlobValueSemantics()
+ .getExamples()
+ .stream();
}
}
-//end::class[]
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/vm/CausewayBlobVm-description.adoc
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/vm/CausewayBlobVm-description.adoc
index 9bf8be8be8..40e89b278a 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/vm/CausewayBlobVm-description.adoc
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/vm/CausewayBlobVm-description.adoc
@@ -1,6 +1,6 @@
:Notice: Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with this work
for additional information regarding copyright ownership. The ASF licenses this
file to you under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy of
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by
applicable law or ag [...]
-The Apache Causeway `Blob` value type provides its own implementation of
`@XmlJavaTypeAdapter`, meaning that JAXB can serialize the state of this value
type without any further annotations required on the view model itself:
+The Apache Causeway `Blob` value type provides its own implementation of
`@XmlJavaTypeAdapter`, meaning that JAXB can serialize the state of this value
type without any further annotations required on the view model itself.
[source,java]
----
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/vm/CausewayBlobVm.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/vm/CausewayBlobVm.java
index 8ec780a8cf..c0528a2e1e 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/vm/CausewayBlobVm.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/vm/CausewayBlobVm.java
@@ -28,10 +28,11 @@ import javax.xml.bind.annotation.XmlType;
import org.apache.causeway.applib.annotation.DomainObject;
import org.apache.causeway.applib.annotation.Editing;
import org.apache.causeway.applib.annotation.Nature;
-import org.apache.causeway.applib.annotation.ObjectSupport;
import org.apache.causeway.applib.annotation.Optionality;
import org.apache.causeway.applib.annotation.Property;
import org.apache.causeway.applib.annotation.PropertyLayout;
+import org.apache.causeway.applib.annotation.Title;
+
import org.apache.causeway.applib.value.Blob;
import lombok.Getter;
@@ -58,10 +59,7 @@ public class CausewayBlobVm
}
//tag::class[]
- @ObjectSupport public String title() {
- return "Blob view model: " +getReadOnlyProperty().getName();
- }
-
+ @Title(prepend = "Blob view model: ")
@PropertyLayout(fieldSetId = "read-only-properties", sequence = "1")
@XmlElement(required = true)
// <.>
@Getter @Setter
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/vm/CausewayBlobVm.layout.xml
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/vm/CausewayBlobVm.layout.xml
index 11fa6d38b2..1df6c2e346 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/vm/CausewayBlobVm.layout.xml
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/blobs/vm/CausewayBlobVm.layout.xml
@@ -36,20 +36,20 @@
<cpt:fieldSet name="Other" id="other"
unreferencedProperties="true"/>
</bs3:col>
<bs3:col span="6">
- <cpt:fieldSet name="Description" id="description" >
- <cpt:action id="clearHints" position="PANEL" />
- <cpt:action id="rebuildMetamodel"
position="PANEL"/>
- <cpt:action id="downloadLayout"
position="PANEL_DROPDOWN"/>
- <cpt:action id="inspectMetamodel"
position="PANEL_DROPDOWN"/>
- <cpt:action id="downloadMetamodelXml"
position="PANEL_DROPDOWN"/>
- <cpt:action id="downloadJdoMetamodel"
position="PANEL_DROPDOWN"/>
- <cpt:action id="recentCommands"
position="PANEL_DROPDOWN"/>
- <cpt:action id="recentExecutions"
position="PANEL_DROPDOWN"/>
- <cpt:action id="recentAuditTrailEntries"
position="PANEL_DROPDOWN"/>
- <cpt:action id="impersonateWithRoles"
position="PANEL_DROPDOWN"/>
- <cpt:action id="openRestApi"
position="PANEL_DROPDOWN" />
- <cpt:property id="description"/>
- </cpt:fieldSet>
+ <cpt:fieldSet name="Description" id="description" >
+ <cpt:action id="clearHints" position="PANEL" />
+ <cpt:action id="rebuildMetamodel" position="PANEL"/>
+ <cpt:action id="downloadLayout" position="PANEL_DROPDOWN"/>
+ <cpt:action id="inspectMetamodel" position="PANEL_DROPDOWN"/>
+ <cpt:action id="downloadMetamodelXml"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="downloadJdoMetamodel"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="recentCommands" position="PANEL_DROPDOWN"/>
+ <cpt:action id="recentExecutions" position="PANEL_DROPDOWN"/>
+ <cpt:action id="recentAuditTrailEntries"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="impersonateWithRoles"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+ <cpt:property id="description"/>
+ </cpt:fieldSet>
</bs3:col>
</bs3:row>
<bs3:row>
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/CausewayClobs-common.adoc
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/CausewayClobs-common.adoc
index 3e19d546d6..6175ad2b1d 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/CausewayClobs-common.adoc
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/CausewayClobs-common.adoc
@@ -48,7 +48,7 @@
include::holder/CausewayClobHolder_mixinProperty.java[tags=class]
== @PropertyLayout(labelPosition=...)
-There is also an extended interface, `CausewayClobHolder2`, with default
methods demonstrating the use of label positions:
+To demonstrate support for label positions using
`@PropertyLayout(labelPosition=...)`, the entity and view model objects both
implement the extended `CausewayClobHolder2` interface:
[source,java]
----
@@ -63,3 +63,4 @@ include::holder/CausewayClobHolder2.java[tags=class]
+
CAUTION: currently not supported
<.> Hide the label completely.
+
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/CausewayClobs-description.adoc
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/CausewayClobs-description.adoc
index 75faafdf0b..761c4a158f 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/CausewayClobs-description.adoc
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/CausewayClobs-description.adoc
@@ -1,31 +1,28 @@
:Notice: Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with this work
for additional information regarding copyright ownership. The ASF licenses this
file to you under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy of
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by
applicable law or ag [...]
-The framework has built-in support for character large objects, using the
`Clob` data type .
+The framework has built-in support for character large objects, using the
`Clob` data type.
+These can be used either in entities or view models.
NOTE: This is an Apache Causeway specific data type.
-From here you can:
+== How this demo works
-* navigate to an entity that uses the `Clob` datatype
-* open a view model that uses the `Clob` datatype
+On the left hand side is a collection of entities that uses the `Clob`
datatype.
+There is also an action that opens a view model; this view model also uses the
`Clob` datatype.
-Some properties on these domain objects are mandatory, some optional.
+Navigate into the entity or view model to see the datatype used as a property,
an action parameter and as a return type of collections, along with code
samples.
-== Common interfaces
+=== Implementation Notes
-The entity and view model types both implement some common interfaces.
-
-=== CausewayClobHolder
-
-The `CausewayClobHolder` interface is used to contribute a number of mixins to
both types:
+The entity and view model types both implement some common interfaces:
+* The `CausewayClobHolder` interface is used to contribute a number of mixins
to both types:
++
[source,java]
----
include::holder/CausewayClobHolder.java[tags=class]
----
-=== CausewayClobHolder2
-
-The `CausewayClobHolder2` interface is used to demonstrate support for label
positions using `@PropertyLayout(labelPosition=...)`.
+* The `CausewayClobHolder2` interface is used to demonstrate support for label
positions using `@PropertyLayout(labelPosition=...)`.
Further details, along with the effect of this annotation, can be seen on the
entity and view model object pages.
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/CausewayClobs.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/CausewayClobs.java
index 5c3c26c2e5..57187199e3 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/CausewayClobs.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/CausewayClobs.java
@@ -38,6 +38,7 @@ import org.apache.causeway.applib.annotation.Nature;
import org.apache.causeway.applib.annotation.ObjectSupport;
import org.apache.causeway.applib.annotation.PromptStyle;
import org.apache.causeway.applib.annotation.SemanticsOf;
+
import org.apache.causeway.applib.value.Clob;
import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/CausewayClobs.layout.xml
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/CausewayClobs.layout.xml
index cec7bca2dc..671874816c 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/CausewayClobs.layout.xml
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/CausewayClobs.layout.xml
@@ -38,18 +38,18 @@
</bs3:col>
<bs3:col span="6">
<cpt:fieldSet name="Description" id="description" >
- <cpt:action id="clearHints" position="PANEL" />
- <cpt:action id="rebuildMetamodel"
position="PANEL"/>
- <cpt:action id="downloadLayout"
position="PANEL_DROPDOWN"/>
- <cpt:action id="inspectMetamodel"
position="PANEL_DROPDOWN"/>
- <cpt:action id="downloadMetamodelXml"
position="PANEL_DROPDOWN"/>
- <cpt:action id="downloadJdoMetamodel"
position="PANEL_DROPDOWN"/>
- <cpt:action id="recentCommands"
position="PANEL_DROPDOWN"/>
- <cpt:action id="recentExecutions"
position="PANEL_DROPDOWN"/>
- <cpt:action id="recentAuditTrailEntries"
position="PANEL_DROPDOWN"/>
- <cpt:action id="impersonateWithRoles"
position="PANEL_DROPDOWN"/>
- <cpt:action id="openRestApi"
position="PANEL_DROPDOWN" />
- <cpt:property id="description"/>
+ <cpt:action id="clearHints" position="PANEL" />
+ <cpt:action id="rebuildMetamodel" position="PANEL"/>
+ <cpt:action id="downloadLayout" position="PANEL_DROPDOWN"/>
+ <cpt:action id="inspectMetamodel" position="PANEL_DROPDOWN"/>
+ <cpt:action id="downloadMetamodelXml"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="downloadJdoMetamodel"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="recentCommands" position="PANEL_DROPDOWN"/>
+ <cpt:action id="recentExecutions" position="PANEL_DROPDOWN"/>
+ <cpt:action id="recentAuditTrailEntries"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="impersonateWithRoles"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+ <cpt:property id="description"/>
</cpt:fieldSet>
</bs3:col>
</bs3:row>
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder2.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder2.java
index 8b9bf4fdb7..a78c78907f 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder2.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder2.java
@@ -33,7 +33,7 @@ public interface CausewayClobHolder2 extends
CausewayClobHolder {
describedAs =
"@PropertyLayout(labelPosition=LEFT)",
hidden = Where.ALL_TABLES,
- fieldSetId = "label-positions", sequence = "1") // <.>
+ fieldSetId = "label-positions", sequence = "1") // <.>
default Clob getReadOnlyPropertyDerivedLabelPositionLeft() {
return getReadOnlyProperty();
}
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_actionReturning.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_actionReturning.java
index 0da63cf910..980123655e 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_actionReturning.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_actionReturning.java
@@ -20,11 +20,11 @@ package demoapp.dom.types.causeway.clobs.holder;
import org.apache.causeway.applib.annotation.Action;
import org.apache.causeway.applib.annotation.SemanticsOf;
+
import org.apache.causeway.applib.value.Clob;
import lombok.RequiredArgsConstructor;
-
//tag::class[]
@Action(semantics = SemanticsOf.SAFE)
@RequiredArgsConstructor
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_actionReturningCollection.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_actionReturningCollection.java
index 13282d8093..0b1c49657e 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_actionReturningCollection.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_actionReturningCollection.java
@@ -25,13 +25,13 @@ import javax.inject.Inject;
import org.apache.causeway.applib.annotation.Action;
import org.apache.causeway.applib.annotation.SemanticsOf;
+
import org.apache.causeway.applib.value.Clob;
import lombok.RequiredArgsConstructor;
import demoapp.dom.types.Samples;
-
//tag::class[]
@Action(semantics = SemanticsOf.SAFE)
@RequiredArgsConstructor
@@ -46,5 +46,6 @@ public class CausewayClobHolder_actionReturningCollection {
@Inject
Samples<Clob> samples;
+
}
//end::class[]
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_mixinProperty.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_mixinProperty.java
index e7dafc1b70..b2fb9602da 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_mixinProperty.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_mixinProperty.java
@@ -21,11 +21,11 @@ package demoapp.dom.types.causeway.clobs.holder;
import org.apache.causeway.applib.annotation.Property;
import org.apache.causeway.applib.annotation.PropertyLayout;
import org.apache.causeway.applib.annotation.Where;
+
import org.apache.causeway.applib.value.Clob;
import lombok.RequiredArgsConstructor;
-
//tag::class[]
@Property()
@PropertyLayout(hidden = Where.ALL_TABLES, fieldSetId = "contributed",
sequence = "1")
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_updateReadOnlyOptionalProperty.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_updateReadOnlyOptionalProperty.java
index 8c8e507b0d..72d2be1cc9 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_updateReadOnlyOptionalProperty.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_updateReadOnlyOptionalProperty.java
@@ -25,6 +25,7 @@ import org.apache.causeway.applib.annotation.Optionality;
import org.apache.causeway.applib.annotation.Parameter;
import org.apache.causeway.applib.annotation.PromptStyle;
import org.apache.causeway.applib.annotation.SemanticsOf;
+
import org.apache.causeway.applib.value.Clob;
import lombok.RequiredArgsConstructor;
@@ -45,13 +46,13 @@ public class
CausewayClobHolder_updateReadOnlyOptionalProperty {
@MemberSupport public CausewayClobHolder act(
@Parameter(optionality = Optionality.OPTIONAL) // <.>
- final
- Clob newValue
+ final Clob newValue
) {
holder.setReadOnlyOptionalProperty(newValue);
return holder;
}
- public Clob default0Act() {
+
+ @MemberSupport public Clob default0Act() {
return holder.getReadOnlyOptionalProperty();
}
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_updateReadOnlyPropertyWithChoices.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_updateReadOnlyOptionalPropertyWithChoices.java
similarity index 79%
copy from
examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_updateReadOnlyPropertyWithChoices.java
copy to
examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_updateReadOnlyOptionalPropertyWithChoices.java
index 0aa42d0e88..988e3ab45a 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_updateReadOnlyPropertyWithChoices.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_updateReadOnlyOptionalPropertyWithChoices.java
@@ -26,8 +26,11 @@ import javax.inject.Inject;
import org.apache.causeway.applib.annotation.Action;
import org.apache.causeway.applib.annotation.ActionLayout;
import org.apache.causeway.applib.annotation.MemberSupport;
+import org.apache.causeway.applib.annotation.Optionality;
+import org.apache.causeway.applib.annotation.Parameter;
import org.apache.causeway.applib.annotation.PromptStyle;
import org.apache.causeway.applib.annotation.SemanticsOf;
+
import org.apache.causeway.applib.value.Clob;
import lombok.RequiredArgsConstructor;
@@ -41,20 +44,22 @@ import demoapp.dom.types.Samples;
@ActionLayout(
promptStyle = PromptStyle.INLINE
, named = "Update with choices"
- , associateWith = "readOnlyProperty"
+ , associateWith = "readOnlyOptionalProperty"
, sequence = "2")
@RequiredArgsConstructor
-public class CausewayClobHolder_updateReadOnlyPropertyWithChoices {
+public class CausewayClobHolder_updateReadOnlyOptionalPropertyWithChoices {
private final CausewayClobHolder holder;
- @MemberSupport public CausewayClobHolder act(final Clob newValue) {
- holder.setReadOnlyProperty(newValue);
+ @MemberSupport public CausewayClobHolder act(
+ @Parameter(optionality = Optionality.OPTIONAL)
+ final Clob newValue) {
+ holder.setReadOnlyOptionalProperty(newValue);
return holder;
}
@MemberSupport public Clob default0Act() {
- return holder.getReadOnlyProperty();
+ return holder.getReadOnlyOptionalProperty();
}
@MemberSupport public List<Clob> choices0Act() {
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_updateReadOnlyProperty.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_updateReadOnlyProperty.java
index 5de2ba3e18..4b5c868408 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_updateReadOnlyProperty.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_updateReadOnlyProperty.java
@@ -23,6 +23,7 @@ import org.apache.causeway.applib.annotation.ActionLayout;
import org.apache.causeway.applib.annotation.MemberSupport;
import org.apache.causeway.applib.annotation.PromptStyle;
import org.apache.causeway.applib.annotation.SemanticsOf;
+
import org.apache.causeway.applib.value.Clob;
import lombok.RequiredArgsConstructor;
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_updateReadOnlyPropertyWithChoices.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_updateReadOnlyPropertyWithChoices.java
index 0aa42d0e88..267e47920d 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_updateReadOnlyPropertyWithChoices.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_updateReadOnlyPropertyWithChoices.java
@@ -28,6 +28,7 @@ import org.apache.causeway.applib.annotation.ActionLayout;
import org.apache.causeway.applib.annotation.MemberSupport;
import org.apache.causeway.applib.annotation.PromptStyle;
import org.apache.causeway.applib.annotation.SemanticsOf;
+
import org.apache.causeway.applib.value.Clob;
import lombok.RequiredArgsConstructor;
@@ -64,5 +65,6 @@ public class
CausewayClobHolder_updateReadOnlyPropertyWithChoices {
@Inject
Samples<Clob> samples;
+
}
//end::class[]
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/persistence/CausewayClobEntity.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/persistence/CausewayClobEntity.java
index 202921c8a2..3e8b028d60 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/persistence/CausewayClobEntity.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/persistence/CausewayClobEntity.java
@@ -21,12 +21,13 @@ package demoapp.dom.types.causeway.clobs.persistence;
import javax.inject.Named;
import org.apache.causeway.applib.annotation.DomainObject;
-import org.apache.causeway.applib.value.Clob;
import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
import demoapp.dom._infra.values.ValueHolder;
import demoapp.dom.types.causeway.clobs.holder.CausewayClobHolder2;
+import org.apache.causeway.applib.value.Clob;
+
@Named("demo.CausewayClobEntity") // shared permissions with concrete sub class
@DomainObject
public abstract class CausewayClobEntity
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/persistence/CausewayClobEntity.layout.xml
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/persistence/CausewayClobEntity.layout.xml
index 11fa6d38b2..e126ed4493 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/persistence/CausewayClobEntity.layout.xml
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/persistence/CausewayClobEntity.layout.xml
@@ -37,18 +37,18 @@
</bs3:col>
<bs3:col span="6">
<cpt:fieldSet name="Description" id="description" >
- <cpt:action id="clearHints" position="PANEL" />
- <cpt:action id="rebuildMetamodel"
position="PANEL"/>
- <cpt:action id="downloadLayout"
position="PANEL_DROPDOWN"/>
- <cpt:action id="inspectMetamodel"
position="PANEL_DROPDOWN"/>
- <cpt:action id="downloadMetamodelXml"
position="PANEL_DROPDOWN"/>
- <cpt:action id="downloadJdoMetamodel"
position="PANEL_DROPDOWN"/>
- <cpt:action id="recentCommands"
position="PANEL_DROPDOWN"/>
- <cpt:action id="recentExecutions"
position="PANEL_DROPDOWN"/>
- <cpt:action id="recentAuditTrailEntries"
position="PANEL_DROPDOWN"/>
- <cpt:action id="impersonateWithRoles"
position="PANEL_DROPDOWN"/>
- <cpt:action id="openRestApi"
position="PANEL_DROPDOWN" />
- <cpt:property id="description"/>
+ <cpt:action id="clearHints" position="PANEL" />
+ <cpt:action id="rebuildMetamodel" position="PANEL"/>
+ <cpt:action id="downloadLayout" position="PANEL_DROPDOWN"/>
+ <cpt:action id="inspectMetamodel" position="PANEL_DROPDOWN"/>
+ <cpt:action id="downloadMetamodelXml"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="downloadJdoMetamodel"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="recentCommands" position="PANEL_DROPDOWN"/>
+ <cpt:action id="recentExecutions" position="PANEL_DROPDOWN"/>
+ <cpt:action id="recentAuditTrailEntries"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="impersonateWithRoles"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+ <cpt:property id="description"/>
</cpt:fieldSet>
</bs3:col>
</bs3:row>
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_actionReturning.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/samples/CausewayClobSamples.java
similarity index 66%
copy from
examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_actionReturning.java
copy to
examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/samples/CausewayClobSamples.java
index 0da63cf910..682c2eeb40 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_actionReturning.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/samples/CausewayClobSamples.java
@@ -16,25 +16,24 @@
* specific language governing permissions and limitations
* under the License.
*/
-package demoapp.dom.types.causeway.clobs.holder;
+package demoapp.dom.types.causeway.clobs.samples;
-import org.apache.causeway.applib.annotation.Action;
-import org.apache.causeway.applib.annotation.SemanticsOf;
-import org.apache.causeway.applib.value.Clob;
+import java.util.stream.Stream;
-import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.apache.causeway.applib.value.Clob;
-//tag::class[]
-@Action(semantics = SemanticsOf.SAFE)
-@RequiredArgsConstructor
-public class CausewayClobHolder_actionReturning {
+import demoapp.dom.types.Samples;
- private final CausewayClobHolder holder;
+@Service
+public class CausewayClobSamples implements Samples<Clob> {
- public Clob act() {
- return holder.getReadOnlyProperty();
+ @Override
+ public Stream<Clob> stream() {
+ return new
org.apache.causeway.core.metamodel.valuesemantics.ClobValueSemantics()
+ .getExamples()
+ .stream();
}
}
-//end::class[]
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/vm/CausewayClobVm.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/vm/CausewayClobVm.java
index 6b64600021..d34e39dfee 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/vm/CausewayClobVm.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/vm/CausewayClobVm.java
@@ -32,6 +32,7 @@ import org.apache.causeway.applib.annotation.Optionality;
import org.apache.causeway.applib.annotation.Property;
import org.apache.causeway.applib.annotation.PropertyLayout;
import org.apache.causeway.applib.annotation.Title;
+
import org.apache.causeway.applib.value.Clob;
import lombok.Getter;
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/vm/CausewayClobVm.layout.xml
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/vm/CausewayClobVm.layout.xml
index 11fa6d38b2..1df6c2e346 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/vm/CausewayClobVm.layout.xml
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/vm/CausewayClobVm.layout.xml
@@ -36,20 +36,20 @@
<cpt:fieldSet name="Other" id="other"
unreferencedProperties="true"/>
</bs3:col>
<bs3:col span="6">
- <cpt:fieldSet name="Description" id="description" >
- <cpt:action id="clearHints" position="PANEL" />
- <cpt:action id="rebuildMetamodel"
position="PANEL"/>
- <cpt:action id="downloadLayout"
position="PANEL_DROPDOWN"/>
- <cpt:action id="inspectMetamodel"
position="PANEL_DROPDOWN"/>
- <cpt:action id="downloadMetamodelXml"
position="PANEL_DROPDOWN"/>
- <cpt:action id="downloadJdoMetamodel"
position="PANEL_DROPDOWN"/>
- <cpt:action id="recentCommands"
position="PANEL_DROPDOWN"/>
- <cpt:action id="recentExecutions"
position="PANEL_DROPDOWN"/>
- <cpt:action id="recentAuditTrailEntries"
position="PANEL_DROPDOWN"/>
- <cpt:action id="impersonateWithRoles"
position="PANEL_DROPDOWN"/>
- <cpt:action id="openRestApi"
position="PANEL_DROPDOWN" />
- <cpt:property id="description"/>
- </cpt:fieldSet>
+ <cpt:fieldSet name="Description" id="description" >
+ <cpt:action id="clearHints" position="PANEL" />
+ <cpt:action id="rebuildMetamodel" position="PANEL"/>
+ <cpt:action id="downloadLayout" position="PANEL_DROPDOWN"/>
+ <cpt:action id="inspectMetamodel" position="PANEL_DROPDOWN"/>
+ <cpt:action id="downloadMetamodelXml"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="downloadJdoMetamodel"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="recentCommands" position="PANEL_DROPDOWN"/>
+ <cpt:action id="recentExecutions" position="PANEL_DROPDOWN"/>
+ <cpt:action id="recentAuditTrailEntries"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="impersonateWithRoles"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+ <cpt:property id="description"/>
+ </cpt:fieldSet>
</bs3:col>
</bs3:row>
<bs3:row>
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/CausewayPasswords-common.adoc
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/CausewayPasswords-common.adoc
index 94edeb59d3..4f0669382e 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/CausewayPasswords-common.adoc
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/CausewayPasswords-common.adoc
@@ -48,7 +48,7 @@
include::holder/CausewayPasswordHolder_mixinProperty.java[tags=class]
== @PropertyLayout(labelPosition=...)
-There is also an extended interface, `CausewayPasswordHolder2`, with default
methods demonstrating the use of label positions:
+To demonstrate support for label positions using
`@PropertyLayout(labelPosition=...)`, the entity and view model objects both
implement the extended `CausewayPasswordHolder2` interface:
[source,java]
----
@@ -63,3 +63,4 @@ include::holder/CausewayPasswordHolder2.java[tags=class]
+
CAUTION: currently not supported
<.> Hide the label completely.
+
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/CausewayPasswords-description.adoc
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/CausewayPasswords-description.adoc
index 1ab3c5d5f6..1a9cced2dc 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/CausewayPasswords-description.adoc
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/CausewayPasswords-description.adoc
@@ -1,31 +1,28 @@
:Notice: Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with this work
for additional information regarding copyright ownership. The ASF licenses this
file to you under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy of
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by
applicable law or ag [...]
The framework has built-in support for strings that are automatically masked
as passwords, using the `Password` data type.
+These can be used either in entities or view models.
NOTE: This is an Apache Causeway specific data type.
-From here you can:
+== How this demo works
-* navigate to an entity that uses the `Password` datatype
-* open a view model that uses the `Password` datatype
+On the left hand side is a collection of entities that uses the `Password`
datatype.
+There is also an action that opens a view model; this view model also uses the
`Password` datatype.
-Some properties on these domain objects are mandatory, some optional.
+Navigate into the entity or view model to see the datatype used as a property,
an action parameter and as a return type of collections, along with code
samples.
-== Common interfaces
+=== Implementation Notes
-The entity and view model types both implement some common interfaces.
-
-=== CausewayPasswordHolder
-
-The `CausewayPasswordHolder` interface is used to contribute a number of
mixins to both types:
+The entity and view model types both implement some common interfaces:
+* The `CausewayPasswordHolder` interface is used to contribute a number of
mixins to both types:
++
[source,java]
----
include::holder/CausewayPasswordHolder.java[tags=class]
----
-=== CausewayPasswordHolder2
-
-The `CausewayPasswordHolder2` interface is used to demonstrate support for
label positions using `@PropertyLayout(labelPosition=...)`.
+* The `CausewayPasswordHolder2` interface is used to demonstrate support for
label positions using `@PropertyLayout(labelPosition=...)`.
Further details, along with the effect of this annotation, can be seen on the
entity and view model object pages.
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/CausewayPasswords.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/CausewayPasswords.java
index 1925700d2d..a683bdeb03 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/CausewayPasswords.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/CausewayPasswords.java
@@ -38,6 +38,7 @@ import org.apache.causeway.applib.annotation.Nature;
import org.apache.causeway.applib.annotation.ObjectSupport;
import org.apache.causeway.applib.annotation.PromptStyle;
import org.apache.causeway.applib.annotation.SemanticsOf;
+
import org.apache.causeway.applib.value.Password;
import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
@@ -63,7 +64,6 @@ public class CausewayPasswords implements
HasAsciiDocDescription {
public CausewayPasswordVm openViewModel(final Password initialValue) {
return new CausewayPasswordVm(initialValue);
}
-
@MemberSupport public Password default0OpenViewModel() {
return samples.single();
}
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/CausewayPasswords.layout.xml
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/CausewayPasswords.layout.xml
index cec7bca2dc..671874816c 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/CausewayPasswords.layout.xml
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/CausewayPasswords.layout.xml
@@ -38,18 +38,18 @@
</bs3:col>
<bs3:col span="6">
<cpt:fieldSet name="Description" id="description" >
- <cpt:action id="clearHints" position="PANEL" />
- <cpt:action id="rebuildMetamodel"
position="PANEL"/>
- <cpt:action id="downloadLayout"
position="PANEL_DROPDOWN"/>
- <cpt:action id="inspectMetamodel"
position="PANEL_DROPDOWN"/>
- <cpt:action id="downloadMetamodelXml"
position="PANEL_DROPDOWN"/>
- <cpt:action id="downloadJdoMetamodel"
position="PANEL_DROPDOWN"/>
- <cpt:action id="recentCommands"
position="PANEL_DROPDOWN"/>
- <cpt:action id="recentExecutions"
position="PANEL_DROPDOWN"/>
- <cpt:action id="recentAuditTrailEntries"
position="PANEL_DROPDOWN"/>
- <cpt:action id="impersonateWithRoles"
position="PANEL_DROPDOWN"/>
- <cpt:action id="openRestApi"
position="PANEL_DROPDOWN" />
- <cpt:property id="description"/>
+ <cpt:action id="clearHints" position="PANEL" />
+ <cpt:action id="rebuildMetamodel" position="PANEL"/>
+ <cpt:action id="downloadLayout" position="PANEL_DROPDOWN"/>
+ <cpt:action id="inspectMetamodel" position="PANEL_DROPDOWN"/>
+ <cpt:action id="downloadMetamodelXml"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="downloadJdoMetamodel"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="recentCommands" position="PANEL_DROPDOWN"/>
+ <cpt:action id="recentExecutions" position="PANEL_DROPDOWN"/>
+ <cpt:action id="recentAuditTrailEntries"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="impersonateWithRoles"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+ <cpt:property id="description"/>
</cpt:fieldSet>
</bs3:col>
</bs3:row>
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder2.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder2.java
index 31b4607c6a..5739f31a48 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder2.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder2.java
@@ -33,7 +33,7 @@ public interface CausewayPasswordHolder2 extends
CausewayPasswordHolder {
describedAs =
"@PropertyLayout(labelPosition=LEFT)",
hidden = Where.ALL_TABLES,
- fieldSetId = "label-positions", sequence = "1") // <.>
+ fieldSetId = "label-positions", sequence = "1") // <.>
default Password getReadOnlyPropertyDerivedLabelPositionLeft() {
return getReadOnlyProperty();
}
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_actionReturning.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_actionReturning.java
index a72fdd8803..88727e433c 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_actionReturning.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_actionReturning.java
@@ -20,11 +20,11 @@ package demoapp.dom.types.causeway.passwords.holder;
import org.apache.causeway.applib.annotation.Action;
import org.apache.causeway.applib.annotation.SemanticsOf;
+
import org.apache.causeway.applib.value.Password;
import lombok.RequiredArgsConstructor;
-
//tag::class[]
@Action(semantics = SemanticsOf.SAFE)
@RequiredArgsConstructor
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_actionReturningCollection.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_actionReturningCollection.java
index e42244ec20..66d9930e55 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_actionReturningCollection.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_actionReturningCollection.java
@@ -25,13 +25,13 @@ import javax.inject.Inject;
import org.apache.causeway.applib.annotation.Action;
import org.apache.causeway.applib.annotation.SemanticsOf;
+
import org.apache.causeway.applib.value.Password;
import lombok.RequiredArgsConstructor;
import demoapp.dom.types.Samples;
-
//tag::class[]
@Action(semantics = SemanticsOf.SAFE)
@RequiredArgsConstructor
@@ -46,5 +46,6 @@ public class CausewayPasswordHolder_actionReturningCollection
{
@Inject
Samples<Password> samples;
+
}
//end::class[]
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_mixinProperty.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_mixinProperty.java
index 39d7657428..cf60c2299b 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_mixinProperty.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_mixinProperty.java
@@ -21,11 +21,11 @@ package demoapp.dom.types.causeway.passwords.holder;
import org.apache.causeway.applib.annotation.Property;
import org.apache.causeway.applib.annotation.PropertyLayout;
import org.apache.causeway.applib.annotation.Where;
+
import org.apache.causeway.applib.value.Password;
import lombok.RequiredArgsConstructor;
-
//tag::class[]
@Property()
@PropertyLayout(hidden = Where.ALL_TABLES, fieldSetId = "contributed",
sequence = "1")
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_updateReadOnlyOptionalProperty.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_updateReadOnlyOptionalProperty.java
index bf6a683db0..f966aaf8ed 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_updateReadOnlyOptionalProperty.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_updateReadOnlyOptionalProperty.java
@@ -25,6 +25,7 @@ import org.apache.causeway.applib.annotation.Optionality;
import org.apache.causeway.applib.annotation.Parameter;
import org.apache.causeway.applib.annotation.PromptStyle;
import org.apache.causeway.applib.annotation.SemanticsOf;
+
import org.apache.causeway.applib.value.Password;
import lombok.RequiredArgsConstructor;
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_updateReadOnlyOptionalProperty.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_updateReadOnlyOptionalPropertyWithChoices.java
similarity index 79%
copy from
examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_updateReadOnlyOptionalProperty.java
copy to
examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_updateReadOnlyOptionalPropertyWithChoices.java
index bf6a683db0..07eb574912 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_updateReadOnlyOptionalProperty.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_updateReadOnlyOptionalPropertyWithChoices.java
@@ -18,6 +18,11 @@
*/
package demoapp.dom.types.causeway.passwords.holder;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import javax.inject.Inject;
+
import org.apache.causeway.applib.annotation.Action;
import org.apache.causeway.applib.annotation.ActionLayout;
import org.apache.causeway.applib.annotation.MemberSupport;
@@ -25,28 +30,30 @@ import org.apache.causeway.applib.annotation.Optionality;
import org.apache.causeway.applib.annotation.Parameter;
import org.apache.causeway.applib.annotation.PromptStyle;
import org.apache.causeway.applib.annotation.SemanticsOf;
+
import org.apache.causeway.applib.value.Password;
import lombok.RequiredArgsConstructor;
+import demoapp.dom.types.Samples;
+
//tag::class[]
@Action(
semantics = SemanticsOf.IDEMPOTENT
)
@ActionLayout(
promptStyle = PromptStyle.INLINE
- , named = "Update"
+ , named = "Update with choices"
, associateWith = "readOnlyOptionalProperty"
- , sequence = "1")
+ , sequence = "2")
@RequiredArgsConstructor
-public class CausewayPasswordHolder_updateReadOnlyOptionalProperty {
+public class CausewayPasswordHolder_updateReadOnlyOptionalPropertyWithChoices {
private final CausewayPasswordHolder holder;
@MemberSupport public CausewayPasswordHolder act(
- @Parameter(optionality = Optionality.OPTIONAL) // <.>
- final Password newValue
- ) {
+ @Parameter(optionality = Optionality.OPTIONAL)
+ final Password newValue) {
holder.setReadOnlyOptionalProperty(newValue);
return holder;
}
@@ -55,5 +62,12 @@ public class
CausewayPasswordHolder_updateReadOnlyOptionalProperty {
return holder.getReadOnlyOptionalProperty();
}
+ @MemberSupport public List<Password> choices0Act() {
+ return samples.stream()
+ .collect(Collectors.toList());
+ }
+
+ @Inject
+ Samples<Password> samples;
}
//end::class[]
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_updateReadOnlyProperty.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_updateReadOnlyProperty.java
index 6aa3554f7b..ca8db2148c 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_updateReadOnlyProperty.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_updateReadOnlyProperty.java
@@ -23,6 +23,7 @@ import org.apache.causeway.applib.annotation.ActionLayout;
import org.apache.causeway.applib.annotation.MemberSupport;
import org.apache.causeway.applib.annotation.PromptStyle;
import org.apache.causeway.applib.annotation.SemanticsOf;
+
import org.apache.causeway.applib.value.Password;
import lombok.RequiredArgsConstructor;
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_updateReadOnlyPropertyWithChoices.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_updateReadOnlyPropertyWithChoices.java
index b971665383..ecc8601aea 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_updateReadOnlyPropertyWithChoices.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_updateReadOnlyPropertyWithChoices.java
@@ -28,6 +28,7 @@ import org.apache.causeway.applib.annotation.ActionLayout;
import org.apache.causeway.applib.annotation.MemberSupport;
import org.apache.causeway.applib.annotation.PromptStyle;
import org.apache.causeway.applib.annotation.SemanticsOf;
+
import org.apache.causeway.applib.value.Password;
import lombok.RequiredArgsConstructor;
@@ -37,7 +38,6 @@ import demoapp.dom.types.Samples;
//tag::class[]
@Action(
semantics = SemanticsOf.IDEMPOTENT
-
)
@ActionLayout(
promptStyle = PromptStyle.INLINE
@@ -65,5 +65,6 @@ public class
CausewayPasswordHolder_updateReadOnlyPropertyWithChoices {
@Inject
Samples<Password> samples;
+
}
//end::class[]
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/jdo/CausewayPasswordJdo-description.adoc
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/jdo/CausewayPasswordJdo-description.adoc
index 374a3c6313..1199fd4946 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/jdo/CausewayPasswordJdo-description.adoc
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/jdo/CausewayPasswordJdo-description.adoc
@@ -1,6 +1,6 @@
:Notice: Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with this work
for additional information regarding copyright ownership. The ASF licenses this
file to you under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy of
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by
applicable law or ag [...]
-JDO supports `Password` out-of-the-box, so no special annotations are required.
+Apache Causeway provides its own implementation of the relevant JDO extension
points for the `Password` value type, meaning that JDO can persist properties
of this value type without further configuration.
[source,java]
----
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/jdo/CausewayPasswordJdo.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/jdo/CausewayPasswordJdo.java
index 38608e5de9..0c0b963d2d 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/jdo/CausewayPasswordJdo.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/jdo/CausewayPasswordJdo.java
@@ -33,6 +33,7 @@ import org.apache.causeway.applib.annotation.Optionality;
import org.apache.causeway.applib.annotation.Property;
import org.apache.causeway.applib.annotation.PropertyLayout;
import org.apache.causeway.applib.annotation.Title;
+
import org.apache.causeway.applib.value.Password;
import lombok.Getter;
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/jpa/CausewayPasswordJpa-description.adoc
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/jpa/CausewayPasswordJpa-description.adoc
index 279ebac489..e1b8c8ed54 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/jpa/CausewayPasswordJpa-description.adoc
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/jpa/CausewayPasswordJpa-description.adoc
@@ -1,23 +1,18 @@
:Notice: Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with this work
for additional information regarding copyright ownership. The ASF licenses this
file to you under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy of
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by
applicable law or ag [...]
-[WARNING]
-====
-TODO this yet is just a copy from JDO
-====
-
-JDO supports `Password` out-of-the-box, so no special annotations are required.
+Apache Causeway provides its own implementation of the relevant JPA extension
points for the `Password` value type, meaning that JPA can persist properties
of this value type without further configuration.
[source,java]
----
include::CausewayPasswordJpa.java[tags=class]
----
-<.> a no-arg constructor is introduced by JDO enhancer
-<.> required property as defined to JDO/DataNucleus.
+<.> a no-arg constructor for convenience
+<.> required property as defined to JPA.
+
Apache Causeway assumes properties are mandatory, so no additional annotation
is required.
<.> directly editable property as defined to Apache Causeway
<.> optional property as defined to Apache Causeway
-<.> optional property as defined to JDO/DataNucleus
+<.> optional property as defined to JPA
include::../CausewayPasswords-common.adoc[]
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/jpa/CausewayPasswordJpa.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/jpa/CausewayPasswordJpa.java
index f9096cc347..1df4a2d0d2 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/jpa/CausewayPasswordJpa.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/jpa/CausewayPasswordJpa.java
@@ -34,9 +34,10 @@ import org.apache.causeway.applib.annotation.Optionality;
import org.apache.causeway.applib.annotation.Property;
import org.apache.causeway.applib.annotation.PropertyLayout;
import org.apache.causeway.applib.annotation.Title;
-import org.apache.causeway.applib.value.Password;
import
org.apache.causeway.persistence.jpa.applib.integration.CausewayEntityListener;
+import org.apache.causeway.applib.value.Password;
+
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@@ -53,7 +54,7 @@ import
demoapp.dom.types.causeway.passwords.persistence.CausewayPasswordEntity;
@EntityListeners(CausewayEntityListener.class)
@Named("demo.CausewayPasswordEntity")
@DomainObject
-@NoArgsConstructor
+@NoArgsConstructor
// <.>
public class CausewayPasswordJpa
extends CausewayPasswordEntity {
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/persistence/CausewayPasswordEntity.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/persistence/CausewayPasswordEntity.java
index 59b7664214..6fe4229cc9 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/persistence/CausewayPasswordEntity.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/persistence/CausewayPasswordEntity.java
@@ -18,21 +18,16 @@
*/
package demoapp.dom.types.causeway.passwords.persistence;
-import javax.inject.Inject;
import javax.inject.Named;
-import org.apache.causeway.applib.annotation.Action;
-import org.apache.causeway.applib.annotation.ActionLayout;
-import org.apache.causeway.applib.annotation.ActionLayout.Position;
import org.apache.causeway.applib.annotation.DomainObject;
-import org.apache.causeway.applib.annotation.PromptStyle;
-import org.apache.causeway.applib.services.message.MessageService;
-import org.apache.causeway.applib.value.Password;
import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
import demoapp.dom._infra.values.ValueHolder;
import demoapp.dom.types.causeway.passwords.holder.CausewayPasswordHolder2;
+import org.apache.causeway.applib.value.Password;
+
@Named("demo.CausewayPasswordEntity") // shared permissions with concrete sub
class
@DomainObject
public abstract class CausewayPasswordEntity
@@ -46,31 +41,4 @@ implements
return getReadOnlyProperty();
}
- // -- PASSWORD CHECKER DEMO
-
- @Inject private transient MessageService messageService;
-
- @Action
- @ActionLayout(associateWith = "readWriteProperty"
- , position = Position.PANEL
- , cssClass = "bg-warning")
- public CausewayPasswordEntity showPassword() {
- messageService.informUser(String
- .format("password: '%s'",
getReadWriteProperty().getPassword()));
- return this;
- }
-
- @Action
- @ActionLayout(associateWith = "readWriteProperty"
- , position = Position.PANEL
- , promptStyle = PromptStyle.DIALOG_MODAL)
- public CausewayPasswordEntity checkPassword(final Password confirm) {
- if(getReadWriteProperty().checkPassword(confirm.getPassword())) {
- messageService.informUser("passwords did match");
- } else {
- messageService.warnUser("passwords did not match");
- }
- return this;
- }
-
}
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/persistence/CausewayPasswordEntity.layout.xml
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/persistence/CausewayPasswordEntity.layout.xml
index 11fa6d38b2..e126ed4493 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/persistence/CausewayPasswordEntity.layout.xml
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/persistence/CausewayPasswordEntity.layout.xml
@@ -37,18 +37,18 @@
</bs3:col>
<bs3:col span="6">
<cpt:fieldSet name="Description" id="description" >
- <cpt:action id="clearHints" position="PANEL" />
- <cpt:action id="rebuildMetamodel"
position="PANEL"/>
- <cpt:action id="downloadLayout"
position="PANEL_DROPDOWN"/>
- <cpt:action id="inspectMetamodel"
position="PANEL_DROPDOWN"/>
- <cpt:action id="downloadMetamodelXml"
position="PANEL_DROPDOWN"/>
- <cpt:action id="downloadJdoMetamodel"
position="PANEL_DROPDOWN"/>
- <cpt:action id="recentCommands"
position="PANEL_DROPDOWN"/>
- <cpt:action id="recentExecutions"
position="PANEL_DROPDOWN"/>
- <cpt:action id="recentAuditTrailEntries"
position="PANEL_DROPDOWN"/>
- <cpt:action id="impersonateWithRoles"
position="PANEL_DROPDOWN"/>
- <cpt:action id="openRestApi"
position="PANEL_DROPDOWN" />
- <cpt:property id="description"/>
+ <cpt:action id="clearHints" position="PANEL" />
+ <cpt:action id="rebuildMetamodel" position="PANEL"/>
+ <cpt:action id="downloadLayout" position="PANEL_DROPDOWN"/>
+ <cpt:action id="inspectMetamodel" position="PANEL_DROPDOWN"/>
+ <cpt:action id="downloadMetamodelXml"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="downloadJdoMetamodel"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="recentCommands" position="PANEL_DROPDOWN"/>
+ <cpt:action id="recentExecutions" position="PANEL_DROPDOWN"/>
+ <cpt:action id="recentAuditTrailEntries"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="impersonateWithRoles"
position="PANEL_DROPDOWN"/>
+ <cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+ <cpt:property id="description"/>
</cpt:fieldSet>
</bs3:col>
</bs3:row>
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_updateReadOnlyProperty.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/persistence/CausewayPasswordEntity_checkPassword.java
similarity index 59%
copy from
examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_updateReadOnlyProperty.java
copy to
examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/persistence/CausewayPasswordEntity_checkPassword.java
index 6aa3554f7b..1a0884b271 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_updateReadOnlyProperty.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/persistence/CausewayPasswordEntity_checkPassword.java
@@ -16,39 +16,37 @@
* specific language governing permissions and limitations
* under the License.
*/
-package demoapp.dom.types.causeway.passwords.holder;
+package demoapp.dom.types.causeway.passwords.persistence;
+
+import javax.inject.Inject;
import org.apache.causeway.applib.annotation.Action;
import org.apache.causeway.applib.annotation.ActionLayout;
import org.apache.causeway.applib.annotation.MemberSupport;
import org.apache.causeway.applib.annotation.PromptStyle;
-import org.apache.causeway.applib.annotation.SemanticsOf;
+import org.apache.causeway.applib.services.message.MessageService;
import org.apache.causeway.applib.value.Password;
import lombok.RequiredArgsConstructor;
-//tag::class[]
-@Action(
- semantics = SemanticsOf.IDEMPOTENT
+// This class is NOT generated
+@Action
+@ActionLayout(associateWith = "readWriteProperty"
+ , position = ActionLayout.Position.PANEL
+ , promptStyle = PromptStyle.DIALOG_MODAL
)
-@ActionLayout(
- promptStyle = PromptStyle.INLINE
- , named = "Update"
- , associateWith = "readOnlyProperty"
- , sequence = "1")
@RequiredArgsConstructor
-public class CausewayPasswordHolder_updateReadOnlyProperty {
-
- private final CausewayPasswordHolder holder;
+public class CausewayPasswordEntity_checkPassword {
- @MemberSupport public CausewayPasswordHolder act(final Password newValue) {
- holder.setReadOnlyProperty(newValue);
- return holder;
- }
+ private final CausewayPasswordEntity entity;
- @MemberSupport public Password default0Act() {
- return holder.getReadOnlyProperty();
+ public CausewayPasswordEntity act(final Password confirm) {
+ if(entity.getReadWriteProperty().checkPassword(confirm.getPassword()))
{
+ messageService.informUser("passwords did match");
+ } else {
+ messageService.warnUser("passwords did not match");
+ }
+ return entity;
}
-
+ @Inject private transient MessageService messageService;
}
-//end::class[]
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_updateReadOnlyProperty.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/persistence/CausewayPasswordEntity_showPassword.java
similarity index 58%
copy from
examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_updateReadOnlyProperty.java
copy to
examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/persistence/CausewayPasswordEntity_showPassword.java
index 5de2ba3e18..064bae867a 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/clobs/holder/CausewayClobHolder_updateReadOnlyProperty.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/persistence/CausewayPasswordEntity_showPassword.java
@@ -16,39 +16,34 @@
* specific language governing permissions and limitations
* under the License.
*/
-package demoapp.dom.types.causeway.clobs.holder;
+package demoapp.dom.types.causeway.passwords.persistence;
+
+import lombok.RequiredArgsConstructor;
+
+import javax.inject.Inject;
import org.apache.causeway.applib.annotation.Action;
import org.apache.causeway.applib.annotation.ActionLayout;
import org.apache.causeway.applib.annotation.MemberSupport;
-import org.apache.causeway.applib.annotation.PromptStyle;
-import org.apache.causeway.applib.annotation.SemanticsOf;
-import org.apache.causeway.applib.value.Clob;
-
-import lombok.RequiredArgsConstructor;
+import org.apache.causeway.applib.services.message.MessageService;
-//tag::class[]
-@Action(
- semantics = SemanticsOf.IDEMPOTENT
-)
+// This class is NOT generated
+@Action
@ActionLayout(
- promptStyle = PromptStyle.INLINE
- , named = "Update"
- , associateWith = "readOnlyProperty"
- , sequence = "1")
+ associateWith = "readWriteProperty"
+ , position = ActionLayout.Position.PANEL
+ , cssClass = "bg-warning"
+)
@RequiredArgsConstructor
-public class CausewayClobHolder_updateReadOnlyProperty {
+public class CausewayPasswordEntity_showPassword {
- private final CausewayClobHolder holder;
-
- @MemberSupport public CausewayClobHolder act(final Clob newValue) {
- holder.setReadOnlyProperty(newValue);
- return holder;
- }
+ private final CausewayPasswordEntity entity;
- @MemberSupport public Clob default0Act() {
- return holder.getReadOnlyProperty();
+ @MemberSupport public CausewayPasswordEntity act() {
+ messageService.informUser(String
+ .format("password: '%s'",
entity.getReadWriteProperty().getPassword()));
+ return entity;
}
+ @Inject private transient MessageService messageService;
}
-//end::class[]
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/persistence/package-info.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/persistence/package-info.java
new file mode 100644
index 0000000000..e01cd67082
--- /dev/null
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/persistence/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * The mixins in this package are NOT generated.
+ */
+package demoapp.dom.types.causeway.passwords.persistence;
\ No newline at end of file
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_actionReturning.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/samples/CausewayPasswordSamples.java
similarity index 65%
copy from
examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_actionReturning.java
copy to
examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/samples/CausewayPasswordSamples.java
index a72fdd8803..676db89aa9 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/holder/CausewayPasswordHolder_actionReturning.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/samples/CausewayPasswordSamples.java
@@ -16,25 +16,24 @@
* specific language governing permissions and limitations
* under the License.
*/
-package demoapp.dom.types.causeway.passwords.holder;
+package demoapp.dom.types.causeway.passwords.samples;
-import org.apache.causeway.applib.annotation.Action;
-import org.apache.causeway.applib.annotation.SemanticsOf;
-import org.apache.causeway.applib.value.Password;
+import java.util.stream.Stream;
-import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.apache.causeway.applib.value.Password;
-//tag::class[]
-@Action(semantics = SemanticsOf.SAFE)
-@RequiredArgsConstructor
-public class CausewayPasswordHolder_actionReturning {
+import demoapp.dom.types.Samples;
- private final CausewayPasswordHolder holder;
+@Service
+public class CausewayPasswordSamples implements Samples<Password> {
- public Password act() {
- return holder.getReadOnlyProperty();
+ @Override
+ public Stream<Password> stream() {
+ return new
org.apache.causeway.core.metamodel.valuesemantics.PasswordValueSemantics()
+ .getExamples()
+ .stream();
}
}
-//end::class[]
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/vm/CausewayPasswordVm-description.adoc
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/vm/CausewayPasswordVm-description.adoc
index 3d89d02cf3..1203726ab8 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/vm/CausewayPasswordVm-description.adoc
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/vm/CausewayPasswordVm-description.adoc
@@ -1,6 +1,11 @@
:Notice: Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with this work
for additional information regarding copyright ownership. The ASF licenses this
file to you under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy of
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by
applicable law or ag [...]
-JAXB supports `Password` out-of-the-box, so no special annotations are
required.
+Because `Password` is specific to Apache Causeway, JAXB _cannot_ serialize it
automatically, meaning that an implementation of `@XmlJavaTypeAdapter` is
required.
+
+The framework _does_ provide a simple *non-secure* implementation, but (unlike
other value types) the `Password` class is not itself annotated with this
implementation.
+For the purposes of the demo, each of the properties is instead annotated with
the non-secure annotation.
+
+In a production application, though, you should provide your own
implementation that can securely serialize/deserialize the state of the
`Password` value (presumably by encrypting it first).
[source,java]
----
@@ -8,6 +13,9 @@ include::CausewayPasswordVm.java[tags=class]
----
<.> a no-arg constructor is required by JAXB
<.> required property as defined to JAXB
+<.> instructs JAXB how to serialize the value.
++
+WARNING: this implementation is not secure; you should provide your own more
secure implementation.
<.> directly editable property as defined to Apache Causeway
<.> optional property as defined to Apache Causeway.
+
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/vm/CausewayPasswordVm.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/vm/CausewayPasswordVm.java
index 2daa85b32e..44fe72a8f1 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/vm/CausewayPasswordVm.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/types/causeway/passwords/vm/CausewayPasswordVm.java
@@ -24,6 +24,7 @@ import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.apache.causeway.applib.annotation.DomainObject;
import org.apache.causeway.applib.annotation.Editing;
@@ -62,22 +63,26 @@ public class CausewayPasswordVm
@Title(prepend = "Password view model: ")
@PropertyLayout(fieldSetId = "read-only-properties", sequence = "1")
@XmlElement(required = true)
// <.>
+ @XmlJavaTypeAdapter(Password.JaxbToStringAdapter.class)
// <.>
@Getter @Setter
private Password readOnlyProperty;
@Property(editing = Editing.ENABLED)
// <.>
@PropertyLayout(fieldSetId = "editable-properties", sequence = "1")
@XmlElement(required = true)
+ @XmlJavaTypeAdapter(Password.JaxbToStringAdapter.class)
// <3>
@Getter @Setter
private Password readWriteProperty;
@Property(optionality = Optionality.OPTIONAL)
// <.>
@PropertyLayout(fieldSetId = "optional-properties", sequence = "1")
+ @XmlJavaTypeAdapter(Password.JaxbToStringAdapter.class)
// <3>
@Getter @Setter
private Password readOnlyOptionalProperty;
@Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
@PropertyLayout(fieldSetId = "optional-properties", sequence = "2")
+ @XmlJavaTypeAdapter(Password.JaxbToStringAdapter.class)
// <3>
@Getter @Setter
private Password readWriteOptionalProperty;
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/types/package-info.java
b/examples/demo/domain/src/main/java/demoapp/dom/types/package-info.java
new file mode 100644
index 0000000000..24abc0d4eb
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/package-info.java
@@ -0,0 +1,8 @@
+/**
+ * These files were GENERATED by
org.apache.causeway.tooling.metaprog.demoshowcases.value.ValueTypeGenTemplateTest.
+ *
+ * <p>
+ * Do NOT edit!
+ * </p>
+ */
+package demoapp.dom.types;
\ No newline at end of file