You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by bd...@apache.org on 2026/03/02 23:19:16 UTC

(directory-scimple) 01/01: Update project to Java 17 using OpenRewrite

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

bdemers pushed a commit to branch or-17
in repository https://gitbox.apache.org/repos/asf/directory-scimple.git

commit 7489c10ad51e1232976ccd74589fc6945a2cd178
Author: Brian Demers <bd...@apache.org>
AuthorDate: Mon Mar 2 17:46:39 2026 -0500

    Update project to Java 17 using OpenRewrite
---
 pom.xml                                             |  3 +--
 .../directory/scim/client/rest/RestException.java   | 21 +++++++++++++++++++++
 .../scim/core/json/ObjectMapperFactory.java         |  3 +--
 .../scim/core/json/ScimResourceDeserializer.java    |  2 ++
 .../extensions/ClientFilterException.java           |  3 +++
 .../directory/scim/core/schema/SchemaRegistry.java  |  2 ++
 scim-server-examples/scim-server-jersey-4/pom.xml   |  1 +
 scim-server-examples/scim-server-jersey/pom.xml     |  1 +
 scim-server-examples/scim-server-memory/pom.xml     |  1 +
 .../directory/scim/example/memory/ContainerIT.java  |  3 +--
 .../example/memory/containers/WebAppContainer.java  |  2 +-
 scim-server-examples/scim-server-quarkus/pom.xml    |  1 +
 .../exception/AttributeDoesNotExistException.java   |  3 +++
 .../scim/server/exception/AttributeException.java   |  3 +++
 .../exception/UnableToCreateResourceException.java  |  4 ++++
 .../exception/UnableToDeleteResourceException.java  |  4 ++++
 .../UnableToResolveIdResourceException.java         |  4 ++++
 ...UnableToRetrieveExtensionsResourceException.java |  4 ++++
 .../UnableToRetrieveResourceException.java          |  4 ++++
 .../exception/UnableToUpdateResourceException.java  |  4 ++++
 .../server/rest/BaseResourceTypeResourceImpl.java   |  3 +--
 .../scim/server/rest/BulkResourceImpl.java          | 10 +++++-----
 .../directory/scim/protocol/data/BulkOperation.java |  3 +++
 .../directory/scim/protocol/data/BulkRequest.java   |  2 ++
 .../directory/scim/protocol/data/ErrorResponse.java |  4 ++++
 .../directory/scim/protocol/data/ListResponse.java  |  2 ++
 .../directory/scim/protocol/data/SearchRequest.java |  2 ++
 .../scim/protocol/exception/ScimException.java      |  4 ++++
 .../spec/exception/InvalidExtensionException.java   |  5 ++++-
 .../exception/ScimResourceInvalidException.java     |  5 ++++-
 .../scim/spec/extension/EnterpriseExtension.java    |  3 +++
 .../spec/filter/AttributeComparisonExpression.java  | 15 +++++++++------
 .../spec/filter/AttributePresentExpression.java     |  3 +++
 .../spec/filter/BaseFilterExpressionMapper.java     | 20 ++++++++++----------
 .../apache/directory/scim/spec/filter/Filter.java   |  2 ++
 .../scim/spec/filter/FilterParseException.java      |  3 +++
 .../scim/spec/filter/InMemoryScimFilterMatcher.java |  3 +--
 .../scim/spec/filter/ValuePathExpression.java       |  3 +++
 .../spec/filter/attribute/AttributeReference.java   |  2 ++
 .../directory/scim/spec/patch/PatchOperation.java   |  2 ++
 .../scim/spec/patch/PatchOperationPath.java         |  2 ++
 .../spec/phonenumber/PhoneNumberParseException.java |  3 +++
 .../directory/scim/spec/resources/Address.java      |  2 ++
 .../directory/scim/spec/resources/BaseResource.java |  2 ++
 .../apache/directory/scim/spec/resources/Email.java |  2 ++
 .../directory/scim/spec/resources/Entitlement.java  |  2 ++
 .../scim/spec/resources/GroupMembership.java        |  2 ++
 .../apache/directory/scim/spec/resources/Im.java    |  2 ++
 .../apache/directory/scim/spec/resources/Name.java  |  2 ++
 .../directory/scim/spec/resources/PhoneNumber.java  | 12 +++++++-----
 .../apache/directory/scim/spec/resources/Photo.java |  4 +++-
 .../apache/directory/scim/spec/resources/Role.java  |  2 ++
 .../directory/scim/spec/resources/ScimGroup.java    |  2 ++
 .../directory/scim/spec/resources/ScimResource.java |  3 +++
 .../spec/resources/ScimResourceWithOptionalId.java  |  5 ++++-
 .../directory/scim/spec/resources/ScimUser.java     |  2 ++
 .../directory/scim/spec/resources/UserGroup.java    |  2 ++
 .../scim/spec/resources/X509Certificate.java        |  4 +++-
 .../org/apache/directory/scim/spec/schema/Meta.java |  4 +++-
 .../directory/scim/spec/schema/ResourceType.java    |  3 +++
 .../apache/directory/scim/spec/schema/Schema.java   |  3 +++
 .../spec/schema/ServiceProviderConfiguration.java   |  6 ++++++
 .../scim/test/stub/ExampleObjectExtension.java      |  3 +++
 .../apache/directory/scim/test/stub/Subobject.java  |  2 ++
 .../directory/scim/tools/diff/PatchGenerator.java   |  2 +-
 65 files changed, 203 insertions(+), 44 deletions(-)

diff --git a/pom.xml b/pom.xml
index f7ae0304..c7191468 100644
--- a/pom.xml
+++ b/pom.xml
@@ -575,8 +575,7 @@
           <version>3.15.0</version>
           <configuration>
             <!-- parent pom currently defines v1.7 -->
-            <source>${maven.compiler.source}</source>
-            <target>${maven.compiler.target}</target>
+      <release>17</release>
           </configuration>
         </plugin>
         <plugin>
diff --git a/scim-client/src/main/java/org/apache/directory/scim/client/rest/RestException.java b/scim-client/src/main/java/org/apache/directory/scim/client/rest/RestException.java
index adfed4f3..e42f6ab9 100644
--- a/scim-client/src/main/java/org/apache/directory/scim/client/rest/RestException.java
+++ b/scim-client/src/main/java/org/apache/directory/scim/client/rest/RestException.java
@@ -16,6 +16,26 @@
  */
 package org.apache.directory.scim.client.rest;
 
+/*
+ * The Pennsylvania State University © 2016
+ * 
+ * Licensed 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.
+ */
+
+import java.io.Serial;
+
+
 /*
  * The Pennsylvania State University © 2016
  * 
@@ -38,6 +58,7 @@ import jakarta.ws.rs.core.Response;
 import org.apache.directory.scim.protocol.data.ErrorResponse;
 
 public class RestException extends Exception {
+  @Serial
   private static final long serialVersionUID = 7360783673606191577L;
 
   private final int statusCode;
diff --git a/scim-core/src/main/java/org/apache/directory/scim/core/json/ObjectMapperFactory.java b/scim-core/src/main/java/org/apache/directory/scim/core/json/ObjectMapperFactory.java
index e9b7ad41..db86c0fd 100644
--- a/scim-core/src/main/java/org/apache/directory/scim/core/json/ObjectMapperFactory.java
+++ b/scim-core/src/main/java/org/apache/directory/scim/core/json/ObjectMapperFactory.java
@@ -107,8 +107,7 @@ public class ObjectMapperFactory {
     @Override
     public boolean handleUnknownProperty(DeserializationContext ctxt, JsonParser p, JsonDeserializer<?> deserializer, Object beanOrClass, String propertyName) throws IOException {
 
-      if (beanOrClass instanceof ScimResource) {
-        ScimResource scimResource = (ScimResource) beanOrClass;
+      if (beanOrClass instanceof ScimResource scimResource) {
         Class<? extends ScimResource> resourceClass = scimResource.getClass();
         Class<? extends ScimExtension> extensionClass = schemaRegistry.getExtensionClass(resourceClass, propertyName);
 
diff --git a/scim-core/src/main/java/org/apache/directory/scim/core/json/ScimResourceDeserializer.java b/scim-core/src/main/java/org/apache/directory/scim/core/json/ScimResourceDeserializer.java
index f0b5c4c8..ef9c91a1 100644
--- a/scim-core/src/main/java/org/apache/directory/scim/core/json/ScimResourceDeserializer.java
+++ b/scim-core/src/main/java/org/apache/directory/scim/core/json/ScimResourceDeserializer.java
@@ -28,11 +28,13 @@ import org.apache.directory.scim.core.schema.SchemaRegistry;
 import org.apache.directory.scim.spec.resources.ScimResource;
 
 import java.io.IOException;
+import java.io.Serial;
 import java.util.Objects;
 import java.util.stream.StreamSupport;
 
 public class ScimResourceDeserializer extends StdDeserializer<ScimResource> {
 
+  @Serial
   private static final long serialVersionUID = -2125441391108866034L;
   private final SchemaRegistry schemaRegistry;
 
diff --git a/scim-core/src/main/java/org/apache/directory/scim/core/repository/extensions/ClientFilterException.java b/scim-core/src/main/java/org/apache/directory/scim/core/repository/extensions/ClientFilterException.java
index e7103d3d..df765c88 100644
--- a/scim-core/src/main/java/org/apache/directory/scim/core/repository/extensions/ClientFilterException.java
+++ b/scim-core/src/main/java/org/apache/directory/scim/core/repository/extensions/ClientFilterException.java
@@ -19,8 +19,11 @@
 
 package org.apache.directory.scim.core.repository.extensions;
 
+import java.io.Serial;
+
 public class ClientFilterException extends Exception {
 
+  @Serial
   private static final long serialVersionUID = 3308947684934769952L;
 
   private final int status;
diff --git a/scim-core/src/main/java/org/apache/directory/scim/core/schema/SchemaRegistry.java b/scim-core/src/main/java/org/apache/directory/scim/core/schema/SchemaRegistry.java
index d6328db1..f517d8df 100644
--- a/scim-core/src/main/java/org/apache/directory/scim/core/schema/SchemaRegistry.java
+++ b/scim-core/src/main/java/org/apache/directory/scim/core/schema/SchemaRegistry.java
@@ -19,6 +19,7 @@
 
 package org.apache.directory.scim.core.schema;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.*;
 
@@ -39,6 +40,7 @@ public class SchemaRegistry implements Serializable {
     /** A logger for this class */
     private static final Logger log = LoggerFactory.getLogger(SchemaRegistry.class);
 
+  @Serial
   private static final long serialVersionUID = 2644269305703474835L;
   private final Map<String, Schema> schemaMap = new HashMap<>();
   
diff --git a/scim-server-examples/scim-server-jersey-4/pom.xml b/scim-server-examples/scim-server-jersey-4/pom.xml
index 1ffb9437..e05880c3 100644
--- a/scim-server-examples/scim-server-jersey-4/pom.xml
+++ b/scim-server-examples/scim-server-jersey-4/pom.xml
@@ -90,6 +90,7 @@
     <dependency>
       <groupId>jakarta.annotation</groupId>
       <artifactId>jakarta.annotation-api</artifactId>
+   <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>jakarta.enterprise</groupId>
diff --git a/scim-server-examples/scim-server-jersey/pom.xml b/scim-server-examples/scim-server-jersey/pom.xml
index 4ce6fe26..0d216acd 100644
--- a/scim-server-examples/scim-server-jersey/pom.xml
+++ b/scim-server-examples/scim-server-jersey/pom.xml
@@ -69,6 +69,7 @@
     <dependency>
       <groupId>jakarta.annotation</groupId>
       <artifactId>jakarta.annotation-api</artifactId>
+   <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>jakarta.enterprise</groupId>
diff --git a/scim-server-examples/scim-server-memory/pom.xml b/scim-server-examples/scim-server-memory/pom.xml
index e145159c..6e8a848b 100644
--- a/scim-server-examples/scim-server-memory/pom.xml
+++ b/scim-server-examples/scim-server-memory/pom.xml
@@ -40,6 +40,7 @@
     <dependency>
       <groupId>jakarta.annotation</groupId>
       <artifactId>jakarta.annotation-api</artifactId>
+   <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>jakarta.enterprise</groupId>
diff --git a/scim-server-examples/scim-server-memory/src/test/java/org/apache/directory/scim/example/memory/ContainerIT.java b/scim-server-examples/scim-server-memory/src/test/java/org/apache/directory/scim/example/memory/ContainerIT.java
index b2ef0828..b76d3c16 100644
--- a/scim-server-examples/scim-server-memory/src/test/java/org/apache/directory/scim/example/memory/ContainerIT.java
+++ b/scim-server-examples/scim-server-memory/src/test/java/org/apache/directory/scim/example/memory/ContainerIT.java
@@ -34,7 +34,6 @@ import org.testcontainers.junit.jupiter.Testcontainers;
 
 import java.io.IOException;
 import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.time.Duration;
 import java.util.Map;
 import java.util.Properties;
@@ -49,7 +48,7 @@ public class ContainerIT {
   static Stream<Arguments> containers() {
 
     // this project's war file to test
-    Path warFile = Paths.get("target/scim-server-memory.war");
+    Path warFile = Path.of("target/scim-server-memory.war");
 
     Map<String, Function<ContainerConfiguration, WebAppContainer<?>>> containers = Map.of(
       "payara", config -> new PayaraContainer(config.imageName, warFile, config.timeout),
diff --git a/scim-server-examples/scim-server-memory/src/test/java/org/apache/directory/scim/example/memory/containers/WebAppContainer.java b/scim-server-examples/scim-server-memory/src/test/java/org/apache/directory/scim/example/memory/containers/WebAppContainer.java
index 7dc27989..323c74d7 100644
--- a/scim-server-examples/scim-server-memory/src/test/java/org/apache/directory/scim/example/memory/containers/WebAppContainer.java
+++ b/scim-server-examples/scim-server-memory/src/test/java/org/apache/directory/scim/example/memory/containers/WebAppContainer.java
@@ -26,6 +26,6 @@ import org.testcontainers.lifecycle.Startable;
 public interface WebAppContainer<SELF extends WebAppContainer<SELF>> extends Container<SELF>, AutoCloseable, Startable {
 
   default String getAppUrl() {
-    return String.format("http://%s:%s", getHost(), getMappedPort(8080));
+    return "http://%s:%s".formatted(getHost(), getMappedPort(8080));
   }
 }
diff --git a/scim-server-examples/scim-server-quarkus/pom.xml b/scim-server-examples/scim-server-quarkus/pom.xml
index c249bb9b..bcd1842e 100644
--- a/scim-server-examples/scim-server-quarkus/pom.xml
+++ b/scim-server-examples/scim-server-quarkus/pom.xml
@@ -95,6 +95,7 @@
     <dependency>
       <groupId>jakarta.annotation</groupId>
       <artifactId>jakarta.annotation-api</artifactId>
+   <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>jakarta.enterprise</groupId>
diff --git a/scim-server/src/main/java/org/apache/directory/scim/server/exception/AttributeDoesNotExistException.java b/scim-server/src/main/java/org/apache/directory/scim/server/exception/AttributeDoesNotExistException.java
index 92d524e4..3a9d35ae 100644
--- a/scim-server/src/main/java/org/apache/directory/scim/server/exception/AttributeDoesNotExistException.java
+++ b/scim-server/src/main/java/org/apache/directory/scim/server/exception/AttributeDoesNotExistException.java
@@ -19,8 +19,11 @@
 
 package org.apache.directory.scim.server.exception;
 
+import java.io.Serial;
+
 public class AttributeDoesNotExistException extends AttributeException {
 
+  @Serial
   private static final long serialVersionUID = 547510233114396694L;
 
   public AttributeDoesNotExistException() {
diff --git a/scim-server/src/main/java/org/apache/directory/scim/server/exception/AttributeException.java b/scim-server/src/main/java/org/apache/directory/scim/server/exception/AttributeException.java
index 3d09887b..4d6c0705 100644
--- a/scim-server/src/main/java/org/apache/directory/scim/server/exception/AttributeException.java
+++ b/scim-server/src/main/java/org/apache/directory/scim/server/exception/AttributeException.java
@@ -19,8 +19,11 @@
 
 package org.apache.directory.scim.server.exception;
 
+import java.io.Serial;
+
 public class AttributeException extends Exception {
 
+  @Serial
   private static final long serialVersionUID = 547510233114396694L;
 
   public AttributeException() {
diff --git a/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToCreateResourceException.java b/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToCreateResourceException.java
index 67558850..838512da 100644
--- a/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToCreateResourceException.java
+++ b/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToCreateResourceException.java
@@ -19,12 +19,16 @@
 
 package org.apache.directory.scim.server.exception;
 
+import java.io.Serial;
+
+
 import jakarta.ws.rs.core.Response.Status;
 
 import org.apache.directory.scim.spec.exception.ResourceException;
 
 public class UnableToCreateResourceException extends ResourceException {
 
+  @Serial
   private static final long serialVersionUID = -3872700870424005641L;
 
   public UnableToCreateResourceException(Status status, String message) {
diff --git a/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToDeleteResourceException.java b/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToDeleteResourceException.java
index a520c238..9179b06b 100644
--- a/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToDeleteResourceException.java
+++ b/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToDeleteResourceException.java
@@ -19,11 +19,15 @@
 
 package org.apache.directory.scim.server.exception;
 
+import java.io.Serial;
+
+
 import jakarta.ws.rs.core.Response.Status;
 import org.apache.directory.scim.spec.exception.ResourceException;
 
 public class UnableToDeleteResourceException extends ResourceException {
 
+  @Serial
   private static final long serialVersionUID = -3872700870424005641L;
 
   public UnableToDeleteResourceException(Status status, String message) {
diff --git a/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToResolveIdResourceException.java b/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToResolveIdResourceException.java
index 5434a79f..f02ed895 100644
--- a/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToResolveIdResourceException.java
+++ b/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToResolveIdResourceException.java
@@ -20,11 +20,15 @@
 package org.apache.directory.scim.server.exception;
 
 
+import java.io.Serial;
+
+
 import jakarta.ws.rs.core.Response.Status;
 import org.apache.directory.scim.spec.exception.ResourceException;
 
 public class UnableToResolveIdResourceException extends ResourceException {
 
+  @Serial
   private static final long serialVersionUID = -7401709416973728017L;
 
   public UnableToResolveIdResourceException(Status status, String message) {
diff --git a/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToRetrieveExtensionsResourceException.java b/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToRetrieveExtensionsResourceException.java
index ff7cf811..a05a55b3 100644
--- a/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToRetrieveExtensionsResourceException.java
+++ b/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToRetrieveExtensionsResourceException.java
@@ -19,11 +19,15 @@
 
 package org.apache.directory.scim.server.exception;
 
+import java.io.Serial;
+
+
 import jakarta.ws.rs.core.Response.Status;
 import org.apache.directory.scim.spec.exception.ResourceException;
 
 public class UnableToRetrieveExtensionsResourceException extends ResourceException {
 
+  @Serial
   private static final long serialVersionUID = -3872700870424005641L;
 
   public UnableToRetrieveExtensionsResourceException(Status status, String message) {
diff --git a/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToRetrieveResourceException.java b/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToRetrieveResourceException.java
index abd34d89..7b8f0191 100644
--- a/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToRetrieveResourceException.java
+++ b/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToRetrieveResourceException.java
@@ -19,11 +19,15 @@
 
 package org.apache.directory.scim.server.exception;
 
+import java.io.Serial;
+
+
 import jakarta.ws.rs.core.Response.Status;
 import org.apache.directory.scim.spec.exception.ResourceException;
 
 public class UnableToRetrieveResourceException extends ResourceException {
 
+  @Serial
   private static final long serialVersionUID = -3872700870424005641L;
 
   public UnableToRetrieveResourceException(Status status, String message) {
diff --git a/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToUpdateResourceException.java b/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToUpdateResourceException.java
index d4000a46..420eccba 100644
--- a/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToUpdateResourceException.java
+++ b/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToUpdateResourceException.java
@@ -19,11 +19,15 @@
 
 package org.apache.directory.scim.server.exception;
 
+import java.io.Serial;
+
+
 import jakarta.ws.rs.core.Response.Status;
 import org.apache.directory.scim.spec.exception.ResourceException;
 
 public class UnableToUpdateResourceException extends ResourceException {
 
+  @Serial
   private static final long serialVersionUID = -3872700870424005641L;
 
   public UnableToUpdateResourceException(Status status, String message) {
diff --git a/scim-server/src/main/java/org/apache/directory/scim/server/rest/BaseResourceTypeResourceImpl.java b/scim-server/src/main/java/org/apache/directory/scim/server/rest/BaseResourceTypeResourceImpl.java
index c8f0fc8e..d46a332e 100644
--- a/scim-server/src/main/java/org/apache/directory/scim/server/rest/BaseResourceTypeResourceImpl.java
+++ b/scim-server/src/main/java/org/apache/directory/scim/server/rest/BaseResourceTypeResourceImpl.java
@@ -299,8 +299,7 @@ public abstract class BaseResourceTypeResourceImpl<T extends ScimResource> imple
       Class<? extends ProcessingExtension>[] value = annotation.value();
       for (Class<? extends ProcessingExtension> class1 : value) {
         ProcessingExtension processingExtension = CDI.current().select(class1).get();
-        if (processingExtension instanceof AttributeFilterExtension) {
-          AttributeFilterExtension attributeFilterExtension = (AttributeFilterExtension) processingExtension;
+        if (processingExtension instanceof AttributeFilterExtension attributeFilterExtension) {
           ScimRequestContext scimRequestContext = new ScimRequestContext()
             .setIncludedAttributes(attributeReferences)
             .setExcludedAttributes(excludedAttributeReferences);
diff --git a/scim-server/src/main/java/org/apache/directory/scim/server/rest/BulkResourceImpl.java b/scim-server/src/main/java/org/apache/directory/scim/server/rest/BulkResourceImpl.java
index 44fea8c2..bcba2b68 100644
--- a/scim-server/src/main/java/org/apache/directory/scim/server/rest/BulkResourceImpl.java
+++ b/scim-server/src/main/java/org/apache/directory/scim/server/rest/BulkResourceImpl.java
@@ -211,7 +211,7 @@ public class BulkResourceImpl implements BulkResource {
 
         if (bulkIdKey != null) {
           Set<String> reverseDependencies = transitiveReverseDependencies.getOrDefault(bulkIdKey, Collections.emptySet());
-          String detail = String.format(OPERATION_DEPENDS_ON_FAILED_OPERATION, bulkIdKey);
+          String detail = OPERATION_DEPENDS_ON_FAILED_OPERATION.formatted(bulkIdKey);
 
           for (String dependentBulkIdKey : reverseDependencies) {
             BulkOperation dependentOperation = bulkIdKeyToOperationResult.get(dependentBulkIdKey);
@@ -370,7 +370,7 @@ public class BulkResourceImpl implements BulkResource {
 
           dependentOperationResult.setData(null);
           dependentOperationResult.setLocation(null);
-          createAndSetErrorResponse(dependentOperationResult, Status.CONFLICT, String.format(OPERATION_DEPENDS_ON_FAILED_OPERATION, bulkId, dependentBulkIdKey));
+          createAndSetErrorResponse(dependentOperationResult, Status.CONFLICT, OPERATION_DEPENDS_ON_FAILED_OPERATION.formatted(bulkId, dependentBulkIdKey));
           dependentResourceRepository.delete(dependentResourceId);
         } catch (ResourceException unableToDeleteResourceException) {
           log.error("Could not delete depenedent ScimResource after failing to update dependee", unableToDeleteResourceException);
@@ -534,7 +534,7 @@ public class BulkResourceImpl implements BulkResource {
         String resolvedId = resolvedResource.getId();
         this.accessor.set(this.object, resolvedId);
       } else {
-        throw new UnresolvableOperationException(String.format(BULK_ID_REFERS_TO_FAILED_RESOURCE, this.bulkIdKey));
+        throw new UnresolvableOperationException(BULK_ID_REFERS_TO_FAILED_RESOURCE.formatted(this.bulkIdKey));
       }
     }
   }
@@ -633,7 +633,7 @@ public class BulkResourceImpl implements BulkResource {
               unresolveds.add(unresolved);
             }
           } else {
-            throw new UnresolvableOperationException(String.format(BULK_ID_DOES_NOT_EXIST, bulkIdKey));
+            throw new UnresolvableOperationException(BULK_ID_DOES_NOT_EXIST.formatted(bulkIdKey));
           }
         }
       } else if (subAttribute.getType() == Schema.Attribute.Type.COMPLEX) {
@@ -699,7 +699,7 @@ public class BulkResourceImpl implements BulkResource {
               unresolvedTopLevels.add(unresolved);
             }
           } else {
-            throw new UnresolvableOperationException(String.format(BULK_ID_DOES_NOT_EXIST, bulkIdKey));
+            throw new UnresolvableOperationException(BULK_ID_DOES_NOT_EXIST.formatted(bulkIdKey));
           }
         }
       } else if (attribute.getType() == Schema.Attribute.Type.COMPLEX) {
diff --git a/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/protocol/data/BulkOperation.java b/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/protocol/data/BulkOperation.java
index 6fcabc8d..0f2a1ca9 100644
--- a/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/protocol/data/BulkOperation.java
+++ b/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/protocol/data/BulkOperation.java
@@ -30,12 +30,14 @@ import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import org.apache.directory.scim.spec.resources.BaseResource;
 import org.apache.directory.scim.spec.resources.ScimResource;
 
+import java.io.Serial;
 import java.io.Serializable;
 
 @XmlType(propOrder = {"method","path","bulkId","data"})
 @XmlAccessorType(XmlAccessType.NONE)
 public class BulkOperation implements Serializable {
 
+  @Serial
   private static final long serialVersionUID = 6528874816710788132L;
 
   public enum Method {
@@ -48,6 +50,7 @@ public class BulkOperation implements Serializable {
   @XmlAccessorType(XmlAccessType.NONE)
   public static class StatusWrapper implements Serializable {
 
+    @Serial
     private static final long serialVersionUID = 1544738718748608248L;
 
     public StatusWrapper(Status code) {
diff --git a/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/protocol/data/BulkRequest.java b/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/protocol/data/BulkRequest.java
index 4b5c5d54..e53b944e 100644
--- a/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/protocol/data/BulkRequest.java
+++ b/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/protocol/data/BulkRequest.java
@@ -19,6 +19,7 @@
 
 package org.apache.directory.scim.protocol.data;
 
+import java.io.Serial;
 import java.util.List;
 
 import jakarta.xml.bind.annotation.XmlAccessType;
@@ -34,6 +35,7 @@ public class BulkRequest extends BaseResource<BulkRequest> {
 
   public static final String SCHEMA_URI = "urn:ietf:params:scim:api:messages:2.0:BulkRequest";
 
+  @Serial
   private static final long serialVersionUID = -296570866318702047L;
 
   @XmlElement
diff --git a/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/protocol/data/ErrorResponse.java b/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/protocol/data/ErrorResponse.java
index 62d42e80..2e52e032 100644
--- a/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/protocol/data/ErrorResponse.java
+++ b/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/protocol/data/ErrorResponse.java
@@ -19,6 +19,9 @@
 
 package org.apache.directory.scim.protocol.data;
 
+import java.io.Serial;
+
+
 import jakarta.ws.rs.core.Response;
 import jakarta.ws.rs.core.Response.Status;
 import jakarta.xml.bind.annotation.XmlAccessType;
@@ -34,6 +37,7 @@ import org.apache.directory.scim.spec.resources.BaseResource;
 @XmlAccessorType(XmlAccessType.NONE)
 public class ErrorResponse extends BaseResource<ErrorResponse> {
 
+  @Serial
   private static final long serialVersionUID = 9045421198080348116L;
 
   public static final String SCHEMA_URI = "urn:ietf:params:scim:api:messages:2.0:Error";
diff --git a/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/protocol/data/ListResponse.java b/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/protocol/data/ListResponse.java
index 5b293bce..aad24714 100644
--- a/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/protocol/data/ListResponse.java
+++ b/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/protocol/data/ListResponse.java
@@ -19,6 +19,7 @@
 
 package org.apache.directory.scim.protocol.data;
 
+import java.io.Serial;
 import java.util.List;
 
 import jakarta.xml.bind.annotation.XmlAccessType;
@@ -32,6 +33,7 @@ import org.apache.directory.scim.spec.resources.BaseResource;
 @XmlAccessorType(XmlAccessType.NONE)
 public class ListResponse<T> extends BaseResource<ListResponse<T>> {
 
+  @Serial
   private static final long serialVersionUID = -2381780997440673136L;
 
   public static final String SCHEMA_URI = "urn:ietf:params:scim:api:messages:2.0:ListResponse";
diff --git a/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/protocol/data/SearchRequest.java b/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/protocol/data/SearchRequest.java
index 6536d7f0..8af15dda 100644
--- a/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/protocol/data/SearchRequest.java
+++ b/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/protocol/data/SearchRequest.java
@@ -19,6 +19,7 @@
 
 package org.apache.directory.scim.protocol.data;
 
+import java.io.Serial;
 import java.util.Set;
 
 import jakarta.xml.bind.annotation.XmlAccessType;
@@ -46,6 +47,7 @@ import org.apache.directory.scim.spec.resources.BaseResource;
 @XmlAccessorType(XmlAccessType.NONE)
 public class SearchRequest extends BaseResource<SearchRequest> {
 
+  @Serial
   private static final long serialVersionUID = 8217513543318598565L;
 
   public static final String SCHEMA_URI = "urn:ietf:params:scim:api:messages:2.0:SearchRequest";
diff --git a/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/protocol/exception/ScimException.java b/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/protocol/exception/ScimException.java
index 7543f849..4e4c6ee0 100644
--- a/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/protocol/exception/ScimException.java
+++ b/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/protocol/exception/ScimException.java
@@ -19,12 +19,16 @@
 
 package org.apache.directory.scim.protocol.exception;
 
+import java.io.Serial;
+
+
 import jakarta.ws.rs.core.Response.Status;
 
 import org.apache.directory.scim.protocol.data.ErrorResponse;
 
 public class ScimException extends Exception {
 
+  @Serial
   private static final long serialVersionUID = 3643485564325176463L;
   private final ErrorResponse error;
   private final Status status;
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/exception/InvalidExtensionException.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/exception/InvalidExtensionException.java
index d0ac8a6e..880cae16 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/exception/InvalidExtensionException.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/exception/InvalidExtensionException.java
@@ -19,8 +19,11 @@
 
 package org.apache.directory.scim.spec.exception;
 
+import java.io.Serial;
+
 public class InvalidExtensionException extends RuntimeException {
-  
+
+  @Serial
   private static final long serialVersionUID = -4113730866775103565L;
 
   public InvalidExtensionException(String what) {
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/exception/ScimResourceInvalidException.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/exception/ScimResourceInvalidException.java
index 71424bc8..aac3c052 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/exception/ScimResourceInvalidException.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/exception/ScimResourceInvalidException.java
@@ -19,8 +19,11 @@
 
 package org.apache.directory.scim.spec.exception;
 
+import java.io.Serial;
+
 public class ScimResourceInvalidException extends RuntimeException {
-  
+
+  @Serial
   private static final long serialVersionUID = -3378968149599082798L;
 
   public ScimResourceInvalidException(String message) {
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/extension/EnterpriseExtension.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/extension/EnterpriseExtension.java
index 27b49d59..b80c4cb9 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/extension/EnterpriseExtension.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/extension/EnterpriseExtension.java
@@ -19,6 +19,7 @@
 
 package org.apache.directory.scim.spec.extension;
 
+import java.io.Serial;
 import java.io.Serializable;
 
 import jakarta.xml.bind.annotation.XmlAccessType;
@@ -36,6 +37,7 @@ import org.apache.directory.scim.spec.schema.Schema.Attribute.Mutability;
 @ScimExtensionType(required = false, name = "EnterpriseUser", id = EnterpriseExtension.URN, description = "Attributes commonly used in representing users that belong to, or act on behalf of, a business or enterprise.")
 public class EnterpriseExtension implements ScimExtension {
 
+  @Serial
   private static final long serialVersionUID = -6850246976790442980L;
 
   public static final String URN = "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User";
@@ -152,6 +154,7 @@ public class EnterpriseExtension implements ScimExtension {
   @XmlAccessorType(XmlAccessType.NONE)
   public static class Manager implements Serializable {
 
+    @Serial
     private static final long serialVersionUID = -7930518578899296192L;
 
     @ScimAttribute(description = "The \"id\" of the SCIM resource representing the user's manager.  RECOMMENDED.")
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/AttributeComparisonExpression.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/AttributeComparisonExpression.java
index 516462dd..4ba44408 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/AttributeComparisonExpression.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/AttributeComparisonExpression.java
@@ -19,6 +19,7 @@
 
 package org.apache.directory.scim.spec.filter;
 
+import java.io.Serial;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -26,7 +27,9 @@ import java.time.format.DateTimeFormatter;
 import java.util.Date;
 
 import org.apache.directory.scim.spec.filter.attribute.AttributeReference;
+
 public final class AttributeComparisonExpression implements FilterExpression, ValueFilterExpression {
+  @Serial
   private static final long serialVersionUID = -2865840428089850575L;
   private final AttributeReference attributePath;
   private final CompareOperator operation;
@@ -90,12 +93,12 @@ public final class AttributeComparisonExpression implements FilterExpression, Va
       compareValueString = "null";
     } else if (this.compareValue instanceof String) {
       compareValueString = QUOTE + this.compareValue + QUOTE;
-    } else if (this.compareValue instanceof Date) {
-      compareValueString = QUOTE + toDateTimeString((Date) this.compareValue) + QUOTE;
-    } else if (this.compareValue instanceof LocalDate) {
-      compareValueString = QUOTE + toDateString((LocalDate) this.compareValue) + QUOTE;
-    } else if (this.compareValue instanceof LocalDateTime) {
-      compareValueString = QUOTE + toDateTimeString((LocalDateTime) this.compareValue) + QUOTE;
+    } else if (this.compareValue instanceof Date date1) {
+      compareValueString = QUOTE + toDateTimeString(date1) + QUOTE;
+    } else if (this.compareValue instanceof LocalDate date) {
+      compareValueString = QUOTE + toDateString(date) + QUOTE;
+    } else if (this.compareValue instanceof LocalDateTime time) {
+      compareValueString = QUOTE + toDateTimeString(time) + QUOTE;
     } else {
       compareValueString = this.compareValue.toString();
     }
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/AttributePresentExpression.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/AttributePresentExpression.java
index d77ef53b..7db81b08 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/AttributePresentExpression.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/AttributePresentExpression.java
@@ -19,9 +19,12 @@
 
 package org.apache.directory.scim.spec.filter;
 
+import java.io.Serial;
+
 import org.apache.directory.scim.spec.filter.attribute.AttributeReference;
 
 public final class AttributePresentExpression implements FilterExpression, ValueFilterExpression {
+  @Serial
   private static final long serialVersionUID = -4491412651236977273L;
   private final AttributeReference attributePath;
 
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/BaseFilterExpressionMapper.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/BaseFilterExpressionMapper.java
index b89cba63..8efdd958 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/BaseFilterExpressionMapper.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/BaseFilterExpressionMapper.java
@@ -41,24 +41,24 @@ public abstract class BaseFilterExpressionMapper<R> implements BiFunction<Filter
   public R apply(FilterExpression expression, AttributeContainer attributeContainer) {
 
     // attribute EQ "something"
-    if (expression instanceof AttributeComparisonExpression) {
-      return apply((AttributeComparisonExpression) expression, attributeContainer);
+    if (expression instanceof AttributeComparisonExpression comparisonExpression) {
+      return apply(comparisonExpression, attributeContainer);
     }
     // (attribute EQ "something") AND (otherAttribute EQ "something else")
-    else if (expression instanceof LogicalExpression) {
-      return apply((LogicalExpression) expression, attributeContainer);
+    else if (expression instanceof LogicalExpression logicalExpression) {
+      return apply(logicalExpression, attributeContainer);
     }
     // NOT (attribute EQ "something")
-    else if (expression instanceof GroupExpression) {
-      return apply((GroupExpression) expression, attributeContainer);
+    else if (expression instanceof GroupExpression groupExpression) {
+      return apply(groupExpression, attributeContainer);
     }
     // attribute PR
-    else if (expression instanceof AttributePresentExpression) {
-      return apply((AttributePresentExpression) expression, attributeContainer);
+    else if (expression instanceof AttributePresentExpression presentExpression) {
+      return apply(presentExpression, attributeContainer);
     }
     // addresses[type EQ "work"]
-    else if (expression instanceof ValuePathExpression) {
-      return apply((ValuePathExpression) expression, attributeContainer);
+    else if (expression instanceof ValuePathExpression pathExpression) {
+      return apply(pathExpression, attributeContainer);
     }
     return unhandledExpression(expression, attributeContainer);
   }
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/Filter.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/Filter.java
index 5095d73a..4dadf94d 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/Filter.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/Filter.java
@@ -25,6 +25,7 @@ import org.antlr.v4.runtime.tree.ParseTreeWalker;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.net.URLDecoder;
 import java.net.URLEncoder;
@@ -39,6 +40,7 @@ public class Filter implements Serializable {
     /** A logger for this class */
     private static final Logger log = LoggerFactory.getLogger(Filter.class);
 
+  @Serial
   private static final long serialVersionUID = -363511683199922297L;
 
   private FilterExpression expression;
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/FilterParseException.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/FilterParseException.java
index 95e80c6d..3c4fa998 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/FilterParseException.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/FilterParseException.java
@@ -19,6 +19,8 @@
 
 package org.apache.directory.scim.spec.filter;
 
+import java.io.Serial;
+
 /**
  * @author stevemoyer
  *
@@ -28,6 +30,7 @@ public class FilterParseException extends Exception {
   /**
    * 
    */
+  @Serial
   private static final long serialVersionUID = 1L;
 
   /**
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/InMemoryScimFilterMatcher.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/InMemoryScimFilterMatcher.java
index 5d8892d8..049aec70 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/InMemoryScimFilterMatcher.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/InMemoryScimFilterMatcher.java
@@ -206,8 +206,7 @@ class InMemoryScimFilterMatcher<R> extends BaseFilterExpressionMapper<Predicate<
           && actualValue.toString().contains(compareValue.toString());
       }
 
-      if (actualValue instanceof Comparable) {
-        Comparable actual = (Comparable) actualValue;
+      if (actualValue instanceof Comparable actual) {
         Comparable compare = (Comparable) compareValue;
         return CompareOperatorPredicate.naturalOrder(op, compare).test(actual);
       }
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/ValuePathExpression.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/ValuePathExpression.java
index 34ae5f06..1958e1a1 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/ValuePathExpression.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/ValuePathExpression.java
@@ -19,10 +19,13 @@
 
 package org.apache.directory.scim.spec.filter;
 
+import java.io.Serial;
+
 import org.apache.directory.scim.spec.filter.attribute.AttributeReference;
 
 public class ValuePathExpression implements FilterExpression {
 
+  @Serial
   private static final long serialVersionUID = 2615135752981305135L;
   // urn:parentAttribute[attributeExpression].subAttribute
 
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/attribute/AttributeReference.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/attribute/AttributeReference.java
index 92bb8e5f..48c80580 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/attribute/AttributeReference.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/attribute/AttributeReference.java
@@ -19,12 +19,14 @@
 
 package org.apache.directory.scim.spec.filter.attribute;
 
+import java.io.Serial;
 import java.io.Serializable;
 
 import org.apache.directory.scim.spec.validator.Urn;
 
 public class AttributeReference implements Serializable {
 
+  @Serial
   private static final long serialVersionUID = -3559538009692681470L;
 
   @Urn
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/patch/PatchOperation.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/patch/PatchOperation.java
index 13c5ed12..3fd1f81a 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/patch/PatchOperation.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/patch/PatchOperation.java
@@ -29,12 +29,14 @@ import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.directory.scim.spec.adapter.PatchOperationPathAdapter;
 
+import java.io.Serial;
 import java.io.Serializable;
 
 @XmlType(propOrder={"operation", "path", "value"})
 @XmlAccessorType(XmlAccessType.NONE)
 public class PatchOperation implements Serializable {
 
+  @Serial
   private static final long serialVersionUID = 7748584008639433236L;
 
   public Type getOperation() {
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/patch/PatchOperationPath.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/patch/PatchOperationPath.java
index 2349c2f7..bc17394a 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/patch/PatchOperationPath.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/patch/PatchOperationPath.java
@@ -32,10 +32,12 @@ import org.apache.directory.scim.spec.filter.FilterParser;
 import org.apache.directory.scim.spec.filter.FilterParseException;
 import org.apache.directory.scim.spec.filter.ValuePathExpression;
 
+import java.io.Serial;
 import java.io.Serializable;
 
 public class PatchOperationPath implements Serializable {
 
+  @Serial
   private static final long serialVersionUID = 449365558879593512L;
 
   private final ValuePathExpression valuePathExpression;
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/phonenumber/PhoneNumberParseException.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/phonenumber/PhoneNumberParseException.java
index a7a8e097..cac2dca8 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/phonenumber/PhoneNumberParseException.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/phonenumber/PhoneNumberParseException.java
@@ -19,6 +19,8 @@
 
 package org.apache.directory.scim.spec.phonenumber;
 
+import java.io.Serial;
+
 /**
  * @author heidielliott
  *
@@ -28,6 +30,7 @@ public class PhoneNumberParseException extends Exception {
   /**
    * 
    */
+  @Serial
   private static final long serialVersionUID = 1L;
 
   /**
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Address.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Address.java
index 52ad4ef6..a5b8d870 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Address.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Address.java
@@ -19,6 +19,7 @@
 
 package org.apache.directory.scim.spec.resources;
 
+import java.io.Serial;
 import java.io.Serializable;
 
 import jakarta.xml.bind.annotation.XmlAccessType;
@@ -36,6 +37,7 @@ import org.apache.directory.scim.spec.annotation.ScimAttribute;
 @XmlAccessorType(XmlAccessType.NONE)
 public class Address implements Serializable, TypedAttribute {
 
+  @Serial
   private static final long serialVersionUID = 3579689988186914163L;
   
   @XmlElement
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/BaseResource.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/BaseResource.java
index d7abda6d..5719d9f0 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/BaseResource.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/BaseResource.java
@@ -19,6 +19,7 @@
 
 package org.apache.directory.scim.spec.resources;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.Set;
 import java.util.TreeSet;
@@ -40,6 +41,7 @@ import org.apache.directory.scim.spec.validator.Urn;
 @XmlAccessorType(XmlAccessType.NONE)
 public abstract class BaseResource<SELF extends BaseResource<SELF>> implements Serializable {
 
+  @Serial
   private static final long serialVersionUID = -7603956873008734403L;
 
   @XmlElement(name="schemas")
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Email.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Email.java
index 6ecf88d6..2ef331af 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Email.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Email.java
@@ -19,6 +19,7 @@
 
 package org.apache.directory.scim.spec.resources;
 
+import java.io.Serial;
 import java.io.Serializable;
 
 import jakarta.xml.bind.annotation.XmlAccessType;
@@ -36,6 +37,7 @@ import org.apache.directory.scim.spec.annotation.ScimAttribute;
 @XmlAccessorType(XmlAccessType.NONE)
 public class Email implements Serializable, TypedAttribute {
 
+  @Serial
   private static final long serialVersionUID = -7914234516870440784L;
 
   @XmlElement(nillable=true)
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Entitlement.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Entitlement.java
index 2db32c41..598ded83 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Entitlement.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Entitlement.java
@@ -19,6 +19,7 @@
 
 package org.apache.directory.scim.spec.resources;
 
+import java.io.Serial;
 import java.io.Serializable;
 
 import jakarta.xml.bind.annotation.XmlAccessType;
@@ -36,6 +37,7 @@ import org.apache.directory.scim.spec.annotation.ScimAttribute;
 @XmlAccessorType(XmlAccessType.NONE)
 public class Entitlement implements Serializable, TypedAttribute {
 
+  @Serial
   private static final long serialVersionUID = -5657063764529902479L;
 
   @XmlElement(nillable=true)
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/GroupMembership.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/GroupMembership.java
index 78c5801d..8c5d8a2c 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/GroupMembership.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/GroupMembership.java
@@ -29,6 +29,7 @@ import org.apache.directory.scim.spec.annotation.ScimAttribute;
 import org.apache.directory.scim.spec.annotation.ScimResourceIdReference;
 import org.apache.directory.scim.spec.schema.Schema;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.Locale;
 import java.util.Objects;
@@ -37,6 +38,7 @@ import java.util.Objects;
 @XmlAccessorType(XmlAccessType.NONE)
 public class GroupMembership implements Serializable {
 
+  @Serial
   private static final long serialVersionUID = 6418041921926482112L;
 
   public static final String TYPE_USER = "User";
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Im.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Im.java
index 3a5e6042..6796f7fd 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Im.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Im.java
@@ -19,6 +19,7 @@
 
 package org.apache.directory.scim.spec.resources;
 
+import java.io.Serial;
 import java.io.Serializable;
 
 import jakarta.xml.bind.annotation.XmlAccessType;
@@ -36,6 +37,7 @@ import org.apache.directory.scim.spec.annotation.ScimAttribute;
 @XmlAccessorType(XmlAccessType.NONE)
 public class Im implements Serializable, TypedAttribute {
 
+  @Serial
   private static final long serialVersionUID = 6324188935390255346L;
 
   @XmlElement(nillable=true)
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Name.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Name.java
index 063c66f7..560adcc1 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Name.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Name.java
@@ -19,6 +19,7 @@
 
 package org.apache.directory.scim.spec.resources;
 
+import java.io.Serial;
 import java.io.Serializable;
 
 import jakarta.xml.bind.annotation.XmlAccessType;
@@ -38,6 +39,7 @@ import org.apache.directory.scim.spec.annotation.ScimAttribute;
 @XmlAccessorType(XmlAccessType.NONE)
 public class Name implements Serializable  {
 
+  @Serial
   private static final long serialVersionUID = -2761413543859555141L;
 
   @XmlElement
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/PhoneNumber.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/PhoneNumber.java
index 8c151b3c..21486c22 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/PhoneNumber.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/PhoneNumber.java
@@ -19,6 +19,7 @@
 
 package org.apache.directory.scim.spec.resources;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.LinkedHashMap;
 import java.util.Locale;
@@ -57,6 +58,7 @@ import org.apache.directory.scim.spec.phonenumber.PhoneNumberParser;
 @XmlAccessorType(XmlAccessType.NONE)
 public class PhoneNumber implements Serializable, TypedAttribute {
 
+  @Serial
   private static final long serialVersionUID = 607319505715224096L;
 
   private static final String VISUAL_SEPARATORS = "[\\(\\)\\-\\.]";
@@ -407,7 +409,7 @@ public class PhoneNumber implements Serializable, TypedAttribute {
 
     String getFormattedExtension() {
       if (this.extension != null && !this.extension.isEmpty()) {
-        return String.format(EXTENSTION_PREFIX, this.extension);
+        return EXTENSTION_PREFIX.formatted(this.extension);
       }
 
       return null;
@@ -415,7 +417,7 @@ public class PhoneNumber implements Serializable, TypedAttribute {
 
     String getFormattedSubAddress() {
       if (this.subAddress != null && !this.subAddress.isEmpty()) {
-        return String.format(ISUB_PREFIX, this.subAddress);
+        return ISUB_PREFIX.formatted(this.subAddress);
       }
 
       return null;
@@ -423,7 +425,7 @@ public class PhoneNumber implements Serializable, TypedAttribute {
 
     String getFormattedPhoneContext() {
       if (this.phoneContext != null && !this.phoneContext.isEmpty()) {
-        return String.format(CONTEXT_PREFIX, this.phoneContext);
+        return CONTEXT_PREFIX.formatted(this.phoneContext);
       }
 
       return null;
@@ -433,7 +435,7 @@ public class PhoneNumber implements Serializable, TypedAttribute {
       String paramsFormatted = "";
       if (params != null) {
         paramsFormatted = params.entrySet().stream()
-          .map(entry -> String.format(PARAMS_STRING, entry.getKey(), entry.getValue() != null ? entry.getValue() : ""))
+          .map(entry -> PARAMS_STRING.formatted(entry.getKey(), entry.getValue() != null ? entry.getValue() : ""))
           .collect(Collectors.joining());
       }
 
@@ -441,7 +443,7 @@ public class PhoneNumber implements Serializable, TypedAttribute {
     }
 
     String getFormattedValue() {
-      String valueString = String.format(PREFIX, this.number);
+      String valueString = PREFIX.formatted(this.number);
 
       String fExtension = getFormattedExtension();
       if (fExtension != null) {
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Photo.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Photo.java
index 35cb1ab7..e5baef69 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Photo.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Photo.java
@@ -19,6 +19,7 @@
 
 package org.apache.directory.scim.spec.resources;
 
+import java.io.Serial;
 import java.io.Serializable;
 
 import jakarta.xml.bind.annotation.XmlAccessType;
@@ -35,7 +36,8 @@ import org.apache.directory.scim.spec.annotation.ScimAttribute;
 @XmlType
 @XmlAccessorType(XmlAccessType.NONE)
 public class Photo implements Serializable, TypedAttribute {
-  
+
+  @Serial
   private static final long serialVersionUID = 8821620834716156789L;
  
   @XmlElement
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Role.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Role.java
index 6e1608ea..9389ed90 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Role.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/Role.java
@@ -19,6 +19,7 @@
 
 package org.apache.directory.scim.spec.resources;
 
+import java.io.Serial;
 import java.io.Serializable;
 
 import jakarta.xml.bind.annotation.XmlAccessType;
@@ -36,6 +37,7 @@ import org.apache.directory.scim.spec.annotation.ScimAttribute;
 @XmlAccessorType(XmlAccessType.NONE)
 public class Role implements Serializable, TypedAttribute {
 
+  @Serial
   private static final long serialVersionUID = -2781839189814966670L;
 
   @XmlElement(nillable=true)
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/ScimGroup.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/ScimGroup.java
index ac95f0ea..1fd2b26a 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/ScimGroup.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/ScimGroup.java
@@ -19,6 +19,7 @@
 
 package org.apache.directory.scim.spec.resources;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
@@ -41,6 +42,7 @@ import org.apache.directory.scim.spec.schema.Meta;
 @XmlAccessorType(XmlAccessType.NONE)
 public class ScimGroup extends ScimResource implements Serializable {
 
+  @Serial
   private static final long serialVersionUID = 4424638498347469070L;
   public static final String RESOURCE_NAME = "Group";
   public static final String SCHEMA_URI = "urn:ietf:params:scim:schemas:core:2.0:Group";
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/ScimResource.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/ScimResource.java
index 60a23c0a..0931cf25 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/ScimResource.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/ScimResource.java
@@ -35,6 +35,8 @@ import jakarta.validation.constraints.Size;
 import jakarta.xml.bind.annotation.XmlAccessType;
 import jakarta.xml.bind.annotation.XmlAccessorType;
 import jakarta.xml.bind.annotation.XmlElement;
+
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.LinkedHashMap;
 import java.util.Map;
@@ -48,6 +50,7 @@ import java.util.Map;
 @XmlAccessorType(XmlAccessType.NONE)
 public abstract class ScimResource extends BaseResource<ScimResource> implements Serializable {
 
+  @Serial
   private static final long serialVersionUID = 3673404125396687366L;
 
   private static final Logger LOG = LoggerFactory.getLogger(ScimResource.class);
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/ScimResourceWithOptionalId.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/ScimResourceWithOptionalId.java
index 993e87db..f2934c05 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/ScimResourceWithOptionalId.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/ScimResourceWithOptionalId.java
@@ -19,6 +19,8 @@
 
 package org.apache.directory.scim.spec.resources;
 
+import java.io.Serial;
+
 import jakarta.xml.bind.annotation.XmlAccessType;
 import jakarta.xml.bind.annotation.XmlAccessorType;
 import jakarta.xml.bind.annotation.XmlElement;
@@ -31,7 +33,8 @@ import jakarta.xml.bind.annotation.XmlElement;
  */
 @XmlAccessorType(XmlAccessType.NONE)
 public abstract class ScimResourceWithOptionalId extends ScimResource {
-  
+
+  @Serial
   private static final long serialVersionUID = -379538554565387791L;
 
   @XmlElement
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/ScimUser.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/ScimUser.java
index 20d7ce7e..b2d32cbc 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/ScimUser.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/ScimUser.java
@@ -19,6 +19,7 @@
 
 package org.apache.directory.scim.spec.resources;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.List;
 import java.util.Map;
@@ -44,6 +45,7 @@ import org.apache.directory.scim.spec.schema.Schema.Attribute.Uniqueness;
 @XmlAccessorType(XmlAccessType.NONE)
 public class ScimUser extends ScimResource implements Serializable {
 
+  @Serial
   private static final long serialVersionUID = -2306547717245071997L;
   public static final String RESOURCE_NAME = "User";
   public static final String SCHEMA_URI = "urn:ietf:params:scim:schemas:core:2.0:User";
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/UserGroup.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/UserGroup.java
index 6970956c..f70ed8b4 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/UserGroup.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/UserGroup.java
@@ -29,6 +29,7 @@ import org.apache.directory.scim.spec.annotation.ScimAttribute;
 import org.apache.directory.scim.spec.annotation.ScimResourceIdReference;
 import org.apache.directory.scim.spec.schema.Schema;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.Locale;
 import java.util.Objects;
@@ -40,6 +41,7 @@ public class UserGroup implements Serializable {
   public static final String TYPE_DIRECT = "direct";
   public static final String TYPE_INDIRECT = "indirect";
 
+  @Serial
   private static final long serialVersionUID = 8698508874413555857L;
 
   public String getValue() {
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/X509Certificate.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/X509Certificate.java
index fe842ae7..68451f25 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/X509Certificate.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/resources/X509Certificate.java
@@ -19,6 +19,7 @@
 
 package org.apache.directory.scim.spec.resources;
 
+import java.io.Serial;
 import java.io.Serializable;
 
 import jakarta.xml.bind.annotation.XmlAccessType;
@@ -35,7 +36,8 @@ import org.apache.directory.scim.spec.annotation.ScimAttribute;
 @XmlType
 @XmlAccessorType(XmlAccessType.NONE)
 public class X509Certificate implements Serializable, TypedAttribute {
-  
+
+  @Serial
   private static final long serialVersionUID = 374273508404129850L;
 
   @XmlElement(nillable=true)
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/schema/Meta.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/schema/Meta.java
index 09e21943..78dbd459 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/schema/Meta.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/schema/Meta.java
@@ -19,6 +19,7 @@
 
 package org.apache.directory.scim.spec.schema;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.time.LocalDateTime;
 
@@ -44,7 +45,8 @@ import org.apache.directory.scim.spec.schema.Schema.Attribute.Mutability;
 @XmlType(name = "meta")
 @XmlAccessorType(XmlAccessType.NONE)
 public class Meta implements Serializable {
-  
+
+  @Serial
   private static final long serialVersionUID = -9162917034280030708L;
 
   @XmlElement
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/schema/ResourceType.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/schema/ResourceType.java
index eebb1e17..1d0924b7 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/schema/ResourceType.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/schema/ResourceType.java
@@ -19,6 +19,7 @@
 
 package org.apache.directory.scim.spec.schema;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.List;
 import java.util.Map;
@@ -48,6 +49,7 @@ public class ResourceType extends ScimResourceWithOptionalId {
   public static final String RESOURCE_NAME = "ResourceType";
   public static final String SCHEMA_URI = "urn:ietf:params:scim:schemas:core:2.0:ResourceType";
   public static final Schema SCHEMA = Schemas.schemaFor(ResourceType.class, SCHEMA_URI, RESOURCE_NAME, "Specifies the schema that describes a SCIM resource type");
+  @Serial
   private static final long serialVersionUID = -696969911228870476L;
 
   public @Size(min = 1) String getName() {
@@ -147,6 +149,7 @@ public class ResourceType extends ScimResourceWithOptionalId {
 
   public static class SchemaExtensionConfiguration implements Serializable {
 
+    @Serial
     private static final long serialVersionUID = 7351651561572744255L;
 
     @XmlElement(name = "schema")
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/schema/Schema.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/schema/Schema.java
index 23f3c169..77db48c1 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/schema/Schema.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/schema/Schema.java
@@ -27,6 +27,7 @@ import org.apache.directory.scim.spec.resources.ScimResource;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.Serial;
 import java.lang.reflect.Field;
 import java.util.*;
 
@@ -43,6 +44,7 @@ import java.util.*;
 public class Schema extends ScimResource implements AttributeContainer {
 
   private static final Logger LOG = LoggerFactory.getLogger(Schema.class);
+  @Serial
   private static final long serialVersionUID = 1869782412244161741L;
   
   public static final String RESOURCE_NAME = "Schema";
@@ -155,6 +157,7 @@ public class Schema extends ScimResource implements AttributeContainer {
   @XmlAccessorType(XmlAccessType.NONE)
   public static class Attribute implements AttributeContainer {
 
+    @Serial
     private static final long serialVersionUID = 1683400114899587851L;
 
     String getPath() {
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/schema/ServiceProviderConfiguration.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/schema/ServiceProviderConfiguration.java
index 38215cde..d64c6fa0 100644
--- a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/schema/ServiceProviderConfiguration.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/schema/ServiceProviderConfiguration.java
@@ -19,6 +19,7 @@
 
 package org.apache.directory.scim.spec.schema;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.List;
 import java.util.Map;
@@ -42,6 +43,7 @@ public class ServiceProviderConfiguration extends ScimResourceWithOptionalId {
   public static final String RESOURCE_NAME = "ServiceProviderConfig";
   public static final String SCHEMA_URI = "urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig";
   public static final Schema SCHEMA = Schemas.schemaFor(ServiceProviderConfiguration.class, SCHEMA_URI, "Service Provider Configuration", "Specifies the schema that describes a SCIM schema");
+  @Serial
   private static final long serialVersionUID = -6526116522184446474L;
 
   public String getDocumentationUrl() {
@@ -186,6 +188,7 @@ public class ServiceProviderConfiguration extends ScimResourceWithOptionalId {
   @XmlAccessorType(XmlAccessType.NONE)
   public static class AuthenticationSchema implements Serializable {
 
+    @Serial
     private static final long serialVersionUID = 1286852277186580002L;
 
     public Type getType() {
@@ -369,6 +372,7 @@ public class ServiceProviderConfiguration extends ScimResourceWithOptionalId {
   }
 
   public static class SupportedConfiguration implements Serializable {
+    @Serial
     private static final long serialVersionUID = 3646886915978382920L;
     boolean supported;
 
@@ -407,6 +411,7 @@ public class ServiceProviderConfiguration extends ScimResourceWithOptionalId {
   }
 
   public static class BulkConfiguration extends SupportedConfiguration {
+    @Serial
     private static final long serialVersionUID = 8312025367100671778L;
     int maxOperations;
     int maxPayloadSize;
@@ -458,6 +463,7 @@ public class ServiceProviderConfiguration extends ScimResourceWithOptionalId {
   }
 
   public static class FilterConfiguration extends SupportedConfiguration {
+    @Serial
     private static final long serialVersionUID = 1887771731291732875L;
     int maxResults;
 
diff --git a/scim-test/src/main/java/org/apache/directory/scim/test/stub/ExampleObjectExtension.java b/scim-test/src/main/java/org/apache/directory/scim/test/stub/ExampleObjectExtension.java
index 7c9ba80e..856a5d10 100644
--- a/scim-test/src/main/java/org/apache/directory/scim/test/stub/ExampleObjectExtension.java
+++ b/scim-test/src/main/java/org/apache/directory/scim/test/stub/ExampleObjectExtension.java
@@ -30,6 +30,7 @@ import org.apache.directory.scim.spec.resources.ScimExtension;
 import org.apache.directory.scim.spec.schema.Schema.Attribute.Mutability;
 import org.apache.directory.scim.spec.schema.Schema.Attribute.Returned;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.List;
 
@@ -38,6 +39,7 @@ import java.util.List;
 @ScimExtensionType(required = false, name = "ExampleObject", id = ExampleObjectExtension.URN, description = "Example Object Extensions.")
 public class ExampleObjectExtension implements ScimExtension {
 
+  @Serial
   private static final long serialVersionUID = -5398090056271556423L;
 
   public static final String URN = "urn:ietf:params:scim:schemas:extension:example:2.0:Object";
@@ -221,6 +223,7 @@ public class ExampleObjectExtension implements ScimExtension {
   @XmlAccessorType(XmlAccessType.NONE)
   public static class ComplexObject implements Serializable {
 
+    @Serial
     private static final long serialVersionUID = 2822581434679824690L;
 
     @ScimAttribute(description = "The \"id\" of the complex object.")
diff --git a/scim-test/src/main/java/org/apache/directory/scim/test/stub/Subobject.java b/scim-test/src/main/java/org/apache/directory/scim/test/stub/Subobject.java
index 0061aa6c..eb098c5a 100644
--- a/scim-test/src/main/java/org/apache/directory/scim/test/stub/Subobject.java
+++ b/scim-test/src/main/java/org/apache/directory/scim/test/stub/Subobject.java
@@ -22,6 +22,7 @@ package org.apache.directory.scim.test.stub;
 import jakarta.xml.bind.annotation.XmlElement;
 import org.apache.directory.scim.spec.annotation.ScimAttribute;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.Arrays;
 import java.util.List;
@@ -29,6 +30,7 @@ import java.util.Objects;
 
 public class Subobject implements Serializable {
 
+  @Serial
   private static final long serialVersionUID = -8081556701833520316L;
 
   @ScimAttribute
diff --git a/scim-tools/src/main/java/org/apache/directory/scim/tools/diff/PatchGenerator.java b/scim-tools/src/main/java/org/apache/directory/scim/tools/diff/PatchGenerator.java
index 06ee669d..fec640ef 100644
--- a/scim-tools/src/main/java/org/apache/directory/scim/tools/diff/PatchGenerator.java
+++ b/scim-tools/src/main/java/org/apache/directory/scim/tools/diff/PatchGenerator.java
@@ -297,7 +297,7 @@ public class PatchGenerator {
   }
 
   private static boolean isEmpty(Object obj) {
-    return obj == null || (obj instanceof Collection && ((Collection<?>) obj).isEmpty());
+    return obj == null || (obj instanceof Collection<?> c && c.isEmpty());
   }
 
   private static boolean isNotEmpty(Object obj) {