You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by ah...@apache.org on 2025/02/18 08:35:15 UTC

(causeway) branch main updated: CAUSEWAY-3859: Java record refactoring (part 5)

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

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


The following commit(s) were added to refs/heads/main by this push:
     new 368ef8b40be CAUSEWAY-3859: Java record refactoring (part 5)
368ef8b40be is described below

commit 368ef8b40be584753d71b37bff72efdcdde3b2b7
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Feb 18 09:35:12 2025 +0100

    CAUSEWAY-3859: Java record refactoring (part 5)
---
 .../causeway/applib/fa/FontAwesomeLayers.java      | 80 ++++++++++------------
 .../fa/FontAwesomeQuickNotationGenerator.java      |  4 +-
 .../apache/causeway/applib/locale/UserLocale.java  | 31 ++++++---
 .../value/semantics/ValueSemanticsAbstract.java    |  8 +--
 .../causeway/applib/fa/FontAwesomeLayersTest.java  |  2 +-
 .../members/iconfa/FaStaticFacetAbstract.java      |  2 +-
 .../core/metamodel/layout/LayoutFacetUtil.java     |  2 +-
 .../valuesemantics/LocaleValueSemantics.java       |  2 +-
 .../ActionLayoutAnnotationFacetFactoryTest.java    | 10 ++-
 .../DomainObjectLayoutFactoryTest.java             |  5 +-
 .../iconfa/FontAwesomeLayersFacetMethodTest.java   |  3 +-
 .../locale/LanguageProviderDefault.java            |  2 +-
 .../actionlinks/FontAwesomeBehavior.java           |  4 +-
 .../temporal/TextFieldWithDateTimePicker.java      |  2 +-
 .../object/icontitle/ObjectIconAndTitlePanel.java  |  2 +-
 15 files changed, 77 insertions(+), 82 deletions(-)

diff --git a/api/applib/src/main/java/org/apache/causeway/applib/fa/FontAwesomeLayers.java b/api/applib/src/main/java/org/apache/causeway/applib/fa/FontAwesomeLayers.java
index 542e516477f..a2e3112f1e6 100644
--- a/api/applib/src/main/java/org/apache/causeway/applib/fa/FontAwesomeLayers.java
+++ b/api/applib/src/main/java/org/apache/causeway/applib/fa/FontAwesomeLayers.java
@@ -25,8 +25,7 @@
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import com.fasterxml.jackson.annotation.JsonCreator;
-
+import org.jspecify.annotations.NonNull;
 import org.jspecify.annotations.Nullable;
 
 import org.apache.causeway.applib.layout.component.CssClassFaPosition;
@@ -37,9 +36,7 @@
 import org.apache.causeway.commons.io.JsonUtils;
 
 import lombok.AllArgsConstructor;
-import org.jspecify.annotations.NonNull;
 import lombok.Setter;
-import lombok.With;
 import lombok.experimental.Accessors;
 
 /**
@@ -51,12 +48,17 @@
  * @since 2.0 {@index}
  * @see <a href="https://fontawesome.com/docs/web/style/layer">Font Awesome Layers</a>
  */
-
-@AllArgsConstructor(onConstructor_ = {@JsonCreator(mode = JsonCreator.Mode.PROPERTIES)})
-@lombok.Value
-public class FontAwesomeLayers implements Serializable {
-
-    private static final long serialVersionUID = 1L;
+public record FontAwesomeLayers(
+    @NonNull IconType iconType,
+    /**
+     * Position of <i>Font Awesome</i> icon, relative to its accompanied title.
+     */
+    @Nullable CssClassFaPosition position,
+    @Nullable String containerCssClasses,
+    @Nullable String containerCssStyle,
+    @Nullable List<IconEntry> iconEntries,
+    @Nullable List<SpanEntry> spanEntries
+    ) implements Serializable {
 
     // -- FACTORIES
 
@@ -169,11 +171,11 @@ public enum IconType {
         LAYERED
     }
 
-    @lombok.Value
-    public static class IconEntry implements Serializable {
-        private static final long serialVersionUID = 1L;
-        @Nullable String cssClasses;
-        @Nullable String cssStyle;
+    public record IconEntry(
+        @Nullable String cssClasses,
+        @Nullable String cssStyle) implements Serializable {
+
+        // canonical constructor
         public IconEntry(final String cssClasses, final String cssStyle) {
             this.cssClasses = normalizeCssClasses(cssClasses);
             this.cssStyle = cssStyle;
@@ -184,41 +186,25 @@ public String toHtml() {
         // -- HELPER
         private static String faIconHtml(final @Nullable String faClasses) {
             if(_Strings.isEmpty(faClasses)) return "";
-            return String.format("<i class=\"%s\"></i>", faClasses);
+            return "<i class=\"%s\"></i>".formatted(faClasses);
         }
         private static String faIconHtml(final @Nullable String faClasses, final @Nullable String faStyle) {
             if(_Strings.isEmpty(faStyle)) return faIconHtml(faClasses);
-            return String.format("<i class=\"%s\" style=\"%s\"></i>", faClasses, faStyle);
+            return "<i class=\"%s\" style=\"%s\"></i>".formatted(faClasses, faStyle);
         }
     }
 
-    @lombok.Value
-    public static class SpanEntry implements Serializable {
-        private static final long serialVersionUID = 1L;
-        @Nullable String cssClasses;
-        @Nullable String cssStyle;
-        @Nullable String transform;
-        @Nullable String text;
+    public record SpanEntry(
+        @Nullable String cssClasses,
+        @Nullable String cssStyle,
+        @Nullable String transform,
+        @Nullable String text) implements Serializable {
     }
 
-    // -- CONSTRUCTION
-
-    @NonNull IconType iconType;
-    /**
-     * Position of <i>Font Awesome</i> icon, relative to its accompanied title.
-     */
-    @With
-    @Nullable CssClassFaPosition position;
-    @Nullable String containerCssClasses;
-    @Nullable String containerCssStyle;
-    @Nullable List<IconEntry> iconEntries;
-    @Nullable List<SpanEntry> spanEntries;
-
     public String toHtml() {
-        var iconEntries = Can.ofCollection(getIconEntries());
-        if(iconEntries.isEmpty()) {
-            return "";
-        }
+        var iconEntries = Can.ofCollection(iconEntries());
+        if(iconEntries.isEmpty()) return "";
+        
         if(iconEntries.isCardinalityOne()) {
             // use simple rendering (not a stack nor layered)
             return faSpanHtml(iconEntries.getFirstElseFail().toHtml(), null, null);
@@ -240,11 +226,15 @@ public String toQuickNotation() {
         return FontAwesomeQuickNotationGenerator.generate(this);
     }
 
+    public FontAwesomeLayers withPosition(CssClassFaPosition newPosition) {
+        return new FontAwesomeLayers(iconType, newPosition, containerCssClasses, containerCssStyle, iconEntries, spanEntries);
+    }
+    
     // -- UTILITY
 
     //TODO[CAUSEWAY-3646] how to determine position when empty
     public FontAwesomeLayers emptyToBlank() {
-        return _NullSafe.size(this.getIconEntries())>0
+        return _NullSafe.size(this.iconEntries())>0
                 ? this
                 : FontAwesomeLayers.blank();
     }
@@ -257,12 +247,12 @@ private static String faSpanHtml(
             final @Nullable String cssStyle) {
         if(_Strings.isEmpty(innerHtml)) return "";
         var attrClass = _Strings.nonEmpty(cssClasses)
-                .map(s->String.format(" class=\"%s\"", s))
+                .map(" class=\"%s\""::formatted)
                 .orElse("");
         var attrStyle = _Strings.nonEmpty(cssStyle)
-                .map(s->String.format(" style=\"%s\"", s))
+                .map(" style=\"%s\""::formatted)
                 .orElse("");
-        return String.format("<span%s%s>%s</span>", attrClass, attrStyle, innerHtml);
+        return "<span%s%s>%s</span>".formatted(attrClass, attrStyle, innerHtml);
     }
 
 }
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/fa/FontAwesomeQuickNotationGenerator.java b/api/applib/src/main/java/org/apache/causeway/applib/fa/FontAwesomeQuickNotationGenerator.java
index 9a337733c70..8051e2830aa 100644
--- a/api/applib/src/main/java/org/apache/causeway/applib/fa/FontAwesomeQuickNotationGenerator.java
+++ b/api/applib/src/main/java/org/apache/causeway/applib/fa/FontAwesomeQuickNotationGenerator.java
@@ -29,8 +29,8 @@
 class FontAwesomeQuickNotationGenerator {
 
     String generate(final FontAwesomeLayers model) {
-        return _NullSafe.stream(model.getIconEntries())
-            .map(iconEntry->processPrefixes(iconEntry.getCssClasses()))
+        return _NullSafe.stream(model.iconEntries())
+            .map(iconEntry->processPrefixes(iconEntry.cssClasses()))
             .collect(Collectors.joining(", "));
     }
 
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/locale/UserLocale.java b/api/applib/src/main/java/org/apache/causeway/applib/locale/UserLocale.java
index e8a89d869f1..520c6ce837b 100644
--- a/api/applib/src/main/java/org/apache/causeway/applib/locale/UserLocale.java
+++ b/api/applib/src/main/java/org/apache/causeway/applib/locale/UserLocale.java
@@ -21,9 +21,9 @@
 import java.io.Serializable;
 import java.util.Locale;
 
-import lombok.Builder;
 import org.jspecify.annotations.NonNull;
-import lombok.Value;
+
+import lombok.Builder;
 
 /**
  * User specific regional preferred settings.
@@ -32,12 +32,12 @@
  * @since 2.0 {@index}
  */
 @org.apache.causeway.applib.annotation.Value
-@Value
 @Builder
-public class UserLocale
-implements Serializable {
-
-    private static final long serialVersionUID = 1L;
+public record UserLocale(
+    @NonNull Locale languageLocale,
+    @NonNull Locale numberFormatLocale,
+    @NonNull Locale timeFormatLocale
+    ) implements Serializable {
 
     public static UserLocale getDefault() {
         return valueOf(Locale.getDefault());
@@ -51,10 +51,19 @@ public static UserLocale valueOf(final Locale mainLocale) {
                 .build();
     }
 
-    private final @NonNull Locale languageLocale;
-    private final @NonNull Locale numberFormatLocale;
-    private final @NonNull Locale timeFormatLocale;
-
+    /**
+     * use {@link #languageLocale()} instead
+     */
+    @Deprecated public Locale getLanguageLocale() { return languageLocale; }
+    /**
+     * use {@link #numberFormatLocale()} instead
+     */
+    @Deprecated public Locale getNumberFormatLocale() { return numberFormatLocale; }
+    /**
+     * use {@link #timeFormatLocale()} instead
+     */
+    @Deprecated public Locale getTimeFormatLocale() { return timeFormatLocale; }
+    
     // -- UTILITY
 
     public UserLocaleBuilder asBuilder() {
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/value/semantics/ValueSemanticsAbstract.java b/api/applib/src/main/java/org/apache/causeway/applib/value/semantics/ValueSemanticsAbstract.java
index fbc6f99f517..d3f4799a7a3 100644
--- a/api/applib/src/main/java/org/apache/causeway/applib/value/semantics/ValueSemanticsAbstract.java
+++ b/api/applib/src/main/java/org/apache/causeway/applib/value/semantics/ValueSemanticsAbstract.java
@@ -206,7 +206,7 @@ protected DecimalFormat getNumberFormat(
     protected DecimalFormat getNumberFormat(
             final ValueSemanticsProvider.@Nullable Context context,
             final @NonNull FormatUsageFor usedFor) {
-        var format = (DecimalFormat)NumberFormat.getNumberInstance(getUserLocale(context).getNumberFormatLocale());
+        var format = (DecimalFormat)NumberFormat.getNumberInstance(getUserLocale(context).numberFormatLocale());
         // prime w/ 16 (64 bit IEEE 754 double has 15 decimal digits of precision)
         format.setMaximumFractionDigits(16);
         configureDecimalFormat(context, format, usedFor);
@@ -245,7 +245,7 @@ protected Optional<BigDecimal> parseDecimal(
 
         if (groupingSeparatorPolicy == GroupingSeparatorPolicy.DISALLOW) {
             var userLocale = getUserLocale(context);
-            var decimalFormatSymbols = new DecimalFormatSymbols(userLocale.getNumberFormatLocale());
+            var decimalFormatSymbols = new DecimalFormatSymbols(userLocale.numberFormatLocale());
             var groupingSeparatorChar = decimalFormatSymbols.getGroupingSeparator();
             if (input.contains(""+groupingSeparatorChar)) {
                 throw new TextEntryParseException("Invalid value '" + input + "'; do not use the '" + groupingSeparatorChar + "' grouping separator");
@@ -325,7 +325,7 @@ protected DateTimeFormatter getTemporalNoZoneRenderingFormat(
             throw _Exceptions.unmatchedCase(temporalCharacteristic);
         }
         return noZoneOutputFormat
-                .withLocale(getUserLocale(context).getTimeFormatLocale());
+                .withLocale(getUserLocale(context).timeFormatLocale());
     }
 
     protected Optional<DateTimeFormatter> getTemporalZoneOnlyRenderingFormat(
@@ -359,7 +359,7 @@ protected DateTimeFormatter getTemporalEditingFormat(
                 .appendPattern(editingPattern
                         .getEditingFormatAsPattern(
                                 temporalCharacteristic, offsetCharacteristic, timePrecision, direction))
-                .toFormatter(getUserLocale(context).getTimeFormatLocale());
+                .toFormatter(getUserLocale(context).timeFormatLocale());
     }
 
     protected DateTimeFormatter getTemporalIsoFormat(
diff --git a/api/applib/src/test/java/org/apache/causeway/applib/fa/FontAwesomeLayersTest.java b/api/applib/src/test/java/org/apache/causeway/applib/fa/FontAwesomeLayersTest.java
index 190c110e433..c0c63b2af86 100644
--- a/api/applib/src/test/java/org/apache/causeway/applib/fa/FontAwesomeLayersTest.java
+++ b/api/applib/src/test/java/org/apache/causeway/applib/fa/FontAwesomeLayersTest.java
@@ -65,7 +65,7 @@ void jsonRoundtrip() {
 
         var iconStack = iconStackSample;
 
-        assertEquals(3, _NullSafe.size(iconStack.getIconEntries()));
+        assertEquals(3, _NullSafe.size(iconStack.iconEntries()));
 
         //debug
         //System.err.printf("%s%n", iconStack.toJson());
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/iconfa/FaStaticFacetAbstract.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/iconfa/FaStaticFacetAbstract.java
index 3b6f4b7cc66..a95367f2bcd 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/iconfa/FaStaticFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/iconfa/FaStaticFacetAbstract.java
@@ -69,7 +69,7 @@ protected FaStaticFacetAbstract(
     @Override
     public void visitAttributes(final BiConsumer<String, Object> visitor) {
         super.visitAttributes(visitor);
-        visitor.accept("position", layers.getPosition());
+        visitor.accept("position", layers.position());
         visitor.accept("classes", layers.toQuickNotation());
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/layout/LayoutFacetUtil.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/layout/LayoutFacetUtil.java
index c1d8ebd7226..dfe32602d39 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/layout/LayoutFacetUtil.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/layout/LayoutFacetUtil.java
@@ -115,7 +115,7 @@ public void setCssClassFaIfAny(
                         final String cssClassFa = faStaticFacet.getLayers().toQuickNotation();
                         if(!_Strings.isNullOrEmpty(cssClassFa)) {
                             hasCssClassFa.setCssClassFa(cssClassFa);
-                            hasCssClassFa.setCssClassFaPosition(faStaticFacet.getLayers().getPosition());
+                            hasCssClassFa.setCssClassFaPosition(faStaticFacet.getLayers().position());
                         }
                     },
                     _Functions.noopConsumer())); // not supported for imperative fa-icons
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LocaleValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LocaleValueSemantics.java
index 20b3d88de74..e999d3f5c13 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LocaleValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LocaleValueSemantics.java
@@ -80,7 +80,7 @@ public String htmlPresentation(final ValueSemanticsProvider.Context context, fin
     }
 
     private String localeToString(final ValueSemanticsProvider.Context context, final Locale value) {
-        var userLanguageLocale = context.getInteractionContext().getLocale().getLanguageLocale();
+        var userLanguageLocale = context.getInteractionContext().getLocale().languageLocale();
 
         var language = value.getDisplayLanguage(userLanguageLocale);
         if(_Strings.isEmpty(language)) {
diff --git a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/layout/ActionLayoutAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/layout/ActionLayoutAnnotationFacetFactoryTest.java
index 07517d899a2..e01bf5a4696 100644
--- a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/layout/ActionLayoutAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/layout/ActionLayoutAnnotationFacetFactoryTest.java
@@ -119,10 +119,9 @@ class Customer {
             assertThat(facet, is(notNullValue()));
             assertThat(facet, is(instanceOf(FaFacetForActionLayoutAnnotation.class)));
             var classFaFacetForActionLayoutAnnotation = (FaFacetForActionLayoutAnnotation) facet;
-            assertThat(classFaFacetForActionLayoutAnnotation.getLayers().getIconEntries().get(0).getCssClasses(),
+            assertThat(classFaFacetForActionLayoutAnnotation.getLayers().iconEntries().get(0).cssClasses(),
                     is(equalTo("fa fa-font-awesome fa-fw")));
-            assertThat(classFaFacetForActionLayoutAnnotation.getLayers().getPosition(), is(CssClassFaPosition.LEFT));
-
+            assertThat(classFaFacetForActionLayoutAnnotation.getLayers().position(), is(CssClassFaPosition.LEFT));
         });
     }
 
@@ -141,10 +140,9 @@ class Customer {
             assertThat(facet, is(notNullValue()));
             assertThat(facet, is(instanceOf(FaFacetForActionLayoutAnnotation.class)));
             var classFaFacetForActionLayoutAnnotation = (FaFacetForActionLayoutAnnotation) facet;
-            assertThat(classFaFacetForActionLayoutAnnotation.getLayers().getIconEntries().get(0).getCssClasses(),
+            assertThat(classFaFacetForActionLayoutAnnotation.getLayers().iconEntries().get(0).cssClasses(),
                     is(equalTo("fa fa-font-awesome fa-fw")));
-            assertThat(classFaFacetForActionLayoutAnnotation.getLayers().getPosition(), is(CssClassFaPosition.RIGHT));
-
+            assertThat(classFaFacetForActionLayoutAnnotation.getLayers().position(), is(CssClassFaPosition.RIGHT));
         });
 
     }
diff --git a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFactoryTest.java b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFactoryTest.java
index 2fbd356f6d9..22c00df25dc 100644
--- a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFactoryTest.java
@@ -161,11 +161,10 @@ public void whenSpecified() {
                 assertTrue(facet instanceof FaFacetForDomainObjectLayoutAnnotation);
 
                 final FaFacetForDomainObjectLayoutAnnotation facetImpl = (FaFacetForDomainObjectLayoutAnnotation) facet;
-                assertThat(facetImpl.getLayers().getIconEntries().get(0).getCssClasses(), equalTo("fa fa-foo fa-fw"));
-                assertThat(facetImpl.getLayers().getPosition(), is(CssClassFaPosition.RIGHT));
+                assertThat(facetImpl.getLayers().iconEntries().get(0).cssClasses(), equalTo("fa fa-foo fa-fw"));
+                assertThat(facetImpl.getLayers().position(), is(CssClassFaPosition.RIGHT));
 
                 assertNoMethodsRemoved();
-
             });
         }
 
diff --git a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/object/ident/iconfa/FontAwesomeLayersFacetMethodTest.java b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/object/ident/iconfa/FontAwesomeLayersFacetMethodTest.java
index 41fd3809874..d1b3c61ea5e 100644
--- a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/object/ident/iconfa/FontAwesomeLayersFacetMethodTest.java
+++ b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/object/ident/iconfa/FontAwesomeLayersFacetMethodTest.java
@@ -61,7 +61,6 @@ protected void tearDown() throws Exception {
 
     @Test
     void fontAwesomeLayersFacetViaIconFaLayersMethod() {
-
         var domainObject = getObjectManager().adapt(new DomainObjectWithFontAwesomeLayersMethod());
 
         objectScenario(DomainObjectWithFontAwesomeLayersMethod.class, (processClassContext, facetHolder) -> {
@@ -77,7 +76,7 @@ void fontAwesomeLayersFacetViaIconFaLayersMethod() {
             assertEquals(FONTAWESOME_LAYERS_SAMPLE, actual);
             assertEquals(
                     FontAwesomeLayers.normalizeCssClasses("fa-solid fa-bookmark", "fa"),
-                    actual.getIconEntries().get(0).getCssClasses());
+                    actual.iconEntries().get(0).cssClasses());
         });
     }
 
diff --git a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/locale/LanguageProviderDefault.java b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/locale/LanguageProviderDefault.java
index a2956b7fd3a..85e8ea561c1 100644
--- a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/locale/LanguageProviderDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/locale/LanguageProviderDefault.java
@@ -58,7 +58,7 @@ public class LanguageProviderDefault
     public Optional<Locale> getPreferredLanguage() {
         return interactionProvider.currentInteractionContext()
         .map(InteractionContext::getLocale)
-        .map(UserLocale::getLanguageLocale);
+        .map(UserLocale::languageLocale);
     }
 
 }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionlinks/FontAwesomeBehavior.java b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionlinks/FontAwesomeBehavior.java
index e9faf921789..b186d1af5f7 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionlinks/FontAwesomeBehavior.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionlinks/FontAwesomeBehavior.java
@@ -41,14 +41,14 @@ public class FontAwesomeBehavior extends Behavior {
     @Override
     public void beforeRender(final Component component) {
         super.beforeRender(component);
-        if(CssClassFaPosition.isLeftOrUnspecified(faLayers.getPosition())) {
+        if(CssClassFaPosition.isLeftOrUnspecified(faLayers.position())) {
             component.getResponse().write(faLayers.toHtml());
         }
     }
 
     @Override
     public void afterRender(final Component component) {
-        if(!CssClassFaPosition.isLeftOrUnspecified(faLayers.getPosition())) {
+        if(!CssClassFaPosition.isLeftOrUnspecified(faLayers.position())) {
             component.getResponse().write(faLayers.toHtml());
         }
         super.afterRender(component);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/temporal/TextFieldWithDateTimePicker.java b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/temporal/TextFieldWithDateTimePicker.java
index 82802bddcbc..de9816fc086 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/temporal/TextFieldWithDateTimePicker.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/temporal/TextFieldWithDateTimePicker.java
@@ -136,7 +136,7 @@ private DateTimeConfig createDatePickerConfig(
         var mmc = MetaModelContext.instanceElseFail();
 
         config.useLocale(mmc.currentUserLocale()
-                .map(UserLocale::getLanguageLocale)
+                .map(UserLocale::languageLocale)
                 .orElse(Locale.US));
 
         config.withFormat(_TimeFormatUtil.convertToMomentJsFormat(temporalPattern));
diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/object/icontitle/ObjectIconAndTitlePanel.java b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/object/icontitle/ObjectIconAndTitlePanel.java
index 8b095fa9328..607cd3a641c 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/object/icontitle/ObjectIconAndTitlePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/object/icontitle/ObjectIconAndTitlePanel.java
@@ -120,7 +120,7 @@ private AbstractLink createLinkWithIconAndTitle() {
                     },
                     faLayers->{
                         WktComponents.permanentlyHide(link, ID_OBJECT_ICON);
-                        if(CssClassFaPosition.isLeftOrUnspecified(faLayers.getPosition())) {
+                        if(CssClassFaPosition.isLeftOrUnspecified(faLayers.position())) {
                             Wkt.faIconLayersAdd(link, ID_OBJECT_FONT_AWESOME_LEFT, faLayers);
                             WktComponents.permanentlyHide(link, ID_OBJECT_FONT_AWESOME_RIGHT);
                         } else {