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/22 15:09:17 UTC

[13/16] syncope git commit: [SYNCOPE-938] Switching from commons-collections to Java 8 features

http://git-wip-us.apache.org/repos/asf/syncope/blob/74ee038a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java
index 9348589..d776b65 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java
@@ -20,11 +20,9 @@ package org.apache.syncope.client.console.wizards.any;
 
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import org.apache.commons.collections4.ListUtils;
-import org.apache.commons.collections4.Predicate;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.commons.SchemaUtils;
 import org.apache.syncope.client.console.wicket.ajax.markup.html.LabelInfo;
@@ -170,10 +168,9 @@ public class PlainAttrs extends AbstractAttrs<PlainSchemaTO> {
 
         Map<String, AttrTO> attrMap = EntityTOUtils.buildAttrMap(anyTO.getPlainAttrs());
 
-        for (PlainSchemaTO schema : schemas.values()) {
+        schemas.values().stream().map(schema -> {
             AttrTO attrTO = new AttrTO();
             attrTO.setSchema(schema.getKey());
-
             if (attrMap.get(schema.getKey()) == null || attrMap.get(schema.getKey()).getValues().isEmpty()) {
                 attrTO.getValues().add("");
 
@@ -182,8 +179,10 @@ public class PlainAttrs extends AbstractAttrs<PlainSchemaTO> {
             } else {
                 attrTO.getValues().addAll(attrMap.get(schema.getKey()).getValues());
             }
+            return attrTO;
+        }).forEachOrdered(attrTO -> {
             attrs.add(attrTO);
-        }
+        });
 
         anyTO.getPlainAttrs().clear();
         anyTO.getPlainAttrs().addAll(attrs);
@@ -195,20 +194,22 @@ public class PlainAttrs extends AbstractAttrs<PlainSchemaTO> {
 
         Map<String, AttrTO> attrMap = EntityTOUtils.buildAttrMap(membershipTO.getPlainAttrs());
 
-        for (PlainSchemaTO schema : membershipSchemas.get(membershipTO.getGroupKey()).values()) {
-            AttrTO attrTO = new AttrTO();
-            attrTO.setSchema(schema.getKey());
+        membershipSchemas.get(membershipTO.getGroupKey()).values().stream().
+                map(schema -> {
+                    AttrTO attrTO = new AttrTO();
+                    attrTO.setSchema(schema.getKey());
+                    if (attrMap.get(schema.getKey()) == null || attrMap.get(schema.getKey()).getValues().isEmpty()) {
+                        attrTO.getValues().add("");
 
-            if (attrMap.get(schema.getKey()) == null || attrMap.get(schema.getKey()).getValues().isEmpty()) {
-                attrTO.getValues().add("");
-
-                // is important to set the schema info only after values setting
-                attrTO.setSchemaInfo(schema);
-            } else {
-                attrTO.getValues().addAll(attrMap.get(schema.getKey()).getValues());
-            }
+                        // is important to set the schema info only after values setting
+                        attrTO.setSchemaInfo(schema);
+                    } else {
+                        attrTO.getValues().addAll(attrMap.get(schema.getKey()).getValues());
+                    }
+                    return attrTO;
+                }).forEachOrdered(attrTO -> {
             attrs.add(attrTO);
-        }
+        });
 
         membershipTO.getPlainAttrs().clear();
         membershipTO.getPlainAttrs().addAll(attrs);
@@ -237,7 +238,7 @@ public class PlainAttrs extends AbstractAttrs<PlainSchemaTO> {
         FieldPanel panel;
         switch (type) {
             case Boolean:
-                panel = new AjaxCheckBoxPanel("panel", schemaTO.getKey(), new Model<Boolean>(), true);
+                panel = new AjaxCheckBoxPanel("panel", schemaTO.getKey(), new Model<>(), true);
                 panel.setRequired(required);
                 break;
 
@@ -247,9 +248,9 @@ public class PlainAttrs extends AbstractAttrs<PlainSchemaTO> {
                         : schemaTO.getConversionPattern();
 
                 if (dataPattern.contains("H")) {
-                    panel = new AjaxDateTimeFieldPanel("panel", schemaTO.getKey(), new Model<Date>(), dataPattern);
+                    panel = new AjaxDateTimeFieldPanel("panel", schemaTO.getKey(), new Model<>(), dataPattern);
                 } else {
-                    panel = new AjaxDateFieldPanel("panel", schemaTO.getKey(), new Model<Date>(), dataPattern);
+                    panel = new AjaxDateFieldPanel("panel", schemaTO.getKey(), new Model<>(), dataPattern);
                 }
 
                 if (required) {
@@ -311,7 +312,7 @@ public class PlainAttrs extends AbstractAttrs<PlainSchemaTO> {
                 break;
 
             case Binary:
-                panel = new BinaryFieldPanel("panel", schemaTO.getKey(), new Model<String>(), schemaTO.getMimeType(),
+                panel = new BinaryFieldPanel("panel", schemaTO.getKey(), new Model<>(), schemaTO.getMimeType(),
                         fileKey);
 
                 if (required) {
@@ -320,7 +321,7 @@ public class PlainAttrs extends AbstractAttrs<PlainSchemaTO> {
                 break;
 
             case Encrypted:
-                panel = new EncryptedFieldPanel("panel", schemaTO.getKey(), new Model<String>(), true);
+                panel = new EncryptedFieldPanel("panel", schemaTO.getKey(), new Model<>(), true);
 
                 if (required) {
                     panel.addRequiredLabel();
@@ -328,7 +329,7 @@ public class PlainAttrs extends AbstractAttrs<PlainSchemaTO> {
                 break;
 
             default:
-                panel = new AjaxTextFieldPanel("panel", schemaTO.getKey(), new Model<String>(), true);
+                panel = new AjaxTextFieldPanel("panel", schemaTO.getKey(), new Model<>(), true);
 
                 if (jexlHelp) {
                     AjaxTextFieldPanel.class.cast(panel).enableJexlHelp();
@@ -369,7 +370,7 @@ public class PlainAttrs extends AbstractAttrs<PlainSchemaTO> {
                         FieldPanel.class.cast(panel).setNewModel(attrTO.getValues());
                     } else {
                         panel = new MultiFieldPanel.Builder<>(
-                                new PropertyModel<List<String>>(attrTO, "values")).build(
+                                new PropertyModel<>(attrTO, "values")).build(
                                 "panel",
                                 attrTO.getSchema(),
                                 FieldPanel.class.cast(panel));
@@ -379,24 +380,13 @@ public class PlainAttrs extends AbstractAttrs<PlainSchemaTO> {
                     if (previousObject != null
                             && (previousObject.getPlainAttr(attrTO.getSchema()) == null
                             || !ListUtils.isEqualList(
-                                    ListUtils.select(previousObject.getPlainAttr(attrTO.getSchema()).getValues(),
-                                            new Predicate<String>() {
-
-                                        @Override
-                                        public boolean evaluate(final String object) {
-                                            return StringUtils.isNotEmpty(object);
-                                        }
-                                    }), ListUtils.select(attrTO.getValues(),
-                                            new Predicate<String>() {
-
-                                        @Override
-                                        public boolean evaluate(final String object) {
-                                            return StringUtils.isNotEmpty(object);
-                                        }
-                                    })))) {
+                                    ListUtils.select(previousObject.getPlainAttr(attrTO.getSchema()).get().getValues(),
+                                            object -> StringUtils.isNotEmpty(object)),
+                                    ListUtils.select(attrTO.getValues(), object -> StringUtils.isNotEmpty(object))))) {
+
                         List<String> oldValues = previousObject.getPlainAttr(attrTO.getSchema()) == null
                                 ? Collections.<String>emptyList()
-                                : previousObject.getPlainAttr(attrTO.getSchema()).getValues();
+                                : previousObject.getPlainAttr(attrTO.getSchema()).get().getValues();
                         panel.showExternAction(new LabelInfo("externalAction", oldValues));
                     }
                 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/74ee038a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Relationships.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Relationships.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Relationships.java
index 115da51..9da914b 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Relationships.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Relationships.java
@@ -18,27 +18,22 @@
  */
 package org.apache.syncope.client.console.wizards.any;
 
-
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.IterableUtils;
+import java.util.stream.Collectors;
 import org.apache.commons.collections4.ListUtils;
-import org.apache.commons.collections4.Predicate;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.commons.SerializableTransformer;
 import org.apache.syncope.client.console.panels.AnyDirectoryPanel;
 import org.apache.syncope.client.console.panels.ListViewPanel;
 import org.apache.syncope.client.console.panels.ListViewPanel.ListViewReload;
 import org.apache.syncope.client.console.panels.search.AnyObjectSearchPanel;
 import org.apache.syncope.client.console.panels.search.AnyObjectSelectionDirectoryPanel;
 import org.apache.syncope.client.console.panels.search.AnySelectionDirectoryPanel;
-import org.apache.syncope.client.console.panels.search.SearchClause;
 import org.apache.syncope.client.console.panels.search.SearchClausePanel;
 import org.apache.syncope.client.console.panels.search.SearchUtils;
 import org.apache.syncope.client.console.rest.AnyTypeClassRestClient;
@@ -53,13 +48,12 @@ import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
 import org.apache.syncope.client.lib.SyncopeClient;
-import org.apache.syncope.common.lib.EntityTOUtils;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.AnyTypeTO;
+import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.syncope.common.lib.to.GroupableRelatableTO;
 import org.apache.syncope.common.lib.to.RelationshipTO;
-import org.apache.syncope.common.lib.to.RelationshipTypeTO;
 import org.apache.syncope.common.lib.types.AnyEntitlement;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.wicket.Component;
@@ -68,7 +62,6 @@ import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.event.Broadcast;
 import org.apache.wicket.event.IEvent;
 import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
-import org.apache.wicket.extensions.markup.html.tabs.ITab;
 import org.apache.wicket.extensions.wizard.IWizard;
 import org.apache.wicket.extensions.wizard.WizardModel;
 import org.apache.wicket.extensions.wizard.WizardStep;
@@ -95,7 +88,7 @@ public class Relationships extends WizardStep implements WizardModel.ICondition
     private final AnyTypeClassRestClient anyTypeClassRestClient = new AnyTypeClassRestClient();
 
     private final AnyTO anyTO;
-    
+
     private final RelationshipTypeRestClient relationshipTypeRestClient = new RelationshipTypeRestClient();
 
     public Relationships(final AnyWrapper<?> modelObject, final PageReference pageRef) {
@@ -134,38 +127,31 @@ public class Relationships extends WizardStep implements WizardModel.ICondition
         final Fragment viewFragment = new Fragment("relationships", "viewFragment", this);
         viewFragment.setOutputMarkupId(true);
 
-        viewFragment.add(new Accordion("relationships",
-                CollectionUtils.collect(relationships.keySet(), new SerializableTransformer<String, ITab>() {
-
-                    private static final long serialVersionUID = 3514912643300593122L;
-
-                    @Override
-                    public ITab transform(final String input) {
-                        return new AbstractTab(new ResourceModel("relationship", input)) {
+        viewFragment.add(new Accordion("relationships", relationships.keySet().stream().map(relationship -> {
+            return new AbstractTab(new ResourceModel("relationship", relationship)) {
 
-                            private static final long serialVersionUID = 1037272333056449378L;
+                private static final long serialVersionUID = 1037272333056449378L;
 
-                            @Override
-                            public Panel getPanel(final String panelId) {
-                                return new ListViewPanel.Builder<>(RelationshipTO.class, pageRef).
-                                        setItems(relationships.get(input)).
-                                        includes("rightType", "rightKey").
-                                        addAction(new ActionLink<RelationshipTO>() {
-
-                                            private static final long serialVersionUID = -6847033126124401556L;
-
-                                            @Override
-                                            public void onClick(
-                                                    final AjaxRequestTarget target, final RelationshipTO modelObject) {
-                                                removeRelationships(relationships, modelObject);
-                                                send(Relationships.this, Broadcast.DEPTH, new ListViewReload<>(target));
-                                            }
-                                        }, ActionType.DELETE, AnyEntitlement.UPDATE.getFor(anyTO.getType()), true).
-                                        build(panelId);
-                            }
-                        };
-                    }
-                }, new ArrayList<ITab>())) {
+                @Override
+                public Panel getPanel(final String panelId) {
+                    return new ListViewPanel.Builder<>(RelationshipTO.class, pageRef).
+                            setItems(relationships.get(relationship)).
+                            includes("rightType", "rightKey").
+                            addAction(new ActionLink<RelationshipTO>() {
+
+                                private static final long serialVersionUID = -6847033126124401556L;
+
+                                @Override
+                                public void onClick(
+                                        final AjaxRequestTarget target, final RelationshipTO modelObject) {
+                                    removeRelationships(relationships, modelObject);
+                                    send(Relationships.this, Broadcast.DEPTH, new ListViewReload<>(target));
+                                }
+                            }, ActionType.DELETE, AnyEntitlement.UPDATE.getFor(anyTO.getType()), true).
+                            build(panelId);
+                }
+            };
+        }).collect(Collectors.toList())) {
 
             private static final long serialVersionUID = 1037272333056449379L;
 
@@ -257,23 +243,17 @@ public class Relationships extends WizardStep implements WizardModel.ICondition
             super("specification");
             rel = new RelationshipTO();
 
-            final ArrayList<String> availableRels = CollectionUtils.collect(
-                    relationshipTypeRestClient.list(),
-                    EntityTOUtils.<RelationshipTypeTO>keyTransformer(), new ArrayList<String>());
+            final List<String> availableRels = relationshipTypeRestClient.list().stream().
+                    map(EntityTO::getKey).collect(Collectors.toList());
 
             final AjaxDropDownChoicePanel<String> type = new AjaxDropDownChoicePanel<>(
-                    "type", "type", new PropertyModel<String>(rel, "type"));
+                    "type", "type", new PropertyModel<>(rel, "type"));
             type.setChoices(availableRels);
             add(type.setRenderBodyOnly(true));
 
-            final List<AnyTypeTO> availableTypes = ListUtils.select(anyTypeRestClient.listAnyTypes(),
-                    new Predicate<AnyTypeTO>() {
-
-                @Override
-                public boolean evaluate(final AnyTypeTO object) {
-                    return object.getKind() != AnyTypeKind.GROUP && object.getKind() != AnyTypeKind.USER;
-                }
-            });
+            final List<AnyTypeTO> availableTypes = anyTypeRestClient.listAnyTypes().stream().
+                    filter(anyType -> anyType.getKind() != AnyTypeKind.GROUP
+                    && anyType.getKind() != AnyTypeKind.USER).collect(Collectors.toList());
 
             final AjaxDropDownChoicePanel<AnyTypeTO> rightType = new AjaxDropDownChoicePanel<>(
                     "rightType", "rightType", new PropertyModel<AnyTypeTO>(rel, "rightType") {
@@ -312,13 +292,8 @@ public class Relationships extends WizardStep implements WizardModel.ICondition
 
                 @Override
                 public AnyTypeTO getObject(final String id, final IModel<? extends List<? extends AnyTypeTO>> choices) {
-                    return IterableUtils.find(choices.getObject(), new Predicate<AnyTypeTO>() {
-
-                        @Override
-                        public boolean evaluate(final AnyTypeTO object) {
-                            return id.equals(object.getKey());
-                        }
-                    });
+                    return choices.getObject().stream().
+                            filter(anyTypeTO -> id.equals(anyTypeTO.getKey())).findAny().orElse(null);
                 }
             });
             // enable "rightType" dropdown only if "type" option is selected - SYNCOPE-1140
@@ -364,7 +339,7 @@ public class Relationships extends WizardStep implements WizardModel.ICondition
 
                         anyObjectSearchPanel = new AnyObjectSearchPanel.Builder(
                                 anyType.getKey(),
-                                new ListModel<>(new ArrayList<SearchClause>())).
+                                new ListModel<>(new ArrayList<>())).
                                 enableSearch(Specification.this).
                                 build("searchPanel");
                         fragment.add(anyObjectSearchPanel.setRenderBodyOnly(true));

http://git-wip-us.apache.org/repos/asf/syncope/blob/74ee038a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Resources.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Resources.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Resources.java
index 2ace1c7..806b87c 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Resources.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Resources.java
@@ -21,16 +21,14 @@ package org.apache.syncope.client.console.wizards.any;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.ListUtils;
+import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleApplication;
 import org.apache.syncope.client.console.rest.ResourceRestClient;
 import org.apache.syncope.client.console.wicket.ajax.markup.html.LabelInfo;
 import org.apache.syncope.client.console.wicket.markup.html.form.AjaxPalettePanel;
-import org.apache.syncope.common.lib.EntityTOUtils;
 import org.apache.syncope.common.lib.to.AnyTO;
-import org.apache.syncope.common.lib.to.ResourceTO;
+import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.syncope.common.lib.types.StandardEntitlement;
 import org.apache.wicket.authroles.authorization.strategies.role.metadata.ActionPermissions;
 import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
@@ -51,9 +49,9 @@ public class Resources extends WizardStep implements WizardModel.ICondition {
 
         if (modelObject instanceof UserWrapper
                 && UserWrapper.class.cast(modelObject).getPreviousUserTO() != null
-                && !ListUtils.isEqualList(
-                        modelObject.getInnerObject().getResources(),
+                && !modelObject.getInnerObject().getResources().equals(
                         UserWrapper.class.cast(modelObject).getPreviousUserTO().getResources())) {
+
             add(new LabelInfo("changed", StringUtils.EMPTY));
         } else {
             add(new Label("changed", StringUtils.EMPTY));
@@ -93,9 +91,9 @@ public class Resources extends WizardStep implements WizardModel.ICondition {
     public boolean evaluate() {
         if (SyncopeConsoleApplication.get().getSecuritySettings().getAuthorizationStrategy().
                 isActionAuthorized(this, RENDER)) {
-            available.setObject(CollectionUtils.collect(new ResourceRestClient().list(),
-                    EntityTOUtils.<ResourceTO>keyTransformer(), new ArrayList<String>()));
-            return CollectionUtils.isNotEmpty(available.getObject());
+            available.setObject(new ResourceRestClient().list().stream().
+                    map(EntityTO::getKey).collect(Collectors.toList()));
+            return !available.getObject().isEmpty();
         } else {
             return false;
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/74ee038a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Roles.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Roles.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Roles.java
index 07d8275..974d7e9 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Roles.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Roles.java
@@ -18,9 +18,9 @@
  */
 package org.apache.syncope.client.console.wizards.any;
 
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.stream.Collectors;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.ListUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -28,9 +28,8 @@ import org.apache.syncope.client.console.SyncopeConsoleApplication;
 import org.apache.syncope.client.console.rest.RoleRestClient;
 import org.apache.syncope.client.console.wicket.ajax.markup.html.LabelInfo;
 import org.apache.syncope.client.console.wicket.markup.html.form.AjaxPalettePanel;
-import org.apache.syncope.common.lib.EntityTOUtils;
 import org.apache.syncope.common.lib.to.AnyTO;
-import org.apache.syncope.common.lib.to.RoleTO;
+import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.StandardEntitlement;
 import org.apache.wicket.authroles.authorization.strategies.role.metadata.ActionPermissions;
@@ -75,8 +74,9 @@ public class Roles extends WizardStep implements ICondition {
         this.setOutputMarkupId(true);
 
         allRoles = SyncopeConsoleApplication.get().getSecuritySettings().getAuthorizationStrategy().
-                isActionAuthorized(this, RENDER) ? CollectionUtils.collect(new RoleRestClient().list(),
-                EntityTOUtils.<RoleTO>keyTransformer(), new ArrayList<String>()) : Collections.<String>emptyList();
+                isActionAuthorized(this, RENDER)
+                ? new RoleRestClient().list().stream().map(EntityTO::getKey).collect(Collectors.toList())
+                : Collections.<String>emptyList();
         Collections.sort(allRoles);
 
         add(new AjaxPalettePanel.Builder<String>().build("roles",
@@ -92,6 +92,6 @@ public class Roles extends WizardStep implements ICondition {
     public final boolean evaluate() {
         return CollectionUtils.isNotEmpty(allRoles)
                 && SyncopeConsoleApplication.get().getSecuritySettings().getAuthorizationStrategy().
-                isActionAuthorized(this, RENDER);
+                        isActionAuthorized(this, RENDER);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/74ee038a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java
index cc1a2cc..cac7b38 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java
@@ -22,10 +22,10 @@ import java.util.ArrayList;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-import org.apache.commons.collections4.CollectionUtils;
+import java.util.stream.Collectors;
+import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.commons.SerializableTransformer;
 import org.apache.syncope.client.console.commons.status.ConnObjectWrapper;
 import org.apache.syncope.client.console.commons.status.Status;
 import org.apache.syncope.client.console.commons.status.StatusBean;
@@ -64,20 +64,12 @@ public class StatusPanel extends Panel {
             final T any,
             final IModel<List<StatusBean>> model,
             final PageReference pageRef) {
+
         super(id);
         statusUtils = new StatusUtils();
-        init(any, model,
-                CollectionUtils.collect(statusUtils.getConnectorObjects(any),
-                        new SerializableTransformer<ConnObjectWrapper, Pair<ConnObjectTO, ConnObjectWrapper>>() {
-
-                    private static final long serialVersionUID = 2658691884036294287L;
-
-                    @Override
-                    public Pair<ConnObjectTO, ConnObjectWrapper> transform(final ConnObjectWrapper input) {
-                        return Pair.of(null, input);
-                    }
-
-                }, new ArrayList<Pair<ConnObjectTO, ConnObjectWrapper>>()), pageRef, false);
+        init(any, model, statusUtils.getConnectorObjects(any).stream().
+                map(input -> new ImmutablePair<ConnObjectTO, ConnObjectWrapper>(null, input)).
+                collect(Collectors.toList()), pageRef, false);
     }
 
     public <T extends AnyTO> StatusPanel(
@@ -123,7 +115,7 @@ public class StatusPanel extends Panel {
         statusBeans.add(syncope);
         initialStatusBeanMap.put(syncope.getResource(), syncope);
 
-        for (Pair<ConnObjectTO, ConnObjectWrapper> pair : connObjects) {
+        connObjects.forEach(pair -> {
             ConnObjectWrapper entry = pair.getRight();
             final StatusBean statusBean = statusUtils.getStatusBean(entry.getAny(),
                     entry.getResourceName(),
@@ -132,7 +124,7 @@ public class StatusPanel extends Panel {
 
             initialStatusBeanMap.put(entry.getResourceName(), statusBean);
             statusBeans.add(statusBean);
-        }
+        });
 
         final MultilevelPanel mlp = new MultilevelPanel("resources");
         add(mlp);
@@ -163,8 +155,8 @@ public class StatusPanel extends Panel {
 
             @Override
             protected boolean statusCondition(final StatusBean bean) {
-                final Pair<ConnObjectTO, ConnObjectTO> pair
-                        = getConnObjectTO(bean.getKey(), bean.getResource(), connObjects);
+                final Pair<ConnObjectTO, ConnObjectTO> pair =
+                        getConnObjectTO(bean.getKey(), bean.getResource(), connObjects);
 
                 return pair != null && pair.getRight() != null;
             }

http://git-wip-us.apache.org/repos/asf/syncope/blob/74ee038a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/TypeExtensionWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/TypeExtensionWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/TypeExtensionWizardBuilder.java
index 35af482..2e5f725 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/TypeExtensionWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/TypeExtensionWizardBuilder.java
@@ -19,18 +19,15 @@
 package org.apache.syncope.client.console.wizards.any;
 
 import java.io.Serializable;
-import java.util.ArrayList;
 import java.util.List;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.ListUtils;
-import org.apache.commons.collections4.Predicate;
+import java.util.stream.Collectors;
 import org.apache.syncope.client.console.rest.AnyTypeClassRestClient;
 import org.apache.syncope.client.console.rest.AnyTypeRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.AjaxPalettePanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.client.console.wizards.AjaxWizardBuilder;
-import org.apache.syncope.common.lib.EntityTOUtils;
+import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.TypeExtensionTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
@@ -73,14 +70,8 @@ public class TypeExtensionWizardBuilder extends AjaxWizardBuilder<TypeExtensionT
 
     @Override
     protected Serializable onApplyInternal(final TypeExtensionTO modelObject) {
-        final List<TypeExtensionTO> typeExtensions =
-                ListUtils.select(groupTO.getTypeExtensions(), new Predicate<TypeExtensionTO>() {
-
-                    @Override
-                    public boolean evaluate(final TypeExtensionTO object) {
-                        return !object.getAnyType().equals(modelObject.getAnyType());
-                    }
-                });
+        List<TypeExtensionTO> typeExtensions = groupTO.getTypeExtensions().stream().
+                filter(typeExt -> !typeExt.getAnyType().equals(modelObject.getAnyType())).collect(Collectors.toList());
         typeExtensions.add(modelObject);
         groupTO.getTypeExtensions().clear();
         groupTO.getTypeExtensions().addAll(typeExtensions);
@@ -100,30 +91,25 @@ public class TypeExtensionWizardBuilder extends AjaxWizardBuilder<TypeExtensionT
             if (typeExtensionTO.getAnyType() == null) {
                 List<String> anyTypes = new AnyTypeRestClient().list();
                 anyTypes.remove(AnyTypeKind.GROUP.name());
-                CollectionUtils.filter(anyTypes, new Predicate<String>() {
-
-                    @Override
-                    public boolean evaluate(final String anyType) {
-                        return groupTO.getTypeExtension(anyType) == null;
-                    }
-                });
+                anyTypes.removeAll(anyTypes.stream().
+                        filter(anyType -> groupTO.getTypeExtension(anyType).isPresent()).collect(Collectors.toList()));
 
                 AjaxDropDownChoicePanel<String> anyTypeComponent = new AjaxDropDownChoicePanel<>(
-                        "anyType.component", "anyType", new PropertyModel<String>(typeExtensionTO, "anyType"));
+                        "anyType.component", "anyType", new PropertyModel<>(typeExtensionTO, "anyType"));
                 anyTypeComponent.setChoices(anyTypes);
                 anyTypeComponent.addRequiredLabel();
                 add(anyTypeComponent.hideLabel().setOutputMarkupId(true));
             } else {
                 AjaxTextFieldPanel anyTypeComponent = new AjaxTextFieldPanel(
-                        "anyType.component", "anyType", new PropertyModel<String>(typeExtensionTO, "anyType"));
+                        "anyType.component", "anyType", new PropertyModel<>(typeExtensionTO, "anyType"));
                 anyTypeComponent.setEnabled(false);
                 add(anyTypeComponent.hideLabel());
             }
 
             add(new Label("auxClasses.label", auxClassesLabel));
 
-            List<String> anyTypeClasses = CollectionUtils.collect(new AnyTypeClassRestClient().list(),
-                    EntityTOUtils.keyTransformer(), new ArrayList<String>());
+            List<String> anyTypeClasses = new AnyTypeClassRestClient().list().stream().
+                    map(EntityTO::getKey).collect(Collectors.toList());
             AjaxPalettePanel<String> auxClassesPalette = new AjaxPalettePanel.Builder<String>().build(
                     "auxClasses.palette",
                     new PropertyModel<List<String>>(typeExtensionTO, "auxClasses"),

http://git-wip-us.apache.org/repos/asf/syncope/blob/74ee038a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/AbstractConnConfPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/AbstractConnConfPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/AbstractConnConfPanel.java
index c1c73f4..3746443 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/AbstractConnConfPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/AbstractConnConfPanel.java
@@ -19,7 +19,6 @@
 package org.apache.syncope.client.console.wizards.resources;
 
 import java.util.List;
-import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
@@ -90,6 +89,6 @@ public abstract class AbstractConnConfPanel<T extends AbstractBaseBean>
 
     @Override
     public boolean evaluate() {
-        return model != null && CollectionUtils.isNotEmpty(model.getObject());
+        return model != null && model.getObject() != null && !model.getObject().isEmpty();
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/74ee038a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorConfPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorConfPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorConfPanel.java
index 580e2c8..f2a3a1e 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorConfPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorConfPanel.java
@@ -18,15 +18,12 @@
  */
 package org.apache.syncope.client.console.wizards.resources;
 
-import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.List;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.Transformer;
+import java.util.Optional;
+import java.util.stream.Collectors;
 import org.apache.syncope.common.lib.to.ConnBundleTO;
 import org.apache.syncope.common.lib.to.ConnInstanceTO;
-import org.apache.syncope.common.lib.types.ConnConfPropSchema;
 import org.apache.syncope.common.lib.types.ConnConfProperty;
 import org.apache.wicket.model.LoadableDetachableModel;
 
@@ -50,15 +47,11 @@ public abstract class ConnectorConfPanel extends AbstractConnConfPanel<ConnInsta
                 ConnectorConfPanel.this.modelObject.getConf().clear();
 
                 // re-order properties
-                Collections.sort(properties, new Comparator<ConnConfProperty>() {
-
-                    @Override
-                    public int compare(final ConnConfProperty left, final ConnConfProperty right) {
-                        if (left == null) {
-                            return -1;
-                        } else {
-                            return left.compareTo(right);
-                        }
+                Collections.sort(properties, (o1, o2) -> {
+                    if (o1 == null) {
+                        return -1;
+                    } else {
+                        return o1.compareTo(o2);
                     }
                 });
 
@@ -78,25 +71,21 @@ public abstract class ConnectorConfPanel extends AbstractConnConfPanel<ConnInsta
      */
     @Override
     protected final List<ConnConfProperty> getConnProperties(final ConnInstanceTO instance) {
-        return CollectionUtils.collect(
-                ConnectorWizardBuilder.getBundle(instance, bundles).getProperties(),
-                new Transformer<ConnConfPropSchema, ConnConfProperty>() {
-
-            @Override
-            public ConnConfProperty transform(final ConnConfPropSchema key) {
-                final ConnConfProperty property = new ConnConfProperty();
-                property.setSchema(key);
-
-                if (instance.getConf(key.getName()) != null && instance.getConf(key.getName()).getValues() != null) {
-                    property.getValues().addAll(instance.getConf(key.getName()).getValues());
-                    property.setOverridable(instance.getConf(key.getName()).isOverridable());
-                }
+        return ConnectorWizardBuilder.getBundle(instance, bundles).getProperties().stream().
+                map(key -> {
+                    ConnConfProperty property = new ConnConfProperty();
+                    property.setSchema(key);
+
+                    Optional<ConnConfProperty> conf = instance.getConf(key.getName());
+                    if (conf.isPresent() && conf.get().getValues() != null) {
+                        property.getValues().addAll(conf.get().getValues());
+                        property.setOverridable(conf.get().isOverridable());
+                    }
 
-                if (property.getValues().isEmpty() && !key.getDefaultValues().isEmpty()) {
-                    property.getValues().addAll(key.getDefaultValues());
-                }
-                return property;
-            }
-        }, new ArrayList<ConnConfProperty>());
+                    if (property.getValues().isEmpty() && !key.getDefaultValues().isEmpty()) {
+                        property.getValues().addAll(key.getDefaultValues());
+                    }
+                    return property;
+                }).collect(Collectors.toList());
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/74ee038a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel.java
index 80a7a85..1a5f9a7 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel.java
@@ -20,12 +20,8 @@ package org.apache.syncope.client.console.wizards.resources;
 
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.List;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.IterableUtils;
-import org.apache.commons.collections4.Predicate;
-import org.apache.commons.collections4.Transformer;
+import java.util.stream.Collectors;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.rest.RealmRestClient;
@@ -61,47 +57,31 @@ public class ConnectorDetailsPanel extends WizardStep {
             @Override
             protected List<String> load() {
                 List<RealmTO> allRealms = new RealmRestClient().list();
-                CollectionUtils.filter(allRealms, new Predicate<RealmTO>() {
-
-                    @Override
-                    public boolean evaluate(final RealmTO realm) {
-                        return IterableUtils.matchesAny(authRealms, new Predicate<String>() {
-
-                            @Override
-                            public boolean evaluate(final String fullpath) {
-                                return realm.getFullPath().startsWith(fullpath);
-                            }
-                        });
-                    }
-                });
-
-                List<String> result = CollectionUtils.collect(allRealms, new Transformer<RealmTO, String>() {
+                allRealms.removeAll(allRealms.stream().filter(realm
+                        -> authRealms.stream().anyMatch(fullpath -> realm.getFullPath().startsWith(fullpath))).
+                        collect(Collectors.toList()));
 
-                    @Override
-                    public String transform(final RealmTO realm) {
-                        return realm.getFullPath();
-                    }
-                }, new ArrayList<String>());
+                List<String> result = allRealms.stream().map(RealmTO::getFullPath).collect(Collectors.toList());
                 Collections.sort(result);
                 return result;
             }
         };
 
         AjaxDropDownChoicePanel<String> realm = new AjaxDropDownChoicePanel<>(
-                "adminRealm", "adminRealm", new PropertyModel<String>(connInstanceTO, "adminRealm"), false);
+                "adminRealm", "adminRealm", new PropertyModel<>(connInstanceTO, "adminRealm"), false);
         realm.setChoices(realms);
         realm.setOutputMarkupId(true);
         realm.addRequiredLabel();
         add(realm);
 
         AjaxTextFieldPanel displayName = new AjaxTextFieldPanel(
-                "displayName", "displayName", new PropertyModel<String>(connInstanceTO, "displayName"), false);
+                "displayName", "displayName", new PropertyModel<>(connInstanceTO, "displayName"), false);
         displayName.setOutputMarkupId(true);
         displayName.addRequiredLabel();
         add(displayName);
 
         AjaxTextFieldPanel location = new AjaxTextFieldPanel(
-                "location", "location", new PropertyModel<String>(connInstanceTO, "location"), false);
+                "location", "location", new PropertyModel<>(connInstanceTO, "location"), false);
         location.addRequiredLabel();
         location.setOutputMarkupId(true);
         location.setEnabled(false);
@@ -110,15 +90,15 @@ public class ConnectorDetailsPanel extends WizardStep {
         final AjaxDropDownChoicePanel<String> bundleName = new AjaxDropDownChoicePanel<>(
                 "bundleName",
                 "bundleName",
-                new PropertyModel<String>(connInstanceTO, "bundleName"), false);
+                new PropertyModel<>(connInstanceTO, "bundleName"), false);
         ((DropDownChoice<String>) bundleName.getField()).setNullValid(true);
 
         List<String> bundleNames = new ArrayList<>();
-        for (ConnBundleTO bundle : bundles) {
-            if (!bundleNames.contains(bundle.getBundleName())) {
-                bundleNames.add(bundle.getBundleName());
-            }
-        }
+        bundles.stream().
+                filter(bundle -> (!bundleNames.contains(bundle.getBundleName()))).
+                forEachOrdered(bundle -> {
+                    bundleNames.add(bundle.getBundleName());
+                });
 
         bundleName.setChoices(bundleNames);
         bundleName.addRequiredLabel();
@@ -128,7 +108,7 @@ public class ConnectorDetailsPanel extends WizardStep {
         add(bundleName);
 
         final AjaxDropDownChoicePanel<String> version = new AjaxDropDownChoicePanel<>(
-                "version", "version", new PropertyModel<String>(connInstanceTO, "version"), false);
+                "version", "version", new PropertyModel<>(connInstanceTO, "version"), false);
         version.setChoices(getVersions(connInstanceTO, bundles));
         version.addRequiredLabel();
         version.setEnabled(connInstanceTO.getBundleName() != null);
@@ -186,20 +166,9 @@ public class ConnectorDetailsPanel extends WizardStep {
     }
 
     private List<String> getVersions(final ConnInstanceTO connInstanceTO, final List<ConnBundleTO> bundles) {
-        return new ArrayList<>(CollectionUtils.collect(
-                CollectionUtils.select(bundles, new Predicate<ConnBundleTO>() {
-
-                    @Override
-                    public boolean evaluate(final ConnBundleTO object) {
-                        return object.getLocation().equals(connInstanceTO.getLocation())
-                                && object.getBundleName().equals(connInstanceTO.getBundleName());
-                    }
-                }), new Transformer<ConnBundleTO, String>() {
-
-            @Override
-            public String transform(final ConnBundleTO input) {
-                return input.getVersion();
-            }
-        }, new HashSet<String>()));
+        return bundles.stream().filter(object
+                -> object.getLocation().equals(connInstanceTO.getLocation())
+                && object.getBundleName().equals(connInstanceTO.getBundleName())).
+                map(ConnBundleTO::getVersion).collect(Collectors.toList());
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/74ee038a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorWizardBuilder.java
index 20037d8..7fcd82c 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorWizardBuilder.java
@@ -20,18 +20,14 @@ package org.apache.syncope.client.console.wizards.resources;
 
 import java.io.Serializable;
 import java.net.URI;
-import java.util.ArrayList;
 import java.util.List;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.IterableUtils;
-import org.apache.commons.collections4.Predicate;
+import java.util.stream.Collectors;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.client.console.rest.ConnectorRestClient;
 import org.apache.syncope.client.console.topology.TopologyNode;
 import org.apache.syncope.client.console.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.to.ConnBundleTO;
 import org.apache.syncope.common.lib.to.ConnInstanceTO;
-import org.apache.syncope.common.lib.types.ConnectorCapability;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.extensions.wizard.WizardModel;
@@ -51,13 +47,8 @@ public class ConnectorWizardBuilder extends AbstractResourceWizardBuilder<ConnIn
 
     public ConnectorWizardBuilder(final ConnInstanceTO defaultItem, final PageReference pageRef) {
         super(defaultItem, pageRef);
-        this.bundles = CollectionUtils.select(connectorRestClient.getAllBundles(), new Predicate<ConnBundleTO>() {
-
-            @Override
-            public boolean evaluate(final ConnBundleTO object) {
-                return object.getLocation().equals(defaultItem.getLocation());
-            }
-        }, new ArrayList<ConnBundleTO>());
+        this.bundles = connectorRestClient.getAllBundles().stream().
+                filter(object -> object.getLocation().equals(defaultItem.getLocation())).collect(Collectors.toList());
     }
 
     @Override
@@ -86,8 +77,7 @@ public class ConnectorWizardBuilder extends AbstractResourceWizardBuilder<ConnIn
             }
 
         });
-        wizardModel.add(new ConnCapabilitiesPanel(
-                new PropertyModel<List<ConnectorCapability>>(connInstanceTO, "capabilities")));
+        wizardModel.add(new ConnCapabilitiesPanel(new PropertyModel<>(connInstanceTO, "capabilities")));
         return wizardModel;
     }
 
@@ -134,13 +124,9 @@ public class ConnectorWizardBuilder extends AbstractResourceWizardBuilder<ConnIn
     }
 
     protected static ConnBundleTO getBundle(final ConnInstanceTO connInstanceTO, final List<ConnBundleTO> bundles) {
-        return IterableUtils.find(bundles, new Predicate<ConnBundleTO>() {
-
-            @Override
-            public boolean evaluate(final ConnBundleTO bundle) {
-                return bundle.getBundleName().equals(connInstanceTO.getBundleName())
-                        && bundle.getVersion().equals(connInstanceTO.getVersion());
-            }
-        });
+        return bundles.stream().filter(bundle
+                -> bundle.getBundleName().equals(connInstanceTO.getBundleName())
+                && bundle.getVersion().equals(connInstanceTO.getVersion())).
+                findFirst().orElse(null);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/74ee038a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder.java
index 2ade6cf..4ebbfb3 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder.java
@@ -20,8 +20,7 @@ package org.apache.syncope.client.console.wizards.resources;
 
 import java.io.Serializable;
 import java.util.List;
-import org.apache.commons.collections4.ListUtils;
-import org.apache.commons.collections4.Predicate;
+import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.commons.ConnIdSpecialName;
 import org.apache.syncope.client.console.commons.Constants;
@@ -71,7 +70,7 @@ public class ProvisionWizardBuilder extends AjaxWizardBuilder<ResourceProvision>
             add(container);
 
             clazz = new AjaxTextFieldPanel(
-                    "clazz", "clazz", new PropertyModel<String>(item, "objectClass"));
+                    "clazz", "clazz", new PropertyModel<>(item, "objectClass"));
             clazz.setRequired(true);
             clazz.setChoices(connectorRestClient.getObjectClasses(resourceTO.getConnector()));
             container.add(clazz);
@@ -158,7 +157,7 @@ public class ProvisionWizardBuilder extends AjaxWizardBuilder<ResourceProvision>
             final AjaxTextFieldPanel connObjectLink = new AjaxTextFieldPanel(
                     "connObjectLink",
                     new ResourceModel("connObjectLink", "connObjectLink").getObject(),
-                    new PropertyModel<String>(item, "connObjectLink"),
+                    new PropertyModel<>(item, "connObjectLink"),
                     false);
             connObjectLink.enableJexlHelp();
             connObjectLink.setEnabled(connObjectLinkEnabled);
@@ -224,21 +223,13 @@ public class ProvisionWizardBuilder extends AjaxWizardBuilder<ResourceProvision>
         } else if (modelObject.getProvisionTO() != null) {
             final List<ProvisionTO> provisions;
             if (modelObject.getKey() == null) {
-                provisions = ListUtils.select(this.resourceTO.getProvisions(), new Predicate<ProvisionTO>() {
-
-                    @Override
-                    public boolean evaluate(final ProvisionTO object) {
-                        return !modelObject.getAnyType().equals(object.getAnyType());
-                    }
-                });
+                provisions = this.resourceTO.getProvisions().stream().
+                        filter(object -> !modelObject.getAnyType().equals(object.getAnyType())).
+                        collect(Collectors.toList());
             } else {
-                provisions = ListUtils.select(this.resourceTO.getProvisions(), new Predicate<ProvisionTO>() {
-
-                    @Override
-                    public boolean evaluate(final ProvisionTO object) {
-                        return !modelObject.getKey().equals(object.getKey());
-                    }
-                });
+                provisions = this.resourceTO.getProvisions().stream().
+                        filter(object -> !modelObject.getKey().equals(object.getKey())).
+                        collect(Collectors.toList());
             }
 
             ProvisionTO provisionTO = modelObject.getProvisionTO();

http://git-wip-us.apache.org/repos/asf/syncope/blob/74ee038a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
index f9fea37..ac7ccc3 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
@@ -21,14 +21,8 @@ package org.apache.syncope.client.console.wizards.resources;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.List;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.IterableUtils;
-import org.apache.commons.collections4.IteratorUtils;
-import org.apache.commons.collections4.ListUtils;
-import org.apache.commons.collections4.Predicate;
-import org.apache.commons.collections4.Transformer;
+import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
@@ -105,16 +99,11 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
 
                 return item == null
                         ? null
-                        : IteratorUtils.find(list.iterator(), new Predicate<ResourceProvision>() {
-
-                            @Override
-                            public boolean evaluate(final ResourceProvision in) {
-                                return ((item.getKey() == null && in.getKey() == null)
-                                        || (in.getKey() != null && in.getKey().equals(item.getKey())))
-                                        && ((item.getAnyType() == null && in.getAnyType() == null)
-                                        || (in.getAnyType() != null && in.getAnyType().equals(item.getAnyType())));
-                            }
-                        });
+                        : list.stream().filter(in -> ((item.getKey() == null && in.getKey() == null)
+                        || (in.getKey() != null && in.getKey().equals(item.getKey())))
+                        && ((item.getAnyType() == null && in.getAnyType() == null)
+                        || (in.getAnyType() != null && in.getAnyType().equals(item.getAnyType())))).
+                                findAny().orElse(null);
             }
 
             @Override
@@ -150,9 +139,9 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
         if (resourceTO.getOrgUnit() != null) {
             provisions.add(new ResourceProvision(resourceTO.getOrgUnit()));
         }
-        for (ProvisionTO provision : resourceTO.getProvisions()) {
+        resourceTO.getProvisions().forEach(provision -> {
             provisions.add(new ResourceProvision(provision));
-        }
+        });
         // keep list ordered - SYNCOPE-1154
         sortProvisions();
 
@@ -279,13 +268,7 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
     }
 
     private void checkConnObjectKeyCount(final String anyType, final List<ItemTO> items) {
-        long connObjectKeyCount = IterableUtils.countMatches(items, new Predicate<ItemTO>() {
-
-            @Override
-            public boolean evaluate(final ItemTO item) {
-                return item.isConnObjectKey();
-            }
-        });
+        long connObjectKeyCount = items.stream().filter(ItemTO::isConnObjectKey).count();
 
         if (connObjectKeyCount != 1) {
             throw new IllegalArgumentException(anyType + ": "
@@ -300,15 +283,15 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
                 checkConnObjectKeyCount(SyncopeConstants.REALM_ANYTYPE, resourceTO.getOrgUnit().getItems());
             }
 
-            for (ProvisionTO provision : new ArrayList<>(resourceTO.getProvisions())) {
-                if (provision != null) {
-                    if (provision.getMapping() == null || provision.getMapping().getItems().isEmpty()) {
-                        resourceTO.getProvisions().remove(provision);
-                    } else {
-                        checkConnObjectKeyCount(provision.getAnyType(), provision.getMapping().getItems());
-                    }
-                }
-            }
+            new ArrayList<>(resourceTO.getProvisions()).stream().
+                    filter(provision -> provision != null).
+                    forEachOrdered(provision -> {
+                        if (provision.getMapping() == null || provision.getMapping().getItems().isEmpty()) {
+                            resourceTO.getProvisions().remove(provision);
+                        } else {
+                            checkConnObjectKeyCount(provision.getAnyType(), provision.getMapping().getItems());
+                        }
+                    });
 
             resourceRestClient.update(resourceTO);
             SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
@@ -322,13 +305,8 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
     }
 
     private void sortProvisions() {
-        Collections.sort(provisions, new Comparator<ResourceProvision>() {
-
-            @Override
-            public int compare(final ResourceProvision o1, final ResourceProvision o2) {
-                return new AnyTypeRestClient.AnyTypeKeyComparator().compare(o1.getAnyType(), o2.getAnyType());
-            }
-        });
+        Collections.sort(provisions, (o1, o2)
+                -> new AnyTypeRestClient.AnyTypeKeyComparator().compare(o1.getAnyType(), o2.getAnyType()));
     }
 
     private LoadableDetachableModel<List<String>> getAnyTypes() {
@@ -340,21 +318,11 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
             protected List<String> load() {
                 final List<String> currentlyAdded = new ArrayList<>();
 
-                CollectionUtils.collect(resourceTO.getProvisions(), new Transformer<ProvisionTO, String>() {
-
-                    @Override
-                    public String transform(final ProvisionTO provisionTO) {
-                        return provisionTO.getAnyType();
-                    }
-                }, currentlyAdded);
-
-                return ListUtils.select(new AnyTypeRestClient().list(), new Predicate<String>() {
+                currentlyAdded.addAll(resourceTO.getProvisions().stream().
+                        map(ProvisionTO::getAnyType).collect(Collectors.toList()));
 
-                    @Override
-                    public boolean evaluate(final String key) {
-                        return !currentlyAdded.contains(key);
-                    }
-                });
+                return new AnyTypeRestClient().list().stream().
+                        filter(anyType -> !currentlyAdded.contains(anyType)).collect(Collectors.toList());
             }
         };
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/74ee038a/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder.java
index 4f60fa5..8ea6aa2 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder.java
@@ -22,10 +22,8 @@ import java.io.Serializable;
 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.commons.lang3.StringUtils;
-import org.apache.syncope.client.console.panels.search.SearchClause;
 import org.apache.syncope.client.console.panels.search.UserSearchPanel;
 import org.apache.syncope.client.console.rest.DynRealmRestClient;
 import org.apache.syncope.client.console.rest.RealmRestClient;
@@ -34,7 +32,7 @@ import org.apache.syncope.client.console.wicket.markup.html.bootstrap.tabs.Accor
 import org.apache.syncope.client.console.wicket.markup.html.form.AjaxPalettePanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.client.console.wizards.AjaxWizardBuilder;
-import org.apache.syncope.common.lib.EntityTOUtils;
+import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.syncope.common.lib.to.RealmTO;
 import org.apache.syncope.common.lib.to.RoleTO;
 import org.apache.wicket.PageReference;
@@ -105,7 +103,7 @@ public class RoleWizardBuilder extends AjaxWizardBuilder<RoleWrapper> {
 
         public Details(final RoleWrapper modelObject) {
             add(new AjaxTextFieldPanel(
-                    "key", "key", new PropertyModel<String>(modelObject.getInnerObject(), "key"), false).
+                    "key", "key", new PropertyModel<>(modelObject.getInnerObject(), "key"), false).
                     setEnabled(StringUtils.isEmpty(modelObject.getInnerObject().getKey())));
 
             // ------------------------
@@ -119,7 +117,7 @@ public class RoleWizardBuilder extends AjaxWizardBuilder<RoleWrapper> {
                 @Override
                 public Panel getPanel(final String panelId) {
                     return new UserSearchPanel.Builder(
-                            new PropertyModel<List<SearchClause>>(modelObject, "dynClauses")).
+                            new PropertyModel<>(modelObject, "dynClauses")).
                             required(true).build(panelId);
                 }
             }), Model.of(StringUtils.isBlank(modelObject.getDynMembershipCond()) ? -1 : 0)).setOutputMarkupId(true));
@@ -159,16 +157,11 @@ public class RoleWizardBuilder extends AjaxWizardBuilder<RoleWrapper> {
 
         public Realms(final RoleTO modelObject) {
             setTitleModel(new ResourceModel("realms"));
-            add(new AjaxPalettePanel.Builder<String>().build("realms",
-                    new PropertyModel<List<String>>(modelObject, "realms"),
-                    new ListModel<>(
-                            CollectionUtils.collect(new RealmRestClient().list(), new Transformer<RealmTO, String>() {
-
-                                @Override
-                                public String transform(final RealmTO input) {
-                                    return input.getFullPath();
-                                }
-                            }, new ArrayList<String>()))).hideLabel().setOutputMarkupId(true));
+            add(new AjaxPalettePanel.Builder<>().build("realms",
+                    new PropertyModel<>(modelObject, "realms"),
+                    new ListModel<>(new RealmRestClient().list().stream().
+                            map(RealmTO::getFullPath).collect(Collectors.toList()))).
+                    hideLabel().setOutputMarkupId(true));
         }
     }
 
@@ -178,12 +171,11 @@ public class RoleWizardBuilder extends AjaxWizardBuilder<RoleWrapper> {
 
         public DynRealms(final RoleTO modelObject) {
             setTitleModel(new ResourceModel("dynRealms"));
-            add(new AjaxPalettePanel.Builder<String>().build("dynRealms",
-                    new PropertyModel<List<String>>(modelObject, "dynRealms"),
-                    new ListModel<>(
-                            CollectionUtils.collect(new DynRealmRestClient().list(),
-                                    EntityTOUtils.keyTransformer(),
-                                    new ArrayList<String>()))).hideLabel().setOutputMarkupId(true));
+            add(new AjaxPalettePanel.Builder<>().build("dynRealms",
+                    new PropertyModel<>(modelObject, "dynRealms"),
+                    new ListModel<>(new DynRealmRestClient().list().stream().
+                            map(EntityTO::getKey).collect(Collectors.toList()))).
+                    hideLabel().setOutputMarkupId(true));
         }
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/74ee038a/client/enduser/src/test/java/org/apache/syncope/client/enduser/util/UserRequestValidatorTest.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/test/java/org/apache/syncope/client/enduser/util/UserRequestValidatorTest.java b/client/enduser/src/test/java/org/apache/syncope/client/enduser/util/UserRequestValidatorTest.java
index d8c021a..21c8218 100644
--- a/client/enduser/src/test/java/org/apache/syncope/client/enduser/util/UserRequestValidatorTest.java
+++ b/client/enduser/src/test/java/org/apache/syncope/client/enduser/util/UserRequestValidatorTest.java
@@ -61,11 +61,11 @@ public class UserRequestValidatorTest {
         assertTrue(UserRequestValidator.compliant(userTO, customForm, true));
 
         // firstname must have only one defaultValue
-        userTO.getPlainAttr("firstname").getValues().add("notAllowedFirstnameValue");
+        userTO.getPlainAttr("firstname").get().getValues().add("notAllowedFirstnameValue");
         assertFalse(UserRequestValidator.compliant(userTO, customForm, true));
         assertTrue(UserRequestValidator.compliant(userTO, customForm, false));
         // clean
-        userTO.getPlainAttr("firstname").getValues().remove("notAllowedFirstnameValue");
+        userTO.getPlainAttr("firstname").get().getValues().remove("notAllowedFirstnameValue");
 
         // derived must not be present
         AttrTO derivedNotAllowed = attrTO("derivedNotAllowed");
@@ -80,7 +80,7 @@ public class UserRequestValidatorTest {
         assertTrue(UserRequestValidator.compliant(userTO, customForm, true));
 
         // with empty form is compliant by definition
-        assertTrue(UserRequestValidator.compliant(userTO, new HashMap<String, CustomAttributesInfo>(), true));
+        assertTrue(UserRequestValidator.compliant(userTO, new HashMap<>(), true));
     }
 
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/74ee038a/client/lib/src/main/java/org/apache/syncope/client/lib/RestClientExceptionMapper.java
----------------------------------------------------------------------
diff --git a/client/lib/src/main/java/org/apache/syncope/client/lib/RestClientExceptionMapper.java b/client/lib/src/main/java/org/apache/syncope/client/lib/RestClientExceptionMapper.java
index 2818c7b..29fae09 100644
--- a/client/lib/src/main/java/org/apache/syncope/client/lib/RestClientExceptionMapper.java
+++ b/client/lib/src/main/java/org/apache/syncope/client/lib/RestClientExceptionMapper.java
@@ -112,7 +112,7 @@ public class RestClientExceptionMapper implements ResponseExceptionMapper<Except
             List<String> exInfos = response.getStringHeaders().get(RESTHeaders.ERROR_INFO);
 
             Set<String> handledExceptions = new HashSet<>();
-            for (String exTypeAsString : exTypesInHeaders) {
+            exTypesInHeaders.forEach(exTypeAsString -> {
                 ClientExceptionType exceptionType = null;
                 try {
                     exceptionType = ClientExceptionType.fromHeaderValue(exTypeAsString);
@@ -132,7 +132,7 @@ public class RestClientExceptionMapper implements ResponseExceptionMapper<Except
                     }
                     compException.addException(clientException);
                 }
-            }
+            });
 
             exTypesInHeaders.removeAll(handledExceptions);
             if (!exTypesInHeaders.isEmpty()) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/74ee038a/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java
----------------------------------------------------------------------
diff --git a/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java b/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java
index c13fa77..a3f959d 100644
--- a/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java
+++ b/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java
@@ -76,7 +76,7 @@ public class SyncopeClient {
         this.mediaType = mediaType;
         this.restClientFactory = restClientFactory;
         if (this.restClientFactory.getHeaders() == null) {
-            this.restClientFactory.setHeaders(new HashMap<String, String>());
+            this.restClientFactory.setHeaders(new HashMap<>());
         }
         this.exceptionMapper = exceptionMapper;
         init(handler);

http://git-wip-us.apache.org/repos/asf/syncope/blob/74ee038a/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClientFactoryBean.java
----------------------------------------------------------------------
diff --git a/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClientFactoryBean.java b/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClientFactoryBean.java
index eba161d..c4105e8 100644
--- a/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClientFactoryBean.java
+++ b/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClientFactoryBean.java
@@ -114,7 +114,7 @@ public class SyncopeClientFactoryBean {
 
     protected JAXRSClientFactoryBean defaultRestClientFactoryBean() {
         JAXRSClientFactoryBean defaultRestClientFactoryBean = new JAXRSClientFactoryBean();
-        defaultRestClientFactoryBean.setHeaders(new HashMap<String, String>());
+        defaultRestClientFactoryBean.setHeaders(new HashMap<>());
 
         if (StringUtils.isBlank(address)) {
             throw new IllegalArgumentException("Property 'address' is missing");
@@ -263,7 +263,7 @@ public class SyncopeClientFactoryBean {
      *
      * @param jwt value received after login, in the {@link RESTHeaders#TOKEN} response header
      * @return client instance which will be passing the provided value in the
-     *         {@link javax.ws.rs.core.HttpHeaders#AUTHORIZATION}
+     * {@link javax.ws.rs.core.HttpHeaders#AUTHORIZATION}
      * request header
      */
     public SyncopeClient create(final String jwt) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/74ee038a/common/lib/pom.xml
----------------------------------------------------------------------
diff --git a/common/lib/pom.xml b/common/lib/pom.xml
index 810f45f..18cd8b8 100644
--- a/common/lib/pom.xml
+++ b/common/lib/pom.xml
@@ -61,10 +61,6 @@ under the License.
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-text</artifactId>
     </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-collections4</artifactId>
-    </dependency>
       
     <dependency>
       <groupId>org.slf4j</groupId>