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 {