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

ilgrosso pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git


The following commit(s) were added to refs/heads/master by this push:
     new a6f8e69c89 Chore: Replace instanceof checks with pattern matching 
(#1000)
a6f8e69c89 is described below

commit a6f8e69c8961ebc89c8c0e00a73ee024fc055c80
Author: Misagh Moayyed <[email protected]>
AuthorDate: Tue Mar 4 13:51:39 2025 +0400

    Chore: Replace instanceof checks with pattern matching (#1000)
---
 ...AnyDirectoryPanelAdditionalActionsProvider.java | 12 +--
 .../any/MergeLinkedAccountsSearchPanel.java        |  4 +-
 .../any/MergeLinkedAccountsWizardBuilder.java      |  8 +-
 .../markup/html/form/AjaxCheckBoxPanel.java        |  4 +-
 .../markup/html/form/AjaxNumberFieldPanel.java     | 14 ++--
 .../commons/markup/html/form/DateFieldPanel.java   |  4 +-
 .../markup/html/form/SelectChoiceRenderer.java     |  4 +-
 .../ui/commons/markup/html/form/SelectOption.java  |  6 +-
 .../client/ui/commons/rest/ResponseHolder.java     |  4 +-
 .../client/ui/commons/status/StatusBean.java       |  8 +-
 .../ui/commons/wizards/AjaxWizardMgtButtonBar.java |  4 +-
 .../client/console/chartjs/ChartJSBehavior.java    |  4 +-
 .../client/console/chartjs/ChartJSPanel.java       |  4 +-
 .../syncope/client/console/pages/BasePage.java     |  2 +-
 .../syncope/client/console/panels/BeanPanel.java   |  8 +-
 .../syncope/client/console/panels/ConfParam.java   |  4 +-
 .../syncope/client/console/panels/Realm.java       |  4 +-
 .../syncope/client/console/panels/TogglePanel.java |  4 +-
 .../client/console/panels/search/SearchUtils.java  |  6 +-
 .../console/policies/PolicyRuleDirectoryPanel.java | 12 +--
 .../console/policies/PolicyRuleWizardBuilder.java  |  4 +-
 .../html/repeater/data/table/CheckBoxPanel.java    |  4 +-
 .../data/table/CollectionPropertyColumn.java       |  4 +-
 .../repeater/data/table/DatePropertyColumn.java    | 12 +--
 .../html/repeater/data/table/TokenColumn.java      |  4 +-
 .../markup/html/form/ActionLinksTogglePanel.java   | 92 +++++++++++-----------
 .../console/wizards/any/AnyWizardBuilder.java      | 12 +--
 .../client/console/wizards/any/Ownership.java      |  6 +-
 .../client/console/wizards/any/StatusPanel.java    | 10 +--
 .../syncope/client/enduser/pages/BasePage.java     |  2 +-
 .../apache/syncope/client/lib/SyncopeClient.java   | 16 ++--
 .../apache/syncope/common/lib/AnyOperations.java   | 13 +--
 .../syncope/core/logic/ReconciliationLogic.java    | 10 +--
 .../syncope/core/rest/cxf/AddETagFilter.java       |  4 +-
 .../apache/syncope/core/rest/cxf/JavaDocUtils.java |  4 +-
 .../core/rest/cxf/RestServiceExceptionMapper.java  | 12 +--
 .../core/rest/cxf/service/AbstractService.java     |  8 +-
 .../persistence/api/dao/search/SearchCond.java     |  2 +-
 .../common/dao/AbstractAnySearchDAO.java           |  2 +-
 .../core/provisioning/api/jexl/JexlUtils.java      |  8 +-
 .../core/provisioning/api/rules/InboundMatch.java  |  4 +-
 .../api/serialization/AbstractValueSerializer.java | 20 ++---
 .../api/serialization/SyncTokenSerializer.java     | 20 ++---
 .../provisioning/java/DefaultAuditManager.java     |  4 +-
 .../provisioning/java/DefaultMappingManager.java   | 29 +++----
 .../provisioning/java/job/MacroJobDelegate.java    |  4 +-
 .../notification/DefaultNotificationManager.java   | 28 +++----
 .../java/pushpull/DefaultPushCorrelationRule.java  | 12 +--
 .../java/pushpull/SinglePullJobDelegate.java       |  4 +-
 .../java/pushpull/SinglePushJobDelegate.java       |  8 +-
 .../pushpull/stream/StreamPullJobDelegate.java     |  4 +-
 .../pushpull/stream/StreamPushJobDelegate.java     |  4 +-
 .../provisioning/java/utils/ConnObjectUtils.java   |  2 +-
 .../panels/UserRequestFormDirectoryPanel.java      |  8 +-
 .../flowable/impl/FlowableUserRequestHandler.java  |  4 +-
 .../console/panels/SAML2IdPsDirectoryPanel.java    |  4 +-
 .../syncope/core/logic/SAML2SP4UIIdPLogic.java     |  8 +-
 .../apache/syncope/core/logic/SCIMDataBinder.java  | 23 +++---
 .../ext/scimv2/cxf/SCIMExceptionMapper.java        | 12 +--
 .../core/reference/SampleReportJobDelegate.java    |  4 +-
 .../apache/syncope/sra/actuate/SRASessions.java    |  4 +-
 .../PrincipalToRequestHeaderFilterFactory.java     |  8 +-
 .../mapping/DefaultTicketExpirationMapper.java     |  4 +-
 .../idp/metadata/WASamlIdPMetadataLocator.java     |  4 +-
 64 files changed, 291 insertions(+), 284 deletions(-)

diff --git 
a/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/IdMAnyDirectoryPanelAdditionalActionsProvider.java
 
b/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/IdMAnyDirectoryPanelAdditionalActionsProvider.java
index db55c589be..bc5462b12e 100644
--- 
a/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/IdMAnyDirectoryPanelAdditionalActionsProvider.java
+++ 
b/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/IdMAnyDirectoryPanelAdditionalActionsProvider.java
@@ -96,11 +96,11 @@ public class IdMAnyDirectoryPanelAdditionalActionsProvider 
implements AnyDirecto
 
             @Override
             public void onEvent(final IEvent<?> event) {
-                if (event.getPayload() instanceof 
AjaxWizard.NewItemCancelEvent) {
-                    ((AjaxWizard.NewItemCancelEvent<?>) 
event.getPayload()).getTarget().
+                if (event.getPayload() instanceof final 
AjaxWizard.NewItemCancelEvent<?> newItemCancelEvent) {
+                    newItemCancelEvent.getTarget().
                             ifPresent(modal::close);
-                } else if (event.getPayload() instanceof 
AjaxWizard.NewItemFinishEvent) {
-                    AjaxWizard.NewItemFinishEvent<?> payload = 
(AjaxWizard.NewItemFinishEvent) event.getPayload();
+                } else if (event.getPayload() instanceof final 
AjaxWizard.NewItemFinishEvent newItemFinishEvent) {
+                    AjaxWizard.NewItemFinishEvent<?> payload = 
newItemFinishEvent;
                     Optional<AjaxRequestTarget> target = payload.getTarget();
 
                     if (payload.getResult() instanceof ArrayList) {
@@ -130,8 +130,8 @@ public class IdMAnyDirectoryPanelAdditionalActionsProvider 
implements AnyDirecto
                     } else if 
(Constants.OPERATION_SUCCEEDED.equals(payload.getResult())) {
                         target.ifPresent(modal::close);
                         
SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED));
-                    } else if (payload.getResult() instanceof Exception) {
-                        SyncopeConsoleSession.get().onException((Exception) 
payload.getResult());
+                    } else if (payload.getResult() instanceof final Exception 
exception) {
+                        SyncopeConsoleSession.get().onException(exception);
                     } else {
                         SyncopeConsoleSession.get().error(payload.getResult());
                     }
diff --git 
a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsSearchPanel.java
 
b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsSearchPanel.java
index 2c194b9f67..96cc365bec 100644
--- 
a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsSearchPanel.java
+++ 
b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsSearchPanel.java
@@ -103,9 +103,9 @@ public class MergeLinkedAccountsSearchPanel extends 
WizardStep {
                     + 
SearchUtils.buildFIQL(userSearchPanel.getModel().getObject(),
                             SyncopeClient.getUserSearchConditionBuilder());
             userDirectoryPanel.search(fiql, target);
-        } else if (event.getPayload() instanceof 
AnySelectionDirectoryPanel.ItemSelection) {
+        } else if (event.getPayload() instanceof final 
AnySelectionDirectoryPanel.ItemSelection itemSelection) {
             AnySelectionDirectoryPanel.ItemSelection<?> payload =
-                    (AnySelectionDirectoryPanel.ItemSelection) 
event.getPayload();
+                itemSelection;
 
             AnyTO sel = payload.getSelection();
             wizardModel.setMergingUser(userRestClient.read(sel.getKey()));
diff --git 
a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsWizardBuilder.java
 
b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsWizardBuilder.java
index 0b6c2060a2..453fde65d6 100644
--- 
a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsWizardBuilder.java
+++ 
b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsWizardBuilder.java
@@ -94,12 +94,12 @@ public class MergeLinkedAccountsWizardBuilder extends 
BaseAjaxWizardBuilder<User
 
     @Override
     public void onEvent(final IEvent<?> event) {
-        if (event.getPayload() instanceof AjaxWizard.NewItemCancelEvent) {
-            ((AjaxWizard.NewItemCancelEvent<?>) 
event.getPayload()).getTarget().ifPresent(modal::close);
+        if (event.getPayload() instanceof final 
AjaxWizard.NewItemCancelEvent<?> newItemCancelEvent) {
+            newItemCancelEvent.getTarget().ifPresent(modal::close);
         }
-        if (event.getPayload() instanceof AjaxWizard.NewItemFinishEvent) {
+        if (event.getPayload() instanceof final 
AjaxWizard.NewItemFinishEvent<?> newItemFinishEvent) {
             Optional<AjaxRequestTarget> target =
-                    ((AjaxWizard.NewItemFinishEvent<?>) 
event.getPayload()).getTarget();
+                    newItemFinishEvent.getTarget();
             try {
                 mergeAccounts();
 
diff --git 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxCheckBoxPanel.java
 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxCheckBoxPanel.java
index af581d4af8..8dedbaea02 100644
--- 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxCheckBoxPanel.java
+++ 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxCheckBoxPanel.java
@@ -107,9 +107,9 @@ public class AjaxCheckBoxPanel extends FieldPanel<Boolean> {
                 if (obj != null && !obj.toString().isEmpty()) {
                     if (obj instanceof String) {
                         bool = 
Boolean.TRUE.toString().equalsIgnoreCase(obj.toString());
-                    } else if (obj instanceof Boolean) {
+                    } else if (obj instanceof final Boolean b) {
                         // Don't parse anything
-                        bool = (Boolean) obj;
+                        bool = b;
                     }
                 }
 
diff --git 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxNumberFieldPanel.java
 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxNumberFieldPanel.java
index 39c6824b59..f7735a29a5 100644
--- 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxNumberFieldPanel.java
+++ 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxNumberFieldPanel.java
@@ -165,18 +165,18 @@ public final class AjaxNumberFieldPanel<T extends Number 
& Comparable<T>> extend
                         } catch (NumberFormatException e) {
                             LOG.error("While attempting to parse {}", obj, e);
                         }
-                    } else if (obj instanceof Number) {
+                    } else if (obj instanceof final Number number1) {
                         number = reference.equals(Integer.class)
-                                ? reference.cast(((Number) obj).intValue())
+                                ? reference.cast(number1.intValue())
                                 : reference.equals(Long.class)
-                                ? reference.cast(((Number) obj).longValue())
+                                ? reference.cast(number1.longValue())
                                 : reference.equals(Short.class)
-                                ? reference.cast(((Number) obj).shortValue())
+                                ? reference.cast(number1.shortValue())
                                 : reference.equals(Float.class)
-                                ? reference.cast(((Number) obj).floatValue())
+                                ? reference.cast(number1.floatValue())
                                 : reference.equals(byte.class)
-                                ? reference.cast(((Number) obj).byteValue())
-                                : reference.cast(((Number) obj).doubleValue());
+                                ? reference.cast(number1.byteValue())
+                                : reference.cast(number1.doubleValue());
                     }
                 }
 
diff --git 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/DateFieldPanel.java
 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/DateFieldPanel.java
index 694cea0ecb..043cbfdfcb 100644
--- 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/DateFieldPanel.java
+++ 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/DateFieldPanel.java
@@ -100,9 +100,9 @@ public abstract class DateFieldPanel extends 
FieldPanel<Date> {
                         } catch (ParseException e) {
                             LOG.error("While parsing date", e);
                         }
-                    } else if (obj instanceof Date) {
+                    } else if (obj instanceof final Date date1) {
                         // Don't parse anything
-                        date = (Date) obj;
+                        date = date1;
                     } else {
                         // consider Long
                         date = new Date((Long) obj);
diff --git 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/SelectChoiceRenderer.java
 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/SelectChoiceRenderer.java
index be4528dff3..eb27ffa1a1 100644
--- 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/SelectChoiceRenderer.java
+++ 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/SelectChoiceRenderer.java
@@ -28,8 +28,8 @@ public class SelectChoiceRenderer<T> implements 
IChoiceRenderer<T> {
 
     @Override
     public Object getDisplayValue(final T obj) {
-        if (obj instanceof SelectOption) {
-            return ((SelectOption) obj).getDisplayValue();
+        if (obj instanceof final SelectOption selectOption) {
+            return selectOption.getDisplayValue();
         } else {
             return obj.toString();
         }
diff --git 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/SelectOption.java
 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/SelectOption.java
index c6a30d9a82..e8cc2cf529 100644
--- 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/SelectOption.java
+++ 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/SelectOption.java
@@ -52,12 +52,12 @@ public class SelectOption implements Serializable {
 
     @Override
     public boolean equals(final Object obj) {
-        if (obj == null || !(obj instanceof SelectOption)) {
+        if (obj == null || !(obj instanceof final SelectOption selectOption)) {
             return false;
         }
 
-        return (keyValue == null && ((SelectOption) obj).keyValue == null) || 
keyValue != null
-                && keyValue.equals(((SelectOption) obj).keyValue);
+        return (keyValue == null && selectOption.keyValue == null) || keyValue 
!= null
+                && keyValue.equals(selectOption.keyValue);
     }
 
     @Override
diff --git 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/rest/ResponseHolder.java
 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/rest/ResponseHolder.java
index 9a733dece6..0a4fcaa30b 100644
--- 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/rest/ResponseHolder.java
+++ 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/rest/ResponseHolder.java
@@ -39,9 +39,9 @@ public class ResponseHolder implements Serializable {
     public ResponseHolder(final Response response) {
         Object entity = response.getEntity();
         if (response.getStatusInfo().getStatusCode() == 
Response.Status.OK.getStatusCode()
-                && (entity instanceof InputStream)) {
+                && (entity instanceof final InputStream stream)) {
 
-            this.inputStream = (InputStream) entity;
+            this.inputStream = stream;
             this.contentType = 
response.getHeaderString(HttpHeaders.CONTENT_TYPE);
             this.location = response.getLocation() == null ? null : 
response.getLocation().toASCIIString();
             String contentDisposition = 
response.getHeaderString(HttpHeaders.CONTENT_DISPOSITION);
diff --git 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/status/StatusBean.java
 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/status/StatusBean.java
index 6a2b714838..dfff8d0e42 100644
--- 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/status/StatusBean.java
+++ 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/status/StatusBean.java
@@ -46,10 +46,10 @@ public class StatusBean implements Serializable {
 
     public StatusBean(final AnyTO any, final String resource) {
         this.key = any.getKey();
-        this.name = any instanceof UserTO
-                ? ((UserTO) any).getUsername()
-                : any instanceof GroupTO
-                        ? ((GroupTO) any).getName()
+        this.name = any instanceof final UserTO userTO
+                ? userTO.getUsername()
+                : any instanceof final GroupTO groupTO
+                        ? groupTO.getName()
                         : ((AnyObjectTO) any).getName();
         this.resource = resource;
     }
diff --git 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/wizards/AjaxWizardMgtButtonBar.java
 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/wizards/AjaxWizardMgtButtonBar.java
index 118822ec02..d832aa2476 100644
--- 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/wizards/AjaxWizardMgtButtonBar.java
+++ 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/wizards/AjaxWizardMgtButtonBar.java
@@ -50,8 +50,8 @@ public class AjaxWizardMgtButtonBar<T extends Serializable> 
extends WizardButton
     @Override
     public MarkupContainer add(final Component... childs) {
         for (Component component : childs) {
-            if (component instanceof WizardButton) {
-                ajaxify((WizardButton) component);
+            if (component instanceof final WizardButton components) {
+                ajaxify(components);
             }
         }
         return super.add(childs);
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/chartjs/ChartJSBehavior.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/chartjs/ChartJSBehavior.java
index f2674bf9ee..2fb5e9248a 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/chartjs/ChartJSBehavior.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/chartjs/ChartJSBehavior.java
@@ -39,9 +39,9 @@ public class ChartJSBehavior extends 
AbstractDefaultAjaxBehavior {
     public void renderHead(final Component component, final IHeaderResponse 
response) {
         super.renderHead(component, response);
 
-        if (component.getParent() instanceof ChartJSPanel) {
+        if (component.getParent() instanceof final ChartJSPanel components) {
             response.render(OnDomReadyHeaderItem.forScript(
-                    ((ChartJSPanel) 
component.getParent()).generateChart(component.getMarkupId())));
+                    components.generateChart(component.getMarkupId())));
         }
     }
 }
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/chartjs/ChartJSPanel.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/chartjs/ChartJSPanel.java
index d7be3a4137..5781084802 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/chartjs/ChartJSPanel.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/chartjs/ChartJSPanel.java
@@ -66,8 +66,8 @@ public class ChartJSPanel extends Panel {
         String dataString = null;
         String optionString = null;
         try {
-            Object data = (model.getObject() instanceof SimpleChart)
-                    ? ((SimpleChart) model.getObject()).getData()
+            Object data = (model.getObject() instanceof final SimpleChart 
simpleChart)
+                    ? simpleChart.getData()
                     : ((DataSetChart) model.getObject()).getData();
             dataString = MAPPER.writeValueAsString(data);
             optionString = 
MAPPER.writeValueAsString(model.getObject().getOptions());
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
index 74d42e6901..d8386ad693 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
@@ -90,7 +90,7 @@ public class BasePage extends BaseWebPage {
         super(parameters);
 
         Serializable leftMenuCollapse = 
SyncopeConsoleSession.get().getAttribute(Constants.MENU_COLLAPSE);
-        if ((leftMenuCollapse instanceof Boolean) && ((Boolean) 
leftMenuCollapse)) {
+        if ((leftMenuCollapse instanceof final Boolean b) && b) {
             body.add(new AttributeAppender("class", " sidebar-collapse"));
         }
         add(body);
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/BeanPanel.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/BeanPanel.java
index a104710b92..acbba9061a 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/BeanPanel.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/BeanPanel.java
@@ -209,8 +209,8 @@ public class BeanPanel<T extends Serializable> extends 
Panel {
                     Optional.ofNullable(BeanPanel.this.sCondWrapper).
                             ifPresent(scw -> scw.put(field.getName(), 
Pair.of(builder, clauses)));
                 } else if (List.class.equals(field.getType())) {
-                    Class<?> listItemType = field.getGenericType() instanceof 
ParameterizedType
-                            ? (Class<?>) ((ParameterizedType) 
field.getGenericType()).getActualTypeArguments()[0]
+                    Class<?> listItemType = field.getGenericType() instanceof 
ParameterizedType parameterizedType
+                            ? (Class<?>) 
(parameterizedType).getActualTypeArguments()[0]
                             : String.class;
 
                     org.apache.syncope.common.lib.Schema schema =
@@ -346,11 +346,11 @@ public class BeanPanel<T extends Serializable> extends 
Panel {
 
             description = Optional.ofNullable(schema.description());
 
-            if (panel instanceof AjaxTextFieldPanel
+            if (panel instanceof final AjaxTextFieldPanel components
                     && panel.getModelObject() == null
                     && schema.defaultValue() != null) {
 
-                ((AjaxTextFieldPanel) 
panel).setModelObject(schema.defaultValue());
+                components.setModelObject(schema.defaultValue());
             }
         }
 
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ConfParam.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ConfParam.java
index 9b5930ef16..ce82a6399e 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ConfParam.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ConfParam.java
@@ -56,8 +56,8 @@ public class ConfParam implements Serializable {
 
     public void setValues(final Object value) {
         this.values.clear();
-        if (value instanceof Collection) {
-            this.values.addAll(((Collection<?>) value).stream().
+        if (value instanceof final Collection<?> objects) {
+            this.values.addAll(objects.stream().
                     filter(Serializable.class::isInstance).
                     map(Serializable.class::cast).
                     collect(Collectors.toList()));
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java
index 528ee67096..ce989bbadd 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java
@@ -151,7 +151,7 @@ public abstract class Realm extends WizardMgtPanel<RealmTO> 
{
     @Override
     @SuppressWarnings("unchecked")
     protected Panel customResultBody(final String panelId, final RealmTO item, 
final Serializable result) {
-        if (!(result instanceof ProvisioningResult)) {
+        if (!(result instanceof final ProvisioningResult provisioningResult)) {
             throw new IllegalStateException("Unsupported result type");
         }
 
@@ -164,7 +164,7 @@ public abstract class Realm extends WizardMgtPanel<RealmTO> 
{
 
         List<PropagationStatus> propagations = new ArrayList<>();
         propagations.add(syncope);
-        propagations.addAll(((ProvisioningResult) 
result).getPropagationStatuses());
+        propagations.addAll(provisioningResult.getPropagationStatuses());
 
         ListViewPanel.Builder<PropagationStatus> builder =
                 new ListViewPanel.Builder<>(PropagationStatus.class, pageRef) {
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/TogglePanel.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/TogglePanel.java
index f994e43895..2a3030724c 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/TogglePanel.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/TogglePanel.java
@@ -164,8 +164,8 @@ public abstract class TogglePanel<T extends Serializable> 
extends WizardMgtPanel
             key = new ResourceModel("actions", StringUtils.EMPTY).getObject();
         } else if (modelObject instanceof EntityTO entityTO) {
             key = entityTO.getKey();
-        } else if (modelObject instanceof AnyWrapper) {
-            key = ((AnyWrapper<?>) modelObject).getInnerObject().getKey();
+        } else if (modelObject instanceof final AnyWrapper<?> anyWrapper) {
+            key = anyWrapper.getInnerObject().getKey();
         } else if (modelObject instanceof Attr attr) {
             key = attr.getSchema();
         } else if (modelObject instanceof ConfParam confParam) {
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchUtils.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchUtils.java
index 5134474474..6101b96b5f 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchUtils.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchUtils.java
@@ -265,10 +265,10 @@ public final class SearchUtils implements Serializable {
                         if (StringUtils.isNotBlank(clause.getProperty())) {
                             String groupKey = clause.getProperty();
 
-                            if (builder instanceof 
UserFiqlSearchConditionBuilder) {
+                            if (builder instanceof final 
UserFiqlSearchConditionBuilder conditionBuilder) {
                                 condition = clause.getComparator() == 
SearchClause.Comparator.EQUALS
-                                        ? ((UserFiqlSearchConditionBuilder) 
builder).inGroups(groupKey)
-                                        : ((UserFiqlSearchConditionBuilder) 
builder).notInGroups(groupKey);
+                                        ? conditionBuilder.inGroups(groupKey)
+                                        : 
conditionBuilder.notInGroups(groupKey);
                             } else {
                                 condition = clause.getComparator() == 
SearchClause.Comparator.EQUALS
                                         ? 
((AnyObjectFiqlSearchConditionBuilder) builder).inGroups(groupKey)
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleDirectoryPanel.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleDirectoryPanel.java
index 26ade27b87..eff7a67aa7 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleDirectoryPanel.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleDirectoryPanel.java
@@ -173,8 +173,8 @@ public class PolicyRuleDirectoryPanel<T extends PolicyTO> 
extends DirectoryPanel
                 RuleConf rule = model.getObject().getConf();
                 try {
                     T actual = restClient.read(type, policy);
-                    if (actual instanceof ComposablePolicy) {
-                        ((ComposablePolicy) 
actual).getRules().remove(model.getObject().getImplementationKey());
+                    if (actual instanceof final ComposablePolicy 
composablePolicy) {
+                        
composablePolicy.getRules().remove(model.getObject().getImplementationKey());
                         restClient.update(type, actual);
 
                         
SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED));
@@ -264,8 +264,8 @@ public class PolicyRuleDirectoryPanel<T extends PolicyTO> 
extends DirectoryPanel
         public Iterator<PolicyRuleWrapper> iterator(final long first, final 
long count) {
             T actual = restClient.read(type, policy);
 
-            List<PolicyRuleWrapper> rules = actual instanceof ComposablePolicy
-                    ? getPolicyRuleWrappers((ComposablePolicy) actual)
+            List<PolicyRuleWrapper> rules = actual instanceof final 
ComposablePolicy composablePolicy
+                    ? getPolicyRuleWrappers(composablePolicy)
                     : new ArrayList<>();
 
             rules.sort(comparator);
@@ -275,8 +275,8 @@ public class PolicyRuleDirectoryPanel<T extends PolicyTO> 
extends DirectoryPanel
         @Override
         public long size() {
             T actual = restClient.read(type, policy);
-            return actual instanceof ComposablePolicy
-                    ? getPolicyRuleWrappers((ComposablePolicy) actual).size()
+            return actual instanceof final ComposablePolicy composablePolicy
+                    ? getPolicyRuleWrappers(composablePolicy).size()
                     : 0;
         }
 
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleWizardBuilder.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleWizardBuilder.java
index f32acbc9dc..12f515064e 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleWizardBuilder.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleWizardBuilder.java
@@ -85,8 +85,8 @@ public class PolicyRuleWizardBuilder extends 
BaseAjaxWizardBuilder<PolicyRuleWra
         PolicyTO policyTO = policyRestClient.read(type, policy);
 
         ComposablePolicy composable;
-        if (policyTO instanceof ComposablePolicy) {
-            composable = (ComposablePolicy) policyTO;
+        if (policyTO instanceof final ComposablePolicy composablePolicy) {
+            composable = composablePolicy;
         } else {
             throw new IllegalStateException("Non composable policy");
         }
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/CheckBoxPanel.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/CheckBoxPanel.java
index 6270a0fc19..173f804d4c 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/CheckBoxPanel.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/CheckBoxPanel.java
@@ -33,8 +33,8 @@ public class CheckBoxPanel<T> extends Panel {
     public CheckBoxPanel(final String componentId, final IModel<T> model, 
final CheckGroup<T> checkGroup) {
         super(componentId, model);
         this.check = new Check<>("check", model, checkGroup);
-        if (checkGroup instanceof ActionTableCheckGroup) {
-            boolean checkable = ((ActionTableCheckGroup<T>) 
checkGroup).isCheckable(model.getObject());
+        if (checkGroup instanceof final ActionTableCheckGroup<T> components) {
+            boolean checkable = components.isCheckable(model.getObject());
             this.check.setEnabled(checkable);
             this.check.setVisible(checkable);
         }
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/CollectionPropertyColumn.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/CollectionPropertyColumn.java
index bad84d8115..1539008df2 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/CollectionPropertyColumn.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/CollectionPropertyColumn.java
@@ -42,8 +42,8 @@ public class CollectionPropertyColumn<T> extends 
PropertyColumn<T, String> {
 
         Object value = getDataModel(rowModel).getObject();
 
-        if (value instanceof Collection) {
-            List values = new ArrayList((Collection) value);
+        if (value instanceof final Collection collection) {
+            List values = new ArrayList(collection);
             Collections.sort(values);
             cellItem.add(new CollectionPanel(componentId, values));
         }
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/DatePropertyColumn.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/DatePropertyColumn.java
index bdc0674ffe..8dd39b0b3a 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/DatePropertyColumn.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/DatePropertyColumn.java
@@ -48,12 +48,12 @@ public class DatePropertyColumn<T> extends 
PropertyColumn<T, String> {
         IModel<?> date = getDataModel(rowModel);
 
         String convertedDate = "";
-        if (date.getObject() instanceof OffsetDateTime) {
-            convertedDate = 
SyncopeConsoleSession.get().getDateFormat().format((OffsetDateTime) 
date.getObject());
-        } else if (date.getObject() instanceof ZonedDateTime) {
-            convertedDate = 
SyncopeConsoleSession.get().getDateFormat().format((ZonedDateTime) 
date.getObject());
-        } else if (date.getObject() instanceof Date) {
-            convertedDate = 
SyncopeConsoleSession.get().getDateFormat().format((Date) date.getObject());
+        if (date.getObject() instanceof final OffsetDateTime offsetDateTime) {
+            convertedDate = 
SyncopeConsoleSession.get().getDateFormat().format(offsetDateTime);
+        } else if (date.getObject() instanceof final ZonedDateTime 
zonedDateTime) {
+            convertedDate = 
SyncopeConsoleSession.get().getDateFormat().format(zonedDateTime);
+        } else if (date.getObject() instanceof final Date date1) {
+            convertedDate = 
SyncopeConsoleSession.get().getDateFormat().format(date1);
         }
         item.add(new Label(componentId, convertedDate));
     }
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/TokenColumn.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/TokenColumn.java
index 7be6715fab..b7238d968d 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/TokenColumn.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/TokenColumn.java
@@ -42,8 +42,8 @@ public class TokenColumn<T extends AnyTO> extends 
AbstractColumn<T, String> {
             final String componentId,
             final IModel<T> rowModel) {
 
-        if (rowModel.getObject() instanceof UserTO) {
-            if (StringUtils.isNotBlank(((UserTO) 
rowModel.getObject()).getToken())) {
+        if (rowModel.getObject() instanceof final UserTO userTO) {
+            if (StringUtils.isNotBlank(userTO.getToken())) {
                 cellItem.add(new Label(componentId, new 
ResourceModel("tokenValued", "tokenValued")));
             } else {
                 cellItem.add(new Label(componentId, new 
ResourceModel("tokenNotValued", "tokenNotValued")));
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java
index 2935f55f5a..7f42f86846 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java
@@ -73,52 +73,52 @@ public class ActionLinksTogglePanel<T extends Serializable> 
extends TogglePanel<
 
     public void updateHeader(final AjaxRequestTarget target, final 
Serializable modelObject) {
         final String header;
-        if (modelObject instanceof UserTO) {
-            header = ((UserTO) modelObject).getUsername();
-        } else if (modelObject instanceof UserWrapper) {
-            header = ((UserWrapper) 
modelObject).getInnerObject().getUsername();
-        } else if (modelObject instanceof GroupTO) {
-            header = ((GroupTO) modelObject).getName();
-        } else if (modelObject instanceof GroupWrapper) {
-            header = ((GroupWrapper) modelObject).getInnerObject().getName();
-        } else if (modelObject instanceof AnyObjectTO) {
-            header = ((AnyObjectTO) modelObject).getName();
-        } else if (modelObject instanceof AnyObjectWrapper) {
-            header = ((AnyObjectWrapper) 
modelObject).getInnerObject().getName();
-        } else if (modelObject instanceof Attr) {
-            header = ((Attr) modelObject).getSchema();
-        } else if (modelObject instanceof ConfParam) {
-            header = ((ConfParam) modelObject).getSchema();
-        } else if (modelObject instanceof PolicyTO) {
-            header = ((PolicyTO) modelObject).getName();
-        } else if (modelObject instanceof SecurityQuestionTO) {
-            header = ((SecurityQuestionTO) modelObject).getContent();
-        } else if (modelObject instanceof AccessTokenTO) {
-            header = ((AccessTokenTO) modelObject).getOwner();
-        } else if (modelObject instanceof ExecTO) {
-            header = ((ExecTO) modelObject).getKey();
-        } else if (modelObject instanceof StatusBean) {
-            header = ((StatusBean) modelObject).getResource();
-        } else if (modelObject instanceof PolicyRuleWrapper) {
-            header = ((PolicyRuleWrapper) modelObject).getImplementationKey();
-        } else if (modelObject instanceof CommandWrapper) {
-            header = ((CommandWrapper) modelObject).getCommand().getKey();
-        } else if (modelObject instanceof JobTO) {
-            header = ((JobTO) modelObject).getRefKey() == null
-                    ? ((JobTO) modelObject).getRefDesc() : ((JobTO) 
modelObject).getRefKey();
-        } else if (modelObject instanceof ToggleableTarget) {
-            header = ((ToggleableTarget) modelObject).getAnyType();
-        } else if (modelObject instanceof Domain) {
-            header = ((Domain) modelObject).getKey();
-        } else if (modelObject instanceof CommandTO) {
-            header = ((CommandTO) modelObject).getKey();
-        } else if (modelObject instanceof NamedEntityTO) {
-            header = ((NamedEntityTO) modelObject).getName();
-        } else if (modelObject instanceof EntityTO) {
-            header = ((EntityTO) modelObject).getKey();
-        } else if (modelObject instanceof EntityWrapper) {
-            EntityTO inner = ((EntityWrapper) modelObject).getInnerObject();
-            header = inner instanceof NamedEntityTO ? ((NamedEntityTO) 
inner).getName() : inner.getKey();
+        if (modelObject instanceof final UserTO userTO) {
+            header = userTO.getUsername();
+        } else if (modelObject instanceof final UserWrapper userWrapper) {
+            header = userWrapper.getInnerObject().getUsername();
+        } else if (modelObject instanceof final GroupTO groupTO) {
+            header = groupTO.getName();
+        } else if (modelObject instanceof final GroupWrapper groupWrapper) {
+            header = groupWrapper.getInnerObject().getName();
+        } else if (modelObject instanceof final AnyObjectTO anyObjectTO) {
+            header = anyObjectTO.getName();
+        } else if (modelObject instanceof final AnyObjectWrapper 
anyObjectWrapper) {
+            header = anyObjectWrapper.getInnerObject().getName();
+        } else if (modelObject instanceof final Attr attr) {
+            header = attr.getSchema();
+        } else if (modelObject instanceof final ConfParam confParam) {
+            header = confParam.getSchema();
+        } else if (modelObject instanceof final PolicyTO policyTO) {
+            header = policyTO.getName();
+        } else if (modelObject instanceof final SecurityQuestionTO 
securityQuestionTO) {
+            header = securityQuestionTO.getContent();
+        } else if (modelObject instanceof final AccessTokenTO accessTokenTO) {
+            header = accessTokenTO.getOwner();
+        } else if (modelObject instanceof final ExecTO execTO) {
+            header = execTO.getKey();
+        } else if (modelObject instanceof final StatusBean statusBean) {
+            header = statusBean.getResource();
+        } else if (modelObject instanceof final PolicyRuleWrapper 
policyRuleWrapper) {
+            header = policyRuleWrapper.getImplementationKey();
+        } else if (modelObject instanceof final CommandWrapper commandWrapper) 
{
+            header = commandWrapper.getCommand().getKey();
+        } else if (modelObject instanceof final JobTO jobTO) {
+            header = jobTO.getRefKey() == null
+                    ? jobTO.getRefDesc() : jobTO.getRefKey();
+        } else if (modelObject instanceof final ToggleableTarget 
toggleableTarget) {
+            header = toggleableTarget.getAnyType();
+        } else if (modelObject instanceof final Domain domain) {
+            header = domain.getKey();
+        } else if (modelObject instanceof final CommandTO commandTO) {
+            header = commandTO.getKey();
+        } else if (modelObject instanceof final NamedEntityTO entity) {
+            header = entity.getName();
+        } else if (modelObject instanceof final EntityTO entityTO) {
+            header = entityTO.getKey();
+        } else if (modelObject instanceof final EntityWrapper entityWrapper) {
+            EntityTO inner = entityWrapper.getInnerObject();
+            header = inner instanceof final NamedEntityTO namedEntityTO ? 
namedEntityTO.getName() : inner.getKey();
         } else {
             header = new ResourceModel("actions", 
StringUtils.EMPTY).getObject();
         }
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWizardBuilder.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWizardBuilder.java
index b02247bc98..c979ea091b 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWizardBuilder.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWizardBuilder.java
@@ -50,10 +50,10 @@ public abstract class AnyWizardBuilder<A extends AnyTO> 
extends AbstractAnyWizar
 
     @SuppressWarnings("unchecked")
     protected static <T extends AnyTO> AnyWrapper<T> wrapper(final T anyTO) {
-        return (AnyWrapper<T>) (anyTO instanceof UserTO
-                ? new UserWrapper((UserTO) anyTO)
-                : anyTO instanceof GroupTO
-                        ? new GroupWrapper((GroupTO) anyTO)
+        return (AnyWrapper<T>) (anyTO instanceof UserTO userTO
+                ? new UserWrapper(userTO)
+                : anyTO instanceof GroupTO groupTO
+                        ? new GroupWrapper(groupTO)
                         : new AnyObjectWrapper((AnyObjectTO) anyTO));
     }
 
@@ -147,11 +147,11 @@ public abstract class AnyWizardBuilder<A extends AnyTO> 
extends AbstractAnyWizar
 
         // role panel step (just available for users)
         if ((this instanceof UserWizardBuilder)
-                && modelObject instanceof UserWrapper
+                && modelObject instanceof final UserWrapper userWrapper
                 && formLayoutInfo instanceof UserFormLayoutInfo
                 && UserFormLayoutInfo.class.cast(formLayoutInfo).isRoles()) {
 
-            wizardModel.add(new Roles((UserWrapper) modelObject));
+            wizardModel.add(new Roles(userWrapper));
         }
 
         // relationship panel step (available for users and any objects)
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Ownership.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Ownership.java
index 5faaf294b9..3a65e1d9af 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Ownership.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Ownership.java
@@ -325,8 +325,8 @@ public class Ownership extends WizardStep implements 
ICondition {
                         userSearchPanel.getModel().getObject(), 
SyncopeClient.getUserSearchConditionBuilder());
                 userDirectoryPanel.search(fiql, target);
             }
-        } else if (event.getPayload() instanceof 
AnySelectionDirectoryPanel.ItemSelection) {
-            AnyTO sel = ((AnySelectionDirectoryPanel.ItemSelection) 
event.getPayload()).getSelection();
+        } else if (event.getPayload() instanceof final 
AnySelectionDirectoryPanel.ItemSelection itemSelection) {
+            AnyTO sel = itemSelection.getSelection();
             if (sel == null) {
                 wrapper.getInnerObject().setUserOwner(null);
                 wrapper.getInnerObject().setGroupOwner(null);
@@ -337,7 +337,7 @@ public class Ownership extends WizardStep implements 
ICondition {
                 wrapper.getInnerObject().setGroupOwner(sel.getKey());
                 wrapper.getInnerObject().setUserOwner(null);
             }
-            ((AnySelectionDirectoryPanel.ItemSelection) 
event.getPayload()).getTarget().add(ownerContainer);
+            itemSelection.getTarget().add(ownerContainer);
         } else {
             super.onEvent(event);
         }
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java
index 56fe8d68a4..ace1c29fe9 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java
@@ -94,11 +94,11 @@ public class StatusPanel extends Panel {
 
         final StatusBean syncope = new StatusBean(any, Constants.SYNCOPE);
 
-        if (any instanceof UserTO) {
-            syncope.setConnObjectLink(((UserTO) any).getUsername());
+        if (any instanceof final UserTO userTO) {
+            syncope.setConnObjectLink(userTO.getUsername());
 
             Status syncopeStatus = Status.UNDEFINED;
-            if (((UserTO) any).getStatus() != null) {
+            if (userTO.getStatus() != null) {
                 try {
                     syncopeStatus = Status.valueOf(((UserTO) 
any).getStatus().toUpperCase());
                 } catch (IllegalArgumentException e) {
@@ -106,8 +106,8 @@ public class StatusPanel extends Panel {
                 }
             }
             syncope.setStatus(syncopeStatus);
-        } else if (any instanceof GroupTO) {
-            syncope.setConnObjectLink(((GroupTO) any).getName());
+        } else if (any instanceof final GroupTO groupTO) {
+            syncope.setConnObjectLink(groupTO.getName());
             syncope.setStatus(Status.ACTIVE);
         }
 
diff --git 
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/BasePage.java
 
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/BasePage.java
index eb4d5aaf98..a0d13ea43a 100644
--- 
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/BasePage.java
+++ 
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/BasePage.java
@@ -74,7 +74,7 @@ public class BasePage extends BaseWebPage {
         super(parameters);
 
         Serializable leftMenuCollapse = 
SyncopeEnduserSession.get().getAttribute(Constants.MENU_COLLAPSE);
-        if ((leftMenuCollapse instanceof Boolean) && ((Boolean) 
leftMenuCollapse)) {
+        if ((leftMenuCollapse instanceof final Boolean b) && b) {
             body.add(new AttributeAppender("class", " sidebar-collapse"));
         }
 
diff --git 
a/client/idrepo/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java
 
b/client/idrepo/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java
index c737404fbc..dd04e51ecf 100644
--- 
a/client/idrepo/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java
+++ 
b/client/idrepo/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java
@@ -121,22 +121,22 @@ public class SyncopeClient {
     protected void init(final AuthenticationHandler authHandler) {
         cleanup();
 
-        if (authHandler instanceof AnonymousAuthenticationHandler) {
-            restClientFactory.setUsername(((AnonymousAuthenticationHandler) 
authHandler).getUsername());
-            restClientFactory.setPassword(((AnonymousAuthenticationHandler) 
authHandler).getPassword());
-        } else if (authHandler instanceof BasicAuthenticationHandler) {
-            restClientFactory.setUsername(((BasicAuthenticationHandler) 
authHandler).getUsername());
-            restClientFactory.setPassword(((BasicAuthenticationHandler) 
authHandler).getPassword());
+        if (authHandler instanceof final AnonymousAuthenticationHandler 
anonymousAuthenticationHandler) {
+            
restClientFactory.setUsername(anonymousAuthenticationHandler.getUsername());
+            
restClientFactory.setPassword(anonymousAuthenticationHandler.getPassword());
+        } else if (authHandler instanceof final BasicAuthenticationHandler 
basicAuthenticationHandler) {
+            
restClientFactory.setUsername(basicAuthenticationHandler.getUsername());
+            
restClientFactory.setPassword(basicAuthenticationHandler.getPassword());
 
             String jwt = 
getService(AccessTokenService.class).login().getHeaderString(RESTHeaders.TOKEN);
             restClientFactory.getHeaders().put(HttpHeaders.AUTHORIZATION, 
List.of("Bearer " + jwt));
 
             restClientFactory.setUsername(null);
             restClientFactory.setPassword(null);
-        } else if (authHandler instanceof JWTAuthenticationHandler) {
+        } else if (authHandler instanceof final JWTAuthenticationHandler 
jwtAuthenticationHandler) {
             restClientFactory.getHeaders().put(
                     HttpHeaders.AUTHORIZATION,
-                    List.of("Bearer " + ((JWTAuthenticationHandler) 
authHandler).getJwt()));
+                    List.of("Bearer " + jwtAuthenticationHandler.getJwt()));
         }
     }
 
diff --git 
a/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/AnyOperations.java
 
b/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/AnyOperations.java
index 82c5a12655..e329229b9f 100644
--- 
a/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/AnyOperations.java
+++ 
b/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/AnyOperations.java
@@ -375,12 +375,13 @@ public final class AnyOperations {
     public static <TO extends AnyTO, P extends AnyUR> P diff(
             final TO updated, final TO original, final boolean incremental) {
 
-        if (updated instanceof UserTO && original instanceof UserTO) {
-            return (P) diff((UserTO) updated, (UserTO) original, incremental);
-        } else if (updated instanceof GroupTO && original instanceof GroupTO) {
-            return (P) diff((GroupTO) updated, (GroupTO) original, 
incremental);
-        } else if (updated instanceof AnyObjectTO && original instanceof 
AnyObjectTO) {
-            return (P) diff((AnyObjectTO) updated, (AnyObjectTO) original, 
incremental);
+        if (updated instanceof UserTO updatedUserTO && original instanceof 
UserTO originalUserTO) {
+            return (P) diff(updatedUserTO, originalUserTO, incremental);
+        } else if (updated instanceof GroupTO updatedGroupTO && original 
instanceof GroupTO originalGroupTO) {
+            return (P) diff(updatedGroupTO, originalGroupTO, incremental);
+        } else if (updated instanceof AnyObjectTO updatedAnyObjectTO
+            && original instanceof AnyObjectTO originalObjectTO) {
+            return (P) diff(updatedAnyObjectTO, originalObjectTO, incremental);
         }
 
         throw new IllegalArgumentException("Unsupported: " + 
updated.getClass().getName());
diff --git 
a/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ReconciliationLogic.java
 
b/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ReconciliationLogic.java
index 14b25fd338..44a83b7e98 100644
--- 
a/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ReconciliationLogic.java
+++ 
b/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ReconciliationLogic.java
@@ -221,7 +221,7 @@ public class ReconciliationLogic extends 
AbstractTransactionalLogic<EntityTO> {
         return getOnSyncope(
                 connObjectKeyItem,
                 prepared.getLeft(),
-                any instanceof User ? ((User) any).isSuspended() : null,
+                any instanceof final User user ? user.isSuspended() : null,
                 prepared.getRight());
     }
 
@@ -244,10 +244,10 @@ public class ReconciliationLogic extends 
AbstractTransactionalLogic<EntityTO> {
 
         String actualKey = anyKey;
         if (!SyncopeConstants.UUID_PATTERN.matcher(anyKey).matches()) {
-            actualKey = (dao instanceof UserDAO
-                    ? ((UserDAO) dao).findKey(anyKey)
-                    : dao instanceof GroupDAO
-                            ? ((GroupDAO) dao).findKey(anyKey)
+            actualKey = (dao instanceof final UserDAO userDAO
+                    ? userDAO.findKey(anyKey)
+                    : dao instanceof final GroupDAO groupDAO
+                            ? groupDAO.findKey(anyKey)
                             : ((AnyObjectDAO) 
dao).findKey(provision.getAnyType(), anyKey)).
                     orElse(null);
         }
diff --git 
a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
 
b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
index 8182c01a50..af0d966e3a 100644
--- 
a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
+++ 
b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
@@ -43,8 +43,8 @@ public class AddETagFilter implements ContainerResponseFilter 
{
             AnyTO annotated = null;
             if (resCtx.getEntity() instanceof AnyTO anyTO) {
                 annotated = anyTO;
-            } else if (resCtx.getEntity() instanceof ProvisioningResult) {
-                EntityTO entity = ((ProvisioningResult<?>) 
resCtx.getEntity()).getEntity();
+            } else if (resCtx.getEntity() instanceof final 
ProvisioningResult<?> provisioningResult) {
+                EntityTO entity = provisioningResult.getEntity();
                 if (entity instanceof AnyTO anyTO) {
                     annotated = anyTO;
                 }
diff --git 
a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/JavaDocUtils.java
 
b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/JavaDocUtils.java
index 010ea190f5..b31018b489 100644
--- 
a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/JavaDocUtils.java
+++ 
b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/JavaDocUtils.java
@@ -55,8 +55,8 @@ public final class JavaDocUtils {
      * @return URLs from underlying class loader
      */
     private static URL[] urlsFromClassLoader(final ClassLoader classLoader) {
-        if (classLoader instanceof URLClassLoader) {
-            return ((URLClassLoader) classLoader).getURLs();
+        if (classLoader instanceof final URLClassLoader urlClassLoader) {
+            return urlClassLoader.getURLs();
         }
 
         return Stream.of(ManagementFactory.getRuntimeMXBean().getClassPath().
diff --git 
a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/RestServiceExceptionMapper.java
 
b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/RestServiceExceptionMapper.java
index db9f540d5f..0d1d1aad48 100644
--- 
a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/RestServiceExceptionMapper.java
+++ 
b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/RestServiceExceptionMapper.java
@@ -123,15 +123,15 @@ public class RestServiceExceptionMapper implements 
ExceptionMapper<Exception> {
                 builder = processBadRequestExceptions(ex);
             }
             // process JAX-RS validation errors
-            if (builder == null && ex instanceof ValidationException) {
-                builder = 
builder(validationEM.toResponse((ValidationException) ex)).
+            if (builder == null && ex instanceof final ValidationException 
validationException) {
+                builder = 
builder(validationEM.toResponse(validationException)).
                         header(RESTHeaders.ERROR_CODE, 
ClientExceptionType.RESTValidation.name()).
                         header(RESTHeaders.ERROR_INFO, 
ClientExceptionType.RESTValidation.getInfoHeaderValue(
                                 ExceptionUtils.getRootCauseMessage(ex)));
             }
             // process web application exceptions
-            if (builder == null && ex instanceof WebApplicationException) {
-                builder = builder(((WebApplicationException) 
ex).getResponse()).
+            if (builder == null && ex instanceof final WebApplicationException 
webApplicationException) {
+                builder = builder(webApplicationException.getResponse()).
                         header(RESTHeaders.ERROR_CODE, 
ClientExceptionType.Unknown.name()).
                         header(RESTHeaders.ERROR_INFO, 
ClientExceptionType.Unknown.getInfoHeaderValue(
                                 ExceptionUtils.getRootCauseMessage(ex)));
@@ -204,9 +204,9 @@ public class RestServiceExceptionMapper implements 
ExceptionMapper<Exception> {
             iee = invalidEntityException;
         }
         if (ex instanceof TransactionSystemException && ex.getCause() 
instanceof RollbackException
-                && ex.getCause().getCause() instanceof InvalidEntityException) 
{
+                && ex.getCause().getCause() instanceof final 
InvalidEntityException invalidEntityException) {
 
-            iee = (InvalidEntityException) ex.getCause().getCause();
+            iee = invalidEntityException;
         }
 
         if (iee != null) {
diff --git 
a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractService.java
 
b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractService.java
index 21a1f1b1b1..2049961430 100644
--- 
a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractService.java
+++ 
b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractService.java
@@ -119,10 +119,10 @@ public abstract class AbstractService implements 
JAXRSService {
             throw sce;
         }
         if (!SyncopeConstants.UUID_PATTERN.matcher(actualKey).matches()) {
-            actualKey = dao instanceof UserDAO
-                    ? ((UserDAO) dao).findKey(actualKey).orElse(null)
-                    : dao instanceof GroupDAO
-                            ? ((GroupDAO) dao).findKey(actualKey).orElse(null)
+            actualKey = dao instanceof final UserDAO userDAO
+                    ? userDAO.findKey(actualKey).orElse(null)
+                    : dao instanceof final GroupDAO groupDAO
+                            ? groupDAO.findKey(actualKey).orElse(null)
                             : null;
         }
         return actualKey;
diff --git 
a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/SearchCond.java
 
b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/SearchCond.java
index c0467c13b4..aa29b3652b 100644
--- 
a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/SearchCond.java
+++ 
b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/SearchCond.java
@@ -117,7 +117,7 @@ public class SearchCond extends AbstractSearchCond {
     }
 
     public Optional<AnyTypeCond> getAnyTypeCond() {
-        return Optional.ofNullable(leaf instanceof AnyTypeCond ? (AnyTypeCond) 
leaf : null);
+        return Optional.ofNullable(leaf instanceof final AnyTypeCond 
anyTypeCond ? anyTypeCond : null);
     }
 
     /**
diff --git 
a/core/persistence-common/src/main/java/org/apache/syncope/core/persistence/common/dao/AbstractAnySearchDAO.java
 
b/core/persistence-common/src/main/java/org/apache/syncope/core/persistence/common/dao/AbstractAnySearchDAO.java
index fb3c3731a2..f11916aa87 100644
--- 
a/core/persistence-common/src/main/java/org/apache/syncope/core/persistence/common/dao/AbstractAnySearchDAO.java
+++ 
b/core/persistence-common/src/main/java/org/apache/syncope/core/persistence/common/dao/AbstractAnySearchDAO.java
@@ -374,7 +374,7 @@ public abstract class AbstractAnySearchDAO implements 
AnySearchDAO {
     @SuppressWarnings("unchecked")
     protected <T extends Any> List<T> buildResult(final List<Object> raw, 
final AnyTypeKind kind) {
         List<String> keys = raw.stream().
-                map(key -> key instanceof Object[] ? (String) ((Object[]) 
key)[0] : ((String) key)).
+                map(key -> key instanceof Object[] array ? (String) (array)[0] 
: ((String) key)).
                 toList();
 
         // sort anys according to keys' sorting, as their ordering is same as 
raw, e.g. the actual query results
diff --git 
a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/jexl/JexlUtils.java
 
b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/jexl/JexlUtils.java
index 1b35aa44a7..6e334cf675 100644
--- 
a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/jexl/JexlUtils.java
+++ 
b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/jexl/JexlUtils.java
@@ -217,10 +217,10 @@ public final class JexlUtils {
             }
         });
 
-        if (object instanceof Any && ((Any) object).getRealm() != null) {
-            jexlContext.set("realm", ((Any) object).getRealm().getFullPath());
-        } else if (object instanceof AnyTO && ((AnyTO) object).getRealm() != 
null) {
-            jexlContext.set("realm", ((AnyTO) object).getRealm());
+        if (object instanceof final Any any && any.getRealm() != null) {
+            jexlContext.set("realm", any.getRealm().getFullPath());
+        } else if (object instanceof final AnyTO anyTO && anyTO.getRealm() != 
null) {
+            jexlContext.set("realm", anyTO.getRealm());
         } else if (object instanceof Realm realm) {
             jexlContext.set("fullPath", realm.getFullPath());
         } else if (object instanceof RealmTO realmTO) {
diff --git 
a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/rules/InboundMatch.java
 
b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/rules/InboundMatch.java
index 5cb76e73b3..978c1b2005 100644
--- 
a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/rules/InboundMatch.java
+++ 
b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/rules/InboundMatch.java
@@ -39,8 +39,8 @@ public final class InboundMatch implements Serializable {
     public InboundMatch(final MatchType matchTarget, final Entity entity) {
         this.matchTarget = matchTarget;
 
-        if (entity instanceof Any) {
-            any = (Any) entity;
+        if (entity instanceof final Any any1) {
+            any = any1;
         } else if (entity instanceof LinkedAccount linkedAccount1) {
             linkedAccount = linkedAccount1;
         }
diff --git 
a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/AbstractValueSerializer.java
 
b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/AbstractValueSerializer.java
index 3e91b81f19..04b3784461 100644
--- 
a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/AbstractValueSerializer.java
+++ 
b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/AbstractValueSerializer.java
@@ -41,18 +41,18 @@ public abstract class AbstractValueSerializer<T extends 
Object> extends JsonSeri
                     jgen.writeNull();
                 } else if (v instanceof GuardedString) {
                     jgen.writeObject(v);
-                } else if (v instanceof Integer) {
-                    jgen.writeNumber((Integer) v);
-                } else if (v instanceof Long) {
-                    jgen.writeNumber((Long) v);
-                } else if (v instanceof Double) {
-                    jgen.writeNumber((Double) v);
-                } else if (v instanceof Boolean) {
-                    jgen.writeBoolean((Boolean) v);
-                } else if (v instanceof byte[]) {
+                } else if (v instanceof final Integer i) {
+                    jgen.writeNumber(i);
+                } else if (v instanceof final Long l) {
+                    jgen.writeNumber(l);
+                } else if (v instanceof final Double aDouble) {
+                    jgen.writeNumber(aDouble);
+                } else if (v instanceof final Boolean b) {
+                    jgen.writeBoolean(b);
+                } else if (v instanceof final byte[] bytes) {
                     jgen.writeString(
                             BYTE_ARRAY_PREFIX
-                            + Base64.getEncoder().encodeToString((byte[]) v)
+                            + Base64.getEncoder().encodeToString(bytes)
                             + BYTE_ARRAY_SUFFIX);
                 } else {
                     jgen.writeString(v.toString());
diff --git 
a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/SyncTokenSerializer.java
 
b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/SyncTokenSerializer.java
index ef964ed3d1..01a51ad800 100644
--- 
a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/SyncTokenSerializer.java
+++ 
b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/SyncTokenSerializer.java
@@ -35,20 +35,20 @@ class SyncTokenSerializer extends JsonSerializer<SyncToken> 
{
 
         if (source.getValue() == null) {
             jgen.writeNullField("value");
-        } else if (source.getValue() instanceof Boolean) {
+        } else if (source.getValue() instanceof final Boolean b) {
             jgen.writeStringField("type", Boolean.class.getSimpleName());
-            jgen.writeBooleanField("value", (Boolean) source.getValue());
-        } else if (source.getValue() instanceof Double) {
+            jgen.writeBooleanField("value", b);
+        } else if (source.getValue() instanceof final Double v) {
             jgen.writeStringField("type", Double.class.getSimpleName());
-            jgen.writeNumberField("value", (Double) source.getValue());
-        } else if (source.getValue() instanceof Long) {
+            jgen.writeNumberField("value", v);
+        } else if (source.getValue() instanceof final Long l) {
             jgen.writeStringField("type", Long.class.getSimpleName());
-            jgen.writeNumberField("value", (Long) source.getValue());
-        } else if (source.getValue() instanceof Integer) {
+            jgen.writeNumberField("value", l);
+        } else if (source.getValue() instanceof final Integer i) {
             jgen.writeStringField("type", Integer.class.getSimpleName());
-            jgen.writeNumberField("value", (Integer) source.getValue());
-        } else if (source.getValue() instanceof byte[]) {
-            jgen.writeStringField("value", 
Base64.getEncoder().encodeToString((byte[]) source.getValue()));
+            jgen.writeNumberField("value", i);
+        } else if (source.getValue() instanceof final byte[] bytes) {
+            jgen.writeStringField("value", 
Base64.getEncoder().encodeToString(bytes));
         } else {
             jgen.writeStringField("type", String.class.getSimpleName());
             jgen.writeStringField("value", source.getValue().toString());
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAuditManager.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAuditManager.java
index f91ad4fb80..0e4de5a23a 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAuditManager.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAuditManager.java
@@ -68,8 +68,8 @@ public class DefaultAuditManager implements AuditManager {
             if (((UserCR) masked).getSecurityAnswer() != null) {
                 ((UserCR) masked).setSecurityAnswer(MASKED_VALUE);
             }
-        } else if (object instanceof UserUR && ((UserUR) object).getPassword() 
!= null) {
-            masked = SerializationUtils.clone((UserUR) object);
+        } else if (object instanceof final UserUR userUR && 
userUR.getPassword() != null) {
+            masked = SerializationUtils.clone(userUR);
             ((UserUR) masked).getPassword().setValue(MASKED_VALUE);
         } else {
             masked = object;
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultMappingManager.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultMappingManager.java
index 86de744441..6ca65b7cab 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultMappingManager.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultMappingManager.java
@@ -575,8 +575,8 @@ public class DefaultMappingManager implements 
MappingManager {
                 if 
(FrameworkUtil.isSupportedAttributeType(schemaType.getType())) {
                     objValues.add(value.getValue());
                 } else {
-                    PlainSchema plainSchema = intAttrName.getSchema() 
instanceof PlainSchema
-                            ? (PlainSchema) intAttrName.getSchema()
+                    PlainSchema plainSchema = intAttrName.getSchema() 
instanceof final PlainSchema schema
+                            ? schema
                             : null;
                     if (plainSchema == null || plainSchema.getType() != 
schemaType) {
                         objValues.add(value.getValueAsString(schemaType));
@@ -588,8 +588,8 @@ public class DefaultMappingManager implements 
MappingManager {
 
             if (item.isConnObjectKey()) {
                 result = Pair.of(objValues.isEmpty() ? null : 
objValues.iterator().next().toString(), null);
-            } else if (item.isPassword() && any instanceof User) {
-                result = 
getPasswordAttrValue(passwordAccountGetter.apply((User) any), password).
+            } else if (item.isPassword() && any instanceof final User user) {
+                result = 
getPasswordAttrValue(passwordAccountGetter.apply(user), password).
                         map(passwordAttrValue -> Pair.of(
                         (String) null, 
AttributeBuilder.buildPassword(passwordAttrValue.toCharArray()))).
                         orElse(null);
@@ -634,8 +634,8 @@ public class DefaultMappingManager implements 
MappingManager {
             if (group == null
                     || any instanceof User
                             ? !userDAO.findAllGroupKeys((User) 
any).contains(group.getKey())
-                            : any instanceof AnyObject
-                                    ? 
!anyObjectDAO.findAllGroupKeys((AnyObject) any).contains(group.getKey())
+                            : any instanceof final AnyObject anyObject
+                                    ? 
!anyObjectDAO.findAllGroupKeys(anyObject).contains(group.getKey())
                                     : false) {
 
                 LOG.warn("No (dyn) membership for {} in {}, ignoring", 
intAttrName.getEnclosingGroup(), any);
@@ -935,8 +935,8 @@ public class DefaultMappingManager implements 
MappingManager {
         if (intAttrName.getField() != null) {
             switch (intAttrName.getField()) {
                 case "password" -> {
-                    if (anyTO instanceof UserTO && !values.isEmpty()) {
-                        ((UserTO) 
anyTO).setPassword(ConnObjectUtils.getPassword(values.get(0)));
+                    if (anyTO instanceof final UserTO userTO && 
!values.isEmpty()) {
+                        
userTO.setPassword(ConnObjectUtils.getPassword(values.get(0)));
                     }
                 }
 
@@ -964,13 +964,13 @@ public class DefaultMappingManager implements 
MappingManager {
                 }
 
                 case "mustChangePassword" -> {
-                    if (anyTO instanceof UserTO && !values.isEmpty() && 
values.get(0) != null) {
-                        ((UserTO) 
anyTO).setMustChangePassword(BooleanUtils.toBoolean(values.get(0).toString()));
+                    if (anyTO instanceof final UserTO userTO && 
!values.isEmpty() && values.get(0) != null) {
+                        
userTO.setMustChangePassword(BooleanUtils.toBoolean(values.get(0).toString()));
                     }
                 }
 
                 case "userOwner", "groupOwner" -> {
-                    if (anyTO instanceof GroupTO && attr != null) {
+                    if (anyTO instanceof final GroupTO groupTO && attr != 
null) {
                         // using a special attribute (with schema "", that 
will be ignored) for carrying the
                         // GroupOwnerSchema value
                         Attr attrTO = new Attr();
@@ -981,7 +981,7 @@ public class DefaultMappingManager implements 
MappingManager {
                             attrTO.getValues().add(values.get(0).toString());
                         }
 
-                        ((GroupTO) anyTO).getPlainAttrs().add(attrTO);
+                        groupTO.getPlainAttrs().add(attrTO);
                     }
                 }
                 default -> {
@@ -990,8 +990,9 @@ public class DefaultMappingManager implements 
MappingManager {
         } else if (intAttrName.getSchemaType() != null && attr != null) {
             GroupableRelatableTO groupableTO;
             Group group;
-            if (anyTO instanceof GroupableRelatableTO && 
intAttrName.getMembershipOfGroup() != null) {
-                groupableTO = (GroupableRelatableTO) anyTO;
+            if (anyTO instanceof final GroupableRelatableTO 
groupableRelatableTO
+                && intAttrName.getMembershipOfGroup() != null) {
+                groupableTO = groupableRelatableTO;
                 group = 
groupDAO.findByName(intAttrName.getMembershipOfGroup()).orElse(null);
             } else {
                 groupableTO = null;
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/MacroJobDelegate.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/MacroJobDelegate.java
index 27d2397ee1..cd70d0edc5 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/MacroJobDelegate.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/MacroJobDelegate.java
@@ -294,8 +294,8 @@ public class MacroJobDelegate extends 
AbstractSchedTaskJobDelegate<MacroTask> {
                             if (String.class.equals(field.getType())) {
                                 field.setAccessible(true);
                                 Object value = field.get(args);
-                                if (value instanceof String) {
-                                    field.set(args, 
JexlUtils.evaluateTemplate((String) value, ctx));
+                                if (value instanceof final String s) {
+                                    field.set(args, 
JexlUtils.evaluateTemplate(s, ctx));
                                 }
                             }
                         },
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/DefaultNotificationManager.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/DefaultNotificationManager.java
index 3767d113ab..eecc8b7ed1 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/DefaultNotificationManager.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/DefaultNotificationManager.java
@@ -192,8 +192,8 @@ public class DefaultNotificationManager implements 
NotificationManager {
                 ifPresent(fiql -> recipients.addAll(anySearchDAO.<User>search(
                 SearchCondConverter.convert(searchCondVisitor, fiql), 
List.of(), AnyTypeKind.USER)));
 
-        if (notification.isSelfAsRecipient() && any instanceof User) {
-            recipients.add((User) any);
+        if (notification.isSelfAsRecipient() && any instanceof final User 
user) {
+            recipients.add(user);
         }
 
         Set<String> recipientEmails = new HashSet<>();
@@ -298,30 +298,30 @@ public class DefaultNotificationManager implements 
NotificationManager {
             any = userDAO.findById(userTO.getKey());
         } else if (output instanceof UserTO userTO) {
             any = userDAO.findById(userTO.getKey());
-        } else if (output instanceof Pair
-                && ((Pair) output).getRight() instanceof UserTO) {
+        } else if (output instanceof final Pair pair
+                && pair.getRight() instanceof final UserTO userTO) {
 
-            any = userDAO.findById(((UserTO) ((Pair) 
output).getRight()).getKey());
-        } else if (output instanceof ProvisioningResult
-                && ((ProvisioningResult) output).getEntity() instanceof 
UserTO) {
+            any = userDAO.findById(userTO.getKey());
+        } else if (output instanceof final ProvisioningResult 
provisioningResult1
+                && provisioningResult1.getEntity() instanceof UserTO) {
 
-            any = userDAO.findById(((ProvisioningResult) 
output).getEntity().getKey());
+            any = userDAO.findById(provisioningResult1.getEntity().getKey());
         } else if (before instanceof AnyObjectTO anyObjectTO) {
             any = anyObjectDAO.findById(anyObjectTO.getKey());
         } else if (output instanceof AnyObjectTO anyObjectTO) {
             any = anyObjectDAO.findById(anyObjectTO.getKey());
-        } else if (output instanceof ProvisioningResult
-                && ((ProvisioningResult) output).getEntity() instanceof 
AnyObjectTO) {
+        } else if (output instanceof final ProvisioningResult result
+                && result.getEntity() instanceof AnyObjectTO) {
 
-            any = anyObjectDAO.findById(((ProvisioningResult) 
output).getEntity().getKey());
+            any = anyObjectDAO.findById(result.getEntity().getKey());
         } else if (before instanceof GroupTO groupTO) {
             any = groupDAO.findById(groupTO.getKey());
         } else if (output instanceof GroupTO groupTO) {
             any = groupDAO.findById(groupTO.getKey());
-        } else if (output instanceof ProvisioningResult
-                && ((ProvisioningResult) output).getEntity() instanceof 
GroupTO) {
+        } else if (output instanceof final ProvisioningResult 
provisioningResult
+                && provisioningResult.getEntity() instanceof GroupTO) {
 
-            any = groupDAO.findById(((ProvisioningResult) 
output).getEntity().getKey());
+            any = groupDAO.findById(provisioningResult.getEntity().getKey());
         }
 
         AnyType anyType = any.map(Any::getType).orElse(null);
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultPushCorrelationRule.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultPushCorrelationRule.java
index e2dded00b2..6bdb8b13d0 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultPushCorrelationRule.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultPushCorrelationRule.java
@@ -119,15 +119,15 @@ public class DefaultPushCorrelationRule implements 
PushCorrelationRule {
                         List<CompleteCondition> valueConditions = new 
ArrayList<>();
 
                         
attr.getValue().stream().filter(Objects::nonNull).forEach(value -> {
-                            if (value instanceof GuardedString) {
+                            if (value instanceof final GuardedString 
guardedString) {
                                 
valueConditions.add(FIQL_BUILDER.is(attr.getName()).
-                                        
equalTo(SecurityUtil.decrypt((GuardedString) value)));
-                            } else if (value instanceof GuardedByteArray) {
+                                        
equalTo(SecurityUtil.decrypt(guardedString)));
+                            } else if (value instanceof final GuardedByteArray 
guardedByteArray) {
                                 
valueConditions.add(FIQL_BUILDER.is(attr.getName()).
-                                        equalTo(new 
String(SecurityUtil.decrypt((GuardedByteArray) value))));
-                            } else if (value instanceof byte[]) {
+                                        equalTo(new 
String(SecurityUtil.decrypt(guardedByteArray))));
+                            } else if (value instanceof final byte[] bytes) {
                                 
valueConditions.add(FIQL_BUILDER.is(attr.getName()).
-                                        
equalTo(Base64.getEncoder().encodeToString((byte[]) value)));
+                                        
equalTo(Base64.getEncoder().encodeToString(bytes)));
                             } else {
                                 
valueConditions.add(FIQL_BUILDER.is(attr.getName()).equalTo(value.toString()));
                             }
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SinglePullJobDelegate.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SinglePullJobDelegate.java
index 5a6d65f1e3..ecd204149d 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SinglePullJobDelegate.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SinglePullJobDelegate.java
@@ -175,8 +175,8 @@ public class SinglePullJobDelegate extends PullJobDelegate 
implements SyncopeSin
 
             return profile.getResults();
         } catch (Exception e) {
-            throw e instanceof JobExecutionException
-                    ? (JobExecutionException) e
+            throw e instanceof final JobExecutionException 
jobExecutionException
+                    ? jobExecutionException
                     : new JobExecutionException("While pulling from 
connector", e);
         }
     }
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SinglePushJobDelegate.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SinglePushJobDelegate.java
index 8898388334..e1913494f0 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SinglePushJobDelegate.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SinglePushJobDelegate.java
@@ -128,8 +128,8 @@ public class SinglePushJobDelegate extends PushJobDelegate 
implements SyncopeSin
 
             return profile.getResults();
         } catch (Exception e) {
-            throw e instanceof JobExecutionException
-                    ? (JobExecutionException) e
+            throw e instanceof final JobExecutionException 
jobExecutionException
+                    ? jobExecutionException
                     : new JobExecutionException("While pushing to connector", 
e);
         }
     }
@@ -157,8 +157,8 @@ public class SinglePushJobDelegate extends PushJobDelegate 
implements SyncopeSin
 
             return profile.getResults().get(0);
         } catch (Exception e) {
-            throw e instanceof JobExecutionException
-                    ? (JobExecutionException) e
+            throw e instanceof final JobExecutionException 
jobExecutionException
+                    ? jobExecutionException
                     : new JobExecutionException("While pushing to connector", 
e);
         }
     }
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamPullJobDelegate.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamPullJobDelegate.java
index 6d3a9c1fbf..fb5b7e771c 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamPullJobDelegate.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamPullJobDelegate.java
@@ -247,8 +247,8 @@ public class StreamPullJobDelegate extends PullJobDelegate 
implements SyncopeStr
 
             return profile.getResults();
         } catch (Exception e) {
-            throw e instanceof JobExecutionException
-                    ? (JobExecutionException) e
+            throw e instanceof final JobExecutionException 
jobExecutionException
+                    ? jobExecutionException
                     : new JobExecutionException("While stream pulling", e);
         }
     }
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamPushJobDelegate.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamPushJobDelegate.java
index 687f8402a5..32c4aa8a41 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamPushJobDelegate.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamPushJobDelegate.java
@@ -182,8 +182,8 @@ public class StreamPushJobDelegate extends PushJobDelegate 
implements SyncopeStr
 
             return profile.getResults();
         } catch (Exception e) {
-            throw e instanceof JobExecutionException
-                    ? (JobExecutionException) e
+            throw e instanceof final JobExecutionException 
jobExecutionException
+                    ? jobExecutionException
                     : new JobExecutionException("While stream pushing", e);
         }
     }
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/ConnObjectUtils.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/ConnObjectUtils.java
index 9ff94ddc13..1a10d0d63f 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/ConnObjectUtils.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/ConnObjectUtils.java
@@ -195,7 +195,7 @@ public class ConnObjectUtils {
 
         // (for users) if password was not set above, generate if possible
         if (anyCR instanceof final UserCR userCR
-                && StringUtils.isBlank(((UserCR) anyCR).getPassword())
+                && StringUtils.isBlank(userCR.getPassword())
                 && generatePassword) {
 
             List<PasswordPolicy> passwordPolicies = new ArrayList<>();
diff --git 
a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormDirectoryPanel.java
 
b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormDirectoryPanel.java
index ff5264f24d..001493347f 100644
--- 
a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormDirectoryPanel.java
+++ 
b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormDirectoryPanel.java
@@ -109,8 +109,8 @@ public class UserRequestFormDirectoryPanel
             updateResultTable(target);
 
             Serializable widget = 
SyncopeConsoleSession.get().getAttribute(UserRequestFormsWidget.class.getName());
-            if (widget instanceof UserRequestFormsWidget) {
-                ((UserRequestFormsWidget) widget).refreshLatestAlerts(target);
+            if (widget instanceof final UserRequestFormsWidget components) {
+                components.refreshLatestAlerts(target);
             }
 
             manageFormModal.show(false);
@@ -149,9 +149,9 @@ public class UserRequestFormDirectoryPanel
 
             @Override
             public void updateHeader(final AjaxRequestTarget target, final 
Serializable object) {
-                if (object instanceof UserRequestForm) {
+                if (object instanceof final UserRequestForm userRequestForm) {
                     setHeader(target, StringUtils.abbreviate(
-                            ((UserRequestForm) object).getUsername(), 
HEADER_FIRST_ABBREVIATION));
+                            userRequestForm.getUsername(), 
HEADER_FIRST_ABBREVIATION));
                 } else {
                     super.updateHeader(target, object);
                 }
diff --git 
a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/impl/FlowableUserRequestHandler.java
 
b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/impl/FlowableUserRequestHandler.java
index df201b460e..24c1787e14 100644
--- 
a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/impl/FlowableUserRequestHandler.java
+++ 
b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/impl/FlowableUserRequestHandler.java
@@ -532,8 +532,8 @@ public class FlowableUserRequestHandler implements 
UserRequestHandler {
         List<UserRequestForm> result = query.listPage(
                 pageable.getPageSize() * pageable.getPageNumber(),
                 pageable.getPageSize()).stream().
-                map(task -> task instanceof HistoricTaskInstance
-                ? 
FlowableUserRequestHandler.this.getForm((HistoricTaskInstance) task)
+                map(task -> task instanceof final HistoricTaskInstance 
historicTaskInstance
+                ? FlowableUserRequestHandler.this.getForm(historicTaskInstance)
                 : FlowableUserRequestHandler.this.getForm(task)).
                 toList();
 
diff --git 
a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java
 
b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java
index 3705c9cb9a..fceb950a64 100644
--- 
a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java
+++ 
b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java
@@ -159,9 +159,9 @@ public class SAML2IdPsDirectoryPanel extends DirectoryPanel<
 
             @Override
             public void updateHeader(final AjaxRequestTarget target, final 
Serializable modelObject) {
-                if (modelObject instanceof SAML2SP4UIIdPTO) {
+                if (modelObject instanceof final SAML2SP4UIIdPTO 
saml2SP4UIIdPTO) {
                     setHeader(target, StringUtils.abbreviate(
-                            ((SAML2SP4UIIdPTO) modelObject).getName(), 
HEADER_FIRST_ABBREVIATION));
+                            saml2SP4UIIdPTO.getName(), 
HEADER_FIRST_ABBREVIATION));
                 } else {
                     super.updateHeader(target, modelObject);
                 }
diff --git 
a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/SAML2SP4UIIdPLogic.java
 
b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/SAML2SP4UIIdPLogic.java
index 23dc28ef4c..0f4a06aa58 100644
--- 
a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/SAML2SP4UIIdPLogic.java
+++ 
b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/SAML2SP4UIIdPLogic.java
@@ -120,10 +120,10 @@ public class SAML2SP4UIIdPLogic extends 
AbstractSAML2SP4UILogic {
 
         if (ArrayUtils.isNotEmpty(args)) {
             for (int i = 0; key == null && i < args.length; i++) {
-                if (args[i] instanceof String) {
-                    key = (String) args[i];
-                } else if (args[i] instanceof SAML2SP4UIIdPTO) {
-                    key = ((SAML2SP4UIIdPTO) args[i]).getKey();
+                if (args[i] instanceof final String s) {
+                    key = s;
+                } else if (args[i] instanceof final SAML2SP4UIIdPTO 
saml2SP4UIIdPTO) {
+                    key = saml2SP4UIIdPTO.getKey();
                 }
             }
         }
diff --git 
a/ext/scimv2/logic/src/main/java/org/apache/syncope/core/logic/SCIMDataBinder.java
 
b/ext/scimv2/logic/src/main/java/org/apache/syncope/core/logic/SCIMDataBinder.java
index c4fff76aa0..1782bd992a 100644
--- 
a/ext/scimv2/logic/src/main/java/org/apache/syncope/core/logic/SCIMDataBinder.java
+++ 
b/ext/scimv2/logic/src/main/java/org/apache/syncope/core/logic/SCIMDataBinder.java
@@ -894,43 +894,48 @@ public class SCIMDataBinder {
             case "timezone" -> setAttribute(userUR.getPlainAttrs(), 
conf.getUserConf().getTimezone(), op);
 
             case "emails" -> {
-                if (!CollectionUtils.isEmpty(op.getValue()) && 
op.getValue().get(0) instanceof SCIMUser) {
+                if (!CollectionUtils.isEmpty(op.getValue())
+                    && op.getValue().get(0) instanceof final SCIMUser 
scimUser) {
                     setAttribute(userUR.getPlainAttrs(), 
conf.getUserConf().getEmails(),
-                            ((SCIMUser) op.getValue().get(0)).getEmails(), 
op.getOp());
+                            scimUser.getEmails(), op.getOp());
                 } else if (op.getPath().getFilter() != null) {
                     setAttribute(userUR.getPlainAttrs(), 
conf.getUserConf().getEmails(), op);
                 }
             }
 
             case "phoneNumbers" -> {
-                if (!CollectionUtils.isEmpty(op.getValue()) && 
op.getValue().get(0) instanceof SCIMUser) {
+                if (!CollectionUtils.isEmpty(op.getValue())
+                    && op.getValue().get(0) instanceof final SCIMUser 
scimUser) {
                     setAttribute(userUR.getPlainAttrs(), 
conf.getUserConf().getPhoneNumbers(),
-                            ((SCIMUser) 
op.getValue().get(0)).getPhoneNumbers(), op.getOp());
+                            scimUser.getPhoneNumbers(), op.getOp());
                 } else if (op.getPath().getFilter() != null) {
                     setAttribute(userUR.getPlainAttrs(), 
conf.getUserConf().getPhoneNumbers(), op);
                 }
             }
 
             case "ims" -> {
-                if (!CollectionUtils.isEmpty(op.getValue()) && 
op.getValue().get(0) instanceof SCIMUser) {
+                if (!CollectionUtils.isEmpty(op.getValue())
+                    && op.getValue().get(0) instanceof final SCIMUser 
scimUser) {
                     setAttribute(userUR.getPlainAttrs(), 
conf.getUserConf().getIms(),
-                            ((SCIMUser) op.getValue().get(0)).getIms(), 
op.getOp());
+                            scimUser.getIms(), op.getOp());
                 } else if (op.getPath().getFilter() != null) {
                     setAttribute(userUR.getPlainAttrs(), 
conf.getUserConf().getIms(), op);
                 }
             }
 
             case "photos" -> {
-                if (!CollectionUtils.isEmpty(op.getValue()) && 
op.getValue().get(0) instanceof SCIMUser) {
+                if (!CollectionUtils.isEmpty(op.getValue())
+                    && op.getValue().get(0) instanceof final SCIMUser 
scimUser) {
                     setAttribute(userUR.getPlainAttrs(), 
conf.getUserConf().getPhotos(),
-                            ((SCIMUser) op.getValue().get(0)).getPhotos(), 
op.getOp());
+                            scimUser.getPhotos(), op.getOp());
                 } else if (op.getPath().getFilter() != null) {
                     setAttribute(userUR.getPlainAttrs(), 
conf.getUserConf().getPhotos(), op);
                 }
             }
 
             case "addresses" -> {
-                if (!CollectionUtils.isEmpty(op.getValue()) && 
op.getValue().get(0) instanceof final SCIMUser after) {
+                if (!CollectionUtils.isEmpty(op.getValue())
+                    && op.getValue().get(0) instanceof final SCIMUser after) {
                     after.getAddresses().stream().filter(address -> 
address.getType() != null).forEach(
                             address -> 
conf.getUserConf().getAddresses().stream()
                                     .filter(object -> 
address.getType().equals(object.getType().name())).findFirst()
diff --git 
a/ext/scimv2/scim-rest-cxf/src/main/java/org/apache/syncope/ext/scimv2/cxf/SCIMExceptionMapper.java
 
b/ext/scimv2/scim-rest-cxf/src/main/java/org/apache/syncope/ext/scimv2/cxf/SCIMExceptionMapper.java
index f012b32f80..70dcc2f9f5 100644
--- 
a/ext/scimv2/scim-rest-cxf/src/main/java/org/apache/syncope/ext/scimv2/cxf/SCIMExceptionMapper.java
+++ 
b/ext/scimv2/scim-rest-cxf/src/main/java/org/apache/syncope/ext/scimv2/cxf/SCIMExceptionMapper.java
@@ -142,13 +142,13 @@ public class SCIMExceptionMapper implements 
ExceptionMapper<Exception> {
     protected ResponseBuilder processInvalidEntityExceptions(final Exception 
ex) {
         InvalidEntityException iee = null;
 
-        if (ex instanceof InvalidEntityException) {
-            iee = (InvalidEntityException) ex;
+        if (ex instanceof final InvalidEntityException entityException) {
+            iee = entityException;
         }
         if (ex instanceof TransactionSystemException && 
ROLLBACK_EXCLASS.isAssignableFrom(ex.getCause().getClass())
-                && ex.getCause().getCause() instanceof InvalidEntityException) 
{
+                && ex.getCause().getCause() instanceof final 
InvalidEntityException invalidEntityException) {
 
-            iee = (InvalidEntityException) ex.getCause().getCause();
+            iee = invalidEntityException;
         }
 
         if (iee != null) {
@@ -195,8 +195,8 @@ public class SCIMExceptionMapper implements 
ExceptionMapper<Exception> {
             return builder(ClientExceptionType.InvalidValues, 
ExceptionUtils.getRootCauseMessage(ex));
         } else if (ex instanceof MalformedPathException) {
             return builder(ClientExceptionType.InvalidPath, 
ExceptionUtils.getRootCauseMessage(ex));
-        } else if (ex instanceof BadRequestException) {
-            return Response.status(Response.Status.BAD_REQUEST).entity(new 
SCIMError((BadRequestException) ex));
+        } else if (ex instanceof final BadRequestException 
badRequestException) {
+            return Response.status(Response.Status.BAD_REQUEST).entity(new 
SCIMError(badRequestException));
         }
 
         return null;
diff --git 
a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/SampleReportJobDelegate.java
 
b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/SampleReportJobDelegate.java
index 7bc3381201..91795218d0 100644
--- 
a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/SampleReportJobDelegate.java
+++ 
b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/SampleReportJobDelegate.java
@@ -103,8 +103,8 @@ public class SampleReportJobDelegate extends 
AbstractReportJobDelegate {
 
     @Override
     public void setConf(final ReportConf conf) {
-        if (conf instanceof SampleReportConf) {
-            sampleReportConf = (SampleReportConf) conf;
+        if (conf instanceof final SampleReportConf reportConf) {
+            sampleReportConf = reportConf;
         } else {
             throw new IllegalArgumentException("Expected " + 
SampleReportConf.class.getName() + ", got " + conf);
         }
diff --git a/sra/src/main/java/org/apache/syncope/sra/actuate/SRASessions.java 
b/sra/src/main/java/org/apache/syncope/sra/actuate/SRASessions.java
index 84d8066cfb..24387b3a79 100644
--- a/sra/src/main/java/org/apache/syncope/sra/actuate/SRASessions.java
+++ b/sra/src/main/java/org/apache/syncope/sra/actuate/SRASessions.java
@@ -97,11 +97,11 @@ public class SRASessions {
     @ReadOperation
     public AMSession read(@Selector final String id) {
         Cache.ValueWrapper value = 
cacheManager.getCache(SessionConfig.DEFAULT_CACHE).get(id);
-        if (value == null || !(value.get() instanceof MapSession)) {
+        if (value == null || !(value.get() instanceof final MapSession 
mapSession)) {
             return null;
         }
 
-        return map((MapSession) value.get());
+        return map(mapSession);
     }
 
     @DeleteOperation
diff --git 
a/sra/src/main/java/org/apache/syncope/sra/filters/PrincipalToRequestHeaderFilterFactory.java
 
b/sra/src/main/java/org/apache/syncope/sra/filters/PrincipalToRequestHeaderFilterFactory.java
index cf5925d89d..a2ec70bada 100644
--- 
a/sra/src/main/java/org/apache/syncope/sra/filters/PrincipalToRequestHeaderFilterFactory.java
+++ 
b/sra/src/main/java/org/apache/syncope/sra/filters/PrincipalToRequestHeaderFilterFactory.java
@@ -55,11 +55,11 @@ public class PrincipalToRequestHeaderFilterFactory extends 
AbstractGatewayFilter
                     SecurityContext ctx = cachedSession.getAttribute(
                             
WebSessionServerSecurityContextRepository.DEFAULT_SPRING_SECURITY_CONTEXT_ATTR_NAME);
                     if (ctx != null && ctx.getAuthentication() != null) {
-                        if (ctx.getAuthentication().getPrincipal() instanceof 
OidcUser) {
-                            principal = ((OidcUser) 
ctx.getAuthentication().getPrincipal()).
+                        if (ctx.getAuthentication().getPrincipal() instanceof 
final OidcUser oidcUser) {
+                            principal = oidcUser.
                                     getIdToken().getTokenValue();
-                        } else if (ctx.getAuthentication().getPrincipal() 
instanceof OAuth2User) {
-                            principal = Objects.toString(((OAuth2User) 
ctx.getAuthentication().getPrincipal()).
+                        } else if (ctx.getAuthentication().getPrincipal() 
instanceof final OAuth2User oAuth2User) {
+                            principal = Objects.toString(oAuth2User.
                                     
getAttributes().get(StandardClaimNames.PREFERRED_USERNAME), null);
                         } else {
                             principal = ctx.getAuthentication().getName();
diff --git 
a/wa/starter/src/main/java/org/apache/syncope/wa/starter/mapping/DefaultTicketExpirationMapper.java
 
b/wa/starter/src/main/java/org/apache/syncope/wa/starter/mapping/DefaultTicketExpirationMapper.java
index 80f1aedafd..c8bcb86edf 100644
--- 
a/wa/starter/src/main/java/org/apache/syncope/wa/starter/mapping/DefaultTicketExpirationMapper.java
+++ 
b/wa/starter/src/main/java/org/apache/syncope/wa/starter/mapping/DefaultTicketExpirationMapper.java
@@ -39,8 +39,8 @@ public class DefaultTicketExpirationMapper implements 
TicketExpirationMapper {
     }
 
     protected Optional<DefaultTicketExpirationPolicyConf> conf(final 
TicketExpirationPolicyTO policy) {
-        if (policy.getConf() instanceof DefaultTicketExpirationPolicyConf) {
-            return Optional.of((DefaultTicketExpirationPolicyConf) 
policy.getConf());
+        if (policy.getConf() instanceof final 
DefaultTicketExpirationPolicyConf defaultTicketExpirationPolicyConf) {
+            return Optional.of(defaultTicketExpirationPolicyConf);
         }
         return Optional.empty();
     }
diff --git 
a/wa/starter/src/main/java/org/apache/syncope/wa/starter/saml/idp/metadata/WASamlIdPMetadataLocator.java
 
b/wa/starter/src/main/java/org/apache/syncope/wa/starter/saml/idp/metadata/WASamlIdPMetadataLocator.java
index f8faec6148..8b1a6a79db 100644
--- 
a/wa/starter/src/main/java/org/apache/syncope/wa/starter/saml/idp/metadata/WASamlIdPMetadataLocator.java
+++ 
b/wa/starter/src/main/java/org/apache/syncope/wa/starter/saml/idp/metadata/WASamlIdPMetadataLocator.java
@@ -114,8 +114,8 @@ public class WASamlIdPMetadataLocator extends 
AbstractSamlIdPMetadataLocator {
             LOG.warn("Not a valid SAML2 IdP metadata document");
             return null;
         } catch (Exception e) {
-            if (e instanceof SyncopeClientException
-                    && ((SyncopeClientException) e).getType() == 
ClientExceptionType.NotFound) {
+            if (e instanceof final SyncopeClientException 
syncopeClientException
+                    && syncopeClientException.getType() == 
ClientExceptionType.NotFound) {
                 LOG.info(e.getMessage());
             } else {
                 if (LOG.isDebugEnabled()) {

Reply via email to