You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2017/08/25 15:37:31 UTC

[2/6] syncope git commit: [SYNCOPE-938] Applying all Netbeans hints for upgrade to JDK 8

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
index 7d95cdc..255449a 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
@@ -22,11 +22,10 @@ import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.Map;
 import java.util.Set;
+import java.util.stream.Collectors;
 import javax.servlet.http.HttpServletRequest;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.Predicate;
 import org.apache.commons.lang3.SerializationUtils;
 import org.apache.syncope.client.enduser.SyncopeEnduserApplication;
 import org.apache.syncope.client.enduser.SyncopeEnduserConstants;
@@ -72,23 +71,29 @@ public class UserSelfReadResource extends BaseUserSelfResource {
             // 2. membership attributes management
             for (MembershipTO membership : userTO.getMemberships()) {
                 String groupName = membership.getGroupName();
-                for (AttrTO attr : membership.getPlainAttrs()) {
-                    attr.setSchema(groupName.concat(SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR).concat(attr.
-                            getSchema()));
+                membership.getPlainAttrs().stream().map(attr -> {
+                    attr.setSchema(groupName.concat(SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR).
+                            concat(attr.getSchema()));
+                    return attr;
+                }).forEachOrdered(attr -> {
                     userTO.getPlainAttrs().add(attr);
-                }
+                });
                 membership.getPlainAttrs().clear();
-                for (AttrTO attr : membership.getDerAttrs()) {
-                    attr.setSchema(groupName.concat(SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR).concat(attr.
-                            getSchema()));
+                membership.getDerAttrs().stream().map(attr -> {
+                    attr.setSchema(groupName.concat(SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR).
+                            concat(attr.getSchema()));
+                    return attr;
+                }).forEachOrdered(attr -> {
                     userTO.getDerAttrs().add(attr);
-                }
+                });
                 membership.getDerAttrs().clear();
-                for (AttrTO attr : membership.getVirAttrs()) {
-                    attr.setSchema(groupName.concat(SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR).concat(attr.
-                            getSchema()));
+                membership.getVirAttrs().stream().map((attr) -> {
+                    attr.setSchema(groupName.concat(SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR).
+                            concat(attr.getSchema()));
+                    return attr;
+                }).forEachOrdered(attr -> {
                     userTO.getVirAttrs().add(attr);
-                }
+                });
                 membership.getVirAttrs().clear();
             }
             // USER from customization, if empty or null ignore it, use it to filter attributes otherwise
@@ -138,14 +143,9 @@ public class UserSelfReadResource extends BaseUserSelfResource {
                 && customAttributesInfo.isShow()
                 && !customAttributesInfo.getAttributes().isEmpty()) {
 
-            CollectionUtils.filter(attrs, new Predicate<AttrTO>() {
-
-                @Override
-                public boolean evaluate(final AttrTO attr) {
-                    return customAttributesInfo.getAttributes().containsKey(attr.getSchema());
-                }
-            });
-
+            attrs.removeAll(attrs.stream().
+                    filter(attr -> !customAttributesInfo.getAttributes().containsKey(attr.getSchema())).
+                    collect(Collectors.toList()));
         } else if (customAttributesInfo != null && !customAttributesInfo.isShow()) {
             attrs.clear();
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
index 037b1fb..dcc6c79 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
@@ -20,12 +20,11 @@ package org.apache.syncope.client.enduser.resources;
 
 import java.util.HashSet;
 import java.util.Map;
+import java.util.Optional;
 import java.util.Set;
 import javax.servlet.http.HttpServletRequest;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
-import org.apache.commons.collections4.IterableUtils;
-import org.apache.commons.collections4.Predicate;
 import org.apache.commons.lang3.SerializationUtils;
 import org.apache.syncope.client.enduser.SyncopeEnduserApplication;
 import org.apache.syncope.client.enduser.SyncopeEnduserConstants;
@@ -38,7 +37,6 @@ import org.apache.syncope.common.lib.EntityTOUtils;
 import org.apache.syncope.common.lib.patch.UserPatch;
 import org.apache.syncope.common.lib.to.AttrTO;
 import org.apache.syncope.common.lib.to.MembershipTO;
-import org.apache.syncope.common.lib.to.PlainSchemaTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.rest.api.service.UserSelfService;
 import org.apache.wicket.request.resource.AbstractResource;
@@ -75,87 +73,75 @@ public class UserSelfUpdateResource extends BaseUserSelfResource {
             if (UserRequestValidator.compliant(userTO, customForm, false)) {
                 // 1. membership attributes management
                 Set<AttrTO> membAttrs = new HashSet<>();
-                for (AttrTO attr : userTO.getPlainAttrs()) {
-                    if (attr.getSchema().contains(SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR)) {
-                        final String[] compositeSchemaKey = attr.getSchema().split(
-                                SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR);
-                        MembershipTO membership = IterableUtils.find(userTO.getMemberships(),
-                                new Predicate<MembershipTO>() {
-
-                            @Override
-                            public boolean evaluate(final MembershipTO item) {
-                                return compositeSchemaKey[0].equals(item.getGroupName());
+                userTO.getPlainAttrs().stream().
+                        filter(attr -> (attr.getSchema().contains(SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR))).
+                        forEachOrdered((attr) -> {
+                            String[] simpleAttrs = attr.getSchema().split(
+                                    SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR);
+                            MembershipTO membership = userTO.getMemberships().stream().
+                                    filter(item -> simpleAttrs[0].equals(item.getGroupName())).
+                                    findFirst().orElse(null);
+                            if (membership == null) {
+                                membership = new MembershipTO.Builder().group(null, simpleAttrs[0]).build();
+                                userTO.getMemberships().add(membership);
                             }
+                            AttrTO clone = SerializationUtils.clone(attr);
+                            clone.setSchema(simpleAttrs[1]);
+                            membership.getPlainAttrs().add(clone);
+                            membAttrs.add(attr);
                         });
-                        if (membership == null) {
-                            membership = new MembershipTO.Builder().group(null, compositeSchemaKey[0]).build();
-                            userTO.getMemberships().add(membership);
-                        }
-                        AttrTO clone = SerializationUtils.clone(attr);
-                        clone.setSchema(compositeSchemaKey[1]);
-                        membership.getPlainAttrs().add(clone);
-                        membAttrs.add(attr);
-                    }
-                }
                 userTO.getPlainAttrs().removeAll(membAttrs);
 
                 // 2. millis -> Date conversion for PLAIN attributes of USER and its MEMBERSHIPS
-                for (PlainSchemaTO plainSchema : SyncopeEnduserSession.get().getDatePlainSchemas()) {
-                    millisToDate(userTO.getPlainAttrs(), plainSchema);
-                    for (MembershipTO membership : userTO.getMemberships()) {
+                SyncopeEnduserSession.get().getDatePlainSchemas().stream().
+                        map(plainSchema -> {
+                            millisToDate(userTO.getPlainAttrs(), plainSchema);
+                            return plainSchema;
+                        }).forEachOrdered(plainSchema -> {
+                    userTO.getMemberships().forEach(membership -> {
                         millisToDate(membership.getPlainAttrs(), plainSchema);
-                    }
-                }
+                    });
+                });
 
                 membAttrs.clear();
-                for (AttrTO attr : userTO.getDerAttrs()) {
-                    if (attr.getSchema().contains(SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR)) {
-                        final String[] simpleAttrs = attr.getSchema().split(
-                                SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR);
-                        MembershipTO membership = IterableUtils.find(userTO.getMemberships(),
-                                new Predicate<MembershipTO>() {
-
-                            @Override
-                            public boolean evaluate(final MembershipTO item) {
-                                return simpleAttrs[0].equals(item.getGroupName());
+                userTO.getDerAttrs().stream().
+                        filter(attr -> (attr.getSchema().contains(SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR))).
+                        forEachOrdered(attr -> {
+                            String[] simpleAttrs = attr.getSchema().split(
+                                    SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR);
+                            MembershipTO membership = userTO.getMemberships().stream().
+                                    filter(item -> simpleAttrs[0].equals(item.getGroupName())).
+                                    findFirst().orElse(null);
+                            if (membership == null) {
+                                membership = new MembershipTO.Builder().group(null, simpleAttrs[0]).build();
+                                userTO.getMemberships().add(membership);
                             }
+                            AttrTO clone = SerializationUtils.clone(attr);
+                            clone.setSchema(simpleAttrs[1]);
+                            membership.getDerAttrs().add(clone);
+                            membAttrs.add(attr);
                         });
-                        if (membership == null) {
-                            membership = new MembershipTO.Builder().group(null, simpleAttrs[0]).build();
-                            userTO.getMemberships().add(membership);
-                        }
-                        AttrTO clone = SerializationUtils.clone(attr);
-                        clone.setSchema(simpleAttrs[1]);
-                        membership.getDerAttrs().add(clone);
-                        membAttrs.add(attr);
-                    }
-                }
                 userTO.getDerAttrs().removeAll(membAttrs);
 
                 membAttrs.clear();
-                for (AttrTO attr : userTO.getVirAttrs()) {
-                    if (attr.getSchema().contains(SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR)) {
-                        final String[] simpleAttrs = attr.getSchema().split(
-                                SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR);
-                        MembershipTO membership = IterableUtils.find(userTO.getMemberships(),
-                                new Predicate<MembershipTO>() {
-
-                            @Override
-                            public boolean evaluate(final MembershipTO item) {
-                                return simpleAttrs[0].equals(item.getGroupName());
+                userTO.getVirAttrs().stream().
+                        filter(attr -> (attr.getSchema().contains(SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR))).
+                        forEachOrdered((attr) -> {
+                            String[] simpleAttrs = attr.getSchema().split(
+                                    SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR);
+                            MembershipTO membership = userTO.getMemberships().stream().
+                                    filter(item -> simpleAttrs[0].equals(item.getGroupName())).
+                                    findFirst().orElse(null);
+                            if (membership == null) {
+                                membership = new MembershipTO.Builder().group(null, simpleAttrs[0]).build();
+                                userTO.getMemberships().add(membership);
+
                             }
+                            AttrTO clone = SerializationUtils.clone(attr);
+                            clone.setSchema(simpleAttrs[1]);
+                            membership.getVirAttrs().add(clone);
+                            membAttrs.add(attr);
                         });
-                        if (membership == null) {
-                            membership = new MembershipTO.Builder().group(null, simpleAttrs[0]).build();
-                            userTO.getMemberships().add(membership);
-
-                        }
-                        AttrTO clone = SerializationUtils.clone(attr);
-                        clone.setSchema(simpleAttrs[1]);
-                        membership.getVirAttrs().add(clone);
-                        membAttrs.add(attr);
-                    }
-                }
                 userTO.getVirAttrs().removeAll(membAttrs);
 
                 // get old user object from session
@@ -195,23 +181,19 @@ public class UserSelfUpdateResource extends BaseUserSelfResource {
 
     private void completeUserObject(final UserTO userTO, final UserTO selfTO) {
         // memberships plain and virtual attrs
-        for (final MembershipTO updatedTOMemb : userTO.getMemberships()) {
-            MembershipTO oldTOMatchedMemb = IterableUtils.find(selfTO.getMemberships(), new Predicate<MembershipTO>() {
-
-                @Override
-                public boolean evaluate(final MembershipTO oldTOMemb) {
-                    return updatedTOMemb.getGroupKey().equals(oldTOMemb.getGroupKey());
-                }
-            });
-            if (oldTOMatchedMemb != null) {
+        userTO.getMemberships().forEach(updatedTOMemb -> {
+            Optional<MembershipTO> oldTOMatchedMemb = selfTO.getMemberships().stream().
+                    filter(oldTOMemb -> updatedTOMemb.getGroupKey().equals(oldTOMemb.getGroupKey())).
+                    findFirst();
+            if (oldTOMatchedMemb.isPresent()) {
                 if (!updatedTOMemb.getPlainAttrs().isEmpty()) {
-                    completeAttrs(updatedTOMemb.getPlainAttrs(), oldTOMatchedMemb.getPlainAttrs());
+                    completeAttrs(updatedTOMemb.getPlainAttrs(), oldTOMatchedMemb.get().getPlainAttrs());
                 }
                 if (!updatedTOMemb.getVirAttrs().isEmpty()) {
-                    completeAttrs(updatedTOMemb.getVirAttrs(), oldTOMatchedMemb.getVirAttrs());
+                    completeAttrs(updatedTOMemb.getVirAttrs(), oldTOMatchedMemb.get().getVirAttrs());
                 }
             }
-        }
+        });
         // plain attrs
         completeAttrs(userTO.getPlainAttrs(), selfTO.getPlainAttrs());
         // virtual attrs
@@ -221,11 +203,11 @@ public class UserSelfUpdateResource extends BaseUserSelfResource {
     private void completeAttrs(final Set<AttrTO> userTOAttrs, final Set<AttrTO> selfTOAttrs) {
         Map<String, AttrTO> userTOAttrsMap =
                 EntityTOUtils.buildAttrMap(userTOAttrs);
-        for (AttrTO selfTOAttr : selfTOAttrs) {
-            if (!userTOAttrsMap.containsKey(selfTOAttr.getSchema())) {
-                userTOAttrs.add(selfTOAttr);
-            }
-        }
+        selfTOAttrs.stream().
+                filter(selfTOAttr -> (!userTOAttrsMap.containsKey(selfTOAttr.getSchema()))).
+                forEachOrdered(selfTOAttr -> {
+                    userTOAttrs.add(selfTOAttr);
+                });
     }
 
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/client/enduser/src/main/java/org/apache/syncope/client/enduser/util/UserRequestValidator.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/util/UserRequestValidator.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/util/UserRequestValidator.java
index 1d02e4e..c5d348b 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/util/UserRequestValidator.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/util/UserRequestValidator.java
@@ -19,8 +19,6 @@
 package org.apache.syncope.client.enduser.util;
 
 import java.util.Map;
-import org.apache.commons.collections4.IterableUtils;
-import org.apache.commons.collections4.Predicate;
 import org.apache.syncope.client.enduser.model.CustomAttribute;
 import org.apache.syncope.client.enduser.model.CustomAttributesInfo;
 import org.apache.syncope.common.lib.EntityTOUtils;
@@ -57,33 +55,23 @@ public final class UserRequestValidator {
 
         return customAttrInfo == null
                 || (customAttrInfo.getAttributes().isEmpty() && customAttrInfo.isShow())
-                || IterableUtils.matchesAll(attrMap.entrySet(), new Predicate<Map.Entry<String, AttrTO>>() {
-
-                    @Override
-                    public boolean evaluate(final Map.Entry<String, AttrTO> entry) {
-                        String schemaKey = entry.getKey();
-                        AttrTO attrTO = entry.getValue();
-                        CustomAttribute customAttr = customAttrInfo.getAttributes().get(schemaKey);
-                        boolean compliant = customAttr != null && (!checkDefaultValues || isValid(attrTO, customAttr));
-                        if (!compliant) {
-                            LOG.trace("Attribute [{}] or its values [{}] are not allowed by form customization rules",
-                                    attrTO.getSchema(), attrTO.getValues());
-                        }
-                        return compliant;
+                || attrMap.entrySet().stream().allMatch(entry -> {
+                    String schemaKey = entry.getKey();
+                    AttrTO attrTO = entry.getValue();
+                    CustomAttribute customAttr = customAttrInfo.getAttributes().get(schemaKey);
+                    boolean compliant = customAttr != null && (!checkDefaultValues || isValid(attrTO, customAttr));
+                    if (!compliant) {
+                        LOG.trace("Attribute [{}] or its values [{}] are not allowed by form customization rules",
+                                attrTO.getSchema(), attrTO.getValues());
                     }
+                    return compliant;
                 });
 
     }
 
     private static boolean isValid(final AttrTO attrTO, final CustomAttribute customAttribute) {
         return customAttribute.isReadonly()
-                ? IterableUtils.matchesAll(attrTO.getValues(), new Predicate<String>() {
-
-                    @Override
-                    public boolean evaluate(final String object) {
-                        return customAttribute.getDefaultValues().contains(object);
-                    }
-                })
+                ? attrTO.getValues().stream().allMatch(value -> customAttribute.getDefaultValues().contains(value))
                 : true;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/ConnObjectTOListQuery.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/ConnObjectTOListQuery.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/ConnObjectTOListQuery.java
index 7ab27b0..16d0e66 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/ConnObjectTOListQuery.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/ConnObjectTOListQuery.java
@@ -68,9 +68,9 @@ public class ConnObjectTOListQuery implements Serializable {
 
     public Integer getSize() {
         return size == null
-                ? Integer.valueOf(25)
+                ? 25
                 : size > MAX_SIZE
-                        ? Integer.valueOf(MAX_SIZE)
+                        ? MAX_SIZE
                         : size;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/SchemaQuery.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/SchemaQuery.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/SchemaQuery.java
index 811b664..3b26c39 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/SchemaQuery.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/SchemaQuery.java
@@ -43,7 +43,7 @@ public class SchemaQuery extends AbstractBaseBean {
 
         public Builder anyTypeClass(final String anyTypeClass) {
             if (instance.getAnyTypeClasses() == null) {
-                instance.setAnyTypeClasses(new ArrayList<String>());
+                instance.setAnyTypeClasses(new ArrayList<>());
             }
             instance.getAnyTypeClasses().add(anyTypeClass);
 
@@ -51,9 +51,9 @@ public class SchemaQuery extends AbstractBaseBean {
         }
 
         public Builder anyTypeClasses(final Collection<String> anyTypeClasses) {
-            for (String anyTypeClass : anyTypeClasses) {
+            anyTypeClasses.forEach(anyTypeClass -> {
                 anyTypeClass(anyTypeClass);
-            }
+            });
             return this;
         }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/core/logic/src/main/java/org/apache/syncope/core/logic/UserWorkflowLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/UserWorkflowLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/UserWorkflowLogic.java
index 433e943..a9100cc 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/UserWorkflowLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/UserWorkflowLogic.java
@@ -21,7 +21,6 @@ package org.apache.syncope.core.logic;
 import java.lang.reflect.Method;
 import java.util.List;
 import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.common.lib.patch.AnyPatch;
 import org.apache.syncope.common.lib.patch.UserPatch;
 import org.apache.syncope.common.lib.to.UserTO;
@@ -72,8 +71,8 @@ public class UserWorkflowLogic extends AbstractTransactionalLogic<WorkflowFormTO
         userPatch.setKey(userTO.getKey());
 
         List<PropagationTask> tasks = propagationManager.getUserUpdateTasks(
-                new WorkflowResult<Pair<UserPatch, Boolean>>(
-                        new ImmutablePair<UserPatch, Boolean>(userPatch, null),
+                new WorkflowResult<>(
+                        new ImmutablePair<>(userPatch, null),
                         updated.getPropByRes(), updated.getPerformedTasks()));
 
         taskExecutor.execute(tasks, false);
@@ -106,7 +105,7 @@ public class UserWorkflowLogic extends AbstractTransactionalLogic<WorkflowFormTO
                 && updated.getPropByRes() != null && !updated.getPropByRes().isEmpty()) {
 
             List<PropagationTask> tasks = propagationManager.getUserUpdateTasks(
-                    new WorkflowResult<Pair<UserPatch, Boolean>>(
+                    new WorkflowResult<>(
                             new ImmutablePair<>((UserPatch) updated.getResult(), Boolean.TRUE),
                             updated.getPropByRes(),
                             updated.getPerformedTasks()));

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/core/logic/src/main/java/org/apache/syncope/core/logic/cocoon/XSLTTransformer.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/cocoon/XSLTTransformer.java b/core/logic/src/main/java/org/apache/syncope/core/logic/cocoon/XSLTTransformer.java
index 1d8c6e2..85787ae 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/cocoon/XSLTTransformer.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/cocoon/XSLTTransformer.java
@@ -111,9 +111,9 @@ public class XSLTTransformer extends AbstractSAXTransformer implements CachingPi
             transformerFactory = TRAX_FACTORY;
         } else {
             transformerFactory = createNewSAXTransformerFactory();
-            for (Map.Entry<String, Object> attribute : attributes.entrySet()) {
+            attributes.entrySet().forEach(attribute -> {
                 transformerFactory.setAttribute(attribute.getKey(), attribute.getValue());
-            }
+            });
         }
 
         try {
@@ -132,7 +132,7 @@ public class XSLTTransformer extends AbstractSAXTransformer implements CachingPi
         if (parameters == null) {
             this.parameters = null;
         } else {
-            this.parameters = new HashMap<String, Object>(parameters);
+            this.parameters = new HashMap<>(parameters);
         }
     }
 
@@ -151,14 +151,13 @@ public class XSLTTransformer extends AbstractSAXTransformer implements CachingPi
         if (this.parameters != null) {
             final Transformer transformer = transformerHandler.getTransformer();
 
-            for (Map.Entry<String, Object> entry : this.parameters.entrySet()) {
+            this.parameters.entrySet().forEach(entry -> {
                 final String name = entry.getKey();
-
                 // is valid XSLT parameter name
                 if (XSLT_PARAMETER_NAME_PATTERN.matcher(name).matches()) {
                     transformer.setParameter(name, entry.getValue());
                 }
-            }
+            });
         }
 
         final SAXResult result = new SAXResult();

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/core/logic/src/main/java/org/apache/syncope/core/logic/init/EntitlementLoader.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/init/EntitlementLoader.java b/core/logic/src/main/java/org/apache/syncope/core/logic/init/EntitlementLoader.java
index e49c487..6ca7df1 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/init/EntitlementLoader.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/init/EntitlementLoader.java
@@ -47,13 +47,9 @@ public class EntitlementLoader implements SyncopeLoader {
         EntitlementsHolder.getInstance().init(StandardEntitlement.values());
 
         for (Map.Entry<String, DataSource> entry : domainsHolder.getDomains().entrySet()) {
-            AuthContextUtils.execWithAuthContext(entry.getKey(), new AuthContextUtils.Executable<Void>() {
-
-                @Override
-                public Void exec() {
-                    entitlementAccessor.addEntitlementsForAnyTypes();
-                    return null;
-                }
+            AuthContextUtils.execWithAuthContext(entry.getKey(), () -> {
+                entitlementAccessor.addEntitlementsForAnyTypes();
+                return null;
             });
         }
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/core/logic/src/main/java/org/apache/syncope/core/logic/init/LoggerLoader.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/init/LoggerLoader.java b/core/logic/src/main/java/org/apache/syncope/core/logic/init/LoggerLoader.java
index e4a4bc5..7c4145f 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/init/LoggerLoader.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/init/LoggerLoader.java
@@ -72,11 +72,11 @@ public class LoggerLoader implements SyncopeLoader {
     public void load() {
         final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
 
-        for (Map.Entry<String, Appender> entry : ctx.getConfiguration().getAppenders().entrySet()) {
-            if (entry.getValue() instanceof MemoryAppender) {
-                memoryAppenders.put(entry.getKey(), (MemoryAppender) entry.getValue());
-            }
-        }
+        ctx.getConfiguration().getAppenders().entrySet().stream().
+                filter(entry -> (entry.getValue() instanceof MemoryAppender)).
+                forEachOrdered(entry -> {
+                    memoryAppenders.put(entry.getKey(), (MemoryAppender) entry.getValue());
+                });
 
         // Audit table and DataSource for each configured domain
         ColumnConfig[] columnConfigs = {
@@ -116,30 +116,25 @@ public class LoggerLoader implements SyncopeLoader {
             ctx.getConfiguration().addLogger(AuditLoggerName.getAuditLoggerName(entry.getKey()), logConf);
 
             // SYNCOPE-1144 For each custom audit appender class add related appenders to log4j logger
-            for (AuditAppender auditAppender : auditAppenders(entry.getKey())) {
-                for (AuditLoggerName event : auditAppender.getEvents()) {
-                    String domainAuditLoggerName =
-                            AuditLoggerName.getAuditEventLoggerName(entry.getKey(), event.toLoggerName());
-                    LoggerConfig eventLogConf = ctx.getConfiguration().getLoggerConfig(domainAuditLoggerName);
-
-                    if (LogManager.ROOT_LOGGER_NAME.equals(eventLogConf.getName())) {
-                        eventLogConf = new LoggerConfig(domainAuditLoggerName, null, false);
-                    }
-                    addAppenderToContext(ctx, auditAppender, eventLogConf);
-                    eventLogConf.setLevel(Level.DEBUG);
-                    if (LogManager.ROOT_LOGGER_NAME.equals(eventLogConf.getName())) {
-                        ctx.getConfiguration().addLogger(domainAuditLoggerName, eventLogConf);
-                    }
-                }
-            }
-
-            AuthContextUtils.execWithAuthContext(entry.getKey(), new AuthContextUtils.Executable<Void>() {
+            auditAppenders(entry.getKey()).forEach(auditAppender -> {
+                auditAppender.getEvents().stream().
+                        map(event -> AuditLoggerName.getAuditEventLoggerName(entry.getKey(), event.toLoggerName())).
+                        forEachOrdered(domainAuditLoggerName -> {
+                            LoggerConfig eventLogConf = ctx.getConfiguration().getLoggerConfig(domainAuditLoggerName);
+                            if (LogManager.ROOT_LOGGER_NAME.equals(eventLogConf.getName())) {
+                                eventLogConf = new LoggerConfig(domainAuditLoggerName, null, false);
+                            }
+                            addAppenderToContext(ctx, auditAppender, eventLogConf);
+                            eventLogConf.setLevel(Level.DEBUG);
+                            if (LogManager.ROOT_LOGGER_NAME.equals(eventLogConf.getName())) {
+                                ctx.getConfiguration().addLogger(domainAuditLoggerName, eventLogConf);
+                            }
+                        });
+            });
 
-                @Override
-                public Void exec() {
-                    loggerAccessor.synchronizeLog4J(ctx);
-                    return null;
-                }
+            AuthContextUtils.execWithAuthContext(entry.getKey(), () -> {
+                loggerAccessor.synchronizeLog4J(ctx);
+                return null;
             });
         }
 
@@ -152,7 +147,7 @@ public class LoggerLoader implements SyncopeLoader {
 
     public List<AuditAppender> auditAppenders(final String domain) throws BeansException {
         List<AuditAppender> auditAppenders = new ArrayList<>();
-        for (Class<?> clazz : implementationLookup.getAuditAppenderClasses()) {
+        implementationLookup.getAuditAppenderClasses().stream().map(clazz -> {
             AuditAppender auditAppender;
             if (ApplicationContextProvider.getBeanFactory().containsSingleton(clazz.getName())) {
                 auditAppender = (AuditAppender) ApplicationContextProvider.getBeanFactory().
@@ -163,8 +158,10 @@ public class LoggerLoader implements SyncopeLoader {
                 auditAppender.setDomainName(domain);
                 auditAppender.init();
             }
+            return auditAppender;
+        }).forEachOrdered(auditAppender -> {
             auditAppenders.add(auditAppender);
-        }
+        });
         return auditAppenders;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/core/logic/src/main/java/org/apache/syncope/core/logic/init/LogicInitializer.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/init/LogicInitializer.java b/core/logic/src/main/java/org/apache/syncope/core/logic/init/LogicInitializer.java
index 10d1bf4..3e1b1c9 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/init/LogicInitializer.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/init/LogicInitializer.java
@@ -20,7 +20,6 @@ package org.apache.syncope.core.logic.init;
 
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
 import org.apache.syncope.core.spring.ApplicationContextProvider;
@@ -54,21 +53,17 @@ public class LogicInitializer implements InitializingBean, BeanFactoryAware {
         Map<String, SyncopeLoader> loaderMap = beanFactory.getBeansOfType(SyncopeLoader.class);
 
         List<SyncopeLoader> loaders = new ArrayList<>(loaderMap.values());
-        Collections.sort(loaders, new Comparator<SyncopeLoader>() {
-
-            @Override
-            public int compare(final SyncopeLoader o1, final SyncopeLoader o2) {
-                return o1.getPriority().compareTo(o2.getPriority());
-            }
-        });
+        Collections.sort(loaders, (o1, o2) -> o1.getPriority().compareTo(o2.getPriority()));
 
         ApplicationContextProvider.setBeanFactory(beanFactory);
 
         LOG.debug("Starting initialization...");
-        for (SyncopeLoader loader : loaders) {
+        loaders.stream().map(loader -> {
             LOG.debug("Invoking {} with priority {}", AopUtils.getTargetClass(loader).getName(), loader.getPriority());
+            return loader;
+        }).forEachOrdered(loader -> {
             loader.load();
-        }
+        });
         LOG.debug("Initialization completed");
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/search/SearchCondVisitor.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/search/SearchCondVisitor.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/search/SearchCondVisitor.java
index 41b677e..2af6f25 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/search/SearchCondVisitor.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/search/SearchCondVisitor.java
@@ -68,6 +68,7 @@ public class SearchCondVisitor extends AbstractSearchConditionVisitor<SearchBean
         return attributeCond;
     }
 
+    @SuppressWarnings("ConvertToStringSwitch")
     private SearchCond visitPrimitive(final SearchCondition<SearchBean> sc) {
         String name = getRealPropertyName(sc.getStatement().getProperty());
         Optional<SpecialAttr> specialAttrName = SpecialAttr.fromString(name);

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/EntitlementsHolder.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/EntitlementsHolder.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/EntitlementsHolder.java
index bb7eab8..6d810ea 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/EntitlementsHolder.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/EntitlementsHolder.java
@@ -40,7 +40,7 @@ public final class EntitlementsHolder {
         return INSTANCE;
     }
 
-    private final Set<String> values = Collections.synchronizedSet(new HashSet<String>());
+    private final Set<String> values = Collections.synchronizedSet(new HashSet<>());
 
     private EntitlementsHolder() {
         // private constructor for singleton

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/AsyncConnectorFacade.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/AsyncConnectorFacade.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/AsyncConnectorFacade.java
index a655fc4..79fbd23 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/AsyncConnectorFacade.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/AsyncConnectorFacade.java
@@ -28,7 +28,6 @@ import org.identityconnectors.framework.common.objects.ConnectorObject;
 import org.identityconnectors.framework.common.objects.ObjectClass;
 import org.identityconnectors.framework.common.objects.ObjectClassInfo;
 import org.identityconnectors.framework.common.objects.OperationOptions;
-import org.identityconnectors.framework.common.objects.ResultsHandler;
 import org.identityconnectors.framework.common.objects.SyncToken;
 import org.identityconnectors.framework.common.objects.Uid;
 import org.identityconnectors.framework.common.objects.filter.FilterBuilder;
@@ -103,14 +102,10 @@ public class AsyncConnectorFacade {
             final Attribute connObjectKey,
             final OperationOptions options) {
 
-        final ConnectorObject[] objects = new ConnectorObject[1];
-        connector.search(objectClass, FilterBuilder.equalTo(connObjectKey), new ResultsHandler() {
-
-            @Override
-            public boolean handle(final ConnectorObject connectorObject) {
-                objects[0] = connectorObject;
-                return false;
-            }
+        ConnectorObject[] objects = new ConnectorObject[1];
+        connector.search(objectClass, FilterBuilder.equalTo(connObjectKey), connectorObject -> {
+            objects[0] = connectorObject;
+            return false;
         }, options);
 
         return new AsyncResult<>(objects[0]);

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnIdBundleManagerImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnIdBundleManagerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnIdBundleManagerImpl.java
index 69e1049..43e54af 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnIdBundleManagerImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnIdBundleManagerImpl.java
@@ -63,8 +63,7 @@ public class ConnIdBundleManagerImpl implements ConnIdBundleManager {
     /**
      * ConnectorInfoManager instances.
      */
-    private final Map<URI, ConnectorInfoManager> connInfoManagers =
-            Collections.synchronizedMap(new LinkedHashMap<URI, ConnectorInfoManager>());
+    private final Map<URI, ConnectorInfoManager> connInfoManagers = Collections.synchronizedMap(new LinkedHashMap<>());
 
     @Override
     public List<URI> getLocations() {
@@ -195,7 +194,7 @@ public class ConnIdBundleManagerImpl implements ConnIdBundleManager {
         init();
 
         if (connInfoManagers.isEmpty()) {
-            for (URI location : locations) {
+            locations.forEach(location -> {
                 try {
                     if ("file".equals(location.getScheme())) {
                         LOG.debug("Local initialization: {}", location);
@@ -209,16 +208,18 @@ public class ConnIdBundleManagerImpl implements ConnIdBundleManager {
                 } catch (Exception e) {
                     LOG.error("Could not process {}", location, e);
                 }
-            }
+            });
         }
 
         if (LOG.isDebugEnabled()) {
-            for (Map.Entry<URI, ConnectorInfoManager> entry : connInfoManagers.entrySet()) {
+            connInfoManagers.entrySet().stream().map(entry -> {
                 LOG.debug("Connector bundles found at {}", entry.getKey());
-                for (ConnectorInfo connInfo : entry.getValue().getConnectorInfos()) {
+                return entry;
+            }).forEachOrdered(entry -> {
+                entry.getValue().getConnectorInfos().forEach(connInfo -> {
                     LOG.debug("\t{}", connInfo.getConnectorDisplayName());
-                }
-            }
+                });
+            });
         }
 
         return connInfoManagers;
@@ -277,12 +278,12 @@ public class ConnIdBundleManagerImpl implements ConnIdBundleManager {
         }
 
         if (LOG.isDebugEnabled()) {
-            for (String propName : properties.getPropertyNames()) {
+            properties.getPropertyNames().forEach(propName -> {
                 LOG.debug("Property Name: {}"
                         + "\nProperty Type: {}",
                         properties.getProperty(propName).getName(),
                         properties.getProperty(propName).getType());
-            }
+            });
         }
 
         return properties;

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java
index f1c463d..10f2e03 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java
@@ -318,19 +318,13 @@ public class ConnectorFacadeProxy implements Connector {
             final SyncResultsHandler handler,
             final OperationOptions options) {
 
-        search(objectClass, filterBuilder == null ? null : filterBuilder.build(), new ResultsHandler() {
-
-            @Transactional
-            @Override
-            public boolean handle(final ConnectorObject obj) {
-                return handler.handle(new SyncDeltaBuilder().
-                        setObject(obj).
-                        setUid(obj.getUid()).
+        search(objectClass, filterBuilder == null ? null : filterBuilder.build(), object
+                -> handler.handle(new SyncDeltaBuilder().
+                        setObject(object).
+                        setUid(object.getUid()).
                         setDeltaType(SyncDeltaType.CREATE_OR_UPDATE).
                         setToken(new SyncToken("")).
-                        build());
-            }
-        }, options);
+                        build()), options);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java
index eda96c4..468f88e 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java
@@ -286,7 +286,7 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager {
             userPatch.setKey(updated.getLeft().getResult());
 
             List<PropagationTask> tasks = propagationManager.getUserUpdateTasks(
-                    new WorkflowResult<Pair<UserPatch, Boolean>>(
+                    new WorkflowResult<>(
                             Pair.of(userPatch, Boolean.FALSE),
                             updated.getLeft().getPropByRes(), updated.getLeft().getPerformedTasks()));
             taskExecutor.execute(tasks, false);

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AfterHandlingJob.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AfterHandlingJob.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AfterHandlingJob.java
index 86a97ca..6547284 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AfterHandlingJob.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AfterHandlingJob.java
@@ -86,17 +86,13 @@ public class AfterHandlingJob extends AbstractInterruptableJob {
 
         try {
             AuthContextUtils.execWithAuthContext(context.getMergedJobDataMap().getString(JobManager.DOMAIN_KEY),
-                    new AuthContextUtils.Executable<Void>() {
-
-                @Override
-                public Void exec() {
-                    notificationManager.createTasks(
-                            (AfterHandlingEvent) context.getMergedJobDataMap().get(AfterHandlingEvent.JOBMAP_KEY));
-                    auditManager.audit(
-                            (AfterHandlingEvent) context.getMergedJobDataMap().get(AfterHandlingEvent.JOBMAP_KEY));
-                    return null;
-                }
-            });
+                    () -> {
+                        notificationManager.createTasks(
+                                (AfterHandlingEvent) context.getMergedJobDataMap().get(AfterHandlingEvent.JOBMAP_KEY));
+                        auditManager.audit(
+                                (AfterHandlingEvent) context.getMergedJobDataMap().get(AfterHandlingEvent.JOBMAP_KEY));
+                        return null;
+                    });
         } catch (RuntimeException e) {
             throw new JobExecutionException("While handling notification / audit events", e);
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/SetUMembershipsJob.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/SetUMembershipsJob.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/SetUMembershipsJob.java
index 1b509d7..23b21be 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/SetUMembershipsJob.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/SetUMembershipsJob.java
@@ -51,37 +51,35 @@ public class SetUMembershipsJob extends AbstractInterruptableJob {
 
         try {
             AuthContextUtils.execWithAuthContext(context.getMergedJobDataMap().getString(JobManager.DOMAIN_KEY),
-                    new AuthContextUtils.Executable<Void>() {
+                    () -> {
+                        @SuppressWarnings("unchecked")
+                        Map<String, Set<String>> memberships =
+                        (Map<String, Set<String>>) context.getMergedJobDataMap().get(MEMBERSHIPS_KEY);
 
-                @Override
-                public Void exec() {
-                    @SuppressWarnings("unchecked")
-                    Map<String, Set<String>> memberships =
-                            (Map<String, Set<String>>) context.getMergedJobDataMap().get(MEMBERSHIPS_KEY);
+                        LOG.debug("About to set memberships (User -> Groups) {}", memberships);
 
-                    LOG.debug("About to set memberships (User -> Groups) {}", memberships);
+                        memberships.entrySet().stream().map(membership -> {
+                            UserPatch userPatch = new UserPatch();
+                            userPatch.setKey(membership.getKey());
+                            membership.getValue().forEach(groupKey -> {
+                                userPatch.getMemberships().add(
+                                        new MembershipPatch.Builder().
+                                                operation(PatchOperation.ADD_REPLACE).
+                                                group(groupKey).
+                                                build());
+                            });
+                            return userPatch;
+                        }).filter(userPatch -> (!userPatch.isEmpty())).
+                                map((userPatch) -> {
+                                    LOG.debug("About to update User {}", userPatch.getKey());
+                                    return userPatch;
+                                }).
+                                forEachOrdered((userPatch) -> {
+                                    userProvisioningManager.update(userPatch, true);
+                                });
 
-                    for (Map.Entry<String, Set<String>> membership : memberships.entrySet()) {
-                        UserPatch userPatch = new UserPatch();
-                        userPatch.setKey(membership.getKey());
-
-                        for (String groupKey : membership.getValue()) {
-                            userPatch.getMemberships().add(
-                                    new MembershipPatch.Builder().
-                                    operation(PatchOperation.ADD_REPLACE).
-                                    group(groupKey).
-                                    build());
-                        }
-
-                        if (!userPatch.isEmpty()) {
-                            LOG.debug("About to update User {}", userPatch.getKey());
-                            userProvisioningManager.update(userPatch, true);
-                        }
-                    }
-
-                    return null;
-                }
-            });
+                        return null;
+                    });
         } catch (RuntimeException e) {
             LOG.error("While setting memberships", e);
             throw new JobExecutionException("While executing memberships", e);

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/TaskJob.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/TaskJob.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/TaskJob.java
index 041d3b4..1b320b7 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/TaskJob.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/TaskJob.java
@@ -67,27 +67,23 @@ public class TaskJob extends AbstractInterruptableJob {
 
         try {
             AuthContextUtils.execWithAuthContext(context.getMergedJobDataMap().getString(JobManager.DOMAIN_KEY),
-                    new AuthContextUtils.Executable<Void>() {
+                    () -> {
+                        try {
+                            Class<?> delegateClass =
+                            ClassUtils.getClass(context.getMergedJobDataMap().getString(DELEGATE_CLASS_KEY));
 
-                @Override
-                public Void exec() {
-                    try {
-                        Class<?> delegateClass =
-                                ClassUtils.getClass(context.getMergedJobDataMap().getString(DELEGATE_CLASS_KEY));
+                            ((SchedTaskJobDelegate) ApplicationContextProvider.getBeanFactory().
+                                    createBean(delegateClass, AbstractBeanDefinition.AUTOWIRE_BY_NAME, false)).
+                                    execute(taskKey,
+                                            context.getMergedJobDataMap().getBoolean(DRY_RUN_JOBDETAIL_KEY),
+                                            context);
+                        } catch (Exception e) {
+                            LOG.error("While executing task {}", taskKey, e);
+                            throw new RuntimeException(e);
+                        }
 
-                        ((SchedTaskJobDelegate) ApplicationContextProvider.getBeanFactory().
-                                createBean(delegateClass, AbstractBeanDefinition.AUTOWIRE_BY_NAME, false)).
-                                execute(taskKey,
-                                        context.getMergedJobDataMap().getBoolean(DRY_RUN_JOBDETAIL_KEY),
-                                        context);
-                    } catch (Exception e) {
-                        LOG.error("While executing task {}", taskKey, e);
-                        throw new RuntimeException(e);
-                    }
-
-                    return null;
-                }
-            });
+                        return null;
+                    });
         } catch (RuntimeException e) {
             LOG.error("While executing task {}", taskKey, e);
             throw new JobExecutionException("While executing task " + taskKey, e);

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/notification/NotificationJob.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/notification/NotificationJob.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/notification/NotificationJob.java
index 153a221..13d45b0 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/notification/NotificationJob.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/notification/NotificationJob.java
@@ -61,19 +61,15 @@ public class NotificationJob extends AbstractInterruptableJob {
 
         for (String domain : domainsHolder.getDomains().keySet()) {
             try {
-                AuthContextUtils.execWithAuthContext(domain, new AuthContextUtils.Executable<Void>() {
-
-                    @Override
-                    public Void exec() {
-                        try {
-                            delegate.execute();
-                        } catch (Exception e) {
-                            LOG.error("While sending out notifications", e);
-                            throw new RuntimeException(e);
-                        }
-
-                        return null;
+                AuthContextUtils.execWithAuthContext(domain, () -> {
+                    try {
+                        delegate.execute();
+                    } catch (Exception e) {
+                        LOG.error("While sending out notifications", e);
+                        throw new RuntimeException(e);
                     }
+
+                    return null;
                 });
             } catch (RuntimeException e) {
                 LOG.error("While sending out notifications", e);

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/ReportJob.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/ReportJob.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/ReportJob.java
index 78183d5..b05c507 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/ReportJob.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/ReportJob.java
@@ -57,20 +57,16 @@ public class ReportJob extends AbstractInterruptableJob {
 
         try {
             AuthContextUtils.execWithAuthContext(context.getMergedJobDataMap().getString(JobManager.DOMAIN_KEY),
-                    new AuthContextUtils.Executable<Void>() {
+                    () -> {
+                        try {
+                            delegate.execute(reportKey);
+                        } catch (Exception e) {
+                            LOG.error("While executing report {}", reportKey, e);
+                            throw new RuntimeException(e);
+                        }
 
-                @Override
-                public Void exec() {
-                    try {
-                        delegate.execute(reportKey);
-                    } catch (Exception e) {
-                        LOG.error("While executing report {}", reportKey, e);
-                        throw new RuntimeException(e);
-                    }
-
-                    return null;
-                }
-            });
+                        return null;
+                    });
         } catch (RuntimeException e) {
             LOG.error("While executing report {}", reportKey, e);
             throw new JobExecutionException("While executing report " + reportKey, e);

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/core/spring/src/main/java/org/apache/syncope/core/spring/security/JWTAuthenticationProvider.java
----------------------------------------------------------------------
diff --git a/core/spring/src/main/java/org/apache/syncope/core/spring/security/JWTAuthenticationProvider.java b/core/spring/src/main/java/org/apache/syncope/core/spring/security/JWTAuthenticationProvider.java
index 2741d86..3f4a488 100644
--- a/core/spring/src/main/java/org/apache/syncope/core/spring/security/JWTAuthenticationProvider.java
+++ b/core/spring/src/main/java/org/apache/syncope/core/spring/security/JWTAuthenticationProvider.java
@@ -41,16 +41,11 @@ public class JWTAuthenticationProvider implements AuthenticationProvider {
     public Authentication authenticate(final Authentication authentication) throws AuthenticationException {
         final JWTAuthentication jwtAuthentication = (JWTAuthentication) authentication;
 
-        AuthContextUtils.execWithAuthContext(
-                jwtAuthentication.getDetails().getDomain(), new AuthContextUtils.Executable<Void>() {
-
-            @Override
-            public Void exec() {
-                Pair<String, Set<SyncopeGrantedAuthority>> authenticated = dataAccessor.authenticate(jwtAuthentication);
-                jwtAuthentication.setUsername(authenticated.getLeft());
-                jwtAuthentication.getAuthorities().addAll(authenticated.getRight());
-                return null;
-            }
+        AuthContextUtils.execWithAuthContext(jwtAuthentication.getDetails().getDomain(), () -> {
+            Pair<String, Set<SyncopeGrantedAuthority>> authenticated = dataAccessor.authenticate(jwtAuthentication);
+            jwtAuthentication.setUsername(authenticated.getLeft());
+            jwtAuthentication.getAuthorities().addAll(authenticated.getRight());
+            return null;
         });
 
         JwtClaims claims = jwtAuthentication.getClaims();

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/core/spring/src/main/java/org/apache/syncope/core/spring/security/SecureRandomUtils.java
----------------------------------------------------------------------
diff --git a/core/spring/src/main/java/org/apache/syncope/core/spring/security/SecureRandomUtils.java b/core/spring/src/main/java/org/apache/syncope/core/spring/security/SecureRandomUtils.java
index e68cb6b..b76de11 100644
--- a/core/spring/src/main/java/org/apache/syncope/core/spring/security/SecureRandomUtils.java
+++ b/core/spring/src/main/java/org/apache/syncope/core/spring/security/SecureRandomUtils.java
@@ -18,7 +18,6 @@
  */
 package org.apache.syncope.core.spring.security;
 
-import org.apache.commons.text.CharacterPredicate;
 import org.apache.commons.text.RandomStringGenerator;
 import org.apache.syncope.common.lib.SecureTextRandomProvider;
 
@@ -26,13 +25,7 @@ public final class SecureRandomUtils {
 
     private static final RandomStringGenerator FOR_PASSWORD = new RandomStringGenerator.Builder().
             usingRandom(new SecureTextRandomProvider()).
-            filteredBy(new CharacterPredicate() {
-
-                @Override
-                public boolean test(final int codePoint) {
-                    return (codePoint >= 'a' && codePoint <= 'z') || (codePoint >= '0' && codePoint <= '9');
-                }
-            }).
+            filteredBy(codePoint -> (codePoint >= 'a' && codePoint <= 'z') || (codePoint >= '0' && codePoint <= '9')).
             build();
 
     private static final RandomStringGenerator FOR_LETTERS = new RandomStringGenerator.Builder().
@@ -60,17 +53,13 @@ public final class SecureRandomUtils {
     public static String generateRandomSpecialCharacter(final char[] characters) {
         return new RandomStringGenerator.Builder().
                 usingRandom(new SecureTextRandomProvider()).
-                filteredBy(new CharacterPredicate() {
-
-                    @Override
-                    public boolean test(final int codePoint) {
-                        boolean found = false;
-                        for (int i = 0; i < characters.length && !found; i++) {
-                            found = codePoint == Character.codePointAt(characters, i);
-                        }
-
-                        return found;
+                filteredBy(codePoint -> {
+                    boolean found = false;
+                    for (int i = 0; i < characters.length && !found; i++) {
+                        found = codePoint == Character.codePointAt(characters, i);
                     }
+
+                    return found;
                 }).build().generate(1);
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/core/spring/src/main/java/org/apache/syncope/core/spring/security/UsernamePasswordAuthenticationProvider.java
----------------------------------------------------------------------
diff --git a/core/spring/src/main/java/org/apache/syncope/core/spring/security/UsernamePasswordAuthenticationProvider.java b/core/spring/src/main/java/org/apache/syncope/core/spring/security/UsernamePasswordAuthenticationProvider.java
index da11553..7b8d0c8 100644
--- a/core/spring/src/main/java/org/apache/syncope/core/spring/security/UsernamePasswordAuthenticationProvider.java
+++ b/core/spring/src/main/java/org/apache/syncope/core/spring/security/UsernamePasswordAuthenticationProvider.java
@@ -24,7 +24,6 @@ import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.types.AuditElements;
 import org.apache.syncope.common.lib.types.AuditElements.Result;
 import org.apache.syncope.common.lib.types.CipherAlgorithm;
-import org.apache.syncope.core.spring.security.AuthContextUtils.Executable;
 import org.apache.syncope.core.persistence.api.entity.Domain;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.UserProvisioningManager;
@@ -110,41 +109,26 @@ public class UsernamePasswordAuthenticationProvider implements AuthenticationPro
                         adminPassword);
             } else {
                 final String domainToFind = domainKey;
-                authenticated = AuthContextUtils.execWithAuthContext(
-                        SyncopeConstants.MASTER_DOMAIN, new Executable<Boolean>() {
-
-                    @Override
-                    public Boolean exec() {
-                        Domain domain = dataAccessor.findDomain(domainToFind);
-
-                        return ENCRYPTOR.verify(
-                                authentication.getCredentials().toString(),
-                                domain.getAdminCipherAlgorithm(),
-                                domain.getAdminPwd());
-                    }
+                authenticated = AuthContextUtils.execWithAuthContext(SyncopeConstants.MASTER_DOMAIN, () -> {
+                    Domain domain = dataAccessor.findDomain(domainToFind);
+
+                    return ENCRYPTOR.verify(
+                            authentication.getCredentials().toString(),
+                            domain.getAdminCipherAlgorithm(),
+                            domain.getAdminPwd());
                 });
             }
         } else {
             final Pair<User, Boolean> authResult =
-                    AuthContextUtils.execWithAuthContext(domainKey, new Executable<Pair<User, Boolean>>() {
-
-                        @Override
-                        public Pair<User, Boolean> exec() {
-                            return dataAccessor.authenticate(authentication);
-                        }
-                    });
+                    AuthContextUtils.execWithAuthContext(domainKey, () -> dataAccessor.authenticate(authentication));
             authenticated = authResult.getValue();
             if (authResult.getLeft() != null && authResult.getRight() != null) {
                 username[0] = authResult.getLeft().getUsername();
 
                 if (!authResult.getRight()) {
-                    AuthContextUtils.execWithAuthContext(domainKey, new Executable<Void>() {
-
-                        @Override
-                        public Void exec() {
-                            provisioningManager.internalSuspend(authResult.getLeft().getKey());
-                            return null;
-                        }
+                    AuthContextUtils.execWithAuthContext(domainKey, () -> {
+                        provisioningManager.internalSuspend(authResult.getLeft().getKey());
+                        return null;
                     });
                 }
             }
@@ -156,48 +140,34 @@ public class UsernamePasswordAuthenticationProvider implements AuthenticationPro
         final boolean isAuthenticated = authenticated != null && authenticated;
         UsernamePasswordAuthenticationToken token;
         if (isAuthenticated) {
-            token = AuthContextUtils.execWithAuthContext(
-                    domainKey, new Executable<UsernamePasswordAuthenticationToken>() {
-
-                @Override
-                public UsernamePasswordAuthenticationToken exec() {
-                    UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(
-                            username[0],
-                            null,
-                            dataAccessor.getAuthorities(username[0]));
-                    token.setDetails(authentication.getDetails());
-
-                    dataAccessor.audit(AuditElements.EventCategoryType.LOGIC,
-                            AuditElements.AUTHENTICATION_CATEGORY,
-                            null,
-                            AuditElements.LOGIN_EVENT,
-                            Result.SUCCESS,
-                            null,
-                            isAuthenticated,
-                            authentication,
-                            "Successfully authenticated, with entitlements: " + token.getAuthorities());
-                    return token;
-                }
+            token = AuthContextUtils.execWithAuthContext(domainKey, () -> {
+                UsernamePasswordAuthenticationToken token1 =
+                        new UsernamePasswordAuthenticationToken(
+                                username[0],
+                                null,
+                                dataAccessor.getAuthorities(username[0]));
+                token1.setDetails(authentication.getDetails());
+                dataAccessor.audit(AuditElements.EventCategoryType.LOGIC,
+                        AuditElements.AUTHENTICATION_CATEGORY, null,
+                        AuditElements.LOGIN_EVENT, Result.SUCCESS, null, isAuthenticated, authentication,
+                        "Successfully authenticated, with entitlements: " + token1.getAuthorities());
+                return token1;
             });
 
             LOG.debug("User {} successfully authenticated, with entitlements {}",
                     username[0], token.getAuthorities());
         } else {
-            AuthContextUtils.execWithAuthContext(domainKey, new Executable<Void>() {
-
-                @Override
-                public Void exec() {
-                    dataAccessor.audit(AuditElements.EventCategoryType.LOGIC,
-                            AuditElements.AUTHENTICATION_CATEGORY,
-                            null,
-                            AuditElements.LOGIN_EVENT,
-                            Result.FAILURE,
-                            null,
-                            isAuthenticated,
-                            authentication,
-                            "User " + username[0] + " not authenticated");
-                    return null;
-                }
+            AuthContextUtils.execWithAuthContext(domainKey, () -> {
+                dataAccessor.audit(AuditElements.EventCategoryType.LOGIC,
+                        AuditElements.AUTHENTICATION_CATEGORY,
+                        null,
+                        AuditElements.LOGIN_EVENT,
+                        Result.FAILURE,
+                        null,
+                        isAuthenticated,
+                        authentication,
+                        "User " + username[0] + " not authenticated");
+                return null;
             });
 
             LOG.debug("User {} not authenticated", username[0]);

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutesDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutesDirectoryPanel.java b/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutesDirectoryPanel.java
index f6f37a6..007dda8 100644
--- a/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutesDirectoryPanel.java
+++ b/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutesDirectoryPanel.java
@@ -101,7 +101,7 @@ public class CamelRoutesDirectoryPanel extends DirectoryPanel<
     @Override
     protected List<IColumn<CamelRouteTO, String>> getColumns() {
         final List<IColumn<CamelRouteTO, String>> columns = new ArrayList<>();
-        columns.add(new PropertyColumn<CamelRouteTO, String>(new ResourceModel("key"), "key", "key"));
+        columns.add(new PropertyColumn<>(new ResourceModel("key"), "key", "key"));
         return columns;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/widgets/CamelMetricsWidget.java
----------------------------------------------------------------------
diff --git a/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/widgets/CamelMetricsWidget.java b/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/widgets/CamelMetricsWidget.java
index b673bfa..ce1e461 100644
--- a/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/widgets/CamelMetricsWidget.java
+++ b/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/widgets/CamelMetricsWidget.java
@@ -24,8 +24,7 @@ import com.pingunaut.wicket.chartjs.data.sets.BarDataSet;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.Transformer;
+import java.util.stream.Collectors;
 import org.apache.syncope.client.console.annotations.ExtWidget;
 import org.apache.syncope.client.console.rest.CamelRoutesRestClient;
 import org.apache.syncope.client.console.wicket.ajax.IndicatorAjaxTimerBehavior;
@@ -94,22 +93,11 @@ public class CamelMetricsWidget extends BaseExtWidget {
         bar.getOptions().setResponsive(true);
         bar.getOptions().setMaintainAspectRatio(true);
 
-        bar.getData().setLabels(CollectionUtils.collect(meanRates, new Transformer<CamelMetrics.MeanRate, String>() {
+        bar.getData().setLabels(
+                meanRates.stream().map(input -> input.getRouteId()).collect(Collectors.toList()));
 
-            @Override
-            public String transform(final CamelMetrics.MeanRate input) {
-                return input.getRouteId();
-            }
-        }, new ArrayList<String>()));
-
-        BarDataSet dataset = new BarDataSet(CollectionUtils.collect(meanRates,
-                new Transformer<CamelMetrics.MeanRate, Double>() {
-
-            @Override
-            public Double transform(final CamelMetrics.MeanRate input) {
-                return input.getValue();
-            }
-        }, new ArrayList<Double>()));
+        BarDataSet dataset = new BarDataSet(
+                meanRates.stream().map(input -> input.getValue()).collect(Collectors.toList()));
         dataset.setFillColor("blue");
         bar.getData().setDatasets(Collections.singletonList(dataset));
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/ext/camel/logic/src/main/java/org/apache/syncope/core/logic/CamelRouteLogic.java
----------------------------------------------------------------------
diff --git a/ext/camel/logic/src/main/java/org/apache/syncope/core/logic/CamelRouteLogic.java b/ext/camel/logic/src/main/java/org/apache/syncope/core/logic/CamelRouteLogic.java
index c691a6c..0969e13 100644
--- a/ext/camel/logic/src/main/java/org/apache/syncope/core/logic/CamelRouteLogic.java
+++ b/ext/camel/logic/src/main/java/org/apache/syncope/core/logic/CamelRouteLogic.java
@@ -19,14 +19,12 @@
 package org.apache.syncope.core.logic;
 
 import com.codahale.metrics.MetricRegistry;
-import com.codahale.metrics.Timer;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 import org.apache.camel.component.metrics.routepolicy.MetricsRegistryService;
-import java.util.Map;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.common.lib.to.CamelMetrics;
@@ -61,9 +59,9 @@ public class CamelRouteLogic extends AbstractTransactionalLogic<CamelRouteTO> {
     public List<CamelRouteTO> list(final AnyTypeKind anyTypeKind) {
         List<CamelRouteTO> routes = new ArrayList<>();
 
-        for (CamelRoute route : routeDAO.find(anyTypeKind)) {
+        routeDAO.find(anyTypeKind).forEach(route -> {
             routes.add(binder.getRouteTO(route));
-        }
+        });
         return routes;
     }
 
@@ -114,12 +112,14 @@ public class CamelRouteLogic extends AbstractTransactionalLogic<CamelRouteTO> {
             LOG.warn("Camel metrics not available");
         } else {
             MetricRegistry registry = registryService.getMetricsRegistry();
-            for (Map.Entry<String, Timer> entry : registry.getTimers().entrySet()) {
+            registry.getTimers().entrySet().stream().map(entry -> {
                 CamelMetrics.MeanRate meanRate = new CamelMetrics.MeanRate();
                 meanRate.setRouteId(StringUtils.substringBetween(entry.getKey(), ".", "."));
                 meanRate.setValue(entry.getValue().getMeanRate());
+                return meanRate;
+            }).forEachOrdered(meanRate -> {
                 metrics.getResponseMeanRates().add(meanRate);
-            }
+            });
 
             Collections.sort(metrics.getResponseMeanRates(),
                     (o1, o2) -> Collections.reverseOrder(Comparator.<Double>naturalOrder()).

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
index d5499da..781362a 100644
--- a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
+++ b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
@@ -345,9 +345,9 @@ public class CamelUserProvisioningManager extends AbstractCamelProvisioningManag
             result.setStatus(ProvisioningReport.Status.FAILURE);
             result.setMessage("Update failed, trying to pull status anyway (if configured)\n" + ex.getMessage());
 
-            WorkflowResult<Pair<UserPatch, Boolean>> updated = new WorkflowResult<Pair<UserPatch, Boolean>>(
+            WorkflowResult<Pair<UserPatch, Boolean>> updated = new WorkflowResult<>(
                     new ImmutablePair<>(userPatch, false), new PropagationByResource(),
-                    new HashSet<String>());
+                    new HashSet<>());
             sendMessage("direct:userInPull", updated, props);
             exchange = pollingConsumer.receive();
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/SuspendProducer.java
----------------------------------------------------------------------
diff --git a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/SuspendProducer.java b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/SuspendProducer.java
index 235faea..1f541df 100644
--- a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/SuspendProducer.java
+++ b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/SuspendProducer.java
@@ -48,7 +48,7 @@ public class SuspendProducer extends AbstractProducer {
                 userPatch.setKey(updated.getKey().getResult());
 
                 List<PropagationTask> tasks = getPropagationManager().getUserUpdateTasks(
-                        new WorkflowResult<Pair<UserPatch, Boolean>>(
+                        new WorkflowResult<>(
                                 new ImmutablePair<>(userPatch, Boolean.FALSE),
                                 updated.getKey().getPropByRes(), updated.getKey().getPerformedTasks()));
                 getPropagationTaskExecutor().execute(tasks, false);

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/panels/ImportMetadata.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/panels/ImportMetadata.java b/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/panels/ImportMetadata.java
index 61bd660..857948b 100644
--- a/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/panels/ImportMetadata.java
+++ b/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/panels/ImportMetadata.java
@@ -60,7 +60,7 @@ public class ImportMetadata extends TogglePanel<Serializable> {
         config.showRemove(false);
         config.showPreview(false);
         final BootstrapFileInputField fileUpload =
-                new BootstrapFileInputField("fileUpload", new ListModel<>(new ArrayList<FileUpload>()), config);
+                new BootstrapFileInputField("fileUpload", new ListModel<>(new ArrayList<>()), config);
         fileUpload.setOutputMarkupId(true);
         fileUpload.add(new AjaxFormSubmitBehavior(Constants.ON_CHANGE) {
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java b/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java
index 2874a84..45bdef3 100644
--- a/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java
+++ b/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java
@@ -187,14 +187,14 @@ public class SAML2IdPsDirectoryPanel extends DirectoryPanel<
     protected List<IColumn<SAML2IdPTO, String>> getColumns() {
         List<IColumn<SAML2IdPTO, String>> columns = new ArrayList<>();
 
-        columns.add(new KeyPropertyColumn<SAML2IdPTO>(new ResourceModel("key"), "key", "key"));
-        columns.add(new PropertyColumn<SAML2IdPTO, String>(new ResourceModel("name"), "name", "name"));
-        columns.add(new PropertyColumn<SAML2IdPTO, String>(new ResourceModel("entityID"), "entityID", "entityID"));
-        columns.add(new BooleanPropertyColumn<SAML2IdPTO>(
+        columns.add(new KeyPropertyColumn<>(new ResourceModel("key"), "key", "key"));
+        columns.add(new PropertyColumn<>(new ResourceModel("name"), "name", "name"));
+        columns.add(new PropertyColumn<>(new ResourceModel("entityID"), "entityID", "entityID"));
+        columns.add(new BooleanPropertyColumn<>(
                 new ResourceModel("useDeflateEncoding"), "useDeflateEncoding", "useDeflateEncoding"));
-        columns.add(new PropertyColumn<SAML2IdPTO, String>(
+        columns.add(new PropertyColumn<>(
                 new ResourceModel("bindingType"), "bindingType", "bindingType"));
-        columns.add(new BooleanPropertyColumn<SAML2IdPTO>(
+        columns.add(new BooleanPropertyColumn<>(
                 new ResourceModel("logoutSupported"), "logoutSupported", "logoutSupported"));
 
         return columns;

http://git-wip-us.apache.org/repos/asf/syncope/blob/5be24a03/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/panels/SAMLSSOLoginFormPanel.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/panels/SAMLSSOLoginFormPanel.java b/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/panels/SAMLSSOLoginFormPanel.java
index b3fab14..8bd7a1e 100644
--- a/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/panels/SAMLSSOLoginFormPanel.java
+++ b/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/panels/SAMLSSOLoginFormPanel.java
@@ -21,8 +21,6 @@ package org.apache.syncope.client.console.panels;
 import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
-import org.apache.commons.collections4.IterableUtils;
-import org.apache.commons.collections4.Predicate;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
@@ -71,13 +69,8 @@ public class SAMLSSOLoginFormPanel extends SSOLoginFormPanel {
 
             @Override
             public SAML2IdPTO getObject(final String id, final IModel<? extends List<? extends SAML2IdPTO>> choices) {
-                return IterableUtils.find(choices.getObject(), new Predicate<SAML2IdPTO>() {
-
-                    @Override
-                    public boolean evaluate(final SAML2IdPTO object) {
-                        return object.getEntityID().equals(id);
-                    }
-                });
+                return choices.getObject().stream().
+                        filter(idp -> idp.getEntityID().equals(id)).findFirst().orElse(null);
             }
         });
         idps.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {