This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch 3900-immutable.config
in repository https://gitbox.apache.org/repos/asf/causeway.git
The following commit(s) were added to refs/heads/3900-immutable.config by this
push:
new 23e5e408dde CAUSEWAY-3900: adds caching of patterns in
CausewayConfiguration
23e5e408dde is described below
commit 23e5e408dde71883fd58b6120f307999cc178a3f
Author: Andi Huber <[email protected]>
AuthorDate: Fri Aug 1 23:11:02 2025 +0200
CAUSEWAY-3900: adds caching of patterns in CausewayConfiguration
---
.../core/config/CausewayConfiguration.java | 206 +++++++++++----------
1 file changed, 112 insertions(+), 94 deletions(-)
diff --git
a/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java
b/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java
index 7870107aa7e..02b1568f5e3 100644
---
a/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java
+++
b/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java
@@ -85,6 +85,7 @@
import
org.apache.causeway.applib.value.semantics.TemporalValueSemantics.TemporalEditingPattern;
import org.apache.causeway.commons.functional.Try;
import org.apache.causeway.commons.internal.base._NullSafe;
+import org.apache.causeway.commons.internal.base._StableValue;
import org.apache.causeway.commons.internal.context._Context;
import org.apache.causeway.core.config.metamodel.facets.ActionConfigOptions;
import
org.apache.causeway.core.config.metamodel.facets.AssociationLayoutConfigOptions;
@@ -99,6 +100,7 @@
import org.apache.causeway.schema.cmd.v2.ActionDto;
import org.apache.causeway.schema.cmd.v2.ParamDto;
+import org.springframework.boot.context.properties.bind.ConstructorBinding;
import org.springframework.boot.context.properties.bind.DefaultValue;
import org.springframework.boot.convert.DurationUnit;
@@ -1003,33 +1005,41 @@ public record CssClass(
* <p>The CSS class for individual actions can be
overridden using
* {@link
org.apache.causeway.applib.annotation.ActionLayout#cssClass()}.
*/
- @DefaultValue({
- "add.*:btn-info",
- "remove.*:btn-warning",
+ String[] patterns,
+ // internal
+ _StableValue<Map<Pattern, String>> _patternsAsMap) {
- "start.*:btn-info",
- "play.*:btn-info",
- "stop.*:btn-warning",
+ // non canonical constructor to hide the internal
_StableValue from Spring
+ @ConstructorBinding
+ public CssClass(
+ @DefaultValue({
+ "add.*:btn-info",
+ "remove.*:btn-warning",
- "reset.*:btn-warning",
+ "start.*:btn-info",
+ "play.*:btn-info",
+ "stop.*:btn-warning",
- "new.*:btn-info",
- "create.*:btn-info",
- "delete.*:btn-danger",
+ "reset.*:btn-warning",
- "verify.*:btn-success",
- "decline.*:btn-danger",
+ "new.*:btn-info",
+ "create.*:btn-info",
+ "delete.*:btn-danger",
- "save.*:btn-success",
+ "verify.*:btn-success",
+ "decline.*:btn-danger",
- "approve.*:btn-success",
- "reject.*:btn-danger",
+ "save.*:btn-success",
- })
- String[] patterns) {
+ "approve.*:btn-success",
+ "reject.*:btn-danger",
+ })
+ String[] patterns) {
+ this(patterns, new _StableValue<>());
+ }
- //(lazy = true) //TODO
- public Map<Pattern, String> patternsAsMap() { return
asMap(patterns()); }
+ //lazy
+ public Map<Pattern, String> patternsAsMap() { return
_patternsAsMap.orElseSet(()->asMap(patterns())); }
}
public record CssClassFa(
@@ -1043,116 +1053,124 @@ public record CssClassFa(
* <p>The font awesome class for individual actions can be
overridden using
* {@link
org.apache.causeway.applib.annotation.ActionLayout#cssClassFa()}.
*/
- @DefaultValue({
+ String[] patterns,
+ // internal
+ _StableValue<Map<Pattern, String>> _patternsAsMap) {
- "all.*:fa-solid fa-list",
- "list.*:fa-solid fa-list",
+ // non canonical constructor to hide the internal
_StableValue from Spring
+ @ConstructorBinding
+ public CssClassFa(
+ @DefaultValue({
- "find.*:fa-search",
- "lookup.*:fa-search",
- "search.*:fa-search",
+ "all.*:fa-solid fa-list",
+ "list.*:fa-solid fa-list",
- "send.*:fa-regular fa-paper-plane",
+ "find.*:fa-search",
+ "lookup.*:fa-search",
+ "search.*:fa-search",
- "open.*:fa-solid fa-arrow-up-right-from-square",
- "close.*:fa-solid fa-regular fa-rectangle-xmark",
+ "send.*:fa-regular fa-paper-plane",
- "recent.*:fa-solid fa-clock-rotate-left",
+ "open.*:fa-solid fa-arrow-up-right-from-square",
+ "close.*:fa-solid fa-regular fa-rectangle-xmark",
- "lock.*:fa-solid fa-lock",
- "unlock.*:fa-solid fa-unlock",
+ "recent.*:fa-solid fa-clock-rotate-left",
- "permit.*:fa-solid fa-unlock",
- "review.*:fa-solid fa-eye",
+ "lock.*:fa-solid fa-lock",
+ "unlock.*:fa-solid fa-unlock",
- "add.*:fa-regular fa-square-plus",
- "plus.*:fa-regular fa-square-plus",
- "remove.*:fa-regular fa-square-minus",
- "minus.*:fa-regular fa-square-minus",
+ "permit.*:fa-solid fa-unlock",
+ "review.*:fa-solid fa-eye",
- "sign.*:fa-solid fa-signature",
+ "add.*:fa-regular fa-square-plus",
+ "plus.*:fa-regular fa-square-plus",
+ "remove.*:fa-regular fa-square-minus",
+ "minus.*:fa-regular fa-square-minus",
- "clear.*:fa-solid fa-broom",
+ "sign.*:fa-solid fa-signature",
- "create.*:fa-regular fa-square-plus",
- "new.*:fa-regular fa-square-plus",
- "delete.*:fa-solid fa-trash",
+ "clear.*:fa-solid fa-broom",
- "change.*:fa-regular fa-pen-to-square",
- "edit.*:fa-regular fa-pen-to-square",
- "maintain.*:fa-regular fa-pen-to-square",
- "update.*:fa-regular fa-pen-to-square",
+ "create.*:fa-regular fa-square-plus",
+ "new.*:fa-regular fa-square-plus",
+ "delete.*:fa-solid fa-trash",
- "cut.*:fa-solid fa-scissors",
- "move.*:fa-solid fa-angles-right",
- "copy.*:fa-regular fa-copy",
- "duplicate.*:fa-solid fa-clone",
- "clone.*:fa-solid fa-clone",
- "categorise.*:fa-regular fa-folder-open",
+ "change.*:fa-regular fa-pen-to-square",
+ "edit.*:fa-regular fa-pen-to-square",
+ "maintain.*:fa-regular fa-pen-to-square",
+ "update.*:fa-regular fa-pen-to-square",
- "download.*:fa-solid fa-download",
- "upload.*:fa-solid fa-upload",
+ "cut.*:fa-solid fa-scissors",
+ "move.*:fa-solid fa-angles-right",
+ "copy.*:fa-regular fa-copy",
+ "duplicate.*:fa-solid fa-clone",
+ "clone.*:fa-solid fa-clone",
+ "categorise.*:fa-regular fa-folder-open",
- "execute.*:fa-solid fa-bolt",
- "run.*:fa-solid fa-bolt",
- "trigger.*:fa-solid fa-bolt",
+ "download.*:fa-solid fa-download",
+ "upload.*:fa-solid fa-upload",
- "link.*:fa-solid fa-link",
- "unlink.*:fa-solid fa-link-slash",
+ "execute.*:fa-solid fa-bolt",
+ "run.*:fa-solid fa-bolt",
+ "trigger.*:fa-solid fa-bolt",
- "start.*:fa-solid fa-play",
- "play.*:fa-solid fa-play",
- "resume.*:fa-solid fa-play",
- "pause.*:fa-solid fa-pause",
- "suspend.*:fa-solid fa-pause",
- "stop.*:fa-solid fa-stop",
- "terminate.*:fa-solid fa-stop",
+ "link.*:fa-solid fa-link",
+ "unlink.*:fa-solid fa-link-slash",
- "previous.*:fa-backward-step",
- "next.*:fa-forward-step",
+ "start.*:fa-solid fa-play",
+ "play.*:fa-solid fa-play",
+ "resume.*:fa-solid fa-play",
+ "pause.*:fa-solid fa-pause",
+ "suspend.*:fa-solid fa-pause",
+ "stop.*:fa-solid fa-stop",
+ "terminate.*:fa-solid fa-stop",
- "approve.*:fa-regular fa-thumbs-up",
- "reject.*:fa-regular fa-thumbs-down",
+ "previous.*:fa-backward-step",
+ "next.*:fa-forward-step",
- "verify.*:fa-solid fa-check",
- "decline.*:fa-solid fa-xmark",
- "cancel.*:fa-solid fa-xmark",
+ "approve.*:fa-regular fa-thumbs-up",
+ "reject.*:fa-regular fa-thumbs-down",
- "discard.*:fa-regular fa-trash-can",
+ "verify.*:fa-solid fa-check",
+ "decline.*:fa-solid fa-xmark",
+ "cancel.*:fa-solid fa-xmark",
- "assign.*:fa-regular fa-hand-point-right",
+ "discard.*:fa-regular fa-trash-can",
- "calculate.*:fa-calculator",
+ "assign.*:fa-regular fa-hand-point-right",
- "import.*:fa-solid fa-file-import",
- "export.*:fa-solid fa-file-export",
+ "calculate.*:fa-calculator",
- "first.*:fa-regular fa-star",
+ "import.*:fa-solid fa-file-import",
+ "export.*:fa-solid fa-file-export",
- "install.*:fa-solid fa-wrench",
+ "first.*:fa-regular fa-star",
- "setup.*:fa-solid fa-gear",
- "configure.*:fa-solid fa-gear",
+ "install.*:fa-solid fa-wrench",
- "refresh.*:fa-sync",
- "renew.*:fa-rotate-right",
- "reset.*:fa-rotate-left",
+ "setup.*:fa-solid fa-gear",
+ "configure.*:fa-solid fa-gear",
- "save.*:fa-regular fa-floppy-disk",
+ "refresh.*:fa-sync",
+ "renew.*:fa-rotate-right",
+ "reset.*:fa-rotate-left",
- "switch.*:fa-exchange",
- "random.*:fa-shuffle",
+ "save.*:fa-regular fa-floppy-disk",
- "view.*:fa-regular fa-eye",
+ "switch.*:fa-exchange",
+ "random.*:fa-shuffle",
- "wizard.*:fa-solid fa-wand-magic-sparkles"
+ "view.*:fa-regular fa-eye",
- })
- String[] patterns) {
+ "wizard.*:fa-solid fa-wand-magic-sparkles"
- //(lazy = true) //TODO
- public Map<Pattern, String> patternsAsMap() { return
asMap(patterns()); }
+ })
+ String[] patterns) {
+ this(patterns, new _StableValue<>());
+ }
+ //lazy
+ public Map<Pattern, String> patternsAsMap() { return
_patternsAsMap.orElseSet(()->asMap(patterns())); }
}
}