[SYNCOPE-956] Core implementation

Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/d5b57922
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/d5b57922
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/d5b57922

Branch: refs/heads/master
Commit: d5b5792269ed931100ac9b6526790253c4133763
Parents: e8e56d5
Author: Francesco Chicchiriccò <ilgro...@apache.org>
Authored: Wed Aug 30 15:57:26 2017 +0200
Committer: Francesco Chicchiriccò <ilgro...@apache.org>
Committed: Tue Oct 10 08:34:13 2017 +0200

----------------------------------------------------------------------
 .../syncope/client/cli/CommandClassScanner.java |  14 +-
 .../org/apache/syncope/client/cli/Input.java    |   4 +-
 .../cli/commands/CommonsResultManager.java      |  30 +--
 .../ConfigurationResultManager.java             |   4 +-
 .../connector/ConnectorResultManager.java       |  25 +--
 .../commands/domain/DomainResultManager.java    |   4 +-
 .../entitlement/EntitlementResultManager.java   |  12 +-
 .../cli/commands/group/GroupResultManager.java  |  12 +-
 .../syncope/client/cli/commands/info/Info.java  | 174 ++++++++++--------
 .../client/cli/commands/info/InfoCommand.java   |  14 +-
 .../cli/commands/info/InfoResultManager.java    |  60 +++---
 .../commands/logger/LoggerResultManager.java    |   8 +-
 .../notification/NotificationResultManager.java |   4 +-
 .../commands/policy/PolicyResultManager.java    |  24 +--
 .../question/QuestionResultManager.java         |   4 +-
 .../cli/commands/realm/RealmResultManager.java  |   6 +-
 .../cli/commands/report/ReportDetails.java      |   8 +-
 .../commands/report/ReportResultManager.java    |  32 +---
 .../resource/ResourceResultManager.java         |  40 ++--
 .../client/cli/commands/role/RoleDetails.java   |   8 +-
 .../cli/commands/role/RoleResultManager.java    |  14 +-
 .../commands/schema/SchemaResultManager.java    |  16 +-
 .../client/cli/commands/task/TaskDetails.java   |  42 ++---
 .../cli/commands/task/TaskResultManager.java    |  56 +++---
 .../commands/user/UserSyncopeOperations.java    |   6 +-
 .../syncope/client/cli/util/CommandUtils.java   |   4 +-
 .../apache/syncope/client/cli/view/Table.java   |   8 +-
 client/cli/src/test/resources/log4j2.xml        |  11 +-
 .../NotificationWizardBuilder.java              |  12 +-
 .../console/panels/PlainSchemaDetails.java      |  11 +-
 .../client/console/panels/RealmDetails.java     |  28 +--
 .../policies/PolicyRuleDirectoryPanel.java      |  86 ++-------
 .../policies/PolicyRuleWizardBuilder.java       | 103 ++++++++---
 .../console/policies/PolicyRuleWrapper.java     |  70 +++++++
 .../console/policies/PolicySpecModalPanel.java  |  17 +-
 .../reports/ReportletDirectoryPanel.java        |  75 +-------
 .../console/reports/ReportletWizardBuilder.java |  92 +++++++---
 .../console/reports/ReportletWrapper.java       |  91 +++++++++
 .../console/rest/ImplementationRestClient.java  |  41 +++++
 .../console/tasks/SchedTaskDirectoryPanel.java  |  13 --
 .../console/tasks/SchedTaskWizardBuilder.java   |  35 +++-
 .../html/form/ActionLinksTogglePanel.java       |   4 +-
 .../console/widgets/ItemTransformerWidget.java  |   2 +-
 .../resources/ItemTransformersTogglePanel.java  |  18 +-
 .../wizards/resources/ResourceDetailsPanel.java |  12 +-
 .../syncope/common/lib/info/JavaImplInfo.java   |  56 ++++++
 .../syncope/common/lib/info/PlatformInfo.java   | 142 ++------------
 .../common/lib/policy/AccountPolicyTO.java      |  14 +-
 .../common/lib/policy/ComposablePolicy.java     |   4 +-
 .../common/lib/policy/PasswordPolicyTO.java     |  14 +-
 .../common/lib/report/ReportletConf.java        |   3 +-
 .../lib/to/AbstractProvisioningTaskTO.java      |  16 +-
 .../syncope/common/lib/to/ImplementationTO.java |  77 ++++++++
 .../apache/syncope/common/lib/to/ItemTO.java    |  13 +-
 .../syncope/common/lib/to/NotificationTO.java   |  10 +-
 .../syncope/common/lib/to/PullTaskTO.java       |  10 +-
 .../apache/syncope/common/lib/to/RealmTO.java   |  14 +-
 .../apache/syncope/common/lib/to/ReportTO.java  |  13 +-
 .../syncope/common/lib/to/ResourceTO.java       |  13 +-
 .../syncope/common/lib/to/SchedTaskTO.java      |  10 +-
 .../common/lib/types/ClientExceptionType.java   |   1 +
 .../common/lib/types/ImplementationEngine.java  |  39 ++++
 .../common/lib/types/ImplementationType.java    |  42 +++++
 .../common/lib/types/StandardEntitlement.java   |  10 +
 .../org/apache/syncope/common/lib/JSONTest.java |  18 --
 .../rest/api/service/ImplementationService.java |  92 ++++++++++
 .../syncope/core/logic/AbstractAnyLogic.java    |  13 +-
 .../apache/syncope/core/logic/GroupLogic.java   |  21 ++-
 .../syncope/core/logic/ImplementationLogic.java | 124 +++++++++++++
 .../apache/syncope/core/logic/LoggerLogic.java  |  12 --
 .../apache/syncope/core/logic/SyncopeLogic.java |  29 ++-
 .../init/ClassPathScanImplementationLookup.java |  64 ++++---
 .../persistence/api/ImplementationLookup.java   |  23 +--
 .../api/attrvalue/validation/Validator.java     |   3 +
 .../core/persistence/api/dao/AccountRule.java   |   4 +-
 .../persistence/api/dao/ImplementationDAO.java  |  37 ++++
 .../core/persistence/api/dao/PasswordRule.java  |   6 +-
 .../core/persistence/api/dao/Reportlet.java     |  10 +-
 .../persistence/api/entity/Implementation.java  |  37 ++++
 .../api/entity/LinkingMappingItem.java          |   7 +-
 .../persistence/api/entity/Notification.java    |   4 +-
 .../persistence/api/entity/PlainSchema.java     |   7 +-
 .../core/persistence/api/entity/Realm.java      |   5 +-
 .../core/persistence/api/entity/Report.java     |   7 +-
 .../api/entity/policy/AccountPolicy.java        |  10 +-
 .../api/entity/policy/PasswordPolicy.java       |  10 +-
 .../api/entity/resource/ExternalResource.java   |   5 +-
 .../persistence/api/entity/resource/Item.java   |   5 +-
 .../api/entity/task/ProvisioningTask.java       |   7 +-
 .../persistence/api/entity/task/PullTask.java   |   5 +-
 .../persistence/api/entity/task/SchedTask.java  |   5 +-
 .../attrvalue/validation/AbstractValidator.java |   5 +-
 .../validation/AlwaysTrueValidator.java         |   5 -
 .../attrvalue/validation/BasicValidator.java    |   5 -
 .../validation/EmailAddressValidator.java       |   5 -
 .../jpa/attrvalue/validation/URLValidator.java  |   5 -
 .../jpa/content/ContentLoaderHandler.java       |   7 +-
 .../jpa/dao/AbstractAnySearchDAO.java           |   4 +-
 .../persistence/jpa/dao/DefaultAccountRule.java |  10 +-
 .../jpa/dao/DefaultPasswordRule.java            |  14 +-
 .../persistence/jpa/dao/JPAAnyObjectDAO.java    |  12 +-
 .../core/persistence/jpa/dao/JPAGroupDAO.java   |  12 +-
 .../jpa/dao/JPAImplementationDAO.java           |  70 +++++++
 .../persistence/jpa/dao/JPAMailTemplateDAO.java |   4 +-
 .../core/persistence/jpa/dao/JPAUserDAO.java    |  83 +++------
 .../persistence/jpa/entity/AbstractEntity.java  |   8 +
 .../jpa/entity/AbstractPlainAttr.java           |   4 +-
 .../jpa/entity/JPAEntityFactory.java            |   3 +
 .../jpa/entity/JPAImplementation.java           |  82 +++++++++
 .../persistence/jpa/entity/JPANotification.java |  16 +-
 .../persistence/jpa/entity/JPAPlainSchema.java  |  42 +++--
 .../core/persistence/jpa/entity/JPARealm.java   |  29 +--
 .../core/persistence/jpa/entity/JPAReport.java  |  38 ++--
 .../jpa/entity/JPAReportletConfInstance.java    |  63 -------
 .../jpa/entity/policy/JPAAccountPolicy.java     |  44 ++---
 .../policy/JPAAccountRuleConfInstance.java      |  64 -------
 .../jpa/entity/policy/JPAPasswordPolicy.java    |  42 ++---
 .../policy/JPAPasswordRuleConfInstance.java     |  64 -------
 .../entity/resource/JPAExternalResource.java    |  32 +++-
 .../jpa/entity/resource/JPAMappingItem.java     |  35 ++--
 .../jpa/entity/resource/JPAOrgUnitItem.java     |  34 ++--
 .../jpa/entity/task/JPAPullTask.java            |  46 +++--
 .../jpa/entity/task/JPAPushTask.java            |  32 ++--
 .../jpa/entity/task/JPASchedTask.java           |  17 +-
 .../entity/ExternalResourceValidator.java       |  47 +----
 .../entity/ProvisioningTaskValidator.java       |  59 ------
 .../jpa/validation/entity/RealmValidator.java   |  24 ---
 .../jpa/validation/entity/ReportValidator.java  |  10 +-
 .../validation/entity/SchedTaskValidator.java   |  25 +--
 .../main/resources/domains/MasterContent.xml    |  27 ++-
 .../jpa/DummyImplementationLookup.java          |   3 +-
 .../jpa/inner/ImplementationTest.java           |  82 +++++++++
 .../persistence/jpa/inner/PlainSchemaTest.java  |   8 +-
 .../core/persistence/jpa/inner/PolicyTest.java  |  32 +++-
 .../core/persistence/jpa/inner/ReportTest.java  |  26 ++-
 .../persistence/jpa/outer/ResourceTest.java     |   2 +-
 .../core/persistence/jpa/outer/TaskTest.java    | 146 ++++++++-------
 .../test/resources/domains/MasterContent.xml    | 117 +++++++-----
 .../src/test/resources/domains/TwoContent.xml   |  20 +-
 .../core/provisioning/api/Connector.java        |   4 +-
 .../api/data/ImplementationDataBinder.java      |  32 ++++
 .../NotificationRecipientsProvider.java         |  27 ---
 .../api/notification/RecipientsProvider.java    |  27 +++
 .../api/pushpull/ReconFilterBuilder.java        |  35 ++++
 .../pushpull/ReconciliationFilterBuilder.java   |  35 ----
 .../provisioning/java/ConnectorFacadeProxy.java |   4 +-
 .../provisioning/java/VirAttrHandlerImpl.java   |  10 +-
 .../java/data/AbstractAnyDataBinder.java        |  12 +-
 .../java/data/AnyTypeClassDataBinderImpl.java   |  47 +++--
 .../java/data/AnyTypeDataBinderImpl.java        |   2 +-
 .../java/data/ImplementationDataBinderImpl.java | 184 +++++++++++++++++++
 .../java/data/NotificationDataBinderImpl.java   |  35 +++-
 .../java/data/PolicyDataBinderImpl.java         |  89 ++++++---
 .../java/data/RealmDataBinderImpl.java          |  48 +++--
 .../java/data/ReportDataBinderImpl.java         |  36 ++--
 .../java/data/ResourceDataBinderImpl.java       |  57 +++++-
 .../java/data/TaskDataBinderImpl.java           | 175 +++++++++++++-----
 .../provisioning/java/job/JobManagerImpl.java   |  28 ++-
 .../core/provisioning/java/job/TaskJob.java     |  28 +--
 .../java/job/report/AbstractReportlet.java      |  13 +-
 .../java/job/report/ReportJobDelegate.java      |  34 +---
 .../notification/NotificationManagerImpl.java   |  24 +--
 .../AbstractPropagationTaskExecutor.java        |  21 +--
 .../java/pushpull/PullJobDelegate.java          |  26 +--
 .../provisioning/java/pushpull/PullUtils.java   |  37 ++--
 .../java/pushpull/PushJobDelegate.java          |  11 +-
 .../java/utils/ConnObjectUtils.java             |  21 ++-
 .../provisioning/java/utils/MappingUtils.java   |  58 ++----
 .../java/DummyImplementationLookup.java         |   3 +-
 .../cxf/service/ImplementationServiceImpl.java  |  67 +++++++
 core/spring/pom.xml                             |  10 +
 .../core/spring/ImplementationManager.java      | 174 ++++++++++++++++++
 .../core/spring/security/AuthDataAccessor.java  |   2 +-
 .../security/DefaultPasswordGenerator.java      |  43 +++--
 .../core/spring/security/PasswordGenerator.java |   4 +-
 .../security/DummyImplementationLookup.java     |  80 ++++++++
 .../core/spring/security/EncryptorTest.java     |   2 -
 .../spring/security/PasswordGeneratorTest.java  | 107 +++++++----
 .../spring/security/TestImplementation.java     |  71 +++++++
 .../spring/security/TestPasswordPolicy.java     |  77 ++++++++
 .../core/spring/security/TestPasswordRule.java  |  52 ++++++
 core/spring/src/test/resources/springTest.xml   |  31 ++++
 .../syncope/common/lib/to/SAML2IdPTO.java       |  14 +-
 .../apache/syncope/core/logic/SAML2SPLogic.java |  17 +-
 .../core/logic/saml2/SAML2IdPEntity.java        |  27 ++-
 .../core/logic/saml2/SAML2UserManager.java      |  63 +++++--
 .../core/persistence/api/entity/SAML2IdP.java   |   4 +-
 .../persistence/jpa/entity/JPASAML2IdP.java     |  30 +--
 .../persistence/jpa/entity/JPASAML2IdPItem.java |  32 ++--
 .../validation/entity/SAML2IdPValidator.java    |  49 ++---
 .../java/data/SAML2IdPDataBinderImpl.java       |  23 ++-
 .../core/reference/ITImplementationLookup.java  | 174 ++++++++++--------
 .../fit/core/reference/TestAccountRule.java     |   7 +-
 .../TestNotificationRecipientsProvider.java     |   4 +-
 .../fit/core/reference/TestPasswordRule.java    |  13 +-
 .../TestReconciliationFilterBuilder.java        |   4 +-
 .../org/apache/syncope/fit/AbstractITCase.java  |   6 +-
 .../syncope/fit/core/ImplementationITCase.java  |  73 ++++++++
 .../apache/syncope/fit/core/LoggerITCase.java   |   9 -
 .../fit/core/NotificationTaskITCase.java        |  19 +-
 .../apache/syncope/fit/core/PolicyITCase.java   |  70 +++++--
 .../syncope/fit/core/PropagationTaskITCase.java |   2 +-
 .../apache/syncope/fit/core/PullTaskITCase.java | 102 ++++++++--
 .../apache/syncope/fit/core/PushTaskITCase.java |   6 +-
 .../apache/syncope/fit/core/RealmITCase.java    |  24 ++-
 .../apache/syncope/fit/core/ReportITCase.java   |  96 ++++++++--
 .../apache/syncope/fit/core/ResourceITCase.java |   4 +-
 .../syncope/fit/core/SchedTaskITCase.java       |  20 +-
 .../org/apache/syncope/fit/core/UserITCase.java |  25 ++-
 .../syncope/fit/core/UserIssuesITCase.java      |  60 +++++-
 .../src/test/resources/log4j2.xml               |   4 +-
 211 files changed, 4464 insertions(+), 2389 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/CommandClassScanner.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/CommandClassScanner.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/CommandClassScanner.java
index 2d6b398..9ee7885 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/CommandClassScanner.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/CommandClassScanner.java
@@ -21,7 +21,6 @@ package org.apache.syncope.client.cli;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.syncope.client.cli.commands.AbstractCommand;
-import org.springframework.beans.factory.config.BeanDefinition;
 import 
org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
 import org.springframework.core.type.filter.AnnotationTypeFilter;
 import org.springframework.util.ClassUtils;
@@ -33,15 +32,16 @@ public class CommandClassScanner extends 
ClassPathScanningCandidateComponentProv
         addIncludeFilter(new AnnotationTypeFilter(Command.class));
     }
 
+    @SuppressWarnings("unchecked")
     public final List<Class<? extends AbstractCommand>> getComponentClasses() 
throws IllegalArgumentException {
         final String basePackage = "org.apache.syncope.client.cli.commands";
         List<Class<? extends AbstractCommand>> classes = new ArrayList<>();
-        for (final BeanDefinition candidate : 
findCandidateComponents(basePackage)) {
-            @SuppressWarnings("unchecked")
-            final Class<? extends AbstractCommand> cls = (Class<? extends 
AbstractCommand>) ClassUtils.resolveClassName(
-                    candidate.getBeanClassName(), 
ClassUtils.getDefaultClassLoader());
-            classes.add(cls);
-        }
+        findCandidateComponents(basePackage).stream().
+                map(candidate -> (Class<? extends AbstractCommand>) 
ClassUtils.resolveClassName(
+                candidate.getBeanClassName(), 
ClassUtils.getDefaultClassLoader())).
+                forEachOrdered(cls -> {
+                    classes.add(cls);
+                });
         return classes;
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/Input.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/Input.java 
b/client/cli/src/main/java/org/apache/syncope/client/cli/Input.java
index 35b580f..2e86c08 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/Input.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/Input.java
@@ -107,9 +107,9 @@ public class Input {
 
     public String printCommandFields() {
         final StringBuilder commandBuilder = new StringBuilder();
-        for (final String commandField : commandFields) {
+        commandFields.forEach(commandField -> {
             commandBuilder.append(commandField).append(" ");
-        }
+        });
         return commandBuilder.toString();
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/commands/CommonsResultManager.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/CommonsResultManager.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/CommonsResultManager.java
index 8098e20..dd0b320 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/CommonsResultManager.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/CommonsResultManager.java
@@ -73,27 +73,27 @@ public abstract class CommonsResultManager {
         return 
Messages.commandHelpMessage(name.getAnnotation(Command.class).name());
     }
 
-    protected void printConfiguration(final Collection<ConnConfProperty> 
configurationPropertys) {
-        for (final ConnConfProperty configuration : configurationPropertys) {
-            System.out.println("       name: " + 
configuration.getSchema().getName());
-            System.out.println("       values: " + configuration.getValues());
-            System.out.println("       type: " + 
configuration.getSchema().getType());
-            System.out.println("       display name: " + 
configuration.getSchema().getDisplayName());
-            System.out.println("       help message: " + 
configuration.getSchema().getHelpMessage());
-            System.out.println("       order: " + 
configuration.getSchema().getOrder());
-            System.out.println("       default values: " + 
configuration.getSchema().getDefaultValues());
-            System.out.println("       confidential: " + 
configuration.getSchema().isConfidential());
-            System.out.println("       required: " + 
configuration.getSchema().isRequired());
-            System.out.println("       overridable: " + 
configuration.isOverridable());
+    protected void printConfiguration(final Collection<ConnConfProperty> 
props) {
+        props.forEach(prop -> {
+            System.out.println("       name: " + prop.getSchema().getName());
+            System.out.println("       values: " + prop.getValues());
+            System.out.println("       type: " + prop.getSchema().getType());
+            System.out.println("       display name: " + 
prop.getSchema().getDisplayName());
+            System.out.println("       help message: " + 
prop.getSchema().getHelpMessage());
+            System.out.println("       order: " + prop.getSchema().getOrder());
+            System.out.println("       default values: " + 
prop.getSchema().getDefaultValues());
+            System.out.println("       confidential: " + 
prop.getSchema().isConfidential());
+            System.out.println("       required: " + 
prop.getSchema().isRequired());
+            System.out.println("       overridable: " + prop.isOverridable());
             System.out.println("");
-        }
+        });
     }
 
     protected void printDetails(final String title, final Map<String, String> 
details) {
         final Table.TableBuilder tableBuilder = new 
Table.TableBuilder(title).header("detail").header("value");
-        for (final Map.Entry<String, String> entrySet : details.entrySet()) {
+        details.entrySet().forEach(entrySet -> {
             tableBuilder.rowValues(Arrays.asList(entrySet.getKey(), 
entrySet.getValue()));
-        }
+        });
         tableBuilder.build().print();
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/commands/configuration/ConfigurationResultManager.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/configuration/ConfigurationResultManager.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/configuration/ConfigurationResultManager.java
index 696d2cb..971e10d 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/configuration/ConfigurationResultManager.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/configuration/ConfigurationResultManager.java
@@ -40,12 +40,12 @@ public class ConfigurationResultManager extends 
CommonsResultManager {
 
     private void fromCommandToView(final String title, final List<AttrTO> 
attrTOs) {
         final Table.TableBuilder tableBuilder = new 
Table.TableBuilder(title).header("attribute").header("value");
-        for (final AttrTO attrTO : attrTOs) {
+        attrTOs.forEach(attrTO -> {
             String attrValue = attrTO.getValues().toString();
             attrValue = attrValue.substring(0, attrValue.length() - 1);
             attrValue = attrValue.substring(1, attrValue.length());
             tableBuilder.rowValues(Arrays.asList(attrTO.getSchema(), 
attrValue));
-        }
+        });
         tableBuilder.build().print();
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/commands/connector/ConnectorResultManager.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/connector/ConnectorResultManager.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/connector/ConnectorResultManager.java
index 69d2c58..6b7e91e 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/connector/ConnectorResultManager.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/connector/ConnectorResultManager.java
@@ -26,7 +26,6 @@ import 
org.apache.syncope.client.cli.commands.CommonsResultManager;
 import org.apache.syncope.common.lib.to.ConnBundleTO;
 import org.apache.syncope.common.lib.to.ConnInstanceTO;
 import org.apache.syncope.common.lib.to.ConnPoolConfTO;
-import org.apache.syncope.common.lib.types.ConnConfPropSchema;
 import org.apache.syncope.common.lib.types.ConnConfProperty;
 import org.apache.syncope.common.lib.types.ConnectorCapability;
 
@@ -34,9 +33,9 @@ public class ConnectorResultManager extends 
CommonsResultManager {
 
     public void printConnectors(final List<ConnInstanceTO> connInstanceTOs) {
         System.out.println("");
-        for (final ConnInstanceTO connInstanceTO : connInstanceTOs) {
+        connInstanceTOs.forEach(connInstanceTO -> {
             printConnector(connInstanceTO);
-        }
+        });
     }
 
     public void printConnector(final ConnInstanceTO connInstanceTO) {
@@ -57,9 +56,9 @@ public class ConnectorResultManager extends 
CommonsResultManager {
     }
 
     private void printCapabilities(final Set<ConnectorCapability> 
capabilities) {
-        for (final ConnectorCapability capability : capabilities) {
+        capabilities.forEach(capability -> {
             System.out.println("       - " + capability.name());
-        }
+        });
     }
 
     private void printConfPool(final ConnPoolConfTO connPoolConfTO) {
@@ -71,25 +70,13 @@ public class ConnectorResultManager extends 
CommonsResultManager {
     }
 
     public void printBundles(final List<ConnBundleTO> connBundleTOs) {
-        for (final ConnBundleTO connBundleTO : connBundleTOs) {
+        connBundleTOs.forEach(connBundleTO -> {
             System.out.println(" > BUNDLE NAME: " + 
connBundleTO.getBundleName());
             System.out.println("    connector name: " + 
connBundleTO.getConnectorName());
             System.out.println("    display name: " + 
connBundleTO.getDisplayName());
             System.out.println("    location: " + connBundleTO.getLocation());
             System.out.println("    version: " + connBundleTO.getVersion());
-        }
-    }
-
-    private void printConfPropSchema(final List<ConnConfPropSchema> 
connConfPropSchemas) {
-        for (final ConnConfPropSchema connConfPropSchema : 
connConfPropSchemas) {
-            System.out.println("       name: " + connConfPropSchema.getName());
-            System.out.println("       display name: " + 
connConfPropSchema.getDisplayName());
-            System.out.println("       help message: " + 
connConfPropSchema.getHelpMessage());
-            System.out.println("       type: " + connConfPropSchema.getType());
-            System.out.println("       order: " + 
connConfPropSchema.getOrder());
-            System.out.println("       default value: " + 
connConfPropSchema.getDefaultValues().toString());
-            System.out.println("");
-        }
+        });
     }
 
     public void printConfigurationProperties(final 
Collection<ConnConfProperty> connConfPropertys) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/commands/domain/DomainResultManager.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/domain/DomainResultManager.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/domain/DomainResultManager.java
index 6490f3f..23fad70 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/domain/DomainResultManager.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/domain/DomainResultManager.java
@@ -27,9 +27,9 @@ public class DomainResultManager extends CommonsResultManager 
{
 
     public void printDomains(final List<DomainTO> domainTOs) {
         System.out.println("");
-        for (final DomainTO domainTO : domainTOs) {
+        domainTOs.forEach(domainTO -> {
             printDomain(domainTO);
-        }
+        });
     }
 
     public void printDomain(final DomainTO domainTO) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/commands/entitlement/EntitlementResultManager.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/entitlement/EntitlementResultManager.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/entitlement/EntitlementResultManager.java
index bf871f6..6a5b5b5 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/entitlement/EntitlementResultManager.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/entitlement/EntitlementResultManager.java
@@ -26,17 +26,17 @@ public class EntitlementResultManager extends 
CommonsResultManager {
 
     public void toView(final Collection<String> entitlements) {
         System.out.println("");
-        for (final String entitlement : entitlements) {
+        entitlements.forEach(entitlement -> {
             System.out.println("- " + entitlement);
-        }
+        });
         System.out.println("");
     }
 
     public void rolesToView(final Collection<RoleTO> roles) {
         System.out.println("");
-        for (final RoleTO role : roles) {
+        roles.forEach(role -> {
             printRole(role);
-        }
+        });
     }
 
     private void printRole(final RoleTO roleTO) {
@@ -47,8 +47,8 @@ public class EntitlementResultManager extends 
CommonsResultManager {
     }
 
     private void printRealms(final Collection<String> realms) {
-        for (final String realm : realms) {
+        realms.forEach(realm -> {
             System.out.println("       - " + realm);
-        }
+        });
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/commands/group/GroupResultManager.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/group/GroupResultManager.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/group/GroupResultManager.java
index da4c349..28e4002 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/group/GroupResultManager.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/group/GroupResultManager.java
@@ -29,9 +29,9 @@ public class GroupResultManager extends CommonsResultManager {
 
     public void printGroups(final List<GroupTO> groupTOs) {
         System.out.println("");
-        for (final GroupTO groupTO : groupTOs) {
+        groupTOs.forEach(groupTO -> {
             printGroup(groupTO);
-        }
+        });
     }
 
     public void printGroup(final GroupTO groupTO) {
@@ -54,15 +54,15 @@ public class GroupResultManager extends 
CommonsResultManager {
     }
 
     private void printResources(final Set<String> resources) {
-        for (final String resource : resources) {
+        resources.forEach(resource -> {
             System.out.println("      - " + resource);
-        }
+        });
     }
 
     public void printAttributes(final Set<AttrTO> attributes) {
-        for (final AttrTO attribute : attributes) {
+        attributes.forEach(attribute -> {
             printAttribute(attribute);
-        }
+        });
     }
 
     public void printAttribute(final AttrTO attribute) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/Info.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/Info.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/Info.java
index 7df6fb7..f766f16 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/Info.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/Info.java
@@ -18,8 +18,11 @@
  */
 package org.apache.syncope.client.cli.commands.info;
 
+import java.util.Optional;
 import org.apache.syncope.client.cli.SyncopeServices;
+import org.apache.syncope.common.lib.info.JavaImplInfo;
 import org.apache.syncope.common.lib.info.PlatformInfo;
+import org.apache.syncope.common.lib.types.ImplementationType;
 import org.apache.syncope.common.rest.api.service.SyncopeService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -94,11 +97,14 @@ public class Info {
     }
 
     public void accountRules() {
-        try {
-            
infoResultManager.printAccountRules(platformInfo.getAccountRules());
-        } catch (final Exception ex) {
-            LOG.error("Information error", ex);
-            infoResultManager.genericError(ex.getMessage());
+        Optional<JavaImplInfo> info = 
platformInfo.getJavaImplInfo(ImplementationType.ACCOUNT_RULE);
+        if (info.isPresent()) {
+            try {
+                infoResultManager.printAccountRules(info.get().getClasses());
+            } catch (final Exception ex) {
+                LOG.error("Information error", ex);
+                infoResultManager.genericError(ex.getMessage());
+            }
         }
     }
 
@@ -111,115 +117,139 @@ public class Info {
         }
     }
 
-    public void reconciliationFilterBuilders() {
-        try {
-            
infoResultManager.printReconciliationFilterBuilders(platformInfo.getReconciliationFilterBuilders());
-        } catch (final Exception ex) {
-            LOG.error("Information error", ex);
-            infoResultManager.genericError(ex.getMessage());
+    public void reconFilterBuilders() {
+        Optional<JavaImplInfo> info = 
platformInfo.getJavaImplInfo(ImplementationType.RECON_FILTER_BUILDER);
+        if (info.isPresent()) {
+            try {
+                
infoResultManager.printReconFilterBuilders(info.get().getClasses());
+            } catch (final Exception ex) {
+                LOG.error("Information error", ex);
+                infoResultManager.genericError(ex.getMessage());
+            }
         }
     }
 
     public void logicActions() {
-        try {
-            
infoResultManager.printLogicActions(platformInfo.getLogicActions());
-        } catch (final Exception ex) {
-            LOG.error("Information error", ex);
-            infoResultManager.genericError(ex.getMessage());
+        Optional<JavaImplInfo> info = 
platformInfo.getJavaImplInfo(ImplementationType.LOGIC_ACTIONS);
+        if (info.isPresent()) {
+            try {
+                infoResultManager.printLogicActions(info.get().getClasses());
+            } catch (final Exception ex) {
+                LOG.error("Information error", ex);
+                infoResultManager.genericError(ex.getMessage());
+            }
         }
     }
 
-    public void mappingItemTransformers() {
-        try {
-            
infoResultManager.printMappingItemTransformers(platformInfo.getItemTransformers());
-        } catch (final Exception ex) {
-            LOG.error("Information error", ex);
-            infoResultManager.genericError(ex.getMessage());
+    public void itemTransformers() {
+        Optional<JavaImplInfo> info = 
platformInfo.getJavaImplInfo(ImplementationType.ITEM_TRANSFORMER);
+        if (info.isPresent()) {
+            try {
+                
infoResultManager.printItemTransformers(info.get().getClasses());
+            } catch (final Exception ex) {
+                LOG.error("Information error", ex);
+                infoResultManager.genericError(ex.getMessage());
+            }
         }
     }
 
     public void passwordRules() {
-        try {
-            
infoResultManager.printPasswordRules(platformInfo.getPasswordRules());
-        } catch (final Exception ex) {
-            LOG.error("Information error", ex);
-            infoResultManager.genericError(ex.getMessage());
+        Optional<JavaImplInfo> info = 
platformInfo.getJavaImplInfo(ImplementationType.PASSWORD_RULE);
+        if (info.isPresent()) {
+            try {
+                infoResultManager.printPasswordRules(info.get().getClasses());
+            } catch (final Exception ex) {
+                LOG.error("Information error", ex);
+                infoResultManager.genericError(ex.getMessage());
+            }
         }
     }
 
     public void propagationActions() {
-        try {
-            
infoResultManager.printPropagationActions(platformInfo.getPropagationActions());
-        } catch (final Exception ex) {
-            LOG.error("Information error", ex);
-            infoResultManager.genericError(ex.getMessage());
+        Optional<JavaImplInfo> info = 
platformInfo.getJavaImplInfo(ImplementationType.PROPAGATION_ACTIONS);
+        if (info.isPresent()) {
+            try {
+                
infoResultManager.printPropagationActions(info.get().getClasses());
+            } catch (final Exception ex) {
+                LOG.error("Information error", ex);
+                infoResultManager.genericError(ex.getMessage());
+            }
         }
     }
 
     public void pushActions() {
-        try {
-            infoResultManager.printPushActions(platformInfo.getPushActions());
-        } catch (final Exception ex) {
-            LOG.error("Information error", ex);
-            infoResultManager.genericError(ex.getMessage());
-        }
-    }
-
-    public void pushCorrelationActions() {
-        try {
-            
infoResultManager.printCorrelationActions(platformInfo.getPushCorrelationRules());
-        } catch (final Exception ex) {
-            LOG.error("Information error", ex);
-            infoResultManager.genericError(ex.getMessage());
+        Optional<JavaImplInfo> info = 
platformInfo.getJavaImplInfo(ImplementationType.PUSH_ACTIONS);
+        if (info.isPresent()) {
+            try {
+                infoResultManager.printPushActions(info.get().getClasses());
+            } catch (final Exception ex) {
+                LOG.error("Information error", ex);
+                infoResultManager.genericError(ex.getMessage());
+            }
         }
     }
 
     public void reportletConfs() {
-        try {
-            
infoResultManager.printReportletConfs(platformInfo.getReportletConfs());
-        } catch (final Exception ex) {
-            LOG.error("Information error", ex);
-            infoResultManager.genericError(ex.getMessage());
+        Optional<JavaImplInfo> info = 
platformInfo.getJavaImplInfo(ImplementationType.REPORTLET);
+        if (info.isPresent()) {
+            try {
+                infoResultManager.printReportletConfs(info.get().getClasses());
+            } catch (final Exception ex) {
+                LOG.error("Information error", ex);
+                infoResultManager.genericError(ex.getMessage());
+            }
         }
     }
 
     public void pullActions() {
-        try {
-            infoResultManager.printPullActions(platformInfo.getPullActions());
-        } catch (final Exception ex) {
-            LOG.error("Information error", ex);
-            infoResultManager.genericError(ex.getMessage());
+        Optional<JavaImplInfo> info = 
platformInfo.getJavaImplInfo(ImplementationType.PULL_ACTIONS);
+        if (info.isPresent()) {
+            try {
+                infoResultManager.printPullActions(info.get().getClasses());
+            } catch (final Exception ex) {
+                LOG.error("Information error", ex);
+                infoResultManager.genericError(ex.getMessage());
+            }
         }
     }
 
     public void pullCorrelationRules() {
-        try {
-            
infoResultManager.printCorrelationRules(platformInfo.getPullCorrelationRules());
-        } catch (final Exception ex) {
-            LOG.error("Information error", ex);
-            infoResultManager.genericError(ex.getMessage());
+        Optional<JavaImplInfo> info = 
platformInfo.getJavaImplInfo(ImplementationType.PULL_CORRELATION_RULE);
+        if (info.isPresent()) {
+            try {
+                
infoResultManager.printCorrelationRules(info.get().getClasses());
+            } catch (final Exception ex) {
+                LOG.error("Information error", ex);
+                infoResultManager.genericError(ex.getMessage());
+            }
         }
     }
 
     public void taskJobs() {
-        try {
-            infoResultManager.printJobs(platformInfo.getTaskJobs());
-        } catch (final Exception ex) {
-            LOG.error("Information error", ex);
-            infoResultManager.genericError(ex.getMessage());
+        Optional<JavaImplInfo> info = 
platformInfo.getJavaImplInfo(ImplementationType.TASKJOB_DELEGATE);
+        if (info.isPresent()) {
+            try {
+                infoResultManager.printJobs(info.get().getClasses());
+            } catch (final Exception ex) {
+                LOG.error("Information error", ex);
+                infoResultManager.genericError(ex.getMessage());
+            }
         }
     }
 
     public void validators() {
-        try {
-            infoResultManager.printValidators(platformInfo.getValidators());
-        } catch (final Exception ex) {
-            LOG.error("Information error", ex);
-            infoResultManager.genericError(ex.getMessage());
+        Optional<JavaImplInfo> info = 
platformInfo.getJavaImplInfo(ImplementationType.VALIDATOR);
+        if (info.isPresent()) {
+            try {
+                infoResultManager.printValidators(info.get().getClasses());
+            } catch (final Exception ex) {
+                LOG.error("Information error", ex);
+                infoResultManager.genericError(ex.getMessage());
+            }
         }
     }
 
-    public void passwordGenerators() {
+    public void passwordGenerator() {
         try {
             
infoResultManager.printPasswordGenerator(platformInfo.getPasswordGenerator());
         } catch (final Exception ex) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/InfoCommand.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/InfoCommand.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/InfoCommand.java
index 4734354..28559be 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/InfoCommand.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/InfoCommand.java
@@ -61,14 +61,14 @@ public class InfoCommand extends AbstractCommand {
             case CONNID_LOCATION:
                 info.connidLocations();
                 break;
-            case RECONCILIATION_FILTER_BUILDERS:
-                info.reconciliationFilterBuilders();
+            case RECON_FILTER_BUILDERS:
+                info.reconFilterBuilders();
                 break;
             case LOGIC_ACTIONS:
                 info.logicActions();
                 break;
             case MAPPING_ITEM_TRANSFORMERS:
-                info.mappingItemTransformers();
+                info.itemTransformers();
                 break;
             case PASSWORD_RULES:
                 info.passwordRules();
@@ -79,9 +79,6 @@ public class InfoCommand extends AbstractCommand {
             case PUSH_ACTIONS:
                 info.pushActions();
                 break;
-            case PUSH_CORRELATION_ACTIONS:
-                info.pushCorrelationActions();
-                break;
             case REPORTLET_CONFS:
                 info.reportletConfs();
                 break;
@@ -98,7 +95,7 @@ public class InfoCommand extends AbstractCommand {
                 info.validators();
                 break;
             case PASSWORD_GENERATOR:
-                info.passwordGenerators();
+                info.passwordGenerator();
                 break;
             case VIR_ATTR_CACHE:
                 info.virAttrCache();
@@ -128,13 +125,12 @@ public class InfoCommand extends AbstractCommand {
         WORKFLOW_ADAPTER("--workflow-adapter-classes"),
         ACCOUNT_RULES("--account-rules-classes"),
         CONNID_LOCATION("--connid-locations"),
-        RECONCILIATION_FILTER_BUILDERS("--reconciliation-filter-builders"),
+        RECON_FILTER_BUILDERS("--reconciliation-filter-builders"),
         LOGIC_ACTIONS("--logic-actions"),
         MAPPING_ITEM_TRANSFORMERS("--mapping-item-transformers"),
         PASSWORD_RULES("--password-rules"),
         PROPAGATION_ACTIONS("--propagation-actions"),
         PUSH_ACTIONS("--push-actions"),
-        PUSH_CORRELATION_ACTIONS("--push-correlation-actions"),
         REPORTLET_CONFS("--reportletConfs"),
         SYNC_ACTIONS("--sync-actions"),
         SYNC_CORRELATION_RULES("--sync-correlation-rules"),

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/InfoResultManager.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/InfoResultManager.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/InfoResultManager.java
index e8c4f95..d19b0ae 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/InfoResultManager.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/info/InfoResultManager.java
@@ -58,87 +58,87 @@ public class InfoResultManager extends CommonsResultManager 
{
     }
 
     public void printAccountRules(final Collection<String> rules) {
-        for (final String accountRule : rules) {
+        rules.forEach(accountRule -> {
             genericMessage("Account rule: " + accountRule);
-        }
+        });
     }
 
     public void printConnidLocations(final Collection<String> locations) {
-        for (final String location : locations) {
+        locations.forEach(location -> {
             genericMessage("ConnId location: " + location);
-        }
+        });
     }
 
-    public void printReconciliationFilterBuilders(final Collection<String> 
reconciliationFilterBuilders) {
-        for (final String reconciliationFilterBuilder : 
reconciliationFilterBuilders) {
+    public void printReconFilterBuilders(final Collection<String> 
reconFilterBuilders) {
+        reconFilterBuilders.forEach(reconciliationFilterBuilder -> {
             genericMessage("Reconciliation filter builder: " + 
reconciliationFilterBuilder);
-        }
+        });
     }
 
     public void printLogicActions(final Collection<String> actions) {
-        for (final String action : actions) {
+        actions.forEach(action -> {
             genericMessage("Logic action: " + action);
-        }
+        });
     }
 
-    public void printMappingItemTransformers(final Collection<String> 
transformers) {
-        for (final String tranformer : transformers) {
+    public void printItemTransformers(final Collection<String> transformers) {
+        transformers.forEach(tranformer -> {
             genericMessage("Mapping item tranformer: " + tranformer);
-        }
+        });
     }
 
     public void printPasswordRules(final Collection<String> rules) {
-        for (final String rule : rules) {
+        rules.forEach(rule -> {
             genericMessage("Password rule: " + rule);
-        }
+        });
     }
 
     public void printCorrelationRules(final Collection<String> rules) {
-        for (final String rule : rules) {
+        rules.forEach(rule -> {
             genericMessage("Correlation rule: " + rule);
-        }
+        });
     }
 
     public void printPropagationActions(final Collection<String> actions) {
-        for (final String action : actions) {
+        actions.forEach(action -> {
             genericMessage("Propagation action: " + action);
-        }
+        });
     }
 
     public void printPushActions(final Collection<String> actions) {
-        for (final String action : actions) {
+        actions.forEach(action -> {
             genericMessage("Push action: " + action);
-        }
+        });
     }
 
     public void printPullActions(final Collection<String> actions) {
-        for (final String action : actions) {
+        actions.forEach(action -> {
             genericMessage("Sync action: " + action);
-        }
+        });
     }
 
     public void printCorrelationActions(final Collection<String> actions) {
-        for (final String action : actions) {
+        actions.forEach(action -> {
             genericMessage("Push correlation rule: " + action);
-        }
+        });
     }
 
     public void printReportletConfs(final Collection<String> reportletConfs) {
-        for (final String reportletConf : reportletConfs) {
+        reportletConfs.forEach(reportletConf -> {
             genericMessage("Reportlet conf: " + reportletConf);
-        }
+        });
     }
 
     public void printJobs(final Collection<String> jobs) {
-        for (final String job : jobs) {
+        jobs.forEach(job -> {
             genericMessage("Task job: " + job);
-        }
+        });
     }
 
     public void printValidators(final Collection<String> validators) {
-        for (final String validator : validators) {
+        validators.forEach(validator -> {
             genericMessage("Validator: " + validator);
-        }
+        });
     }
 
     public void printPasswordGenerator(final String passwordGenerator) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerResultManager.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerResultManager.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerResultManager.java
index c99aedf..327f8c0 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerResultManager.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerResultManager.java
@@ -35,9 +35,9 @@ public class LoggerResultManager extends CommonsResultManager 
{
 
     public void fromListMemoryAppenders(final List<String> memoryAppenders) {
         final Table.TableBuilder tableBuilder = new Table.TableBuilder("list 
memory appenders").header("appender");
-        for (final String appender : memoryAppenders) {
+        memoryAppenders.forEach(appender -> {
             tableBuilder.rowValues(Collections.singletonList(appender));
-        }
+        });
         tableBuilder.build().print();
     }
 
@@ -76,9 +76,9 @@ public class LoggerResultManager extends CommonsResultManager 
{
             final List<LoggerTO> loggerTOs) {
 
         final Table.TableBuilder tableBuilder = new 
Table.TableBuilder(title).header("logger").header(secondHeader);
-        for (final LoggerTO loggerTO : loggerTOs) {
+        loggerTOs.forEach(loggerTO -> {
             tableBuilder.rowValues(Arrays.asList(loggerTO.getKey(), 
loggerTO.getLevel().getLevel().name()));
-        }
+        });
         tableBuilder.build().print();
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/commands/notification/NotificationResultManager.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/notification/NotificationResultManager.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/notification/NotificationResultManager.java
index 49002c1..5e1740f 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/notification/NotificationResultManager.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/notification/NotificationResultManager.java
@@ -26,9 +26,9 @@ public class NotificationResultManager extends 
CommonsResultManager {
 
     public void printNotifications(final List<NotificationTO> notificationTOs) 
{
         System.out.println("");
-        for (final NotificationTO notificationTO : notificationTOs) {
+        notificationTOs.forEach(notificationTO -> {
             printNotification(notificationTO);
-        }
+        });
     }
 
     public void printNotification(final NotificationTO notificationTO) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyResultManager.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyResultManager.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyResultManager.java
index baf9378..11ec813 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyResultManager.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyResultManager.java
@@ -31,7 +31,7 @@ public class PolicyResultManager extends CommonsResultManager 
{
 
     public void printPolicies(final List<AbstractPolicyTO> policyTOs) {
         System.out.println("");
-        for (AbstractPolicyTO policyTO : policyTOs) {
+        policyTOs.forEach(policyTO -> {
             if (policyTO instanceof AccountPolicyTO) {
                 printAccountPolicy((AccountPolicyTO) policyTO);
             } else if (policyTO instanceof PasswordPolicyTO) {
@@ -39,7 +39,7 @@ public class PolicyResultManager extends CommonsResultManager 
{
             } else if (policyTO instanceof PullPolicyTO) {
                 printPullPolicy((PullPolicyTO) policyTO);
             }
-        }
+        });
     }
 
     public void printPoliciesByType(final String policyTypeString, final 
List<AbstractPolicyTO> policyTOs) {
@@ -47,24 +47,24 @@ public class PolicyResultManager extends 
CommonsResultManager {
         final PolicyType policyType = PolicyType.valueOf(policyTypeString);
         switch (policyType) {
             case ACCOUNT:
-                for (final AbstractPolicyTO policyTO : policyTOs) {
+                policyTOs.forEach(policyTO -> {
                     printAccountPolicy((AccountPolicyTO) policyTO);
-                }
+                });
                 break;
             case PASSWORD:
-                for (final AbstractPolicyTO policyTO : policyTOs) {
+                policyTOs.forEach(policyTO -> {
                     printPasswordPolicy((PasswordPolicyTO) policyTO);
-                }
+                });
                 break;
             case PUSH:
-                for (final AbstractPolicyTO policyTO : policyTOs) {
+                policyTOs.forEach(policyTO -> {
                     System.out.println(policyTO);
-                }
+                });
                 break;
             case PULL:
-                for (final AbstractPolicyTO policyTO : policyTOs) {
+                policyTOs.forEach(policyTO -> {
                     printPullPolicy((PullPolicyTO) policyTO);
-                }
+                });
                 break;
             default:
                 break;
@@ -80,7 +80,7 @@ public class PolicyResultManager extends CommonsResultManager 
{
         System.out.println("    max authentication attempts : " + 
policyTO.getMaxAuthenticationAttempts());
         System.out.println("    propagation suspension : " + 
policyTO.isPropagateSuspension());
         System.out.println("    RULES : ");
-        System.out.println("       > class : " + policyTO.getRuleConfs());
+        System.out.println("       > class : " + policyTO.getRules());
         System.out.println("");
     }
 
@@ -93,7 +93,7 @@ public class PolicyResultManager extends CommonsResultManager 
{
         System.out.println("    history lenght : " + 
policyTO.getHistoryLength());
         System.out.println("    allow null password : " + 
policyTO.isAllowNullPassword());
         System.out.println("    RULES : ");
-        System.out.println("       > class : " + policyTO.getRuleConfs());
+        System.out.println("       > class : " + policyTO.getRules());
         System.out.println("");
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/commands/question/QuestionResultManager.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/question/QuestionResultManager.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/question/QuestionResultManager.java
index d13a63e..fb0bd18 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/question/QuestionResultManager.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/question/QuestionResultManager.java
@@ -26,9 +26,9 @@ public class QuestionResultManager extends 
CommonsResultManager {
 
     public void printQuestions(final List<SecurityQuestionTO> questionTOs) {
         System.out.println("");
-        for (final SecurityQuestionTO questionTO : questionTOs) {
+        questionTOs.forEach(questionTO -> {
             printQuestion(questionTO);
-        }
+        });
     }
 
     public void printQuestion(final SecurityQuestionTO securityQuestionTO) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/commands/realm/RealmResultManager.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/realm/RealmResultManager.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/realm/RealmResultManager.java
index e9814f8..b207450 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/realm/RealmResultManager.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/realm/RealmResultManager.java
@@ -27,16 +27,16 @@ public class RealmResultManager extends 
CommonsResultManager {
 
     public void printRealms(final List<RealmTO> realmTOs) {
         System.out.println("");
-        for (final RealmTO realmTO : realmTOs) {
+        realmTOs.forEach(realmTO -> {
             printRealm(realmTO);
-        }
+        });
     }
 
     private void printRealm(final RealmTO realmTO) {
         System.out.println(" > REALM KEY: " + realmTO.getKey());
         System.out.println("    name: " + realmTO.getName());
         System.out.println("    full path: " + realmTO.getFullPath());
-        System.out.println("    actions: " + realmTO.getActionsClassNames());
+        System.out.println("    actions: " + realmTO.getActions());
         System.out.println("    templates: " + realmTO.getTemplates());
         System.out.println("    parent key: " + realmTO.getParent());
         System.out.println("    account policy key: " + 
realmTO.getAccountPolicy());

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportDetails.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportDetails.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportDetails.java
index a0ed5c2..4b693d7 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportDetails.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportDetails.java
@@ -44,12 +44,8 @@ public class ReportDetails extends AbstractReportCommand {
             try {
                 final Map<String, String> details = new LinkedHashMap<>();
                 final List<ReportTO> reportTOs = 
reportSyncopeOperations.list();
-                int withoutExecutions = 0;
-                for (final ReportTO reportTO : reportTOs) {
-                    if (reportTO.getExecutions().isEmpty()) {
-                        withoutExecutions++;
-                    }
-                }
+                long withoutExecutions = reportTOs.stream().
+                        filter(reportTO -> 
(reportTO.getExecutions().isEmpty())).count();
                 details.put("Total numbers", String.valueOf(reportTOs.size()));
                 details.put("Never executed", 
String.valueOf(withoutExecutions));
                 reportResultManager.printDetails(details);

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportResultManager.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportResultManager.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportResultManager.java
index 3176bef..7c737cc 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportResultManager.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportResultManager.java
@@ -21,8 +21,6 @@ package org.apache.syncope.client.cli.commands.report;
 import java.util.List;
 import java.util.Map;
 import org.apache.syncope.client.cli.commands.CommonsResultManager;
-import org.apache.syncope.common.lib.report.AbstractReportletConf;
-import org.apache.syncope.common.lib.report.UserReportletConf;
 import org.apache.syncope.common.lib.to.JobTO;
 import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.syncope.common.lib.to.ReportTO;
@@ -31,9 +29,9 @@ public class ReportResultManager extends CommonsResultManager 
{
 
     public void printReports(final List<ReportTO> reportTOs) {
         System.out.println("");
-        for (final ReportTO reportTO : reportTOs) {
+        reportTOs.forEach((reportTO) -> {
             printReport(reportTO);
-        }
+        });
     }
 
     private void printReport(final ReportTO reportTO) {
@@ -44,44 +42,32 @@ public class ReportResultManager extends 
CommonsResultManager {
         System.out.println("    start date: " + reportTO.getStart());
         System.out.println("    end date: " + reportTO.getEnd());
         System.out.println("    CONF:");
-        for (final AbstractReportletConf reportletConf : 
reportTO.getReportletConfs()) {
-            printReportletConf(reportletConf);
-        }
+        reportTO.getReportlets().forEach(reportlet -> {
+            System.out.println("       name: " + reportlet);
+        });
         System.out.println("    EXECUTIONS:");
         printReportExecutions(reportTO.getExecutions());
         System.out.println("");
     }
 
-    private void printReportletConf(final AbstractReportletConf reportletConf) 
{
-        if (reportletConf instanceof UserReportletConf) {
-            final UserReportletConf userReportletConf = (UserReportletConf) 
reportletConf;
-            System.out.println("       name: " + userReportletConf.getName());
-            System.out.println("       features: " + 
userReportletConf.getFeatures());
-            System.out.println("       plain attributes: " + 
userReportletConf.getPlainAttrs());
-            System.out.println("       derived attributes: " + 
userReportletConf.getDerAttrs());
-            System.out.println("       virtual attributes: " + 
userReportletConf.getVirAttrs());
-            System.out.println("       matching condition: " + 
userReportletConf.getMatchingCond());
-        }
-    }
-
     public void printReportExecutions(final List<ExecTO> reportExecTOs) {
-        for (final ExecTO reportExecTO : reportExecTOs) {
+        reportExecTOs.forEach(reportExecTO -> {
             System.out.println("       REPORT EXEC KEY: " + 
reportExecTO.getKey());
             System.out.println("       status: " + reportExecTO.getStatus());
             System.out.println("       message: " + reportExecTO.getMessage());
             System.out.println("       start date: " + 
reportExecTO.getStart());
             System.out.println("       end date: " + reportExecTO.getEnd());
             System.out.println("       report: " + reportExecTO.getRefDesc());
-        }
+        });
     }
 
     public void printJobs(final List<JobTO> jobTOs) {
-        for (final JobTO jobTO : jobTOs) {
+        jobTOs.forEach(jobTO -> {
             System.out.println("       REPORT: " + jobTO.getRefDesc());
             System.out.println("       start date: " + jobTO.getStart());
             System.out.println("       running: " + jobTO.isRunning());
             System.out.println("       scheduled: " + jobTO.isScheduled());
-        }
+        });
     }
 
     public void printDetails(final Map<String, String> details) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceResultManager.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceResultManager.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceResultManager.java
index 7e57e01..4c772ee 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceResultManager.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceResultManager.java
@@ -30,9 +30,9 @@ public class ResourceResultManager extends 
CommonsResultManager {
 
     public void printResources(final List<ResourceTO> resourceTOs) {
         System.out.println("");
-        for (final ResourceTO resourceTO : resourceTOs) {
+        resourceTOs.forEach(resourceTO -> {
             printResource(resourceTO);
-        }
+        });
     }
 
     private void printResource(final ResourceTO resourceTO) {
@@ -42,7 +42,7 @@ public class ResourceResultManager extends 
CommonsResultManager {
         System.out.println("    account policy key: " + 
resourceTO.getAccountPolicy());
         System.out.println("    password policy key: " + 
resourceTO.getPasswordPolicy());
         System.out.println("    pull policy key: " + 
resourceTO.getPullPolicy());
-        System.out.println("    propagation actions class: " + 
resourceTO.getPropagationActionsClassNames());
+        System.out.println("    propagation actions: " + 
resourceTO.getPropagationActions());
         System.out.println("    propagation priority: " + 
resourceTO.getPropagationPriority());
         System.out.println("    PROVISIONS:");
         printProvision(resourceTO.getProvisions());
@@ -57,7 +57,7 @@ public class ResourceResultManager extends 
CommonsResultManager {
     }
 
     private void printProvision(final List<ProvisionTO> provisionTOs) {
-        for (final ProvisionTO provisionTO : provisionTOs) {
+        provisionTOs.forEach(provisionTO -> {
             System.out.println("       provision key: " + 
provisionTO.getKey());
             System.out.println("       any type: " + provisionTO.getAnyType());
             System.out.println("       object class: " + 
provisionTO.getObjectClass());
@@ -65,32 +65,32 @@ public class ResourceResultManager extends 
CommonsResultManager {
             System.out.println("       virtual schema: " + 
provisionTO.getVirSchemas());
             System.out.println("       MAPPING: ");
             printMapping(provisionTO.getMapping());
-        }
+        });
     }
 
     private void printMapping(final MappingTO mappingTO) {
         System.out.println("          ConnObjectLink: " + 
mappingTO.getConnObjectLink());
         System.out.println("          MAPPING ITEM: ");
-        printMappingItem(mappingTO.getItems());
+        printItem(mappingTO.getItems());
     }
 
-    private void printMappingItem(final List<ItemTO> mappingItemTOs) {
-        for (final ItemTO mappingItemTO : mappingItemTOs) {
-            System.out.println("             mapping key: " + 
mappingItemTO.getKey());
-            System.out.println("             internal attribute name: " + 
mappingItemTO.getIntAttrName());
-            System.out.println("             external attribute name: " + 
mappingItemTO.getExtAttrName());
-            System.out.println("             mandatory condition: " + 
mappingItemTO.getMandatoryCondition());
+    private void printItem(final List<ItemTO> itemTOs) {
+        itemTOs.forEach(itemTO -> {
+            System.out.println("             mapping key: " + itemTO.getKey());
+            System.out.println("             internal attribute name: " + 
itemTO.getIntAttrName());
+            System.out.println("             external attribute name: " + 
itemTO.getExtAttrName());
+            System.out.println("             mandatory condition: " + 
itemTO.getMandatoryCondition());
             System.out.println("             JEXL propagation transformer: "
-                    + mappingItemTO.getPropagationJEXLTransformer());
+                    + itemTO.getPropagationJEXLTransformer());
             System.out.println("             JEXL pull transformer: "
-                    + mappingItemTO.getPullJEXLTransformer());
-            System.out.println("             transformers classes: "
-                    + mappingItemTO.getTransformerClassNames());
-            System.out.println("             purpose: " + 
mappingItemTO.getPurpose());
-            System.out.println("             connector object key: " + 
mappingItemTO.isConnObjectKey());
-            System.out.println("             password: " + 
mappingItemTO.isPassword());
+                    + itemTO.getPullJEXLTransformer());
+            System.out.println("             transformers: "
+                    + itemTO.getTransformers());
+            System.out.println("             purpose: " + itemTO.getPurpose());
+            System.out.println("             connector object key: " + 
itemTO.isConnObjectKey());
+            System.out.println("             password: " + 
itemTO.isPassword());
             System.out.println("");
-        }
+        });
     }
 
     public void printDetails(final Map<String, String> details) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/commands/role/RoleDetails.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/role/RoleDetails.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/role/RoleDetails.java
index 76bef86..0fd2867 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/role/RoleDetails.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/role/RoleDetails.java
@@ -44,12 +44,8 @@ public class RoleDetails extends AbstractRoleCommand {
             try {
                 final Map<String, String> details = new LinkedHashMap<>();
                 final List<RoleTO> roleTOs = roleSyncopeOperations.list();
-                int withoutEntitlements = 0;
-                for (final RoleTO roleTO : roleTOs) {
-                    if (roleTO.getEntitlements() == null || 
roleTO.getEntitlements().isEmpty()) {
-                        withoutEntitlements++;
-                    }
-                }
+                long withoutEntitlements = roleTOs.stream().
+                        filter(roleTO -> 
roleTO.getEntitlements().isEmpty()).count();
                 details.put("Total number", String.valueOf(roleTOs.size()));
                 details.put("Without entitlements", 
String.valueOf(withoutEntitlements));
                 roleResultManager.printDetails(details);

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/commands/role/RoleResultManager.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/role/RoleResultManager.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/role/RoleResultManager.java
index 9d39f19..158f26d 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/role/RoleResultManager.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/role/RoleResultManager.java
@@ -28,9 +28,9 @@ public class RoleResultManager extends CommonsResultManager {
 
     public void printRoles(final List<RoleTO> roleTOs) {
         System.out.println("");
-        for (final RoleTO roleTO : roleTOs) {
+        roleTOs.forEach(roleTO -> {
             printRole(roleTO);
-        }
+        });
     }
 
     private void printRole(final RoleTO roleTO) {
@@ -42,17 +42,17 @@ public class RoleResultManager extends CommonsResultManager 
{
         System.out.println("    dynamic membership condition: " + 
roleTO.getDynMembershipCond());
         System.out.println("");
     }
-    
+
     private void printRealms(final List<String> realms) {
-        for (final String realm : realms) {
+        realms.forEach(realm -> {
             System.out.println("       - " + realm);
-        }
+        });
     }
 
     private void printEntitlements(final Set<String> entitlements) {
-        for (final String entitlement : entitlements) {
+        entitlements.forEach(entitlement -> {
             System.out.println("       - " + entitlement);
-        }
+        });
     }
 
     public void printDetails(final Map<String, String> details) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaResultManager.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaResultManager.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaResultManager.java
index cb87fe0..95d5628 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaResultManager.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaResultManager.java
@@ -49,9 +49,9 @@ public class SchemaResultManager extends CommonsResultManager 
{
 
     private void printPlainSchemasDetailed(final List<? extends 
AbstractSchemaTO> schemaTOs) {
         System.out.println("");
-        for (final AbstractSchemaTO schemaTO : schemaTOs) {
+        schemaTOs.forEach(schemaTO -> {
             printPlanSchemaDetailed((PlainSchemaTO) schemaTO);
-        }
+        });
     }
 
     private void printPlanSchemaDetailed(final PlainSchemaTO schemaTO) {
@@ -70,34 +70,34 @@ public class SchemaResultManager extends 
CommonsResultManager {
     public void printPlainSchemas(final List<? extends AbstractSchemaTO> 
schemaTOs) {
         final Table.TableBuilder tableBuilder =
                 new Table.TableBuilder("plain schemas").header("schema 
key").header("type").header("mandatory");
-        for (final AbstractSchemaTO schemaTO : schemaTOs) {
+        schemaTOs.forEach(schemaTO -> {
             tableBuilder.rowValues(Arrays.asList(
                     ((PlainSchemaTO) schemaTO).getKey(),
                     ((PlainSchemaTO) schemaTO).getType().toString(),
                     ((PlainSchemaTO) schemaTO).getMandatoryCondition()));
-        }
+        });
         tableBuilder.build().print();
     }
 
     public void fromListDerived(final List<? extends AbstractSchemaTO> 
schemaTOs) {
         final Table.TableBuilder tableBuilder =
                 new Table.TableBuilder("derived schemas").header("schema 
key").header("expression");
-        for (final AbstractSchemaTO schemaTO : schemaTOs) {
+        schemaTOs.forEach(schemaTO -> {
             tableBuilder.rowValues(Arrays.asList(
                     ((DerSchemaTO) schemaTO).getKey(),
                     ((DerSchemaTO) schemaTO).getExpression()));
-        }
+        });
         tableBuilder.build().print();
     }
 
     public void fromListVirtual(final List<? extends AbstractSchemaTO> 
schemaTOs) {
         final Table.TableBuilder tableBuilder =
                 new Table.TableBuilder("virtual schemas").header("schema 
key").header("readonly");
-        for (final AbstractSchemaTO schemaTO : schemaTOs) {
+        schemaTOs.forEach(schemaTO -> {
             tableBuilder.rowValues(Arrays.asList(
                     ((VirSchemaTO) schemaTO).getKey(),
                     String.valueOf(((VirSchemaTO) schemaTO).isReadonly())));
-        }
+        });
         tableBuilder.build().print();
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskDetails.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskDetails.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskDetails.java
index 8e5d387..4e87566 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskDetails.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskDetails.java
@@ -63,45 +63,29 @@ public class TaskDetails extends AbstractTaskCommand {
                 final int propagationTaskSize = propagationTaskTOs.size();
                 final int pushTaskSize = pushTaskTOs.size();
                 final int scheduledTaskSize = scheduledTaskTOs.size();
-                int scheduledNotExecuted = 0;
                 final int pullTaskSize = pullTaskTOs.size();
                 final int jobsSize = jobTOs.size();
 
-                int notificationNotExecuted = 0;
-                for (final AbstractTaskTO notificationTaskTO : 
notificationTaskTOs) {
-                    if (!((NotificationTaskTO) 
notificationTaskTO).isExecuted()) {
-                        notificationNotExecuted++;
-                    }
-                }
+                long notificationNotExecuted = notificationTaskTOs.stream().
+                        filter(notificationTaskTO -> !((NotificationTaskTO) 
notificationTaskTO).isExecuted()).
+                        count();
 
-                int propagationNotExecuted = 0;
-                for (final AbstractTaskTO propagationTaskTO : 
propagationTaskTOs) {
-                    if (((PropagationTaskTO) 
propagationTaskTO).getExecutions() == null
-                            || ((PropagationTaskTO) 
propagationTaskTO).getExecutions().isEmpty()) {
-                        propagationNotExecuted++;
-                    }
-                }
+                long propagationNotExecuted = propagationTaskTOs.stream().
+                        filter(propagationTaskTO -> ((PropagationTaskTO) 
propagationTaskTO).getExecutions().isEmpty()).
+                        count();
 
-                int pushNotExecuted = 0;
-                for (final AbstractTaskTO pushTaskTO : pushTaskTOs) {
-                    if (((PushTaskTO) pushTaskTO).getExecutions() == null
-                            || ((PushTaskTO) 
pushTaskTO).getExecutions().isEmpty()) {
-                        pushNotExecuted++;
-                    }
-                }
+                long pushNotExecuted = pushTaskTOs.stream().
+                        filter(pushTaskTO -> ((PushTaskTO) 
pushTaskTO).getExecutions().isEmpty()).
+                        count();
 
-                for (final AbstractTaskTO scheduledTaskTO : scheduledTaskTOs) {
-                    if (((SchedTaskTO) scheduledTaskTO).getExecutions() == null
-                            || ((SchedTaskTO) 
scheduledTaskTO).getExecutions().isEmpty()) {
-                        scheduledNotExecuted++;
-                    }
-                }
+                long scheduledNotExecuted = scheduledTaskTOs.stream().
+                        filter(scheduledTaskTO -> ((SchedTaskTO) 
scheduledTaskTO).getExecutions().isEmpty()).
+                        count();
 
                 int pullNotExecuted = 0;
                 int pullFull = 0;
                 for (final AbstractTaskTO pullTaskTO : pullTaskTOs) {
-                    if (((PullTaskTO) pullTaskTO).getExecutions() == null
-                            || ((PullTaskTO) 
pullTaskTO).getExecutions().isEmpty()) {
+                    if (((PullTaskTO) pullTaskTO).getExecutions().isEmpty()) {
                         pullNotExecuted++;
                     }
                     if (((PullTaskTO) pullTaskTO).getPullMode() == 
PullMode.FULL_RECONCILIATION) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskResultManager.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskResultManager.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskResultManager.java
index 5516440..d811edc 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskResultManager.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskResultManager.java
@@ -36,7 +36,7 @@ public class TaskResultManager extends CommonsResultManager {
 
     public void printTasks(final List<AbstractTaskTO> taskTOs) {
         System.out.println("");
-        for (final AbstractTaskTO taskTO : taskTOs) {
+        taskTOs.forEach(taskTO -> {
             if (taskTO instanceof NotificationTaskTO) {
                 printNotificationTask((NotificationTaskTO) taskTO);
             } else if (taskTO instanceof PropagationTaskTO) {
@@ -48,36 +48,36 @@ public class TaskResultManager extends CommonsResultManager 
{
             } else if (taskTO instanceof PullTaskTO) {
                 printPullTask((PullTaskTO) taskTO);
             }
-        }
+        });
     }
 
     public void printTasksType(final String taskTypeString, final 
List<AbstractTaskTO> taskTOs) {
         System.out.println("");
         switch (TaskType.valueOf(taskTypeString)) {
             case NOTIFICATION:
-                for (final AbstractTaskTO taskTO : taskTOs) {
+                taskTOs.forEach(taskTO -> {
                     printNotificationTask(((NotificationTaskTO) taskTO));
-                }
+                });
                 break;
             case PROPAGATION:
-                for (final AbstractTaskTO taskTO : taskTOs) {
+                taskTOs.forEach(taskTO -> {
                     printPropagationTask((PropagationTaskTO) taskTO);
-                }
+                });
                 break;
             case PUSH:
-                for (final AbstractTaskTO taskTO : taskTOs) {
+                taskTOs.forEach(taskTO -> {
                     printPushTask((PushTaskTO) taskTO);
-                }
+                });
                 break;
             case SCHEDULED:
-                for (final AbstractTaskTO taskTO : taskTOs) {
+                taskTOs.forEach(taskTO -> {
                     printScheduledTask((SchedTaskTO) taskTO);
-                }
+                });
                 break;
             case PULL:
-                for (final AbstractTaskTO taskTO : taskTOs) {
+                taskTOs.forEach(taskTO -> {
                     printPullTask((PullTaskTO) taskTO);
-                }
+                });
                 break;
             default:
                 break;
@@ -133,8 +133,8 @@ public class TaskResultManager extends CommonsResultManager 
{
         System.out.println("     next execution: " + pushTaskTO.getNextExec());
         System.out.println("     latest execution status: " + 
pushTaskTO.getLatestExecStatus());
         System.out.println("     filters: " + pushTaskTO.getFilters());
-        System.out.println("     delegate class: " + 
pushTaskTO.getJobDelegateClassName());
-        System.out.println("     action class: " + 
pushTaskTO.getActionsClassNames());
+        System.out.println("     delegate: " + pushTaskTO.getJobDelegate());
+        System.out.println("     actions: " + pushTaskTO.getActions());
         System.out.println("     matching rule: " + 
pushTaskTO.getMatchingRule());
         System.out.println("     not matching rule: " + 
pushTaskTO.getUnmatchingRule());
         printTaskExecTOs(pushTaskTO.getExecutions());
@@ -151,7 +151,7 @@ public class TaskResultManager extends CommonsResultManager 
{
         System.out.println("     last execution: " + 
schedTaskTO.getLastExec());
         System.out.println("     next execution: " + 
schedTaskTO.getNextExec());
         System.out.println("     latest execution status: " + 
schedTaskTO.getLatestExecStatus());
-        System.out.println("     job delegate class: " + 
schedTaskTO.getJobDelegateClassName());
+        System.out.println("     job delegate: " + 
schedTaskTO.getJobDelegate());
         printTaskExecTOs(schedTaskTO.getExecutions());
         System.out.println("");
     }
@@ -175,8 +175,8 @@ public class TaskResultManager extends CommonsResultManager 
{
         System.out.println("     next execution: " + pullTaskTO.getNextExec());
         System.out.println("     last execution: " + pullTaskTO.getLastExec());
         System.out.println("     latest execution status: " + 
pullTaskTO.getLatestExecStatus());
-        System.out.println("     job delegate class: " + 
pullTaskTO.getJobDelegateClassName());
-        System.out.println("     action class name: " + 
pullTaskTO.getActionsClassNames());
+        System.out.println("     job delegate: " + 
pullTaskTO.getJobDelegate());
+        System.out.println("     actions: " + pullTaskTO.getActions());
         System.out.println("     matching rule: " + 
pullTaskTO.getMatchingRule());
         System.out.println("     unmatching rule: " + 
pullTaskTO.getUnmatchingRule());
         printTaskExecTOs(pullTaskTO.getExecutions());
@@ -184,18 +184,16 @@ public class TaskResultManager extends 
CommonsResultManager {
     }
 
     private void printTemplates(final Map<String, AnyTO> templates) {
-        for (final Map.Entry<String, AnyTO> entrySet : templates.entrySet()) {
-            final String key = entrySet.getKey();
-            final AnyTO value = entrySet.getValue();
-            System.out.println("        " + key + " key: " + value.getKey()
-                    + " of realm" + value.getRealm()
-                    + " on resource " + value.getResources());
-
-        }
+        templates.entrySet().forEach(entrySet -> {
+            System.out.println("        "
+                    + entrySet.getKey() + " key: " + 
entrySet.getValue().getKey()
+                    + " of realm" + entrySet.getValue().getRealm()
+                    + " on resource " + entrySet.getValue().getResources());
+        });
     }
 
     public void printTaskExecTOs(final List<ExecTO> taskExecTOs) {
-        for (final ExecTO taskExecTO : taskExecTOs) {
+        taskExecTOs.forEach(taskExecTO -> {
             System.out.println("     EXECUTIONS: ");
             System.out.println("     - task execution key: " + 
taskExecTO.getKey());
             System.out.println("       task: " + taskExecTO.getRefDesc());
@@ -207,16 +205,16 @@ public class TaskResultManager extends 
CommonsResultManager {
             System.out.println("       start date: " + taskExecTO.getStart());
             System.out.println("       end date: " + taskExecTO.getEnd());
             System.out.println("");
-        }
+        });
     }
 
     public void printJobs(final List<JobTO> jobTOs) {
-        for (final JobTO jobTO : jobTOs) {
+        jobTOs.forEach(jobTO -> {
             System.out.println("       TASK: " + jobTO.getRefDesc());
             System.out.println("       start date: " + jobTO.getStart());
             System.out.println("       running: " + jobTO.isRunning());
             System.out.println("       scheduled: " + jobTO.isScheduled());
-        }
+        });
     }
 
     public void printDetails(final Map<String, String> details) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSyncopeOperations.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSyncopeOperations.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSyncopeOperations.java
index cc9101b..cbd0eb5 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSyncopeOperations.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserSyncopeOperations.java
@@ -85,9 +85,9 @@ public class UserSyncopeOperations {
     private Map<String, BulkActionResult.Status> deleteBulk(final List<UserTO> 
users) {
         final BulkAction bulkAction = new BulkAction();
         bulkAction.setType(BulkAction.Type.DELETE);
-        for (UserTO user : users) {
-            bulkAction.getTargets().add(String.valueOf(user.getKey()));
-        }
+        users.forEach(user -> {
+            bulkAction.getTargets().add(user.getKey());
+        });
         final BulkActionResult bulkResult = 
userService.bulk(bulkAction).readEntity(BulkActionResult.class);
         return bulkResult.getResults();
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/d5b57922/client/cli/src/main/java/org/apache/syncope/client/cli/util/CommandUtils.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/util/CommandUtils.java 
b/client/cli/src/main/java/org/apache/syncope/client/cli/util/CommandUtils.java
index b2e4594..01703ca 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/util/CommandUtils.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/util/CommandUtils.java
@@ -75,9 +75,9 @@ public final class CommandUtils {
     public static String helpMessage(final String command, final List<String> 
options) {
         final StringBuilder helpMessageBuilder = new 
StringBuilder(String.format("%nUsage: %s [options]%n", command));
         helpMessageBuilder.append("  Options:\n");
-        for (final String option : options) {
+        options.forEach(option -> {
             helpMessageBuilder.append("    ").append(option).append("\n");
-        }
+        });
         return helpMessageBuilder.toString();
     }
 

Reply via email to