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/19 13:20:41 UTC

syncope git commit: [SYNCOPE-938] Empowering defult methods

Repository: syncope
Updated Branches:
  refs/heads/master ea6559c85 -> 5a1a1f061


[SYNCOPE-938] Empowering defult methods


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

Branch: refs/heads/master
Commit: 5a1a1f06164bb43d641c2cce9dd7dc954ac475f3
Parents: ea6559c
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Sat Aug 19 15:20:33 2017 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Sat Aug 19 15:20:33 2017 +0200

----------------------------------------------------------------------
 .../init/ClassPathScanImplementationLookup.java |   2 +-
 .../core/provisioning/api/LogicActions.java     |  24 +++-
 .../provisioning/api/data/ItemTransformer.java  |  14 ++-
 .../api/propagation/PropagationActions.java     |  12 +-
 .../api/pushpull/ProvisioningActions.java       |   8 +-
 .../provisioning/api/pushpull/PullActions.java  |  71 +++++++----
 .../provisioning/api/pushpull/PushActions.java  |  70 ++++++++---
 .../pushpull/ReconciliationFilterBuilder.java   |   7 +-
 .../provisioning/java/DefaultLogicActions.java  |  57 ---------
 .../java/data/DefaultItemTransformer.java       |  47 -------
 .../java/data/JEXLItemTransformerImpl.java      |  14 +--
 .../DBPasswordPropagationActions.java           |   7 +-
 .../propagation/DefaultPropagationActions.java  |  45 -------
 .../LDAPMembershipPropagationActions.java       |   5 +-
 .../LDAPPasswordPropagationActions.java         |   7 +-
 .../java/pushpull/DBPasswordPullActions.java    |   3 +-
 .../java/pushpull/DefaultPullActions.java       | 125 -------------------
 .../java/pushpull/DefaultPushActions.java       | 100 ---------------
 .../DefaultReconciliationFilterBuilder.java     |  38 ------
 .../java/pushpull/LDAPPasswordPullActions.java  |   3 +-
 .../java/pushpull/SchedulingPullActions.java    |   3 +-
 .../core/provisioning/api/SAML2IdPActions.java  |  16 ++-
 .../java/DefaultSAML2IdPActions.java            |  48 -------
 .../core/reference/DoubleValueLogicActions.java |   4 +-
 .../core/reference/ITImplementationLookup.java  |   4 -
 .../core/reference/PrefixItemTransformer.java   |   8 +-
 .../fit/core/reference/TestPullActions.java     |   4 +-
 .../TestReconciliationFilterBuilder.java        |   4 +-
 28 files changed, 193 insertions(+), 557 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/core/logic/src/main/java/org/apache/syncope/core/logic/init/ClassPathScanImplementationLookup.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/init/ClassPathScanImplementationLookup.java b/core/logic/src/main/java/org/apache/syncope/core/logic/init/ClassPathScanImplementationLookup.java
index 2bc1eca..ebe1e5d 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/init/ClassPathScanImplementationLookup.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/init/ClassPathScanImplementationLookup.java
@@ -99,7 +99,7 @@ public class ClassPathScanImplementationLookup implements ImplementationLookup {
     public void load() {
         classNames = new EnumMap<>(Type.class);
         for (Type type : Type.values()) {
-            classNames.put(type, new HashSet<String>());
+            classNames.put(type, new HashSet<>());
         }
 
         jwtSSOProviderClasses = new HashSet<>();

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/LogicActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/LogicActions.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/LogicActions.java
index f70d7f1..2c152c6 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/LogicActions.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/LogicActions.java
@@ -26,15 +26,27 @@ import org.apache.syncope.common.lib.to.AnyTO;
  */
 public interface LogicActions {
 
-    <A extends AnyTO> A beforeCreate(A input);
+    default <A extends AnyTO> A beforeCreate(A input) {
+        return input;
+    }
 
-    <A extends AnyTO> A afterCreate(A input);
+    default <A extends AnyTO> A afterCreate(A input) {
+        return input;
+    }
 
-    <P extends AnyPatch> P beforeUpdate(P input);
+    default <P extends AnyPatch> P beforeUpdate(P input) {
+        return input;
+    }
 
-    <A extends AnyTO> A afterUpdate(A input);
+    default <A extends AnyTO> A afterUpdate(A input) {
+        return input;
+    }
 
-    <A extends AnyTO> A beforeDelete(A input);
+    default <A extends AnyTO> A beforeDelete(A input) {
+        return input;
+    }
 
-    <A extends AnyTO> A afterDelete(A input);
+    default <A extends AnyTO> A afterDelete(A input) {
+        return input;
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ItemTransformer.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ItemTransformer.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ItemTransformer.java
index 1ec16c3..4962d8f 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ItemTransformer.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ItemTransformer.java
@@ -40,10 +40,13 @@ public interface ItemTransformer {
      * @param values original values
      * @return transformed values
      */
-    List<PlainAttrValue> beforePropagation(
+    default List<PlainAttrValue> beforePropagation(
             Item item,
             Entity entity,
-            List<PlainAttrValue> values);
+            List<PlainAttrValue> values) {
+
+        return values;
+    }
 
     /**
      * Invoked while reading attribute values from external resource during pull.
@@ -53,8 +56,11 @@ public interface ItemTransformer {
      * @param values original values
      * @return transformed values
      */
-    List<Object> beforePull(
+    default List<Object> beforePull(
             Item item,
             EntityTO entityTO,
-            List<Object> values);
+            List<Object> values) {
+
+        return values;
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationActions.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationActions.java
index cb6d643..d21edea 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationActions.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationActions.java
@@ -24,9 +24,15 @@ import org.identityconnectors.framework.common.objects.ConnectorObject;
 
 public interface PropagationActions {
 
-    void before(PropagationTask task, ConnectorObject beforeObj);
+    default void before(PropagationTask task, ConnectorObject beforeObj) {
+        // do nothing
+    }
 
-    void onError(PropagationTask task, TaskExec execution, Exception error);
+    default void onError(PropagationTask task, TaskExec execution, Exception error) {
+        // do nothing
+    }
 
-    void after(PropagationTask task, TaskExec execution, ConnectorObject afterObj);
+    default void after(PropagationTask task, TaskExec execution, ConnectorObject afterObj) {
+        // do nothing
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ProvisioningActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ProvisioningActions.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ProvisioningActions.java
index 1470ac1..ff3a3e4 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ProvisioningActions.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ProvisioningActions.java
@@ -28,7 +28,9 @@ public interface ProvisioningActions {
      * @param profile provisioning profile
      * @throws JobExecutionException in case of generic failure
      */
-    void beforeAll(final ProvisioningProfile<?, ?> profile) throws JobExecutionException;
+    default void beforeAll(final ProvisioningProfile<?, ?> profile) throws JobExecutionException {
+        // do nothing
+    }
 
     /**
      * Action to be executed after the provisioning (push / pull) task completion.
@@ -36,5 +38,7 @@ public interface ProvisioningActions {
      * @param profile provisioning profile
      * @throws JobExecutionException in case of generic failure
      */
-    void afterAll(final ProvisioningProfile<?, ?> profile) throws JobExecutionException;
+    default void afterAll(final ProvisioningProfile<?, ?> profile) throws JobExecutionException {
+        // do nothing        
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PullActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PullActions.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PullActions.java
index b2907c4..2732ce7 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PullActions.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PullActions.java
@@ -41,10 +41,13 @@ public interface PullActions extends ProvisioningActions {
      * @return pull information, possibly altered.
      * @throws JobExecutionException in case of generic failure
      */
-    SyncDelta beforeProvision(
+    default SyncDelta beforeProvision(
             ProvisioningProfile<?, ?> profile,
             SyncDelta delta,
-            EntityTO entity) throws JobExecutionException;
+            EntityTO entity) throws JobExecutionException {
+
+        return delta;
+    }
 
     /**
      * Action to be executed before creating (and linking to the resource) a pulled entity locally.
@@ -57,10 +60,13 @@ public interface PullActions extends ProvisioningActions {
      * @return pull information, possibly altered.
      * @throws JobExecutionException in case of generic failure
      */
-    SyncDelta beforeAssign(
+    default SyncDelta beforeAssign(
             ProvisioningProfile<?, ?> profile,
             SyncDelta delta,
-            EntityTO entity) throws JobExecutionException;
+            EntityTO entity) throws JobExecutionException {
+
+        return delta;
+    }
 
     /**
      * Action to be executed before unlinking resource from the pulled entity and de-provisioning.
@@ -73,10 +79,13 @@ public interface PullActions extends ProvisioningActions {
      * @return pull information, possibly altered.
      * @throws JobExecutionException in case of generic failure
      */
-    SyncDelta beforeUnassign(
+    default SyncDelta beforeUnassign(
             ProvisioningProfile<?, ?> profile,
             SyncDelta delta,
-            EntityTO entity) throws JobExecutionException;
+            EntityTO entity) throws JobExecutionException {
+
+        return delta;
+    }
 
     /**
      * Action to be executed before de-provisioning action only.
@@ -89,10 +98,13 @@ public interface PullActions extends ProvisioningActions {
      * @return pull information, possibly altered.
      * @throws JobExecutionException in case of generic failure
      */
-    SyncDelta beforeDeprovision(
+    default SyncDelta beforeDeprovision(
             ProvisioningProfile<?, ?> profile,
             SyncDelta delta,
-            EntityTO entity) throws JobExecutionException;
+            EntityTO entity) throws JobExecutionException {
+
+        return delta;
+    }
 
     /**
      * Action to be executed before unlinking resource from the pulled entity.
@@ -105,10 +117,13 @@ public interface PullActions extends ProvisioningActions {
      * @return pull information, possibly altered.
      * @throws JobExecutionException in case of generic failure
      */
-    SyncDelta beforeUnlink(
+    default SyncDelta beforeUnlink(
             ProvisioningProfile<?, ?> profile,
             SyncDelta delta,
-            EntityTO entity) throws JobExecutionException;
+            EntityTO entity) throws JobExecutionException {
+
+        return delta;
+    }
 
     /**
      * Action to be executed before linking resource to the pulled entity.
@@ -121,10 +136,13 @@ public interface PullActions extends ProvisioningActions {
      * @return pull information, possibly altered.
      * @throws JobExecutionException in case of generic failure
      */
-    SyncDelta beforeLink(
+    default SyncDelta beforeLink(
             ProvisioningProfile<?, ?> profile,
             SyncDelta delta,
-            EntityTO entity) throws JobExecutionException;
+            EntityTO entity) throws JobExecutionException {
+
+        return delta;
+    }
 
     /**
      * Action to be executed before to update a pulled entity locally.
@@ -139,12 +157,14 @@ public interface PullActions extends ProvisioningActions {
      * @return pull information used for logging and to be passed to the 'after' method.
      * @throws JobExecutionException in case of generic failure.
      */
-    <P extends AnyPatch> SyncDelta beforeUpdate(
+    default <P extends AnyPatch> SyncDelta beforeUpdate(
             ProvisioningProfile<?, ?> profile,
             SyncDelta delta,
             EntityTO entityTO,
-            P anyPatch)
-            throws JobExecutionException;
+            P anyPatch) throws JobExecutionException {
+
+        return delta;
+    }
 
     /**
      * Action to be executed before to delete a pulled entity locally.
@@ -155,10 +175,13 @@ public interface PullActions extends ProvisioningActions {
      * @return pull information used for logging and to be passed to the 'after' method.
      * @throws JobExecutionException in case of generic failure
      */
-    SyncDelta beforeDelete(
+    default SyncDelta beforeDelete(
             ProvisioningProfile<?, ?> profile,
             SyncDelta delta,
-            EntityTO entity) throws JobExecutionException;
+            EntityTO entity) throws JobExecutionException {
+
+        return delta;
+    }
 
     /**
      * Action to be executed after each local entity pull.
@@ -170,11 +193,14 @@ public interface PullActions extends ProvisioningActions {
      * @param result global pull results at the current pull step
      * @throws JobExecutionException in case of generic failure
      */
-    void after(
+    default void after(
             ProvisioningProfile<?, ?> profile,
             SyncDelta delta,
             EntityTO entity,
-            ProvisioningReport result) throws JobExecutionException;
+            ProvisioningReport result) throws JobExecutionException {
+
+        // do nothing
+    }
 
     /**
      * Action to be executed in case an exception is thrown during pull.
@@ -186,8 +212,11 @@ public interface PullActions extends ProvisioningActions {
      * @return an instance of the given exception type is that is to be thrown; {@code NULL} otherwise
      * @throws JobExecutionException in case of generic failure
      */
-    IgnoreProvisionException onError(
+    default IgnoreProvisionException onError(
             ProvisioningProfile<?, ?> profile,
             SyncDelta delta,
-            Exception e) throws JobExecutionException;
+            Exception e) throws JobExecutionException {
+
+        return null;
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PushActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PushActions.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PushActions.java
index 592c18b..1642b0e 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PushActions.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PushActions.java
@@ -35,9 +35,12 @@ public interface PushActions extends ProvisioningActions {
      * @return entity.
      * @throws JobExecutionException in case of generic failure
      */
-    Entity beforeAssign(
+    default Entity beforeAssign(
             ProvisioningProfile<?, ?> profile,
-            Entity entity) throws JobExecutionException;
+            Entity entity) throws JobExecutionException {
+
+        return entity;
+    }
 
     /**
      * Action to be executed before to provision a pushed entity to the resource.
@@ -47,9 +50,12 @@ public interface PushActions extends ProvisioningActions {
      * @return entity.
      * @throws JobExecutionException in case of generic failure
      */
-    Entity beforeProvision(
+    default Entity beforeProvision(
             ProvisioningProfile<?, ?> profile,
-            Entity entity) throws JobExecutionException;
+            Entity entity) throws JobExecutionException {
+
+        return entity;
+    }
 
     /**
      * Action to be executed before to update a pushed entity on the resource.
@@ -59,9 +65,12 @@ public interface PushActions extends ProvisioningActions {
      * @return entity.
      * @throws JobExecutionException in case of generic failure
      */
-    Entity beforeUpdate(
+    default Entity beforeUpdate(
             ProvisioningProfile<?, ?> profile,
-            Entity entity) throws JobExecutionException;
+            Entity entity) throws JobExecutionException {
+
+        return entity;
+    }
 
     /**
      * Action to be executed before to link a pushed entity to the resource.
@@ -71,9 +80,12 @@ public interface PushActions extends ProvisioningActions {
      * @return entity.
      * @throws JobExecutionException in case of generic failure
      */
-    Entity beforeLink(
+    default Entity beforeLink(
             ProvisioningProfile<?, ?> profile,
-            Entity entity) throws JobExecutionException;
+            Entity entity) throws JobExecutionException {
+
+        return entity;
+    }
 
     /**
      * Action to be executed before to unlink a pushed entity from the resource.
@@ -83,9 +95,12 @@ public interface PushActions extends ProvisioningActions {
      * @return entity.
      * @throws JobExecutionException in case of generic failure
      */
-    Entity beforeUnlink(
+    default Entity beforeUnlink(
             ProvisioningProfile<?, ?> profile,
-            Entity entity) throws JobExecutionException;
+            Entity entity) throws JobExecutionException {
+
+        return entity;
+    }
 
     /**
      * Action to be executed before to unassign a pushed entity from the resource.
@@ -95,9 +110,12 @@ public interface PushActions extends ProvisioningActions {
      * @return entity.
      * @throws JobExecutionException in case of generic failure
      */
-    Entity beforeUnassign(
+    default Entity beforeUnassign(
             ProvisioningProfile<?, ?> profile,
-            Entity entity) throws JobExecutionException;
+            Entity entity) throws JobExecutionException {
+
+        return entity;
+    }
 
     /**
      * Action to be executed before to unassign a pushed entity from the resource.
@@ -107,9 +125,12 @@ public interface PushActions extends ProvisioningActions {
      * @return entity.
      * @throws JobExecutionException in case of generic failure
      */
-    Entity beforeDeprovision(
+    default Entity beforeDeprovision(
             ProvisioningProfile<?, ?> profile,
-            Entity entity) throws JobExecutionException;
+            Entity entity) throws JobExecutionException {
+
+        return entity;
+    }
 
     /**
      * Action to be executed before delete a pushed entity locally and from the resource.
@@ -119,9 +140,12 @@ public interface PushActions extends ProvisioningActions {
      * @return entity.
      * @throws JobExecutionException in case of generic failure
      */
-    Entity beforeDelete(
+    default Entity beforeDelete(
             ProvisioningProfile<?, ?> profile,
-            Entity entity) throws JobExecutionException;
+            Entity entity) throws JobExecutionException {
+
+        return entity;
+    }
 
     /**
      * Action to be executed after entity push goes on error.
@@ -132,11 +156,14 @@ public interface PushActions extends ProvisioningActions {
      * @param error error being reported
      * @throws JobExecutionException in case of generic failure
      */
-    void onError(
+    default void onError(
             ProvisioningProfile<?, ?> profile,
             Entity entity,
             ProvisioningReport result,
-            Exception error) throws JobExecutionException;
+            Exception error) throws JobExecutionException {
+
+        // do nothing
+    }
 
     /**
      * Action to be executed after each local entity push.
@@ -146,8 +173,11 @@ public interface PushActions extends ProvisioningActions {
      * @param result operation result.
      * @throws JobExecutionException in case of generic failure
      */
-    void after(
+    default void after(
             ProvisioningProfile<?, ?> profile,
             Entity entity,
-            ProvisioningReport result) throws JobExecutionException;
+            ProvisioningReport result) throws JobExecutionException {
+
+        // do nothing
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ReconciliationFilterBuilder.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ReconciliationFilterBuilder.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ReconciliationFilterBuilder.java
index 579e5ca..73dc332 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ReconciliationFilterBuilder.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ReconciliationFilterBuilder.java
@@ -19,6 +19,7 @@
 package org.apache.syncope.core.provisioning.api.pushpull;
 
 import org.identityconnectors.framework.common.objects.filter.Filter;
+import org.identityconnectors.framework.impl.api.local.operations.FilteredResultsHandler;
 
 /**
  * Interface to be implemented for performing filtered reconciliation of a
@@ -26,5 +27,9 @@ import org.identityconnectors.framework.common.objects.filter.Filter;
  */
 public interface ReconciliationFilterBuilder {
 
-    Filter build();
+    static final FilteredResultsHandler.PassThroughFilter PASS_THROUGH = new FilteredResultsHandler.PassThroughFilter();
+
+    default Filter build() {
+        return PASS_THROUGH;
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultLogicActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultLogicActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultLogicActions.java
deleted file mode 100644
index 7052c70..0000000
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultLogicActions.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.core.provisioning.java;
-
-import org.apache.syncope.common.lib.patch.AnyPatch;
-import org.apache.syncope.common.lib.to.AnyTO;
-import org.apache.syncope.core.provisioning.api.LogicActions;
-
-public class DefaultLogicActions implements LogicActions {
-
-    @Override
-    public <A extends AnyTO> A beforeCreate(final A input) {
-        return input;
-    }
-
-    @Override
-    public <A extends AnyTO> A afterCreate(final A input) {
-        return input;
-    }
-
-    @Override
-    public <P extends AnyPatch> P beforeUpdate(final P input) {
-        return input;
-    }
-
-    @Override
-    public <A extends AnyTO> A afterUpdate(final A input) {
-        return input;
-    }
-
-    @Override
-    public <A extends AnyTO> A beforeDelete(final A input) {
-        return input;
-    }
-
-    @Override
-    public <A extends AnyTO> A afterDelete(final A input) {
-        return input;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/DefaultItemTransformer.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/DefaultItemTransformer.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/DefaultItemTransformer.java
deleted file mode 100644
index 230962a..0000000
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/DefaultItemTransformer.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.core.provisioning.java.data;
-
-import java.util.List;
-import org.apache.syncope.common.lib.to.EntityTO;
-import org.apache.syncope.core.persistence.api.entity.Entity;
-import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
-import org.apache.syncope.core.persistence.api.entity.resource.Item;
-import org.apache.syncope.core.provisioning.api.data.ItemTransformer;
-import org.springframework.transaction.annotation.Transactional;
-
-/**
- * Default (empty) implementation of {@link ItemTransformer}.
- */
-@Transactional(readOnly = true)
-public class DefaultItemTransformer implements ItemTransformer {
-
-    @Override
-    public List<PlainAttrValue> beforePropagation(
-            final Item item, final Entity entity, final List<PlainAttrValue> values) {
-
-        return values;
-    }
-
-    @Override
-    public List<Object> beforePull(final Item item, final EntityTO entityTO, final List<Object> values) {
-        return values;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/JEXLItemTransformerImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/JEXLItemTransformerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/JEXLItemTransformerImpl.java
index ae31618..91b4742 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/JEXLItemTransformerImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/JEXLItemTransformerImpl.java
@@ -32,7 +32,7 @@ import org.apache.syncope.core.persistence.api.entity.resource.Item;
 import org.apache.syncope.core.provisioning.java.jexl.JexlUtils;
 import org.apache.syncope.core.provisioning.api.data.JEXLItemTransformer;
 
-public class JEXLItemTransformerImpl extends DefaultItemTransformer implements JEXLItemTransformer {
+public class JEXLItemTransformerImpl implements JEXLItemTransformer {
 
     private String propagationJEXL;
 
@@ -55,7 +55,7 @@ public class JEXLItemTransformerImpl extends DefaultItemTransformer implements J
             final List<PlainAttrValue> values) {
 
         if (StringUtils.isNotBlank(propagationJEXL) && values != null) {
-            for (PlainAttrValue value : values) {
+            values.forEach(value -> {
                 JexlContext jexlContext = new MapContext();
                 if (entity != null) {
                     JexlUtils.addFieldsToContext(entity, jexlContext);
@@ -67,12 +67,12 @@ public class JEXLItemTransformerImpl extends DefaultItemTransformer implements J
                 jexlContext.set("value", value.getValueAsString());
 
                 value.setStringValue(JexlUtils.evaluate(propagationJEXL, jexlContext));
-            }
+            });
 
             return values;
         }
 
-        return super.beforePropagation(item, entity, values);
+        return values;
     }
 
     @Override
@@ -83,7 +83,7 @@ public class JEXLItemTransformerImpl extends DefaultItemTransformer implements J
 
         if (StringUtils.isNotBlank(pullJEXL) && values != null) {
             List<Object> newValues = new ArrayList<>(values.size());
-            for (Object value : values) {
+            values.forEach(value -> {
                 JexlContext jexlContext = new MapContext();
                 jexlContext.set("value", value);
                 if (entityTO instanceof AnyTO) {
@@ -91,12 +91,12 @@ public class JEXLItemTransformerImpl extends DefaultItemTransformer implements J
                 } else {
                     newValues.add(JexlUtils.evaluate(pullJEXL, jexlContext));
                 }
-            }
+            });
 
             return newValues;
         }
 
-        return super.beforePull(item, entityTO, values);
+        return values;
     }
 
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DBPasswordPropagationActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DBPasswordPropagationActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DBPasswordPropagationActions.java
index 88489aa..7d81f11 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DBPasswordPropagationActions.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DBPasswordPropagationActions.java
@@ -29,6 +29,7 @@ import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.ConnInstance;
 import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
 import org.apache.syncope.core.persistence.api.entity.user.User;
+import org.apache.syncope.core.provisioning.api.propagation.PropagationActions;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
 import org.identityconnectors.common.security.GuardedString;
 import org.identityconnectors.framework.common.objects.Attribute;
@@ -44,7 +45,7 @@ import org.springframework.transaction.annotation.Transactional;
  * added a password. The CipherAlgorithm associated with the password must match the password
  * cipher algorithm property of the DB Connector.
  */
-public class DBPasswordPropagationActions extends DefaultPropagationActions {
+public class DBPasswordPropagationActions implements PropagationActions {
 
     private static final String CLEARTEXT = "CLEARTEXT";
 
@@ -54,8 +55,6 @@ public class DBPasswordPropagationActions extends DefaultPropagationActions {
     @Transactional(readOnly = true)
     @Override
     public void before(final PropagationTask task, final ConnectorObject beforeObj) {
-        super.before(task, beforeObj);
-
         if (AnyTypeKind.USER == task.getAnyTypeKind()) {
             User user = userDAO.find(task.getEntityKey());
 
@@ -93,7 +92,7 @@ public class DBPasswordPropagationActions extends DefaultPropagationActions {
                     @Override
                     public boolean evaluate(final ConnConfProperty property) {
                         return "cipherAlgorithm".equals(property.getSchema().getName())
-                        && property.getValues() != null && !property.getValues().isEmpty();
+                                && property.getValues() != null && !property.getValues().isEmpty();
                     }
                 });
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DefaultPropagationActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DefaultPropagationActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DefaultPropagationActions.java
deleted file mode 100644
index 157fdc1..0000000
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DefaultPropagationActions.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.core.provisioning.java.propagation;
-
-import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
-import org.apache.syncope.core.persistence.api.entity.task.TaskExec;
-import org.apache.syncope.core.provisioning.api.propagation.PropagationActions;
-import org.identityconnectors.framework.common.objects.ConnectorObject;
-
-/**
- * Default (empty) implementation of {@link PropagationActions}.
- */
-public abstract class DefaultPropagationActions implements PropagationActions {
-
-    @Override
-    public void before(final PropagationTask task, final ConnectorObject beforeObj) {
-        // do nothing
-    }
-
-    @Override
-    public void onError(final PropagationTask task, final TaskExec execution, final Exception error) {
-        // do nothing
-    }
-
-    @Override
-    public void after(final PropagationTask task, final TaskExec execution, final ConnectorObject afterObj) {
-        // do nothing
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java
index c392db2..b3d05f4 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java
@@ -34,6 +34,7 @@ import org.apache.syncope.core.provisioning.java.jexl.JexlUtils;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
+import org.apache.syncope.core.provisioning.api.propagation.PropagationActions;
 import org.identityconnectors.framework.common.objects.Attribute;
 import org.identityconnectors.framework.common.objects.AttributeBuilder;
 import org.identityconnectors.framework.common.objects.AttributeUtil;
@@ -49,7 +50,7 @@ import org.springframework.transaction.annotation.Transactional;
  *
  * @see org.apache.syncope.core.provisioning.java.pushpull.LDAPMembershipPullActions
  */
-public class LDAPMembershipPropagationActions extends DefaultPropagationActions {
+public class LDAPMembershipPropagationActions implements PropagationActions {
 
     protected static final Logger LOG = LoggerFactory.getLogger(LDAPMembershipPropagationActions.class);
 
@@ -74,8 +75,6 @@ public class LDAPMembershipPropagationActions extends DefaultPropagationActions
     @Transactional(readOnly = true)
     @Override
     public void before(final PropagationTask task, final ConnectorObject beforeObj) {
-        super.before(task, beforeObj);
-
         Provision provision = task.getResource().getProvision(anyTypeDAO.findGroup());
         if (AnyTypeKind.USER == task.getAnyTypeKind()
                 && provision != null && provision.getMapping() != null

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java
index 5d5c5b1..5dcdf98 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java
@@ -29,6 +29,7 @@ import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.ConnInstance;
 import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
 import org.apache.syncope.core.persistence.api.entity.user.User;
+import org.apache.syncope.core.provisioning.api.propagation.PropagationActions;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
 import org.identityconnectors.common.security.GuardedString;
 import org.identityconnectors.framework.common.objects.Attribute;
@@ -46,7 +47,7 @@ import org.springframework.transaction.annotation.Transactional;
  * added a password. The CipherAlgorithm associated with the password must match the password
  * hash algorithm property of the LDAP Connector.
  */
-public class LDAPPasswordPropagationActions extends DefaultPropagationActions {
+public class LDAPPasswordPropagationActions implements PropagationActions {
 
     private static final String CLEARTEXT = "CLEARTEXT";
 
@@ -56,8 +57,6 @@ public class LDAPPasswordPropagationActions extends DefaultPropagationActions {
     @Transactional(readOnly = true)
     @Override
     public void before(final PropagationTask task, final ConnectorObject beforeObj) {
-        super.before(task, beforeObj);
-
         if (AnyTypeKind.USER == task.getAnyTypeKind()) {
             User user = userDAO.find(task.getEntityKey());
 
@@ -99,7 +98,7 @@ public class LDAPPasswordPropagationActions extends DefaultPropagationActions {
                     @Override
                     public boolean evaluate(final ConnConfProperty property) {
                         return "passwordHashAlgorithm".equals(property.getSchema().getName())
-                        && property.getValues() != null && !property.getValues().isEmpty();
+                                && property.getValues() != null && !property.getValues().isEmpty();
                     }
                 });
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DBPasswordPullActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DBPasswordPullActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DBPasswordPullActions.java
index d5b2093..36b33f7 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DBPasswordPullActions.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DBPasswordPullActions.java
@@ -33,6 +33,7 @@ import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.Connector;
 import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningProfile;
 import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningReport;
+import org.apache.syncope.core.provisioning.api.pushpull.PullActions;
 import org.identityconnectors.framework.common.objects.SyncDelta;
 import org.quartz.JobExecutionException;
 import org.slf4j.Logger;
@@ -45,7 +46,7 @@ import org.springframework.transaction.annotation.Transactional;
  * import passwords from a Database backend, where the passwords are hashed according to the password cipher algorithm
  * property of the (DB) Connector and HEX-encoded.
  */
-public class DBPasswordPullActions extends DefaultPullActions {
+public class DBPasswordPullActions implements PullActions {
 
     private static final Logger LOG = LoggerFactory.getLogger(DBPasswordPullActions.class);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultPullActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultPullActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultPullActions.java
deleted file mode 100644
index 9344835..0000000
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultPullActions.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.core.provisioning.java.pushpull;
-
-import org.apache.syncope.common.lib.patch.AnyPatch;
-import org.apache.syncope.common.lib.to.EntityTO;
-import org.apache.syncope.core.provisioning.api.pushpull.IgnoreProvisionException;
-import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningProfile;
-import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningReport;
-import org.identityconnectors.framework.common.objects.SyncDelta;
-import org.quartz.JobExecutionException;
-import org.apache.syncope.core.provisioning.api.pushpull.PullActions;
-
-/**
- * Default (empty) implementation of {@link PullActions}.
- */
-public abstract class DefaultPullActions implements PullActions {
-
-    @Override
-    public void beforeAll(final ProvisioningProfile<?, ?> profile) throws JobExecutionException {
-    }
-
-    @Override
-    public <P extends AnyPatch> SyncDelta beforeUpdate(
-            final ProvisioningProfile<?, ?> profile,
-            final SyncDelta delta,
-            final EntityTO entityTO,
-            final P anyMod) throws JobExecutionException {
-
-        return delta;
-    }
-
-    @Override
-    public SyncDelta beforeDelete(
-            final ProvisioningProfile<?, ?> profile, final SyncDelta delta, final EntityTO entity)
-            throws JobExecutionException {
-
-        return delta;
-    }
-
-    @Override
-    public SyncDelta beforeAssign(
-            final ProvisioningProfile<?, ?> profile, final SyncDelta delta, final EntityTO entity)
-            throws JobExecutionException {
-
-        return delta;
-    }
-
-    @Override
-    public SyncDelta beforeProvision(
-            final ProvisioningProfile<?, ?> profile, final SyncDelta delta, final EntityTO entity)
-            throws JobExecutionException {
-
-        return delta;
-    }
-
-    @Override
-    public SyncDelta beforeLink(
-            final ProvisioningProfile<?, ?> profile, final SyncDelta delta, final EntityTO entity)
-            throws JobExecutionException {
-
-        return delta;
-    }
-
-    @Override
-    public SyncDelta beforeUnassign(
-            final ProvisioningProfile<?, ?> profile, final SyncDelta delta, final EntityTO entity)
-            throws JobExecutionException {
-
-        return delta;
-    }
-
-    @Override
-    public SyncDelta beforeDeprovision(
-            final ProvisioningProfile<?, ?> profile, final SyncDelta delta, final EntityTO entity)
-            throws JobExecutionException {
-
-        return delta;
-    }
-
-    @Override
-    public SyncDelta beforeUnlink(
-            final ProvisioningProfile<?, ?> profile, final SyncDelta delta, final EntityTO entity)
-            throws JobExecutionException {
-
-        return delta;
-    }
-
-    @Override
-    public void after(
-            final ProvisioningProfile<?, ?> profile, final SyncDelta delta, final EntityTO entity,
-            final ProvisioningReport result)
-            throws JobExecutionException {
-    }
-
-    @Override
-    public IgnoreProvisionException onError(
-            final ProvisioningProfile<?, ?> profile,
-            final SyncDelta delta,
-            final Exception e) throws JobExecutionException {
-
-        return null;
-    }
-
-    @Override
-    public void afterAll(final ProvisioningProfile<?, ?> profile)
-            throws JobExecutionException {
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultPushActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultPushActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultPushActions.java
deleted file mode 100644
index eea4980..0000000
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultPushActions.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.core.provisioning.java.pushpull;
-
-import org.apache.syncope.core.persistence.api.entity.Entity;
-import org.apache.syncope.core.provisioning.api.pushpull.PushActions;
-import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningProfile;
-import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningReport;
-import org.quartz.JobExecutionException;
-
-/**
- * Default (empty) implementation of PushActions.
- */
-public abstract class DefaultPushActions implements PushActions {
-
-    @Override
-    public void beforeAll(final ProvisioningProfile<?, ?> profile) throws JobExecutionException {
-    }
-
-    @Override
-    public Entity beforeAssign(final ProvisioningProfile<?, ?> profile, final Entity entity)
-            throws JobExecutionException {
-
-        return entity;
-    }
-
-    @Override
-    public Entity beforeProvision(final ProvisioningProfile<?, ?> profile, final Entity entity)
-            throws JobExecutionException {
-
-        return entity;
-    }
-
-    @Override
-    public Entity beforeLink(final ProvisioningProfile<?, ?> profile, final Entity entity)
-            throws JobExecutionException {
-
-        return entity;
-    }
-
-    @Override
-    public Entity beforeUnassign(final ProvisioningProfile<?, ?> profile, final Entity entity)
-            throws JobExecutionException {
-
-        return entity;
-    }
-
-    @Override
-    public Entity beforeDeprovision(final ProvisioningProfile<?, ?> profile, final Entity entity)
-            throws JobExecutionException {
-
-        return entity;
-    }
-
-    @Override
-    public Entity beforeUnlink(final ProvisioningProfile<?, ?> profile, final Entity entity)
-            throws JobExecutionException {
-
-        return entity;
-    }
-
-    @Override
-    public void onError(
-            final ProvisioningProfile<?, ?> profile, final Entity entity, final ProvisioningReport result,
-            final Exception error) throws JobExecutionException {
-
-        // do nothing
-    }
-
-    @Override
-    public void after(
-            final ProvisioningProfile<?, ?> profile, final Entity entity, final ProvisioningReport result)
-            throws JobExecutionException {
-
-        // do nothing
-    }
-
-    @Override
-    public void afterAll(final ProvisioningProfile<?, ?> profile)
-            throws JobExecutionException {
-
-        // do nothing
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultReconciliationFilterBuilder.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultReconciliationFilterBuilder.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultReconciliationFilterBuilder.java
deleted file mode 100644
index c46c0fb..0000000
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultReconciliationFilterBuilder.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.core.provisioning.java.pushpull;
-
-import static org.identityconnectors.framework.impl.api.local.operations.FilteredResultsHandler.PassThroughFilter;
-
-import org.identityconnectors.framework.common.objects.filter.Filter;
-import org.apache.syncope.core.provisioning.api.pushpull.ReconciliationFilterBuilder;
-
-/**
- * Default (pass-through) implementation of {@link ReconciliationFilterBuilder}.
- */
-public abstract class DefaultReconciliationFilterBuilder implements ReconciliationFilterBuilder {
-
-    private static final PassThroughFilter PASS_THROUGH = new PassThroughFilter();
-
-    @Override
-    public Filter build() {
-        return PASS_THROUGH;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPPasswordPullActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPPasswordPullActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPPasswordPullActions.java
index f11a20e..8a9f1da 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPPasswordPullActions.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPPasswordPullActions.java
@@ -28,6 +28,7 @@ import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningProfile;
 import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningReport;
+import org.apache.syncope.core.provisioning.api.pushpull.PullActions;
 import org.identityconnectors.framework.common.objects.SyncDelta;
 import org.quartz.JobExecutionException;
 import org.slf4j.Logger;
@@ -41,7 +42,7 @@ import org.springframework.transaction.annotation.Transactional;
  * A {@link org.apache.syncope.core.provisioning.api.pushpull.PullActions} implementation which allows the ability to
  * import passwords from an LDAP backend that are hashed.
  */
-public class LDAPPasswordPullActions extends DefaultPullActions {
+public class LDAPPasswordPullActions implements PullActions {
 
     protected static final Logger LOG = LoggerFactory.getLogger(LDAPPasswordPullActions.class);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SchedulingPullActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SchedulingPullActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SchedulingPullActions.java
index 841b226..5daa7e0 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SchedulingPullActions.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SchedulingPullActions.java
@@ -22,6 +22,7 @@ import java.util.Map;
 import java.util.UUID;
 import org.apache.syncope.core.provisioning.api.job.JobManager;
 import org.apache.syncope.core.provisioning.api.job.JobNamer;
+import org.apache.syncope.core.provisioning.api.pushpull.PullActions;
 import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.quartz.Job;
@@ -40,7 +41,7 @@ import org.springframework.scheduling.quartz.SchedulerFactoryBean;
  *
  * @see LDAPMembershipPullActions for a concrete example
  */
-public abstract class SchedulingPullActions extends DefaultPullActions {
+public abstract class SchedulingPullActions implements PullActions {
 
     @Autowired
     protected SchedulerFactoryBean scheduler;

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/ext/saml2sp/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/SAML2IdPActions.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/SAML2IdPActions.java b/ext/saml2sp/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/SAML2IdPActions.java
index 6f23804..d8ec455 100644
--- a/ext/saml2sp/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/SAML2IdPActions.java
+++ b/ext/saml2sp/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/SAML2IdPActions.java
@@ -24,11 +24,19 @@ import org.apache.syncope.common.lib.to.UserTO;
 
 public interface SAML2IdPActions {
 
-    UserTO beforeCreate(UserTO input, SAML2LoginResponseTO loginResponse);
+    default UserTO beforeCreate(UserTO input, SAML2LoginResponseTO loginResponse) {
+        return input;
+    }
 
-    UserTO afterCreate(UserTO input, SAML2LoginResponseTO loginResponse);
+    default UserTO afterCreate(UserTO input, SAML2LoginResponseTO loginResponse) {
+        return input;
+    }
 
-    UserPatch beforeUpdate(UserPatch input, SAML2LoginResponseTO loginResponse);
+    default UserPatch beforeUpdate(UserPatch input, SAML2LoginResponseTO loginResponse) {
+        return input;
+    }
 
-    UserTO afterUpdate(UserTO input, SAML2LoginResponseTO loginResponse);
+    default UserTO afterUpdate(UserTO input, SAML2LoginResponseTO loginResponse) {
+        return input;
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/ext/saml2sp/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultSAML2IdPActions.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultSAML2IdPActions.java b/ext/saml2sp/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultSAML2IdPActions.java
deleted file mode 100644
index ba5fc40..0000000
--- a/ext/saml2sp/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultSAML2IdPActions.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.core.provisioning.java;
-
-import org.apache.syncope.common.lib.patch.UserPatch;
-import org.apache.syncope.common.lib.to.SAML2LoginResponseTO;
-import org.apache.syncope.common.lib.to.UserTO;
-import org.apache.syncope.core.provisioning.api.SAML2IdPActions;
-
-public class DefaultSAML2IdPActions implements SAML2IdPActions {
-
-    @Override
-    public UserTO beforeCreate(final UserTO input, final SAML2LoginResponseTO loginResponse) {
-        return input;
-    }
-
-    @Override
-    public UserTO afterCreate(final UserTO input, final SAML2LoginResponseTO loginResponse) {
-        return input;
-    }
-
-    @Override
-    public UserPatch beforeUpdate(final UserPatch input, final SAML2LoginResponseTO loginResponse) {
-        return input;
-    }
-
-    @Override
-    public UserTO afterUpdate(final UserTO input, final SAML2LoginResponseTO loginResponse) {
-        return input;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/DoubleValueLogicActions.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/DoubleValueLogicActions.java b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/DoubleValueLogicActions.java
index 2ae268e..6c79367 100644
--- a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/DoubleValueLogicActions.java
+++ b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/DoubleValueLogicActions.java
@@ -24,12 +24,12 @@ import org.apache.syncope.common.lib.patch.AnyPatch;
 import org.apache.syncope.common.lib.patch.AttrPatch;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.AttrTO;
-import org.apache.syncope.core.provisioning.java.DefaultLogicActions;
+import org.apache.syncope.core.provisioning.api.LogicActions;
 
 /**
  * Class for integration tests: transform (by making it double) any attribute value for defined schema.
  */
-public class DoubleValueLogicActions extends DefaultLogicActions {
+public class DoubleValueLogicActions implements LogicActions {
 
     private static final String NAME = "makeItDouble";
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/ITImplementationLookup.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/ITImplementationLookup.java b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/ITImplementationLookup.java
index 4209734..32b3357 100644
--- a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/ITImplementationLookup.java
+++ b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/ITImplementationLookup.java
@@ -52,8 +52,6 @@ import org.apache.syncope.core.persistence.jpa.attrvalue.validation.BasicValidat
 import org.apache.syncope.core.persistence.jpa.attrvalue.validation.EmailAddressValidator;
 import org.apache.syncope.core.persistence.jpa.dao.DefaultAccountRule;
 import org.apache.syncope.core.persistence.jpa.dao.DefaultPasswordRule;
-import org.apache.syncope.core.provisioning.java.DefaultLogicActions;
-import org.apache.syncope.core.provisioning.java.data.DefaultItemTransformer;
 import org.apache.syncope.core.provisioning.java.propagation.DBPasswordPropagationActions;
 import org.apache.syncope.core.provisioning.java.propagation.LDAPMembershipPropagationActions;
 import org.apache.syncope.core.provisioning.java.propagation.LDAPPasswordPropagationActions;
@@ -100,7 +98,6 @@ public class ITImplementationLookup implements ImplementationLookup {
 
             classNames = new HashSet<>();
             classNames.add(PrefixItemTransformer.class.getName());
-            classNames.add(DefaultItemTransformer.class.getName());
             put(Type.ITEM_TRANSFORMER, classNames);
 
             classNames = new HashSet<>();
@@ -113,7 +110,6 @@ public class ITImplementationLookup implements ImplementationLookup {
 
             classNames = new HashSet<>();
             classNames.add(DoubleValueLogicActions.class.getName());
-            classNames.add(DefaultLogicActions.class.getName());
             put(Type.LOGIC_ACTIONS, classNames);
 
             classNames = new HashSet<>();

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/PrefixItemTransformer.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/PrefixItemTransformer.java b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/PrefixItemTransformer.java
index 80a386e..07f7968 100644
--- a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/PrefixItemTransformer.java
+++ b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/PrefixItemTransformer.java
@@ -25,9 +25,9 @@ import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.syncope.core.persistence.api.entity.Entity;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.resource.Item;
-import org.apache.syncope.core.provisioning.java.data.DefaultItemTransformer;
+import org.apache.syncope.core.provisioning.api.data.ItemTransformer;
 
-public class PrefixItemTransformer extends DefaultItemTransformer {
+public class PrefixItemTransformer implements ItemTransformer {
 
     public static final String PREFIX = "PREFIX_";
 
@@ -38,7 +38,7 @@ public class PrefixItemTransformer extends DefaultItemTransformer {
             final List<PlainAttrValue> values) {
 
         if (values == null || values.isEmpty() || values.get(0).getStringValue() == null) {
-            return super.beforePropagation(item, entity, values);
+            return values;
         } else {
             String value = values.get(0).getStringValue();
             values.get(0).setStringValue(PREFIX + value);
@@ -54,7 +54,7 @@ public class PrefixItemTransformer extends DefaultItemTransformer {
             final List<Object> values) {
 
         if (values == null || values.isEmpty() || values.get(0) == null) {
-            return super.beforePull(item, entityTO, values);
+            return values;
         } else {
             List<Object> newValues = new ArrayList<>(values);
             newValues.set(0, StringUtils.substringAfter(values.get(0).toString(), PREFIX));

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestPullActions.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestPullActions.java b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestPullActions.java
index 72fa798..fb48c9b 100644
--- a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestPullActions.java
+++ b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestPullActions.java
@@ -28,14 +28,14 @@ import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.PatchOperation;
 import org.apache.syncope.core.provisioning.api.pushpull.IgnoreProvisionException;
 import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningProfile;
-import org.apache.syncope.core.provisioning.java.pushpull.DefaultPullActions;
+import org.apache.syncope.core.provisioning.api.pushpull.PullActions;
 import org.identityconnectors.framework.common.objects.SyncDelta;
 import org.quartz.JobExecutionException;
 
 /**
  * Test pull action.
  */
-public class TestPullActions extends DefaultPullActions {
+public class TestPullActions implements PullActions {
 
     private int counter;
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/5a1a1f06/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestReconciliationFilterBuilder.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestReconciliationFilterBuilder.java b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestReconciliationFilterBuilder.java
index 05beee2..2c392ec 100644
--- a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestReconciliationFilterBuilder.java
+++ b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestReconciliationFilterBuilder.java
@@ -18,12 +18,12 @@
  */
 package org.apache.syncope.fit.core.reference;
 
-import org.apache.syncope.core.provisioning.java.pushpull.DefaultReconciliationFilterBuilder;
+import org.apache.syncope.core.provisioning.api.pushpull.ReconciliationFilterBuilder;
 import org.identityconnectors.framework.common.objects.AttributeBuilder;
 import org.identityconnectors.framework.common.objects.filter.Filter;
 import org.identityconnectors.framework.common.objects.filter.FilterBuilder;
 
-public class TestReconciliationFilterBuilder extends DefaultReconciliationFilterBuilder {
+public class TestReconciliationFilterBuilder implements ReconciliationFilterBuilder {
 
     private static final Filter EQUALS = FilterBuilder.equalTo(AttributeBuilder.build("SURNAME", "Rossi"));