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

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


The following commit(s) were added to refs/heads/v4 by this push:
     new 2e370a2ee9c CAUSEWAY-3892: work on deprecations (3)
2e370a2ee9c is described below

commit 2e370a2ee9c47c0627d1aca340675d9239416fa9
Author: Andi Huber <[email protected]>
AuthorDate: Fri Jun 13 11:26:15 2025 +0200

    CAUSEWAY-3892: work on deprecations (3)
---
 .../applib/services/bookmark/IdStringifier.java    |  80 ---------
 .../applib/services/email/EmailService.java        |   8 +-
 .../services/wrapper/events/ParseValueEvent.java   |  62 -------
 .../commons/internal/exceptions/_Exceptions.java   |  46 -----
 .../core/config/CausewayConfiguration.java         | 197 +--------------------
 .../core/config/CausewayModuleCoreConfig.java      |  35 ++++
 .../causeway/core/config/EmailConfiguration.java   |  24 +--
 .../core/metamodel/object/ManagedObject.java       |   2 -
 .../metamodel/spec/HasObjectSpecification.java     |   2 -
 .../valuesemantics/BigDecimalValueSemantics.java   |   4 +-
 .../BigDecimalValueSemanticsProviderTest.java      |   2 +-
 ...anticsProvider_configureDecimalFormat_Test.java |   6 +-
 .../CausewayModuleCoreRuntimeServices.java         |   4 +-
 .../runtimeservices/email/EmailServiceDefault.java | 120 +++----------
 .../restclient/api/delete/DeleteMessage.java       |   2 -
 .../api/deleteMany/DeleteManyMessage.java          |   2 -
 .../applib/user/events/UserCreatedEvent.java       |   5 -
 .../fc/res/FullCalendarCssReference.java           |  50 ------
 .../extensions/sse/applib/service/SseChannel.java  |   3 -
 .../sse/wicket/services/SseServiceDefault.java     |   4 +-
 .../repository/RepositoryServiceDefault.java       |   3 +-
 .../persistence/jpa/eclipselink/inject/_Util.java  |  24 +--
 .../integration/entity/_JpaEntityStateUtil.java    |  45 -----
 .../viewers/jpa/wkt/InteractionTestJpaWkt.java     |   2 +-
 .../client/auth/basic/BasicCreds.java              |   3 -
 .../client/auth/oauth2/Oauth2Creds.java            |   5 -
 .../service/valuerender/_JsonValueConverters.java  |   6 -
 .../scalars/jdkmath/BigDecimalConverterTest.java   |   7 +-
 28 files changed, 103 insertions(+), 650 deletions(-)

diff --git 
a/api/applib/src/main/java/org/apache/causeway/applib/services/bookmark/IdStringifier.java
 
b/api/applib/src/main/java/org/apache/causeway/applib/services/bookmark/IdStringifier.java
index ec82d17f005..7fb7b34c1ba 100644
--- 
a/api/applib/src/main/java/org/apache/causeway/applib/services/bookmark/IdStringifier.java
+++ 
b/api/applib/src/main/java/org/apache/causeway/applib/services/bookmark/IdStringifier.java
@@ -20,9 +20,6 @@
 
 package org.apache.causeway.applib.services.bookmark;
 
-import org.apache.causeway.commons.internal.assertions._Assert;
-
-import lombok.Getter;
 import org.jspecify.annotations.NonNull;
 
 /**
@@ -44,7 +41,6 @@
  *
  * @since 2.0 {@index}
  */
-@SuppressWarnings("javadoc")
 public interface IdStringifier<T> {
 
     public final static char SEPARATOR = '_';
@@ -104,80 +100,4 @@ default T destring(final @NonNull Class<?> 
targetEntityClass, final @NonNull Str
 
     }
 
-    /**
-     * Provided for backward compatibility with some v1 Ids that used a prefix 
to determine their actual type.
-     * <p>
-     * (In v2 we provide this so in the constructor, so there's no need to 
encode the type in the stringified form
-     * of the value).
-     *
-     * @param <T>
-     *
-     * @deprecated not used within the framework; eventually remove
-     */
-    @Deprecated
-    abstract class AbstractWithPrefix<T> implements IdStringifier<T> {
-
-        /**
-         * eg <code>Integer.class</code>, or JDO-specific 
<code>DatastoreId</code>,
-         * or a custom class for application-defined PKs.
-         */
-        @Getter private final Class<T> correspondingClass;
-
-        private final String prefix;
-
-        public AbstractWithPrefix(
-                final @NonNull Class<T> correspondingClass,
-                final @NonNull String typeCode) {
-            _Assert.assertFalse(correspondingClass.isPrimitive(),
-                    ()->String.format("not allowed to be initialzed with a 
primitive class (%s), "
-                            + "use the boxed variant instead",
-                            correspondingClass));
-            this.correspondingClass = correspondingClass;
-            this.prefix = typeCode + SEPARATOR;
-        }
-
-        @Override
-        public final String enstring(final @NonNull T value) {
-            return prefix + doEnstring(value);
-        }
-
-        /**
-         * Overridable hook
-         */
-        protected String doEnstring(final T value) {
-            return value.toString();
-        }
-
-        @Override
-        public final T destring(
-                final @NonNull Class<?> targetEntityClass,
-                final @NonNull String stringified) {
-            var suffix = removePrefix(stringified);
-            return doDestring(suffix, targetEntityClass);
-        }
-
-        /**
-         * Mandatory hook
-         */
-        protected abstract T doDestring(
-                final @NonNull String idStr,
-                final @NonNull Class<?> targetEntityClass);
-
-        private String removePrefix(final String str) {
-            if (str.startsWith(prefix)) {
-                return str.substring(prefix.length());
-            }
-            throw new IllegalArgumentException(
-                    String.format("expected id to start with '%s', but got 
'%s'", prefix, str));
-        }
-
-        /**
-         * Not API
-         */
-        public boolean recognizes(final String stringified) {
-            return stringified.startsWith(prefix);
-        }
-
-    }
-
 }
diff --git 
a/api/applib/src/main/java/org/apache/causeway/applib/services/email/EmailService.java
 
b/api/applib/src/main/java/org/apache/causeway/applib/services/email/EmailService.java
index 87e37f39aff..1a1810be8e0 100644
--- 
a/api/applib/src/main/java/org/apache/causeway/applib/services/email/EmailService.java
+++ 
b/api/applib/src/main/java/org/apache/causeway/applib/services/email/EmailService.java
@@ -18,14 +18,11 @@
  */
 package org.apache.causeway.applib.services.email;
 
-import java.io.Serializable;
 import java.util.List;
 
 import jakarta.activation.DataSource;
-import jakarta.annotation.PostConstruct;
 
 /**
- *
  * The `EmailService` provides the ability to send HTML emails, with
  * attachments, to one or more recipients.
  *
@@ -36,10 +33,7 @@
  *
  * @since 1.x {@index}
  */
-public interface EmailService extends Serializable {
-
-    @PostConstruct
-    public void init() ;
+public interface EmailService {
 
     /**
      * The main API to send the email (and optional attachments).
diff --git 
a/api/applib/src/main/java/org/apache/causeway/applib/services/wrapper/events/ParseValueEvent.java
 
b/api/applib/src/main/java/org/apache/causeway/applib/services/wrapper/events/ParseValueEvent.java
deleted file mode 100644
index 25b6007432b..00000000000
--- 
a/api/applib/src/main/java/org/apache/causeway/applib/services/wrapper/events/ParseValueEvent.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- *  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 agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.causeway.applib.services.wrapper.events;
-
-import org.apache.causeway.applib.Identifier;
-import org.apache.causeway.applib.services.wrapper.WrapperFactory;
-
-/**
- * Supported only by {@link WrapperFactory},
- * represents a check as to whether the proposed values of the value type is 
valid.
- * <p>
- * If {@link #getReason()} is not <tt>null</tt> then provides the reason why 
the
- * proposed value is invalid, otherwise the new value is acceptable.
- *
- * @since 1.x {@index}
- */
-@Deprecated // not used
-public class ParseValueEvent extends ValidityEvent {
-
-    private static Object coalesce(final Object source, final String proposed) 
{
-        return source != null ? source : proposed;
-    }
-
-    private final String proposed;
-
-    public ParseValueEvent(final Object source, final Identifier 
classIdentifier, final String proposed) {
-        super(coalesce(source, proposed), classIdentifier);
-        this.proposed = proposed;
-    }
-
-    /**
-     * Will be the source provided in the
-     * {@link #ParseValueEvent(Object, Identifier, String) constructor} if not
-     * null, otherwise will fallback to the proposed value.
-     */
-    @Override
-    public Object getSource() {
-        return super.getSource();
-    }
-
-    @Override
-    public String getProposed() {
-        return proposed;
-    }
-
-}
diff --git 
a/commons/src/main/java/org/apache/causeway/commons/internal/exceptions/_Exceptions.java
 
b/commons/src/main/java/org/apache/causeway/commons/internal/exceptions/_Exceptions.java
index 7ee17ae6dc7..1aac4c6a198 100644
--- 
a/commons/src/main/java/org/apache/causeway/commons/internal/exceptions/_Exceptions.java
+++ 
b/commons/src/main/java/org/apache/causeway/commons/internal/exceptions/_Exceptions.java
@@ -254,52 +254,6 @@ public static void throwUnexpectedCodeReach() {
         throw unexpectedCodeReach();
     }
 
-    /**
-     * Used to hide from the compiler the fact, that this call always throws.
-     *
-     * <pre>{
-     *    throw notImplemented();
-     *    return 0; // won't compile: unreachable code
-     *}</pre>
-     *
-     * hence ...
-     *
-     * <pre>{
-     *    throwNotImplemented();
-     *    return 0;
-     *}</pre>
-     *
-     */
-    @Deprecated
-    public static void throwNotImplemented() {
-        dumpStackTrace();
-        throw notImplemented();
-    }
-
-    // -- SELECTIVE ERROR SUPPRESSION
-
-    // /**
-    //  * Allows to selectively ignore unchecked exceptions. Most likely used 
framework internally
-    //  * for workarounds, not properly dealing with the root cause. This way 
at least we know, where
-    //  * we placed such workarounds.
-    //  *
-    //  * @param runnable that might throw an unchecked exception
-    //  * @param suppress predicate that decides whether to suppress an 
exception
-    //  */
-    // public static void catchSilently(
-    //                 Runnable runnable,
-    //                 Predicate<RuntimeException> suppress) {
-    //
-    //         try {
-    //                 runnable.run();
-    //         } catch (RuntimeException cause) {
-    //                 if(suppress.test(cause)) {
-    //                         return;
-    //                 }
-    //                 throw cause;
-    //         }
-    // }
-
     // -- SELECTIVE THROW
 
     public static <E extends Exception> void throwWhenTrue(final E cause, 
final Predicate<E> test) throws E {
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 de9f58f0161..bea650d6512 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
@@ -63,7 +63,6 @@
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.context.properties.ConfigurationProperties;
-import 
org.springframework.boot.context.properties.DeprecatedConfigurationProperty;
 import org.springframework.boot.info.BuildProperties;
 import org.springframework.core.env.ConfigurableEnvironment;
 import org.springframework.core.env.EnumerablePropertySource;
@@ -1847,51 +1846,15 @@ public static class Runtime {
         public static class RuntimeServices {
 
             private final Email email = new Email();
+            /**
+             * Mail specific configuration in addition to Spring's 
<code>spring.mail.*</code>.
+             * See also spring.mail.port, 
spring.mail.properties.mail.smtp.connectiontimeout,
+             * spring.mail.properties.mail.smtp.timeout, spring.mail.host, 
spring.mail.username,
+             * spring.mail.password, 
spring.mail.javamail.properties.mail.smtp.starttls.enable
+             */
             @Data
             public static class Email {
 
-                @Deprecated
-                private int port = 587;
-
-                /**
-                 * The port to use for sending email.
-                 *
-                 * @deprecated  - ignored, instead use 
<code>spring.mail.port</code>
-                 */
-                @Deprecated
-                @DeprecatedConfigurationProperty(replacement = 
"spring.mail.port")
-                public int getPort() {
-                    return port;
-                }
-
-                @Deprecated
-                private int socketConnectionTimeout = 2000;
-
-                /**
-                 * The maximum number of millseconds to wait to obtain a 
socket connection before timing out.
-                 *
-                 * @deprecated  - ignored, instead use 
<code>spring.mail.properties.mail.smtp.connectiontimeout</code>
-                 */
-                @Deprecated
-                @DeprecatedConfigurationProperty(replacement = 
"spring.mail.properties.mail.smtp.connectiontimeout")
-                public int getSocketConnectionTimeout() {
-                    return socketConnectionTimeout;
-                }
-
-                @Deprecated
-                private int socketTimeout = 2000;
-
-                /**
-                 * The maximum number of milliseconds to wait to obtain a 
socket before timing out.
-                 *
-                 * @deprecated  - ignored, instead use 
<code>spring.mail.properties.mail.smtp.timeout</code>
-                 */
-                @Deprecated
-                @DeprecatedConfigurationProperty(replacement = 
"spring.mail.properties.mail.smtp.timeout")
-                public int getSocketTimeout() {
-                    return socketTimeout;
-                }
-
                 /**
                  * If an email fails to send, whether to propagate the 
exception (meaning that potentially the end-user
                  * might see the exception), or whether instead to just 
indicate failure through the return value of
@@ -1927,63 +1890,6 @@ public static class Override {
                 @Data
                 public static class Sender {
 
-                    @Deprecated
-                    private String hostname;
-
-                    /**
-                     * Specifies the host running the SMTP service.
-                     *
-                     * <p>
-                     *     If not specified, then the value used depends upon 
the email implementation.  The default
-                     *     implementation will use the 
<code>mail.smtp.host</code> system property.
-                     * </p>
-                     *
-                     * @deprecated - now ignored, instead use 
<code>spring.mail.host</code>
-                     */
-                    @Deprecated
-                    @DeprecatedConfigurationProperty(replacement = 
"spring.mail.host")
-                    public String getHostname() {
-                        return hostname;
-                    }
-
-                    @Deprecated
-                    private String username;
-
-                    /**
-                     * Specifies the username to use to connect to the SMTP 
service.
-                     *
-                     * <p>
-                     *     If not specified, then the sender's {@link 
#getAddress() email address} will be used instead.
-                     * </p>
-                     *
-                     * @deprecated - now ignored, instead use 
<code>spring.mail.username</code>
-                     */
-                    @Deprecated
-                    @DeprecatedConfigurationProperty(replacement = 
"spring.mail.username")
-                    public String getUsername() {
-                        return username;
-                    }
-
-                    @Deprecated
-                    private String password;
-
-                    /**
-                     * Specifies the password (corresponding to the {@link 
#getUsername() username} to connect to the
-                     * SMTP service.
-                     *
-                     * <p>
-                     *     This configuration property is mandatory (for the 
default implementation of the
-                     *     {@link 
org.apache.causeway.applib.services.email.EmailService}, at least).
-                     * </p>
-                     *
-                     * @deprecated - now ignored, instead use 
<code>spring.mail.password</code>
-                     */
-                    @Deprecated
-                    @DeprecatedConfigurationProperty(replacement = 
"spring.mail.password")
-                    public String getPassword() {
-                        return password;
-                    }
-
                     /**
                      * Specifies the email address of the user sending the 
email.
                      *
@@ -2001,25 +1907,6 @@ public String getPassword() {
                     private String address;
                 }
 
-                @Deprecated
-                private final Tls tls = new Tls();
-                @Deprecated
-                @Data
-                public static class Tls {
-                    @Deprecated
-                    private boolean enabled = true;
-
-                    /**
-                     * Whether TLS encryption should be started (that is, 
<code>STARTTLS</code>).
-                     *
-                     * @deprecated  - now ignored, instead use 
<code>spring.mail.javamail.properties.mail.smtp.starttls.enable</code>
-                     */
-                    @Deprecated
-                    @DeprecatedConfigurationProperty(replacement = 
"spring.mail.javamail.properties.mail.smtp.starttls.enable")
-                    public boolean isEnabled() {
-                        return enabled;
-                    }
-                }
             }
 
             private final ApplicationFeatures applicationFeatures = new 
ApplicationFeatures();
@@ -2034,27 +1921,6 @@ public static class ApplicationFeatures {
                 ApplicationFeaturesInitConfiguration init = 
ApplicationFeaturesInitConfiguration.NOT_SPECIFIED;
             }
 
-            private final RepositoryService repositoryService = new 
RepositoryService();
-            @Data
-            public static class RepositoryService {
-                private boolean disableAutoFlush = false;
-
-                /**
-                 * Normally any queries are automatically preceded by flushing 
pending executions.
-                 *
-                 * <p>
-                 * This key allows this behaviour to be disabled.
-                 * </p>
-                 *
-                 * @deprecated - use instead 
<code>causeway.persistence.commons.repository-service.disable-auto-flush</code>
-                 */
-                @Deprecated
-                @DeprecatedConfigurationProperty(replacement = 
"causeway.persistence.commons.repository-service.disable-auto-flush")
-                public boolean isDisableAutoFlush() {
-                    return disableAutoFlush;
-                }
-            }
-
             private final ExceptionRecognizer exceptionRecognizer = new 
ExceptionRecognizer();
             @Data
             public static class ExceptionRecognizer {
@@ -3584,23 +3450,6 @@ public static class BigDecimal {
              */
             private boolean useScaleForMinFractionalFacet = true;
 
-            /**
-             * The minimum scale to use for all {@link java.math.BigDecimal}s.
-             *
-             * <p>
-             * Is only used if the minimum scale has not been specified 
explicitly by some other means, typically
-             * either {@link Digits#fraction()} or an ORM semantic such as the 
(JPA) {@link Column#scale()}.
-             *
-             * @deprecated - use {@link Display#getMinScale()} instead
-             */
-            @Deprecated(since = "2.2.0")
-            private Integer minScale = null;
-
-            @DeprecatedConfigurationProperty(replacement = 
"causeway.value-types.big-decimal.display.min-scale", reason = "Moved")
-            public Integer getMinScale() {
-                return minScale;
-            }
-
             private final Editing editing = new Editing();
             @Data
             public static class Editing {
@@ -3661,40 +3510,6 @@ public static class Display {
                 private boolean useGroupingSeparator = true;
             }
 
-            /**
-             * A common use of {@link java.math.BigDecimal} is as a money 
value.  In some locales (eg English), the
-             * &quot;,&quot; (comma) is the grouping (thousands) separator 
wihle the &quot;.&quot; (period) acts as a
-             * decimal point, but in others (eg France, Italy) it is the other 
way around.
-             *
-             * <p>
-             *     Surprisingly perhaps, a string such as "123,99", when 
parsed ((by {@link java.text.DecimalFormat})
-             *     in an English locale, is not rejected but instead is 
evaluated as the value 12399L.  That's almost
-             *     certainly not what the end-user would have expected, and 
results in a money value 100x too large.
-             * </p>
-             *
-             * <p>
-             *     The purpose of this configuration property is to remove the 
confusion by simply disallowing the
-             *     thousands separator from being part of the input string.
-             * </p>
-             *
-             * <p>
-             *     For maximum safety, allowing the grouping separator is 
disallowed, but the alternate (original)
-             *     behaviour can be reinstated by setting this config property 
back to <code>true</code>.
-             * </p>
-             *
-             * <p>
-             *     The same configuration property is also used for rendering 
the value.
-             * </p>
-             *
-             * @deprecated - use {@link Editing#isUseGroupingSeparator()} 
instead.
-             */
-            @Deprecated(since = "2.2.0")
-            private boolean useGroupingSeparator = false;
-
-            @DeprecatedConfigurationProperty(replacement = 
"causeway.value-types.big-decimal.editing.use-grouping-separator")
-            public boolean isUseGroupingSeparator() {
-                return useGroupingSeparator;
-            }
         }
 
         private final Kroki kroki = new Kroki();
diff --git 
a/core/config/src/main/java/org/apache/causeway/core/config/CausewayModuleCoreConfig.java
 
b/core/config/src/main/java/org/apache/causeway/core/config/CausewayModuleCoreConfig.java
index 77cded292af..2cfc7dbedb9 100644
--- 
a/core/config/src/main/java/org/apache/causeway/core/config/CausewayModuleCoreConfig.java
+++ 
b/core/config/src/main/java/org/apache/causeway/core/config/CausewayModuleCoreConfig.java
@@ -18,10 +18,13 @@
  */
 package org.apache.causeway.core.config;
 
+import org.springframework.beans.factory.annotation.Value;
 import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 
+import org.apache.causeway.commons.internal.base._Strings;
 import org.apache.causeway.core.config.applib.RestfulPathProvider;
 import org.apache.causeway.core.config.beans.CausewayBeanFactoryPostProcessor;
 import org.apache.causeway.core.config.converters.PatternsConverter;
@@ -62,4 +65,36 @@ public class CausewayModuleCoreConfig {
 
     public static final String NAMESPACE = "causeway.config";
 
+    @Bean
+    public EmailConfiguration emailConfiguration(
+        CausewayConfiguration conf,
+        @Value("#{systemProperties['spring.mail.username']}") String 
senderEmailUsername,
+        @Value("#{systemProperties['spring.mail.password']}") String 
senderEmailPassword,
+        @Value("#{systemProperties['spring.mail.host']}") String 
senderEmailHostName,
+        @Value("#{systemProperties['spring.mail.port']}") Integer 
senderEmailPort,
+        
@Value("#{systemProperties['spring.mail.javamail.properties.mail.smtp.starttls.enable']}")
 Boolean senderEmailTlsEnabled,
+        
@Value("#{systemProperties['spring.mail.properties.mail.smtp.timeout']}") 
Integer smtpTimeout,
+        
@Value("#{systemProperties['spring.mail.properties.mail.smtp.connectiontimeout']}")
 Integer smtpConnectionTimeout) {
+
+
+        var emailConfiguration = 
conf.getCore().getRuntimeServices().getEmail();
+
+        String senderUsername = _Strings.emptyToNull(senderEmailUsername);
+        String senderPassword = _Strings.emptyToNull(senderEmailPassword);
+        String senderHostName = _Strings.emptyToNull(senderEmailHostName);
+        int senderPort = senderEmailPort!=null ? senderEmailPort : 587;
+        boolean isSenderTlsEnabled = senderEmailTlsEnabled!=null ? 
senderEmailTlsEnabled : true;
+        int socketTimeout = smtpTimeout!=null ? smtpTimeout : 2000;
+        int socketConnectionTimeout = smtpConnectionTimeout!=null ? 
smtpConnectionTimeout : 2000;
+        boolean isThrowExceptionOnFail = 
emailConfiguration.isThrowExceptionOnFail();
+        String senderAddress = emailConfiguration.getSender().getAddress();
+        String overrideTo = emailConfiguration.getOverride().getTo();
+        String overrideCc = emailConfiguration.getOverride().getCc();
+        String overrideBcc = emailConfiguration.getOverride().getBcc();
+
+        return new EmailConfiguration(senderUsername, senderPassword, 
senderHostName, senderPort,
+            isSenderTlsEnabled, socketTimeout, socketConnectionTimeout,
+            isThrowExceptionOnFail, senderAddress, overrideTo, overrideCc, 
overrideBcc);
+    }
+
 }
diff --git 
a/viewers/restfulobjects/client/src/main/java/org/apache/causeway/viewer/restfulobjects/client/auth/basic/BasicCreds.java
 
b/core/config/src/main/java/org/apache/causeway/core/config/EmailConfiguration.java
similarity index 67%
copy from 
viewers/restfulobjects/client/src/main/java/org/apache/causeway/viewer/restfulobjects/client/auth/basic/BasicCreds.java
copy to 
core/config/src/main/java/org/apache/causeway/core/config/EmailConfiguration.java
index 9efa49e4fb4..6774f9f2331 100644
--- 
a/viewers/restfulobjects/client/src/main/java/org/apache/causeway/viewer/restfulobjects/client/auth/basic/BasicCreds.java
+++ 
b/core/config/src/main/java/org/apache/causeway/core/config/EmailConfiguration.java
@@ -16,15 +16,19 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.causeway.viewer.restfulobjects.client.auth.basic;
+package org.apache.causeway.core.config;
 
-import lombok.Builder;
-
-@Builder
-public record BasicCreds(
-        String username,
-        String password) {
-
-    @Deprecated public String getUsername() { return username(); }
-    @Deprecated public String getPassword() { return password(); }
+public record EmailConfiguration(
+    String senderUsername,
+    String senderPassword,
+    String senderHostName,
+    int senderPort,
+    boolean isSenderTlsEnabled,
+    int socketTimeout,
+    int socketConnectionTimeout,
+    boolean isThrowExceptionOnFail,
+    String senderAddress,
+    String overrideTo,
+    String overrideCc,
+    String overrideBcc) {
 }
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/ManagedObject.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/ManagedObject.java
index b52b51d71ed..d51f16d4975 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/ManagedObject.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/ManagedObject.java
@@ -352,8 +352,6 @@ <T> T assertCompliance(
      */
     Specialization specialization();
 
-    @Deprecated default Specialization getSpecialization() { return 
specialization(); }
-
     @Override default Specialization.BookmarkPolicy getBookmarkPolicy() {
         return specialization().getBookmarkPolicy();
     }
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/spec/HasObjectSpecification.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/spec/HasObjectSpecification.java
index d4939f3c4f4..0e64e4d5f5f 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/spec/HasObjectSpecification.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/spec/HasObjectSpecification.java
@@ -30,8 +30,6 @@
  */
 public interface HasObjectSpecification {
 
-    @Deprecated default ObjectSpecification getSpecification() { return 
objSpec(); }
-
     ObjectSpecification objSpec();
 
     // -- SHORTCUTS
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BigDecimalValueSemantics.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BigDecimalValueSemantics.java
index 6e9b17db5d7..d42cff650f4 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BigDecimalValueSemantics.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BigDecimalValueSemantics.java
@@ -137,7 +137,7 @@ public BigDecimal parseTextRepresentation(final 
ValueSemanticsProvider.Context c
     }
 
     private boolean isUseGroupingSeparatorFrom(final 
CausewayConfiguration.ValueTypes.BigDecimal bigDecimalConfig) {
-        return bigDecimalConfig.getEditing().isUseGroupingSeparator() || 
bigDecimalConfig.isUseGroupingSeparator();
+        return bigDecimalConfig.getEditing().isUseGroupingSeparator() || 
bigDecimalConfig.getDisplay().isUseGroupingSeparator();
     }
 
     @Override
@@ -185,7 +185,7 @@ protected void configureDecimalFormat(
 
     private static Optional<Integer> minScaleFrom(final 
CausewayConfiguration.ValueTypes.BigDecimal bigDecimalConfig) {
         return Optional.ofNullable(bigDecimalConfig.getDisplay().getMinScale())
-                       .or(() -> 
Optional.ofNullable(bigDecimalConfig.getMinScale()));
+                       .or(() -> 
Optional.ofNullable(bigDecimalConfig.getDisplay().getMinScale()));
     }
 
     @Override
diff --git 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/value/BigDecimalValueSemanticsProviderTest.java
 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/value/BigDecimalValueSemanticsProviderTest.java
index c47f43d0f7e..4e97d6a2ad1 100644
--- 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/value/BigDecimalValueSemanticsProviderTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/value/BigDecimalValueSemanticsProviderTest.java
@@ -109,7 +109,7 @@ void titleOf() {
 
     @Test
     void titleOfWhenUseGroupingSeparator() {
-        
causewayConfiguration.getValueTypes().getBigDecimal().setUseGroupingSeparator(true);
+        
causewayConfiguration.getValueTypes().getBigDecimal().getDisplay().setUseGroupingSeparator(true);
 
         assertEquals("34,132.199", value.titlePresentation(null, bigDecimal));
     }
diff --git 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/valuesemantics/BigDecimalValueSemanticsProvider_configureDecimalFormat_Test.java
 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/valuesemantics/BigDecimalValueSemanticsProvider_configureDecimalFormat_Test.java
index 86a1b5d95db..bb8ec84542b 100644
--- 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/valuesemantics/BigDecimalValueSemanticsProvider_configureDecimalFormat_Test.java
+++ 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/valuesemantics/BigDecimalValueSemanticsProvider_configureDecimalFormat_Test.java
@@ -58,7 +58,7 @@ void setUpObjects() throws Exception {
         context = new ValueSemanticsProvider.Context(mockIdentifier, null);
 
         causewayConfiguration = CausewayConfiguration.builder().build();
-        
causewayConfiguration.getValueTypes().getBigDecimal().setMinScale(null);
+        
causewayConfiguration.getValueTypes().getBigDecimal().getDisplay().setMinScale(null);
 
         // expecting
         
Mockito.lenient().when(mockSpecificationLoader.loadFeature(mockIdentifier)).thenReturn(Optional.of(mockObjectFeature));
@@ -101,7 +101,7 @@ void min_facets_not_set_but_fallback() {
         
Mockito.lenient().when(mockObjectFeature.lookupFacet(MinFractionalDigitsFacet.class))
                .thenReturn(Optional.empty());
 
-        
causewayConfiguration.getValueTypes().getBigDecimal().setMinScale(fallbackScale);
+        
causewayConfiguration.getValueTypes().getBigDecimal().getDisplay().setMinScale(fallbackScale);
 
         // when
         DecimalFormat format = new DecimalFormat();
@@ -124,7 +124,7 @@ void min_facets_not_set_and_no_fallback() {
         
Mockito.lenient().when(mockObjectFeature.lookupFacet(MinFractionalDigitsFacet.class))
                .thenReturn(Optional.empty());
 
-        
causewayConfiguration.getValueTypes().getBigDecimal().setMinScale(null);
+        
causewayConfiguration.getValueTypes().getBigDecimal().getDisplay().setMinScale(null);
 
         // when
         DecimalFormat format = new DecimalFormat();
diff --git 
a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/CausewayModuleCoreRuntimeServices.java
 
b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/CausewayModuleCoreRuntimeServices.java
index 26a96b1db13..2ec2bbaff05 100644
--- 
a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/CausewayModuleCoreRuntimeServices.java
+++ 
b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/CausewayModuleCoreRuntimeServices.java
@@ -18,8 +18,6 @@
  */
 package org.apache.causeway.core.runtimeservices;
 
-import jakarta.inject.Singleton;
-
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
@@ -136,7 +134,7 @@ public class CausewayModuleCoreRuntimeServices {
 
     public static final String NAMESPACE = "causeway.runtimeservices";
 
-    @Bean @Singleton // also used by _Spring utility
+    @Bean // also used by _Spring utility
     public OrderComparator orderComparator() {
         return new AnnotationAwareOrderComparator();
     }
diff --git 
a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/email/EmailServiceDefault.java
 
b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/email/EmailServiceDefault.java
index 4a6b70e9d56..25c332c60c5 100644
--- 
a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/email/EmailServiceDefault.java
+++ 
b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/email/EmailServiceDefault.java
@@ -22,7 +22,6 @@
 import java.util.List;
 
 import jakarta.activation.DataSource;
-import jakarta.annotation.PostConstruct;
 import jakarta.annotation.Priority;
 import jakarta.inject.Inject;
 import jakarta.inject.Named;
@@ -33,13 +32,17 @@
 import org.springframework.mail.javamail.JavaMailSender;
 import org.springframework.mail.javamail.MimeMessageHelper;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
 import org.apache.causeway.applib.annotation.PriorityPrecedence;
 import org.apache.causeway.applib.services.email.EmailService;
 import org.apache.causeway.commons.internal.base._Strings;
-import org.apache.causeway.core.config.CausewayConfiguration;
+import org.apache.causeway.core.config.EmailConfiguration;
 import 
org.apache.causeway.core.runtimeservices.CausewayModuleCoreRuntimeServices;
 
+import lombok.Getter;
+import lombok.SneakyThrows;
+import lombok.experimental.Accessors;
 import lombok.extern.slf4j.Slf4j;
 
 /**
@@ -60,97 +63,26 @@
 @Slf4j
 public class EmailServiceDefault implements EmailService {
 
-    private static final long serialVersionUID = 1L;
-    public static class EmailServiceException extends RuntimeException {
-        static final long serialVersionUID = 1L;
-        public EmailServiceException(final Exception cause) {
-            super(cause);
-        }
-    }
-
-    @Inject private CausewayConfiguration configuration;
-
-    @Inject private Provider<JavaMailSender> emailSenderProvider;
-
-    // -- INIT
-
-    private boolean initialized;
-
-    /**
-     * Loads responsive email templates borrowed from 
http://zurb.com/ink/templates.php (Basic)
-     */
-    @Override
-    @PostConstruct
-    public void init() {
-
-        if (initialized) {
-            return;
-        }
-
-        initialized = true;
-
-        if (!isConfigured()) {
-            log.warn("NOT configured");
-        } else {
-            log.debug("configured");
-        }
-    }
-
-    protected String getSenderEmailUsername() {
-        return 
configuration.getCore().getRuntimeServices().getEmail().getSender().getUsername();
-    }
-
-    protected String getSenderEmailAddress() {
-        return 
configuration.getCore().getRuntimeServices().getEmail().getSender().getAddress();
-    }
-
-    protected String getSenderEmailPassword() {
-        return 
configuration.getCore().getRuntimeServices().getEmail().getSender().getPassword();
-    }
-
-    protected String getSenderEmailHostName() {
-        return 
configuration.getCore().getRuntimeServices().getEmail().getSender().getHostname();
-    }
-
-    protected Integer getSenderEmailPort() {
-        return 
configuration.getCore().getRuntimeServices().getEmail().getPort();
-    }
+    @Getter private final EmailConfiguration configuration;
+    private final Provider<JavaMailSender> emailSenderProvider;
 
-    protected Boolean getSenderEmailTlsEnabled() {
-        return 
configuration.getCore().getRuntimeServices().getEmail().getTls().isEnabled();
-    }
+    @Getter(onMethod_={@Override}) @Accessors(fluent=true)
+    private final boolean isConfigured;
 
-    protected boolean isThrowExceptionOnFail() {
-        return 
configuration.getCore().getRuntimeServices().getEmail().isThrowExceptionOnFail();
-    }
+    @Inject
+    public EmailServiceDefault(
+        EmailConfiguration configuration,
+        Provider<JavaMailSender> emailSenderProvider) {
 
-    protected int getSocketTimeout() {
-        return 
configuration.getCore().getRuntimeServices().getEmail().getSocketTimeout();
-    }
-
-    protected int getSocketConnectionTimeout() {
-        return 
configuration.getCore().getRuntimeServices().getEmail().getSocketConnectionTimeout();
-    }
+        this.configuration = configuration;
+        this.emailSenderProvider = emailSenderProvider;
 
-    protected String getEmailOverrideTo() {
-        return 
configuration.getCore().getRuntimeServices().getEmail().getOverride().getTo();
-    }
-
-    protected String getEmailOverrideCc() {
-        return 
configuration.getCore().getRuntimeServices().getEmail().getOverride().getCc();
-    }
-
-    protected String getEmailOverrideBcc() {
-        return 
configuration.getCore().getRuntimeServices().getEmail().getOverride().getBcc();
-    }
-
-    @Override
-    public boolean isConfigured() {
-        final String senderEmailAddress = getSenderEmailAddress();
-        final String senderEmailPassword = getSenderEmailPassword();
-        return !_Strings.isNullOrEmpty(senderEmailAddress) && 
!_Strings.isNullOrEmpty(senderEmailPassword);
+        this.isConfigured = 
StringUtils.hasLength(configuration.senderAddress())
+            && StringUtils.hasLength(configuration.senderPassword());
+        if (!isConfigured()) log.warn("NOT configured");
     }
 
+    @SneakyThrows
     @Override
     public boolean send(
             final List<String> toList,
@@ -161,13 +93,12 @@ public boolean send(
             final DataSource... attachments) {
 
         try {
-
             var javaMailSender = emailSenderProvider.get();
 
             var email = javaMailSender.createMimeMessage();
             var emailHelper = new MimeMessageHelper(email, true);
 
-            emailHelper.setFrom(getSenderEmailAddress());
+            emailHelper.setFrom(configuration.senderAddress());
 
             emailHelper.setSubject(subject);
             boolean html = true;
@@ -179,9 +110,9 @@ public boolean send(
                 }
             }
 
-            final String overrideToList = getEmailOverrideTo();
-            final String overrideCc = getEmailOverrideCc();
-            final String overrideBcc = getEmailOverrideBcc();
+            final String overrideToList = configuration.overrideTo();
+            final String overrideCc = configuration.overrideCc();
+            final String overrideBcc = configuration.overrideBcc();
 
             final String[] toListElseOverride = 
originalUnlessOverridden(toList, overrideToList);
             if (notEmpty(toListElseOverride)) {
@@ -200,10 +131,7 @@ public boolean send(
 
         } catch (MessagingException e) {
             log.error("An error occurred while trying to send an email", e);
-            final Boolean throwExceptionOnFail = isThrowExceptionOnFail();
-            if (throwExceptionOnFail) {
-                throw new EmailServiceException(e);
-            }
+            if (configuration.isThrowExceptionOnFail()) throw e;
             return false;
         }
 
diff --git 
a/extensions/core/executionoutbox/restclient/src/main/java/org/apache/causeway/extensions/executionoutbox/restclient/api/delete/DeleteMessage.java
 
b/extensions/core/executionoutbox/restclient/src/main/java/org/apache/causeway/extensions/executionoutbox/restclient/api/delete/DeleteMessage.java
index 90eb1143985..31a2510030e 100644
--- 
a/extensions/core/executionoutbox/restclient/src/main/java/org/apache/causeway/extensions/executionoutbox/restclient/api/delete/DeleteMessage.java
+++ 
b/extensions/core/executionoutbox/restclient/src/main/java/org/apache/causeway/extensions/executionoutbox/restclient/api/delete/DeleteMessage.java
@@ -23,8 +23,6 @@ public record DeleteMessage(
         StringValue interactionId,
         IntValue sequence) {
 
-    @Deprecated public StringValue getInteractionId() { return 
interactionId(); }
-    @Deprecated public IntValue getSequence() { return sequence(); }
 
     public DeleteMessage(final String interactionId, final int sequence) {
         this(new StringValue(interactionId), new IntValue(sequence));
diff --git 
a/extensions/core/executionoutbox/restclient/src/main/java/org/apache/causeway/extensions/executionoutbox/restclient/api/deleteMany/DeleteManyMessage.java
 
b/extensions/core/executionoutbox/restclient/src/main/java/org/apache/causeway/extensions/executionoutbox/restclient/api/deleteMany/DeleteManyMessage.java
index 9c03f3ff923..380d7735050 100644
--- 
a/extensions/core/executionoutbox/restclient/src/main/java/org/apache/causeway/extensions/executionoutbox/restclient/api/deleteMany/DeleteManyMessage.java
+++ 
b/extensions/core/executionoutbox/restclient/src/main/java/org/apache/causeway/extensions/executionoutbox/restclient/api/deleteMany/DeleteManyMessage.java
@@ -22,8 +22,6 @@
 
 public record DeleteManyMessage(StringValue interactionsDtoXml) {
 
-    @Deprecated public StringValue getInteractionsDtoXml() { return 
interactionsDtoXml(); }
-
     public DeleteManyMessage(final String interactionsDtoXml) {
         this(new StringValue(interactionsDtoXml));
     }
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/events/UserCreatedEvent.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/events/UserCreatedEvent.java
index eadb3dd1c4b..ec537d51041 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/events/UserCreatedEvent.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/events/UserCreatedEvent.java
@@ -44,11 +44,6 @@
  */
 public record UserCreatedEvent(@NonNull ApplicationUser user) {
 
-    /**
-     * @deprecated use {@link #user()} instead
-     */
-    @Deprecated public ApplicationUser getUser() { return user(); }
-
     // -- SHORTCUTS
 
     public AccountType getAccountType() {
diff --git 
a/extensions/vw/fullcalendar/wicket/integration/src/main/java/org/apache/causeway/extensions/fullcalendar/wkt/integration/fc/res/FullCalendarCssReference.java
 
b/extensions/vw/fullcalendar/wicket/integration/src/main/java/org/apache/causeway/extensions/fullcalendar/wkt/integration/fc/res/FullCalendarCssReference.java
deleted file mode 100644
index 61e7a9fb3b1..00000000000
--- 
a/extensions/vw/fullcalendar/wicket/integration/src/main/java/org/apache/causeway/extensions/fullcalendar/wkt/integration/fc/res/FullCalendarCssReference.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- *  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 agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.causeway.extensions.fullcalendar.wkt.integration.fc.res;
-
-import org.apache.wicket.markup.head.CssHeaderItem;
-import org.apache.wicket.markup.head.HeaderItem;
-
-import lombok.Getter;
-import lombok.experimental.Accessors;
-
-import 
de.agilecoders.wicket.webjars.request.resource.WebjarsCssResourceReference;
-
-@Deprecated // no longer available since fullcalendar 6.x
-public class FullCalendarCssReference
-extends WebjarsCssResourceReference {
-
-    private static final long serialVersionUID = 1L;
-
-    @Getter(lazy = true) @Accessors(fluent = true)
-    private static final FullCalendarCssReference instance =
-        new FullCalendarCssReference();
-
-    private FullCalendarCssReference() {
-        super("fullcalendar/6.1.10/index.global.min.css");
-    }
-
-    /**
-     * @return this resource reference singleton instance as header item
-     */
-    public static HeaderItem asHeaderItem() {
-        return CssHeaderItem.forReference(instance());
-    }
-
-}
diff --git 
a/extensions/vw/sse/applib/src/main/java/org/apache/causeway/extensions/sse/applib/service/SseChannel.java
 
b/extensions/vw/sse/applib/src/main/java/org/apache/causeway/extensions/sse/applib/service/SseChannel.java
index e1bc017ae39..9337f62ef94 100644
--- 
a/extensions/vw/sse/applib/src/main/java/org/apache/causeway/extensions/sse/applib/service/SseChannel.java
+++ 
b/extensions/vw/sse/applib/src/main/java/org/apache/causeway/extensions/sse/applib/service/SseChannel.java
@@ -35,9 +35,6 @@ public interface SseChannel {
     UUID uuid();
     Class<?> sourceType();
 
-    @Deprecated default UUID getId() { return uuid(); }
-    @Deprecated default Class<?> getSourceType() { return sourceType(); }
-
     void listenWhile(Predicate<SseSource> listener);
 
     void fire(SseSource source);
diff --git 
a/extensions/vw/sse/wicket/src/main/java/org/apache/causeway/extensions/sse/wicket/services/SseServiceDefault.java
 
b/extensions/vw/sse/wicket/src/main/java/org/apache/causeway/extensions/sse/wicket/services/SseServiceDefault.java
index 4a0755b3470..44beb7c1257 100644
--- 
a/extensions/vw/sse/wicket/src/main/java/org/apache/causeway/extensions/sse/wicket/services/SseServiceDefault.java
+++ 
b/extensions/vw/sse/wicket/src/main/java/org/apache/causeway/extensions/sse/wicket/services/SseServiceDefault.java
@@ -114,7 +114,7 @@ private void run(final SseSource task) {
         var eventStreamLifecycle = 
eventStreamPool.acquireLifecycleForType(sourceType);
         var eventStream = eventStreamLifecycle.getEventStream();
 
-        log.debug("submitting task type='{}' -> stream='{}'", sourceType, 
eventStream.getId());
+        log.debug("submitting task type='{}' -> stream='{}'", sourceType, 
eventStream.uuid());
 
         try {
 
@@ -174,7 +174,7 @@ public void release() {
             synchronized ($LOCK) {
                 remaining = --runningTasksCounter;
                 if(remaining<1) {
-                    
eventStreamPool.eventStreamsByType.remove(eventStream.getSourceType());
+                    
eventStreamPool.eventStreamsByType.remove(eventStream.sourceType());
                 }
             }
 
diff --git 
a/persistence/commons/src/main/java/org/apache/causeway/persistence/commons/integration/repository/RepositoryServiceDefault.java
 
b/persistence/commons/src/main/java/org/apache/causeway/persistence/commons/integration/repository/RepositoryServiceDefault.java
index cc3a21ca011..c9a410ef820 100644
--- 
a/persistence/commons/src/main/java/org/apache/causeway/persistence/commons/integration/repository/RepositoryServiceDefault.java
+++ 
b/persistence/commons/src/main/java/org/apache/causeway/persistence/commons/integration/repository/RepositoryServiceDefault.java
@@ -93,8 +93,7 @@ public class RepositoryServiceDefault
     @PostConstruct
     public void init() {
         var disableAutoFlush =
-                
causewayConfiguration.getPersistence().getCommons().getRepositoryService().isDisableAutoFlush()
 ||
-                
causewayConfiguration.getCore().getRuntimeServices().getRepositoryService().isDisableAutoFlush();
+                
causewayConfiguration.getPersistence().getCommons().getRepositoryService().isDisableAutoFlush();
         this.autoFlush = !disableAutoFlush;
     }
 
diff --git 
a/persistence/jpa/eclipselink/src/main/java/org/apache/causeway/persistence/jpa/eclipselink/inject/_Util.java
 
b/persistence/jpa/eclipselink/src/main/java/org/apache/causeway/persistence/jpa/eclipselink/inject/_Util.java
index 4f506f6ad74..74af28b4d17 100644
--- 
a/persistence/jpa/eclipselink/src/main/java/org/apache/causeway/persistence/jpa/eclipselink/inject/_Util.java
+++ 
b/persistence/jpa/eclipselink/src/main/java/org/apache/causeway/persistence/jpa/eclipselink/inject/_Util.java
@@ -69,50 +69,42 @@ public Class<T> getJavaClass() {
 
             @Override
             public Type getBaseType() {
-                _Exceptions.throwNotImplemented();
-                return null;
+                throw _Exceptions.notImplemented();
             }
 
             @Override
             public Set<Type> getTypeClosure() {
-                _Exceptions.throwNotImplemented();
-                return null;
+                throw _Exceptions.notImplemented();
             }
 
             @Override
             public <X extends Annotation> X getAnnotation(final Class<X> 
annotationType) {
-                _Exceptions.throwNotImplemented();
-                return null;
+                throw _Exceptions.notImplemented();
             }
 
             @Override
             public Set<Annotation> getAnnotations() {
-                _Exceptions.throwNotImplemented();
-                return null;
+                throw _Exceptions.notImplemented();
             }
 
             @Override
             public boolean isAnnotationPresent(final Class<? extends 
Annotation> annotationType) {
-                _Exceptions.throwNotImplemented();
-                return false;
+                throw _Exceptions.notImplemented();
             }
 
             @Override
             public Set<AnnotatedConstructor<T>> getConstructors() {
-                _Exceptions.throwNotImplemented();
-                return null;
+                throw _Exceptions.notImplemented();
             }
 
             @Override
             public Set<AnnotatedMethod<? super T>> getMethods() {
-                _Exceptions.throwNotImplemented();
-                return null;
+                throw _Exceptions.notImplemented();
             }
 
             @Override
             public Set<AnnotatedField<? super T>> getFields() {
-                _Exceptions.throwNotImplemented();
-                return null;
+                throw _Exceptions.notImplemented();
             }
         };
     }
diff --git 
a/persistence/jpa/integration/src/main/java/org/apache/causeway/persistence/jpa/integration/entity/_JpaEntityStateUtil.java
 
b/persistence/jpa/integration/src/main/java/org/apache/causeway/persistence/jpa/integration/entity/_JpaEntityStateUtil.java
index 1131bc8b4f4..490b5800f14 100644
--- 
a/persistence/jpa/integration/src/main/java/org/apache/causeway/persistence/jpa/integration/entity/_JpaEntityStateUtil.java
+++ 
b/persistence/jpa/integration/src/main/java/org/apache/causeway/persistence/jpa/integration/entity/_JpaEntityStateUtil.java
@@ -88,49 +88,4 @@ EntityState getEntityState(
                 : EntityState.TRANSIENT_OR_REMOVED;
     }
 
-    @Deprecated
-    EntityState getEntityStateLegacy(
-            final EntityManager entityManager,
-            final PersistenceUnitUtil persistenceUnitUtil,
-            final Class<?> entityClass,
-            final PrimaryKeyType<?> primaryKeyType,
-            final Object pojo) {
-        if (entityManager.contains(pojo)) {
-            var primaryKey = persistenceUnitUtil.getIdentifier(pojo);
-            if (primaryKey == null) {
-                return EntityState.ATTACHED_NO_OID;
-            }
-            return EntityState.ATTACHED;
-        }
-
-        try {
-            var primaryKey = persistenceUnitUtil.getIdentifier(pojo);
-            if (primaryKey == null) {
-                return EntityState.TRANSIENT_OR_REMOVED;
-            } else {
-                // detect shallow primary key
-                //TODO this is a hack - see whether we can actually ask the 
EntityManager to give us an accurate answer
-                return primaryKeyType.isValid(primaryKey)
-                    ? EntityState.DETACHED
-                    : EntityState.TRANSIENT_OR_REMOVED;
-            }
-        } catch (PersistenceException ex) {
-            /* horrible hack, but encountered NPEs if using a composite key 
(eg CommandLogEntry)
-                (this was without any weaving) */
-            Throwable cause = ex.getCause();
-            if (cause instanceof DescriptorException) {
-                DescriptorException descriptorException = 
(DescriptorException) cause;
-                Throwable internalException = 
descriptorException.getInternalException();
-                if (internalException instanceof NullPointerException) {
-                    return EntityState.TRANSIENT_OR_REMOVED;
-                }
-            }
-            if (cause instanceof NullPointerException) {
-                // horrible hack, encountered if using composite key (eg 
ExecutionLogEntry) with dynamic weaving
-                return EntityState.TRANSIENT_OR_REMOVED;
-            }
-            throw ex;
-        }
-    }
-
 }
diff --git 
a/regressiontests/viewers-jpa/src/test/java/org/apache/causeway/testdomain/viewers/jpa/wkt/InteractionTestJpaWkt.java
 
b/regressiontests/viewers-jpa/src/test/java/org/apache/causeway/testdomain/viewers/jpa/wkt/InteractionTestJpaWkt.java
index 502f68a7331..90e642ed70a 100644
--- 
a/regressiontests/viewers-jpa/src/test/java/org/apache/causeway/testdomain/viewers/jpa/wkt/InteractionTestJpaWkt.java
+++ 
b/regressiontests/viewers-jpa/src/test/java/org/apache/causeway/testdomain/viewers/jpa/wkt/InteractionTestJpaWkt.java
@@ -208,7 +208,7 @@ void loadBookPage_Dune_then_change_Isbn() {
 
         //System.err.printf("pageParameters %s%n", pageParameters);
 
-        assertEquals(ManagedObject.Specialization.ENTITY, 
bookAdapter.getSpecialization());
+        assertEquals(ManagedObject.Specialization.ENTITY, 
bookAdapter.specialization());
         assertTrue(bookAdapter.isBookmarkMemoized(), "bookAdapter should be 
bookmarked");
 
         // open Dune page
diff --git 
a/viewers/restfulobjects/client/src/main/java/org/apache/causeway/viewer/restfulobjects/client/auth/basic/BasicCreds.java
 
b/viewers/restfulobjects/client/src/main/java/org/apache/causeway/viewer/restfulobjects/client/auth/basic/BasicCreds.java
index 9efa49e4fb4..9cfd6300389 100644
--- 
a/viewers/restfulobjects/client/src/main/java/org/apache/causeway/viewer/restfulobjects/client/auth/basic/BasicCreds.java
+++ 
b/viewers/restfulobjects/client/src/main/java/org/apache/causeway/viewer/restfulobjects/client/auth/basic/BasicCreds.java
@@ -24,7 +24,4 @@
 public record BasicCreds(
         String username,
         String password) {
-
-    @Deprecated public String getUsername() { return username(); }
-    @Deprecated public String getPassword() { return password(); }
 }
diff --git 
a/viewers/restfulobjects/client/src/main/java/org/apache/causeway/viewer/restfulobjects/client/auth/oauth2/Oauth2Creds.java
 
b/viewers/restfulobjects/client/src/main/java/org/apache/causeway/viewer/restfulobjects/client/auth/oauth2/Oauth2Creds.java
index 11a9b3e8055..4297b48c737 100644
--- 
a/viewers/restfulobjects/client/src/main/java/org/apache/causeway/viewer/restfulobjects/client/auth/oauth2/Oauth2Creds.java
+++ 
b/viewers/restfulobjects/client/src/main/java/org/apache/causeway/viewer/restfulobjects/client/auth/oauth2/Oauth2Creds.java
@@ -25,9 +25,4 @@ public record Oauth2Creds(
         String tenantId,
         String clientId,
         String clientSecret) {
-
-    @Deprecated public String getTenantId() { return tenantId(); }
-    @Deprecated public String getClientId() { return clientId(); }
-    @Deprecated public String getClientSecret() { return clientSecret(); }
-
 }
diff --git 
a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/valuerender/_JsonValueConverters.java
 
b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/valuerender/_JsonValueConverters.java
index d55b888e960..99f22fc89e9 100644
--- 
a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/valuerender/_JsonValueConverters.java
+++ 
b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/valuerender/_JsonValueConverters.java
@@ -51,12 +51,6 @@ enum DefaultFormat {
         BIGINTEGER(BigInteger.class, "big-integer(18)", "javamathbiginteger"),
         @Deprecated //should be covered 100% per {@link ValueSemanticsProvider}
         BIGDECIMAL(BigDecimal.class, "big-decimal", "javamathbigdecimal"),
-//        @Deprecated //should be covered 100% per {@link 
ValueSemanticsProvider}
-//        JODALOCALDATE(LocalDate.class, "date", "jodalocaldate"),
-//        @Deprecated //should be covered 100% per {@link 
ValueSemanticsProvider}
-//        JODALOCALDATETIME(LocalDateTime.class, "date-time", 
"jodalocaldatetime"),
-//        @Deprecated //should be covered 100% per {@link 
ValueSemanticsProvider}
-//        JODADATETIME(DateTime.class, "date-time", "jodadatetime"),
         @Deprecated //should be covered 100% per {@link ValueSemanticsProvider}
         JAVAUTILDATE(java.util.Date.class, "date-time", "javautildate"),
         @Deprecated //should be covered 100% per {@link ValueSemanticsProvider}
diff --git 
a/viewers/wicket/ui-test/src/test/java/org/apache/causeway/viewer/wicket/ui/test/components/scalars/jdkmath/BigDecimalConverterTest.java
 
b/viewers/wicket/ui-test/src/test/java/org/apache/causeway/viewer/wicket/ui/test/components/scalars/jdkmath/BigDecimalConverterTest.java
index fa4b94b4485..04cdcfb7446 100644
--- 
a/viewers/wicket/ui-test/src/test/java/org/apache/causeway/viewer/wicket/ui/test/components/scalars/jdkmath/BigDecimalConverterTest.java
+++ 
b/viewers/wicket/ui-test/src/test/java/org/apache/causeway/viewer/wicket/ui/test/components/scalars/jdkmath/BigDecimalConverterTest.java
@@ -91,7 +91,8 @@ void scale2_italian() {
 
     @Test
     void scale2_english_withThousandSeparators_not_allowed() {
-        
assertThat(converterTester.getConfigurationForBigDecimalValueType().isUseGroupingSeparator()).isFalse();
+        
converterTester.getConfigurationForBigDecimalValueType().getDisplay().setUseGroupingSeparator(false);
+        
assertThat(converterTester.getConfigurationForBigDecimalValueType().getDisplay().isUseGroupingSeparator()).isFalse();
 
         converterTester.setScenario(Locale.ENGLISH, 
newConverter(CustomerScale2.class));
         converterTester.assertConversionFailure("789,123.45", "Invalid value 
'789,123.45'; do not use the ',' grouping separator");
@@ -99,8 +100,8 @@ void scale2_english_withThousandSeparators_not_allowed() {
 
     @Test
     void scale2_english_withThousandSeparators_allowed() {
-        
converterTester.getConfigurationForBigDecimalValueType().setUseGroupingSeparator(true);
-        
assertThat(converterTester.getConfigurationForBigDecimalValueType().isUseGroupingSeparator()).isTrue();
+        
converterTester.getConfigurationForBigDecimalValueType().getDisplay().setUseGroupingSeparator(true);
+        
assertThat(converterTester.getConfigurationForBigDecimalValueType().getDisplay().isUseGroupingSeparator()).isTrue();
 
         converterTester.setScenario(Locale.ENGLISH, 
newConverter(CustomerScale2.class));
         converterTester.assertRoundtrip(bd_789123_45_scale2, "789123.45");

Reply via email to