[SYNCOPE-696] Implementation provided, some clean up

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

Branch: refs/heads/SYNCOPE-156
Commit: c14a20d7422805fe5b93e40915722e3e9474ddd2
Parents: 271052a
Author: Francesco Chicchiriccò <[email protected]>
Authored: Thu Sep 24 13:47:58 2015 +0200
Committer: Francesco Chicchiriccò <[email protected]>
Committed: Thu Sep 24 13:47:58 2015 +0200

----------------------------------------------------------------------
 .../client/cli/commands/ReportCommand.java      |   3 +-
 .../client/console/rest/ReportRestClient.java   |  18 +--
 .../client/console/rest/TaskRestClient.java     |   4 +-
 .../syncope/client/lib/SyncopeClient.java       |  21 ++-
 .../lib/builders/AbstractQueryBuilder.java      |  57 ++++++++
 .../lib/builders/AnyListQueryBuilder.java       |   6 +-
 .../client/lib/builders/AnyQueryBuilder.java    |  49 +++++++
 .../client/lib/builders/ListQueryBuilder.java   |  54 -------
 .../client/lib/builders/TaskQueryBuilder.java   |  60 ++++++++
 .../common/lib/to/PropagationTaskTO.java        |  20 +--
 .../common/rest/api/beans/AbstractQuery.java    |  67 +++++++++
 .../common/rest/api/beans/AnyListQuery.java     |   2 +-
 .../syncope/common/rest/api/beans/AnyQuery.java |  40 ++++++
 .../common/rest/api/beans/ListQuery.java        |  98 -------------
 .../common/rest/api/beans/TaskQuery.java        |  64 +++++++++
 .../common/rest/api/service/JAXRSService.java   |   6 +
 .../common/rest/api/service/ReportService.java  |   8 +-
 .../common/rest/api/service/TaskService.java    |  10 +-
 .../apache/syncope/core/logic/ReportLogic.java  |  10 +-
 .../apache/syncope/core/logic/TaskLogic.java    |  25 ++--
 .../core/persistence/api/dao/ReportDAO.java     |   5 -
 .../core/persistence/api/dao/TaskDAO.java       |   8 +-
 .../api/entity/task/PropagationTask.java        |   8 +-
 .../core/persistence/jpa/dao/AbstractDAO.java   |  25 ----
 .../core/persistence/jpa/dao/JPAReportDAO.java  |  27 +---
 .../core/persistence/jpa/dao/JPATaskDAO.java    | 140 ++++++++++++++-----
 .../persistence/jpa/dao/JPATaskExecDAO.java     |   9 +-
 .../jpa/entity/task/JPAPropagationTask.java     |  20 +--
 .../entity/PropagationTaskValidator.java        |   4 +-
 .../core/persistence/jpa/inner/ReportTest.java  |   4 +-
 .../core/persistence/jpa/inner/TaskTest.java    |  19 ++-
 .../persistence/jpa/outer/ResourceTest.java     |   5 +-
 .../core/persistence/jpa/outer/TaskTest.java    |  11 +-
 .../test/resources/domains/MasterContent.xml    |  10 +-
 .../AbstractPropagationTaskExecutor.java        |  20 +--
 .../LDAPPasswordPropagationActions.java         |   2 +-
 .../propagation/PropagationManagerImpl.java     |   4 +-
 .../rest/cxf/service/ReportServiceImpl.java     |  13 +-
 .../core/rest/cxf/service/TaskServiceImpl.java  |  25 ++--
 .../fit/core/reference/AbstractTaskITCase.java  |   2 +-
 .../core/reference/PropagationTaskITCase.java   |  12 +-
 .../fit/core/reference/PushTaskITCase.java      |   2 +-
 .../fit/core/reference/ReportITCase.java        |   8 +-
 .../fit/core/reference/SchedTaskITCase.java     |   2 +-
 .../fit/core/reference/SyncTaskITCase.java      |   2 +-
 .../syncope/fit/core/reference/UserITCase.java  |  20 +--
 46 files changed, 620 insertions(+), 409 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/client/cli/src/main/java/org/apache/syncope/client/cli/commands/ReportCommand.java
----------------------------------------------------------------------
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/ReportCommand.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/ReportCommand.java
index 2ea9423..def8f50 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/ReportCommand.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/ReportCommand.java
@@ -28,7 +28,6 @@ import javax.xml.transform.TransformerConfigurationException;
 import javax.xml.transform.TransformerException;
 import org.apache.syncope.client.cli.SyncopeServices;
 import org.apache.syncope.client.cli.util.XMLUtils;
-import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.ReportExecTO;
 import org.apache.syncope.common.lib.to.ReportTO;
@@ -94,7 +93,7 @@ public class ReportCommand extends AbstractCommand {
         } else if (list) {
             LOG.debug("- report list command");
             try {
-                for (ReportTO reportTO : 
reportService.list(SyncopeClient.getListQueryBuilder().build()).getResult()) {
+                for (ReportTO reportTO : reportService.list()) {
                     System.out.println(reportTO);
                 }
             } catch (final SyncopeClientException ex) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java
index 89617df..95f3bab 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java
@@ -20,11 +20,9 @@ package org.apache.syncope.client.console.rest;
 
 import java.util.List;
 import javax.ws.rs.core.Response;
-import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.common.lib.to.ReportTO;
 import org.apache.syncope.common.lib.types.ReportExecExportFormat;
 import org.apache.syncope.common.rest.api.service.ReportService;
-import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
 import org.springframework.stereotype.Component;
 
 @Component
@@ -37,21 +35,7 @@ public class ReportRestClient extends BaseRestClient 
implements ExecutionRestCli
     }
 
     public List<ReportTO> list() {
-        return getService(ReportService.class).
-                list(SyncopeClient.getListQueryBuilder().build()).
-                getResult();
-    }
-
-    public List<ReportTO> list(final int page, final int size, final 
SortParam<String> sort) {
-        return getService(ReportService.class).
-                
list(SyncopeClient.getListQueryBuilder().page(page).size(size).orderBy(toOrderBy(sort)).build()).
-                getResult();
-    }
-
-    public int count() {
-        return getService(ReportService.class).
-                
list(SyncopeClient.getListQueryBuilder().page(1).size(1).build()).
-                getTotalCount();
+        return getService(ReportService.class).list();
     }
 
     public void create(final ReportTO reportTO) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java
index 32236a9..974b78c 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java
@@ -62,7 +62,7 @@ public class TaskRestClient extends BaseRestClient implements 
ExecutionRestClien
      */
     public int count(final String kind) {
         return getService(TaskService.class).
-                list(TaskType.fromString(kind), 
SyncopeClient.getListQueryBuilder().page(1).size(1).build()).
+                list(TaskType.fromString(kind), 
SyncopeClient.getTaskQueryBuilder().page(1).size(1).build()).
                 getTotalCount();
     }
 
@@ -71,7 +71,7 @@ public class TaskRestClient extends BaseRestClient implements 
ExecutionRestClien
             final int page, final int size, final SortParam<String> sort) {
 
         return (List<T>) getService(TaskService.class).
-                list(getTaskType(reference), 
SyncopeClient.getListQueryBuilder().page(page).size(size).
+                list(getTaskType(reference), 
SyncopeClient.getTaskQueryBuilder().page(page).size(size).
                         orderBy(toOrderBy(sort)).build()).
                 getResult();
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java
----------------------------------------------------------------------
diff --git 
a/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java 
b/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java
index ba6530f..9717d53 100644
--- a/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java
+++ b/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java
@@ -31,10 +31,11 @@ import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.transport.http.URLConnectionHTTPConduit;
-import org.apache.syncope.client.lib.builders.ListQueryBuilder;
+import org.apache.syncope.client.lib.builders.AnyQueryBuilder;
 import org.apache.syncope.client.lib.builders.AnyListQueryBuilder;
 import org.apache.syncope.client.lib.builders.AnySearchQueryBuilder;
 import org.apache.syncope.client.lib.builders.ConnObjectTOListQueryBuilder;
+import org.apache.syncope.client.lib.builders.TaskQueryBuilder;
 import 
org.apache.syncope.common.lib.search.AnyObjectFiqlSearchConditionBuilder;
 import org.apache.syncope.common.lib.search.OrderByClauseBuilder;
 import org.apache.syncope.common.lib.search.GroupFiqlSearchConditionBuilder;
@@ -110,13 +111,23 @@ public class SyncopeClient {
     }
 
     /**
-     * Returns a new instance of {@link ListQueryBuilder}, for assisted 
building of some service's {@code list()}
+     * Returns a new instance of {@link TaskQueryBuilder}, for assisted 
building of some service's {@code list()}
      * arguments.
      *
-     * @return default instance of {@link ListQueryBuilder}
+     * @return default instance of {@link AnyQueryBuilder}
      */
-    public static ListQueryBuilder getListQueryBuilder() {
-        return new ListQueryBuilder();
+    public static TaskQueryBuilder getTaskQueryBuilder() {
+        return new TaskQueryBuilder();
+    }
+
+    /**
+     * Returns a new instance of {@link AnyQueryBuilder}, for assisted 
building of some service's {@code list()}
+     * arguments.
+     *
+     * @return default instance of {@link AnyQueryBuilder}
+     */
+    public static AnyQueryBuilder getAnyQueryBuilder() {
+        return new AnyQueryBuilder();
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AbstractQueryBuilder.java
----------------------------------------------------------------------
diff --git 
a/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AbstractQueryBuilder.java
 
b/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AbstractQueryBuilder.java
new file mode 100644
index 0000000..4c61554
--- /dev/null
+++ 
b/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AbstractQueryBuilder.java
@@ -0,0 +1,57 @@
+/*
+ * 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.client.lib.builders;
+
+import org.apache.syncope.common.rest.api.beans.AbstractQuery;
+
+public abstract class AbstractQueryBuilder<Q extends AbstractQuery, B extends 
AbstractQueryBuilder<Q, B>> {
+
+    private Q instance;
+
+    protected abstract Q newInstance();
+
+    protected Q getInstance() {
+        if (instance == null) {
+            instance = newInstance();
+        }
+        return instance;
+    }
+
+    @SuppressWarnings("unchecked")
+    public B page(final Integer page) {
+        getInstance().setPage(page);
+        return (B) this;
+    }
+
+    @SuppressWarnings("unchecked")
+    public B size(final Integer size) {
+        getInstance().setSize(size);
+        return (B) this;
+    }
+
+    @SuppressWarnings("unchecked")
+    public B orderBy(final String orderBy) {
+        getInstance().setOrderBy(orderBy);
+        return (B) this;
+    }
+
+    public Q build() {
+        return getInstance();
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AnyListQueryBuilder.java
----------------------------------------------------------------------
diff --git 
a/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AnyListQueryBuilder.java
 
b/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AnyListQueryBuilder.java
index e25daef..da069cc 100644
--- 
a/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AnyListQueryBuilder.java
+++ 
b/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AnyListQueryBuilder.java
@@ -19,10 +19,10 @@
 package org.apache.syncope.client.lib.builders;
 
 import java.util.ArrayList;
-import org.apache.syncope.common.rest.api.beans.ListQuery;
+import org.apache.syncope.common.rest.api.beans.AnyQuery;
 import org.apache.syncope.common.rest.api.beans.AnyListQuery;
 
-public class AnyListQueryBuilder extends ListQueryBuilder {
+public class AnyListQueryBuilder extends AnyQueryBuilder {
 
     private final AnyListQuery instance = new AnyListQuery();
 
@@ -57,7 +57,7 @@ public class AnyListQueryBuilder extends ListQueryBuilder {
 
     @Override
     public AnyListQuery build() {
-        ListQuery lq = super.build();
+        AnyQuery lq = super.build();
         instance.setPage(lq.getPage());
         instance.setSize(lq.getSize());
         instance.setOrderBy(lq.getOrderBy());

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AnyQueryBuilder.java
----------------------------------------------------------------------
diff --git 
a/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AnyQueryBuilder.java
 
b/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AnyQueryBuilder.java
new file mode 100644
index 0000000..ad5457e
--- /dev/null
+++ 
b/client/lib/src/main/java/org/apache/syncope/client/lib/builders/AnyQueryBuilder.java
@@ -0,0 +1,49 @@
+/*
+ * 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.client.lib.builders;
+
+import org.apache.syncope.common.rest.api.beans.AnyQuery;
+
+public class AnyQueryBuilder extends AbstractQueryBuilder<AnyQuery, 
AnyQueryBuilder> {
+
+    @Override
+    protected AnyQuery newInstance() {
+        return new AnyQuery();
+    }
+
+    @Override
+    public AnyQueryBuilder page(final Integer page) {
+        return AnyQueryBuilder.class.cast(super.page(page));
+    }
+
+    @Override
+    public AnyQueryBuilder size(final Integer size) {
+        return AnyQueryBuilder.class.cast(super.size(size));
+    }
+
+    @Override
+    public AnyQueryBuilder orderBy(final String orderBy) {
+        return AnyQueryBuilder.class.cast(super.orderBy(orderBy));
+    }
+
+    public AnyQueryBuilder details(final boolean details) {
+        getInstance().setDetails(details);
+        return this;
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/client/lib/src/main/java/org/apache/syncope/client/lib/builders/ListQueryBuilder.java
----------------------------------------------------------------------
diff --git 
a/client/lib/src/main/java/org/apache/syncope/client/lib/builders/ListQueryBuilder.java
 
b/client/lib/src/main/java/org/apache/syncope/client/lib/builders/ListQueryBuilder.java
deleted file mode 100644
index bce0e73..0000000
--- 
a/client/lib/src/main/java/org/apache/syncope/client/lib/builders/ListQueryBuilder.java
+++ /dev/null
@@ -1,54 +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.client.lib.builders;
-
-import org.apache.syncope.common.rest.api.beans.ListQuery;
-
-public class ListQueryBuilder {
-
-    private final ListQuery instance = new ListQuery();
-
-    public ListQueryBuilder page(final Integer page) {
-        instance.setPage(page);
-
-        return this;
-    }
-
-    public ListQueryBuilder size(final Integer size) {
-        instance.setSize(size);
-
-        return this;
-    }
-
-    public ListQueryBuilder orderBy(final String orderBy) {
-        instance.setOrderBy(orderBy);
-
-        return this;
-    }
-
-    public ListQueryBuilder details(final boolean details) {
-        instance.setDetails(details);
-
-        return this;
-    }
-
-    public ListQuery build() {
-        return instance;
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/client/lib/src/main/java/org/apache/syncope/client/lib/builders/TaskQueryBuilder.java
----------------------------------------------------------------------
diff --git 
a/client/lib/src/main/java/org/apache/syncope/client/lib/builders/TaskQueryBuilder.java
 
b/client/lib/src/main/java/org/apache/syncope/client/lib/builders/TaskQueryBuilder.java
new file mode 100644
index 0000000..c87b68c
--- /dev/null
+++ 
b/client/lib/src/main/java/org/apache/syncope/client/lib/builders/TaskQueryBuilder.java
@@ -0,0 +1,60 @@
+/*
+ * 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.client.lib.builders;
+
+import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.rest.api.beans.TaskQuery;
+
+public class TaskQueryBuilder extends AbstractQueryBuilder<TaskQuery, 
TaskQueryBuilder> {
+
+    @Override
+    protected TaskQuery newInstance() {
+        return new TaskQuery();
+    }
+
+    @Override
+    public TaskQueryBuilder page(final Integer page) {
+        return TaskQueryBuilder.class.cast(super.page(page));
+    }
+
+    @Override
+    public TaskQueryBuilder size(final Integer size) {
+        return TaskQueryBuilder.class.cast(super.size(size));
+    }
+
+    @Override
+    public TaskQueryBuilder orderBy(final String orderBy) {
+        return TaskQueryBuilder.class.cast(super.orderBy(orderBy));
+    }
+
+    public TaskQueryBuilder resource(final String resource) {
+        getInstance().setResource(resource);
+        return this;
+    }
+
+    public TaskQueryBuilder anyTypeKind(final AnyTypeKind anyTypeKind) {
+        getInstance().setAnyTypeKind(anyTypeKind);
+        return this;
+    }
+
+    public TaskQueryBuilder anyTypeKey(final Long anyTypeKey) {
+        getInstance().setAnyTypeKey(anyTypeKey);
+        return this;
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/common/lib/src/main/java/org/apache/syncope/common/lib/to/PropagationTaskTO.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/PropagationTaskTO.java
 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/PropagationTaskTO.java
index 0ebfb70..bf30e24 100644
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/PropagationTaskTO.java
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/PropagationTaskTO.java
@@ -30,9 +30,9 @@ public class PropagationTaskTO extends AbstractTaskTO {
 
     private static final long serialVersionUID = 386450127003321197L;
 
-    private PropagationMode propagationMode;
+    private PropagationMode mode;
 
-    private ResourceOperation propagationOperation;
+    private ResourceOperation operation;
 
     private String connObjectKey;
 
@@ -64,12 +64,12 @@ public class PropagationTaskTO extends AbstractTaskTO {
         this.oldConnObjectKey = oldConnObjectKey;
     }
 
-    public PropagationMode getPropagationMode() {
-        return propagationMode;
+    public PropagationMode getMode() {
+        return mode;
     }
 
-    public void setPropagationMode(final PropagationMode propagationMode) {
-        this.propagationMode = propagationMode;
+    public void setPropagationMode(final PropagationMode mode) {
+        this.mode = mode;
     }
 
     public String getResource() {
@@ -80,12 +80,12 @@ public class PropagationTaskTO extends AbstractTaskTO {
         this.resource = resource;
     }
 
-    public ResourceOperation getPropagationOperation() {
-        return propagationOperation;
+    public ResourceOperation getOperation() {
+        return operation;
     }
 
-    public void setPropagationOperation(final ResourceOperation 
propagationOperation) {
-        this.propagationOperation = propagationOperation;
+    public void setOperation(final ResourceOperation operation) {
+        this.operation = operation;
     }
 
     public String getXmlAttributes() {

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AbstractQuery.java
----------------------------------------------------------------------
diff --git 
a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AbstractQuery.java
 
b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AbstractQuery.java
new file mode 100644
index 0000000..a8c6bb8
--- /dev/null
+++ 
b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AbstractQuery.java
@@ -0,0 +1,67 @@
+/*
+ * 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.common.rest.api.beans;
+
+import javax.validation.constraints.Min;
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.QueryParam;
+import org.apache.syncope.common.lib.AbstractBaseBean;
+import org.apache.syncope.common.rest.api.service.JAXRSService;
+
+public abstract class AbstractQuery extends AbstractBaseBean {
+
+    private static final long serialVersionUID = -371488230250055359L;
+
+    private Integer page;
+
+    private Integer size;
+
+    private String orderBy;
+
+    public Integer getPage() {
+        return page;
+    }
+
+    @Min(1)
+    @QueryParam(JAXRSService.PARAM_PAGE)
+    @DefaultValue("1")
+    public void setPage(final Integer page) {
+        this.page = page;
+    }
+
+    public Integer getSize() {
+        return size;
+    }
+
+    @Min(1)
+    @QueryParam(JAXRSService.PARAM_SIZE)
+    @DefaultValue("25")
+    public void setSize(final Integer size) {
+        this.size = size;
+    }
+
+    @QueryParam(JAXRSService.PARAM_ORDERBY)
+    public String getOrderBy() {
+        return orderBy;
+    }
+
+    public void setOrderBy(final String orderBy) {
+        this.orderBy = orderBy;
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnyListQuery.java
----------------------------------------------------------------------
diff --git 
a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnyListQuery.java
 
b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnyListQuery.java
index e4fdf04..ef9b93d 100644
--- 
a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnyListQuery.java
+++ 
b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnyListQuery.java
@@ -23,7 +23,7 @@ import javax.ws.rs.DefaultValue;
 import javax.ws.rs.MatrixParam;
 import org.apache.syncope.common.lib.SyncopeConstants;
 
-public class AnyListQuery extends ListQuery {
+public class AnyListQuery extends AnyQuery {
 
     private static final long serialVersionUID = -5197167078435619636L;
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnyQuery.java
----------------------------------------------------------------------
diff --git 
a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnyQuery.java
 
b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnyQuery.java
new file mode 100644
index 0000000..bcf10ce
--- /dev/null
+++ 
b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnyQuery.java
@@ -0,0 +1,40 @@
+/*
+ * 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.common.rest.api.beans;
+
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.QueryParam;
+import org.apache.syncope.common.rest.api.service.JAXRSService;
+
+public class AnyQuery extends AbstractQuery {
+
+    private static final long serialVersionUID = -371488230250055359L;
+
+    private Boolean details;
+
+    public boolean isDetails() {
+        return details == null ? true : details;
+    }
+
+    @QueryParam(JAXRSService.PARAM_DETAILS)
+    @DefaultValue("true")
+    public void setDetails(final boolean details) {
+        this.details = details;
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/ListQuery.java
----------------------------------------------------------------------
diff --git 
a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/ListQuery.java
 
b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/ListQuery.java
deleted file mode 100644
index 96fe514..0000000
--- 
a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/ListQuery.java
+++ /dev/null
@@ -1,98 +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.common.rest.api.beans;
-
-import java.io.Serializable;
-import javax.validation.constraints.Min;
-import javax.ws.rs.DefaultValue;
-import javax.ws.rs.QueryParam;
-import org.apache.commons.lang3.builder.EqualsBuilder;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
-import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import org.apache.syncope.common.rest.api.service.JAXRSService;
-
-public class ListQuery implements Serializable {
-
-    private static final long serialVersionUID = -371488230250055359L;
-
-    private Integer page;
-
-    private Integer size;
-
-    private String orderBy;
-
-    private Boolean details;
-
-    public Integer getPage() {
-        return page;
-    }
-
-    @Min(1)
-    @QueryParam(JAXRSService.PARAM_PAGE)
-    @DefaultValue("1")
-    public void setPage(final Integer page) {
-        this.page = page;
-    }
-
-    public Integer getSize() {
-        return size;
-    }
-
-    @Min(1)
-    @QueryParam(JAXRSService.PARAM_SIZE)
-    @DefaultValue("25")
-    public void setSize(final Integer size) {
-        this.size = size;
-    }
-
-    @QueryParam(JAXRSService.PARAM_ORDERBY)
-    public String getOrderBy() {
-        return orderBy;
-    }
-
-    public void setOrderBy(final String orderBy) {
-        this.orderBy = orderBy;
-    }
-
-    @QueryParam(JAXRSService.PARAM_DETAILS)
-    @DefaultValue("true")
-    public boolean isDetails() {
-        return details == null ? true : details;
-    }
-
-    public void setDetails(final boolean details) {
-        this.details = details;
-    }
-
-    @Override
-    public boolean equals(final Object obj) {
-        return EqualsBuilder.reflectionEquals(this, obj);
-    }
-
-    @Override
-    public int hashCode() {
-        return HashCodeBuilder.reflectionHashCode(this);
-    }
-
-    @Override
-    public String toString() {
-        return ReflectionToStringBuilder.toString(this, 
ToStringStyle.MULTI_LINE_STYLE);
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/TaskQuery.java
----------------------------------------------------------------------
diff --git 
a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/TaskQuery.java
 
b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/TaskQuery.java
new file mode 100644
index 0000000..7f59abf
--- /dev/null
+++ 
b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/TaskQuery.java
@@ -0,0 +1,64 @@
+/*
+ * 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.common.rest.api.beans;
+
+import javax.validation.constraints.Min;
+import javax.ws.rs.QueryParam;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.rest.api.service.JAXRSService;
+
+public class TaskQuery extends AbstractQuery {
+
+    private static final long serialVersionUID = -8792519310029596796L;
+
+    private String resource;
+
+    private AnyTypeKind anyTypeKind;
+
+    private Long anyTypeKey;
+
+    public String getResource() {
+        return resource;
+    }
+
+    @QueryParam(JAXRSService.PARAM_RESOURCE)
+    public void setResource(final String resource) {
+        this.resource = resource;
+    }
+
+    public AnyTypeKind getAnyTypeKind() {
+        return anyTypeKind;
+    }
+
+    @QueryParam(JAXRSService.PARAM_ANYTYPE_KIND)
+    public void setAnyTypeKind(final AnyTypeKind anyTypeKind) {
+        this.anyTypeKind = anyTypeKind;
+    }
+
+    public Long getAnyTypeKey() {
+        return anyTypeKey;
+    }
+
+    @Min(1)
+    @QueryParam(JAXRSService.PARAM_ANYTYPE_KEY)
+    public void setAnyTypeKey(final Long anyTypeKey) {
+        this.anyTypeKey = anyTypeKey;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/JAXRSService.java
----------------------------------------------------------------------
diff --git 
a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/JAXRSService.java
 
b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/JAXRSService.java
index fb9cec0..68afb1a 100644
--- 
a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/JAXRSService.java
+++ 
b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/JAXRSService.java
@@ -28,6 +28,12 @@ public interface JAXRSService {
 
     String PARAM_ORDERBY = "orderby";
 
+    String PARAM_RESOURCE = "resource";
+
+    String PARAM_ANYTYPE_KIND = "anyTypeKind";
+
+    String PARAM_ANYTYPE_KEY = "anyTypeKey";
+
     String PARAM_DETAILS = "details";
 
     String PARAM_CONNID_PAGED_RESULTS_COOKIE = "connIdPagedResultsCookie";

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ReportService.java
----------------------------------------------------------------------
diff --git 
a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ReportService.java
 
b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ReportService.java
index 6d01b2a..bc8b346 100644
--- 
a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ReportService.java
+++ 
b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ReportService.java
@@ -20,7 +20,6 @@ package org.apache.syncope.common.rest.api.service;
 
 import java.util.List;
 import javax.validation.constraints.NotNull;
-import javax.ws.rs.BeanParam;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.DELETE;
 import javax.ws.rs.GET;
@@ -33,13 +32,11 @@ import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
-import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.to.ReportExecTO;
 import org.apache.syncope.common.lib.to.ReportTO;
 import org.apache.syncope.common.lib.types.JobAction;
 import org.apache.syncope.common.lib.types.JobStatusType;
 import org.apache.syncope.common.lib.types.ReportExecExportFormat;
-import org.apache.syncope.common.rest.api.beans.ListQuery;
 
 /**
  * REST operations for reports.
@@ -70,14 +67,13 @@ public interface ReportService extends JAXRSService {
     ReportExecTO readExecution(@NotNull @PathParam("executionKey") Long 
executionKey);
 
     /**
-     * Returns a paged list of all existing reports matching the given query;
+     * Returns a list of all existing reports.
      *
-     * @param listQuery query conditions
      * @return paged list of existing reports matching the given query
      */
     @GET
     @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
-    PagedResult<ReportTO> list(@BeanParam ListQuery listQuery);
+    List<ReportTO> list();
 
     /**
      * Creates a new report.

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java
----------------------------------------------------------------------
diff --git 
a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java
 
b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java
index 2665c51..2d70b2b 100644
--- 
a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java
+++ 
b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java
@@ -44,7 +44,7 @@ import org.apache.syncope.common.lib.to.TaskExecTO;
 import org.apache.syncope.common.lib.types.JobAction;
 import org.apache.syncope.common.lib.types.JobStatusType;
 import org.apache.syncope.common.lib.types.TaskType;
-import org.apache.syncope.common.rest.api.beans.ListQuery;
+import org.apache.syncope.common.rest.api.beans.TaskQuery;
 
 /**
  * REST operations for tasks.
@@ -78,16 +78,16 @@ public interface TaskService extends JAXRSService {
     /**
      * Returns a paged list of existing tasks matching type and the given 
query.
      *
-     * @param taskType type of tasks to be listed
-     * @param listQuery query conditions
+     * @param type type of tasks to be listed
+     * @param query query conditions
      * @param <T> type of taskTO
      * @return paged list of existing tasks matching type and the given query
      */
     @GET
     @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
     <T extends AbstractTaskTO> PagedResult<T> list(
-            @NotNull @MatrixParam("type") TaskType taskType,
-            @BeanParam ListQuery listQuery);
+            @NotNull @MatrixParam("type") TaskType type,
+            @BeanParam TaskQuery query);
 
     /**
      * Creates a new task.

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/core/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
----------------------------------------------------------------------
diff --git 
a/core/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java 
b/core/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
index 3780d30..29cd65a 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
@@ -47,7 +47,6 @@ import org.apache.syncope.common.lib.types.ReportExecStatus;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.dao.ReportDAO;
 import org.apache.syncope.core.persistence.api.dao.ReportExecDAO;
-import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.Report;
 import org.apache.syncope.core.persistence.api.entity.ReportExec;
@@ -128,13 +127,8 @@ public class ReportLogic extends 
AbstractJobLogic<ReportTO> {
     }
 
     @PreAuthorize("hasRole('" + Entitlement.REPORT_LIST + "')")
-    public int count() {
-        return reportDAO.count();
-    }
-
-    @PreAuthorize("hasRole('" + Entitlement.REPORT_LIST + "')")
-    public List<ReportTO> list(final int page, final int size, final 
List<OrderByClause> orderByClauses) {
-        return CollectionUtils.collect(reportDAO.findAll(page, size, 
orderByClauses),
+    public List<ReportTO> list() {
+        return CollectionUtils.collect(reportDAO.findAll(),
                 new Transformer<Report, ReportTO>() {
 
                     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java
----------------------------------------------------------------------
diff --git 
a/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java 
b/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java
index 9c436ac..09d855e 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java
@@ -32,6 +32,7 @@ import org.apache.syncope.common.lib.to.AbstractTaskTO;
 import org.apache.syncope.common.lib.to.SchedTaskTO;
 import org.apache.syncope.common.lib.to.SyncTaskTO;
 import org.apache.syncope.common.lib.to.TaskExecTO;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.common.lib.types.Entitlement;
 import org.apache.syncope.common.lib.types.JobAction;
@@ -56,6 +57,7 @@ import 
org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecu
 import org.apache.syncope.core.provisioning.api.job.JobInstanceLoader;
 import org.apache.syncope.core.logic.notification.NotificationJobDelegate;
 import org.apache.syncope.core.persistence.api.dao.ConfDAO;
+import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
 import org.apache.syncope.core.provisioning.java.job.TaskJob;
 import org.quartz.JobDataMap;
 import org.quartz.JobKey;
@@ -77,6 +79,9 @@ public class TaskLogic extends 
AbstractJobLogic<AbstractTaskTO> {
     private ConfDAO confDAO;
 
     @Autowired
+    private ExternalResourceDAO resourceDAO;
+
+    @Autowired
     private TaskDataBinder binder;
 
     @Autowired
@@ -146,23 +151,27 @@ public class TaskLogic extends 
AbstractJobLogic<AbstractTaskTO> {
     }
 
     @PreAuthorize("hasRole('" + Entitlement.TASK_LIST + "')")
-    public int count(final TaskType taskType) {
-        return taskDAO.count(taskType);
+    public int count(
+            final TaskType type, final String resource, final AnyTypeKind 
anyTypeKind, final Long anyTypeKey) {
+
+        return taskDAO.count(type, resourceDAO.find(resource), anyTypeKind, 
anyTypeKey);
     }
 
     @PreAuthorize("hasRole('" + Entitlement.TASK_LIST + "')")
     @SuppressWarnings("unchecked")
-    public <T extends AbstractTaskTO> List<T> list(final TaskType taskType,
+    public <T extends AbstractTaskTO> List<T> list(
+            final TaskType type, final String resource, final AnyTypeKind 
anyTypeKind, final Long anyTypeKey,
             final int page, final int size, final List<OrderByClause> 
orderByClauses) {
 
-        final TaskUtils taskUtilss = taskUtilsFactory.getInstance(taskType);
+        final TaskUtils taskUtils = taskUtilsFactory.getInstance(type);
 
-        return CollectionUtils.collect(taskDAO.findAll(page, size, 
orderByClauses, taskType),
+        return CollectionUtils.collect(taskDAO.findAll(
+                type, resourceDAO.find(resource), anyTypeKind, anyTypeKey, 
page, size, orderByClauses),
                 new Transformer<Task, T>() {
 
                     @Override
                     public T transform(final Task task) {
-                        return (T) binder.getTaskTO(task, taskUtilss);
+                        return (T) binder.getTaskTO(task, taskUtils);
                     }
                 }, new ArrayList<T>());
     }
@@ -250,8 +259,8 @@ public class TaskLogic extends 
AbstractJobLogic<AbstractTaskTO> {
         TaskUtils taskUtils = taskUtilsFactory.getInstance(exec.getTask());
         if (TaskType.PROPAGATION == taskUtils.getType()) {
             PropagationTask task = (PropagationTask) exec.getTask();
-            if (task.getPropagationMode() != PropagationMode.TWO_PHASES) {
-                sce.getElements().add("Propagation mode: " + 
task.getPropagationMode());
+            if (task.getMode() != PropagationMode.TWO_PHASES) {
+                sce.getElements().add("Propagation mode: " + task.getMode());
             }
         } else {
             sce.getElements().add("Task type: " + taskUtils);

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ReportDAO.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ReportDAO.java
 
b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ReportDAO.java
index f94b5a4..0c949a7 100644
--- 
a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ReportDAO.java
+++ 
b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ReportDAO.java
@@ -19,7 +19,6 @@
 package org.apache.syncope.core.persistence.api.dao;
 
 import java.util.List;
-import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
 import org.apache.syncope.core.persistence.api.entity.Report;
 
 public interface ReportDAO extends DAO<Report, Long> {
@@ -28,10 +27,6 @@ public interface ReportDAO extends DAO<Report, Long> {
 
     List<Report> findAll();
 
-    List<Report> findAll(int page, int itemsPerPage, List<OrderByClause> 
orderByClauses);
-
-    int count();
-
     Report save(Report report);
 
     void delete(Long key);

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskDAO.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskDAO.java
 
b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskDAO.java
index 02b1032..999660e 100644
--- 
a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskDAO.java
+++ 
b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskDAO.java
@@ -19,6 +19,7 @@
 package org.apache.syncope.core.persistence.api.dao;
 
 import java.util.List;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
 import 
org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
@@ -32,14 +33,13 @@ public interface TaskDAO extends DAO<Task, Long> {
 
     <T extends Task> List<T> findToExec(TaskType type);
 
-    <T extends Task> List<T> findAll(ExternalResource resource, TaskType type);
-
     <T extends Task> List<T> findAll(TaskType type);
 
     <T extends Task> List<T> findAll(
-            int page, int itemsPerPage, List<OrderByClause> orderByClauses, 
TaskType type);
+            TaskType type, ExternalResource resource, AnyTypeKind anyTypeKind, 
Long anyTypeKey,
+            int page, int itemsPerPage, List<OrderByClause> orderByClauses);
 
-    int count(TaskType type);
+    int count(TaskType type, ExternalResource resource, AnyTypeKind 
anyTypeKind, Long anyTypeKey);
 
     <T extends Task> T save(T task);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/task/PropagationTask.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/task/PropagationTask.java
 
b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/task/PropagationTask.java
index 7629074..9c5ef29 100644
--- 
a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/task/PropagationTask.java
+++ 
b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/task/PropagationTask.java
@@ -43,13 +43,13 @@ public interface PropagationTask extends Task {
 
     void setObjectClassName(String objectClassName);
 
-    PropagationMode getPropagationMode();
+    PropagationMode getMode();
 
-    void setPropagationMode(PropagationMode propagationMode);
+    void setMode(PropagationMode mode);
 
-    ResourceOperation getPropagationOperation();
+    ResourceOperation getOperation();
 
-    void setPropagationOperation(ResourceOperation operation);
+    void setOperation(ResourceOperation operation);
 
     Long getAnyKey();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/AbstractDAO.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/AbstractDAO.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/AbstractDAO.java
index e5c1d66..3dbf25d 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/AbstractDAO.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/AbstractDAO.java
@@ -18,19 +18,15 @@
  */
 package org.apache.syncope.core.persistence.jpa.dao;
 
-import java.util.List;
 import javax.persistence.EntityManager;
-import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.core.misc.security.AuthContextUtils;
 import org.apache.syncope.core.misc.spring.ApplicationContextProvider;
 import org.apache.syncope.core.persistence.api.dao.DAO;
-import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
 import org.apache.syncope.core.persistence.api.entity.Entity;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Configurable;
 import org.springframework.orm.jpa.EntityManagerFactoryUtils;
-import org.springframework.util.ReflectionUtils;
 
 @Configurable
 public abstract class AbstractDAO<E extends Entity<KEY>, KEY> implements 
DAO<E, KEY> {
@@ -48,27 +44,6 @@ public abstract class AbstractDAO<E extends Entity<KEY>, 
KEY> implements DAO<E,
         return entityManager;
     }
 
-    protected String toOrderByStatement(final Class<? extends Entity<KEY>> 
beanClass, final String prefix,
-            final List<OrderByClause> orderByClauses) {
-
-        StringBuilder statement = new StringBuilder();
-
-        for (OrderByClause clause : orderByClauses) {
-            String field = clause.getField().trim();
-            if (ReflectionUtils.findField(beanClass, field) != null) {
-                if (StringUtils.isNotBlank(prefix)) {
-                    statement.append(prefix).append('.');
-                }
-                statement.append(field).append(' 
').append(clause.getDirection().name());
-            }
-        }
-
-        if (statement.length() > 0) {
-            statement.insert(0, "ORDER BY ");
-        }
-        return statement.toString();
-    }
-
     @Override
     public void refresh(final E entity) {
         entityManager().refresh(entity);

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAReportDAO.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAReportDAO.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAReportDAO.java
index 6de5ffb..c227152 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAReportDAO.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAReportDAO.java
@@ -18,12 +18,9 @@
  */
 package org.apache.syncope.core.persistence.jpa.dao;
 
-import java.util.Collections;
 import java.util.List;
-import javax.persistence.Query;
 import javax.persistence.TypedQuery;
 import org.apache.syncope.core.persistence.api.dao.ReportDAO;
-import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
 import org.apache.syncope.core.persistence.api.entity.Report;
 import org.apache.syncope.core.persistence.jpa.entity.JPAReport;
 import org.springframework.stereotype.Repository;
@@ -41,33 +38,13 @@ public class JPAReportDAO extends AbstractDAO<Report, Long> 
implements ReportDAO
     @Transactional(readOnly = true)
     @Override
     public List<Report> findAll() {
-        return findAll(-1, -1, Collections.<OrderByClause>emptyList());
-    }
-
-    @Override
-    public List<Report> findAll(final int page, final int itemsPerPage, final 
List<OrderByClause> orderByClauses) {
-        final TypedQuery<Report> query = entityManager().createQuery(
-                "SELECT e FROM " + JPAReport.class.getSimpleName() + " e "
-                + toOrderByStatement(Report.class, "e", orderByClauses), 
Report.class);
-
-        query.setFirstResult(itemsPerPage * (page <= 0
-                ? 0
-                : page - 1));
-
-        if (itemsPerPage > 0) {
-            query.setMaxResults(itemsPerPage);
-        }
+        TypedQuery<Report> query = entityManager().createQuery(
+                "SELECT e FROM " + JPAReport.class.getSimpleName() + " e", 
Report.class);
 
         return query.getResultList();
     }
 
     @Override
-    public int count() {
-        Query countQuery = entityManager().createNativeQuery("SELECT COUNT(id) 
FROM " + JPAReport.TABLE);
-        return ((Number) countQuery.getSingleResult()).intValue();
-    }
-
-    @Override
     @Transactional(rollbackFor = Throwable.class)
     public Report save(final Report report) {
         return entityManager().merge(report);

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskDAO.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskDAO.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskDAO.java
index b4b5342..21a32e6 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskDAO.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskDAO.java
@@ -23,6 +23,7 @@ import java.util.List;
 import javax.persistence.Query;
 import org.apache.commons.collections4.Closure;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.core.persistence.api.dao.TaskDAO;
 import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
@@ -36,6 +37,7 @@ import 
org.apache.syncope.core.persistence.jpa.entity.task.JPASyncTask;
 import org.apache.syncope.core.persistence.jpa.entity.task.AbstractTask;
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ReflectionUtils;
 
 @Repository
 public class JPATaskDAO extends AbstractDAO<Task, Long> implements TaskDAO {
@@ -78,59 +80,106 @@ public class JPATaskDAO extends AbstractDAO<Task, Long> 
implements TaskDAO {
         return (T) entityManager().find(AbstractTask.class, key);
     }
 
-    private <T extends Task> StringBuilder buildfindAllQuery(final TaskType 
type) {
-        return new StringBuilder("SELECT e FROM ").
+    private <T extends Task> StringBuilder buildFindAllQuery(final TaskType 
type) {
+        return new StringBuilder("SELECT t FROM ").
                 append(getEntityReference(type).getSimpleName()).
-                append(" e WHERE e.type=:type ");
+                append(" t WHERE t.type=:type ");
     }
 
     @Override
     @SuppressWarnings("unchecked")
     public <T extends Task> List<T> findToExec(final TaskType type) {
-        StringBuilder queryString = buildfindAllQuery(type).append("AND ");
+        StringBuilder queryString = buildFindAllQuery(type).append("AND ");
 
         if (type == TaskType.NOTIFICATION) {
-            queryString.append("e.executed = 0 ");
+            queryString.append("t.executed = 0 ");
         } else {
-            queryString.append("e.executions IS EMPTY ");
+            queryString.append("t.executions IS EMPTY ");
         }
-        queryString.append("ORDER BY e.id DESC");
+        queryString.append("ORDER BY t.id DESC");
 
         Query query = entityManager().createQuery(queryString.toString());
         query.setParameter("type", type);
         return query.getResultList();
     }
 
+    @Transactional(readOnly = true)
     @Override
-    @SuppressWarnings("unchecked")
-    public <T extends Task> List<T> findAll(final ExternalResource resource, 
final TaskType type) {
-        StringBuilder queryString = buildfindAllQuery(type).append("AND 
e.resource=:resource ORDER BY e.id DESC");
+    public <T extends Task> List<T> findAll(final TaskType type) {
+        return findAll(type, null, null, null, -1, -1, 
Collections.<OrderByClause>emptyList());
+    }
 
-        final Query query = 
entityManager().createQuery(queryString.toString());
-        query.setParameter("type", type);
-        query.setParameter("resource", resource);
+    private StringBuilder buildFindAllQuery(
+            final TaskType type,
+            final ExternalResource resource,
+            final AnyTypeKind anyTypeKind,
+            final Long anyTypeKey) {
 
-        return query.getResultList();
+        if (resource != null
+                && type != TaskType.PROPAGATION && type != TaskType.PUSH && 
type != TaskType.SYNCHRONIZATION) {
+
+            throw new IllegalArgumentException(type + " is not related to " + 
ExternalResource.class.getSimpleName());
+        }
+
+        if ((anyTypeKind != null || anyTypeKey != null) && type != 
TaskType.PROPAGATION) {
+            throw new IllegalArgumentException(type + " is not related to 
users, groups or any objects");
+        }
+
+        StringBuilder queryString = buildFindAllQuery(type);
+
+        if (resource != null) {
+            queryString.append("AND t.resource=:resource ");
+        }
+        if (anyTypeKind != null && anyTypeKey != null) {
+            queryString.append("AND t.anyTypeKind=:anyTypeKind AND 
t.anyTypeKey=:anyTypeKey ");
+        }
+
+        return queryString;
     }
 
-    @Transactional(readOnly = true)
-    @Override
-    public <T extends Task> List<T> findAll(final TaskType type) {
-        return findAll(-1, -1, Collections.<OrderByClause>emptyList(), type);
+    private String toOrderByStatement(
+            final Class<? extends Task> beanClass, final List<OrderByClause> 
orderByClauses) {
+
+        StringBuilder statement = new StringBuilder();
+
+        for (OrderByClause clause : orderByClauses) {
+            String field = clause.getField().trim();
+            if (ReflectionUtils.findField(beanClass, field) != null) {
+                statement.append("t.").append(field).append(' 
').append(clause.getDirection().name());
+            }
+        }
+
+        if (statement.length() > 0) {
+            statement.insert(0, "ORDER BY ");
+        }
+        return statement.toString();
     }
 
     @Override
     @SuppressWarnings("unchecked")
-    public <T extends Task> List<T> findAll(final int page, final int 
itemsPerPage,
-            final List<OrderByClause> orderByClauses, final TaskType type) {
-
-        StringBuilder queryString = buildfindAllQuery(type);
-        queryString.append(orderByClauses.isEmpty()
-                ? "ORDER BY e.id DESC"
-                : toOrderByStatement(getEntityReference(type), "e", 
orderByClauses));
+    public <T extends Task> List<T> findAll(
+            final TaskType type,
+            final ExternalResource resource,
+            final AnyTypeKind anyTypeKind,
+            final Long anyTypeKey,
+            final int page,
+            final int itemsPerPage,
+            final List<OrderByClause> orderByClauses) {
+
+        StringBuilder queryString = buildFindAllQuery(type, resource, 
anyTypeKind, anyTypeKey).
+                append(orderByClauses.isEmpty()
+                                ? "ORDER BY t.id DESC"
+                                : toOrderByStatement(getEntityReference(type), 
orderByClauses));
 
         Query query = entityManager().createQuery(queryString.toString());
         query.setParameter("type", type);
+        if (resource != null) {
+            query.setParameter("resource", resource);
+        }
+        if (anyTypeKind != null && anyTypeKey != null) {
+            query.setParameter("anyTypeKind", anyTypeKind);
+            query.setParameter("anyTypeKey", anyTypeKey);
+        }
 
         query.setFirstResult(itemsPerPage * (page <= 0
                 ? 0
@@ -144,10 +193,27 @@ public class JPATaskDAO extends AbstractDAO<Task, Long> 
implements TaskDAO {
     }
 
     @Override
-    public int count(final TaskType type) {
-        Query countQuery = entityManager().createNativeQuery("SELECT COUNT(id) 
FROM Task WHERE TYPE=?1");
-        countQuery.setParameter(1, type.name());
-        return ((Number) countQuery.getSingleResult()).intValue();
+    public int count(
+            final TaskType type,
+            final ExternalResource resource,
+            final AnyTypeKind anyTypeKind,
+            final Long anyTypeKey) {
+
+        StringBuilder queryString = buildFindAllQuery(type, resource, 
anyTypeKind, anyTypeKey);
+
+        Query query = 
entityManager().createQuery(queryString.toString().replace(
+                "SELECT t",
+                "SELECT COUNT(t)"));
+        query.setParameter("type", type);
+        if (resource != null) {
+            query.setParameter("resource", resource);
+        }
+        if (anyTypeKind != null && anyTypeKey != null) {
+            query.setParameter("anyTypeKind", anyTypeKind);
+            query.setParameter("anyTypeKey", anyTypeKey);
+        }
+
+        return ((Number) query.getSingleResult()).intValue();
     }
 
     @Transactional(rollbackFor = { Throwable.class })
@@ -173,12 +239,14 @@ public class JPATaskDAO extends AbstractDAO<Task, Long> 
implements TaskDAO {
 
     @Override
     public void deleteAll(final ExternalResource resource, final TaskType 
type) {
-        CollectionUtils.forAllDo(findAll(resource, type), new Closure<Task>() {
-
-            @Override
-            public void execute(final Task input) {
-                delete(input.getKey());
-            }
-        });
+        CollectionUtils.forAllDo(
+                findAll(type, resource, null, null, -1, -1, 
Collections.<OrderByClause>emptyList()),
+                new Closure<Task>() {
+
+                    @Override
+                    public void execute(final Task input) {
+                        delete(input.getKey());
+                    }
+                });
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskExecDAO.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskExecDAO.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskExecDAO.java
index 38155ff..961fea0 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskExecDAO.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskExecDAO.java
@@ -67,9 +67,12 @@ public class JPATaskExecDAO extends AbstractDAO<TaskExec, 
Long> implements TaskE
 
     @Override
     public List<TaskExec> findAll(final TaskType type) {
-        StringBuilder queryString = new StringBuilder("SELECT e FROM 
").append(JPATaskExec.class.getSimpleName()).
-                append(" e WHERE e.task IN (").append("SELECT t FROM ").
-                
append(taskDAO.getEntityReference(type).getSimpleName()).append(" t)");
+        StringBuilder queryString = new StringBuilder("SELECT e FROM ").
+                append(JPATaskExec.class.getSimpleName()).
+                append(" e WHERE e.task IN (").
+                append("SELECT t FROM ").
+                append(taskDAO.getEntityReference(type).getSimpleName()).
+                append(" t)");
 
         TypedQuery<TaskExec> query = 
entityManager().createQuery(queryString.toString(), TaskExec.class);
         return query.getResultList();

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPropagationTask.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPropagationTask.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPropagationTask.java
index e4d969d..19fc9f6 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPropagationTask.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPropagationTask.java
@@ -53,13 +53,13 @@ public class JPAPropagationTask extends AbstractTask 
implements PropagationTask
      * @see PropagationMode
      */
     @Enumerated(EnumType.STRING)
-    private PropagationMode propagationMode;
+    private PropagationMode mode;
 
     /**
      * @see ResourceOperation
      */
     @Enumerated(EnumType.STRING)
-    private ResourceOperation propagationOperation;
+    private ResourceOperation operation;
 
     /**
      * The connObjectKey on the external resource.
@@ -132,26 +132,26 @@ public class JPAPropagationTask extends AbstractTask 
implements PropagationTask
 
     @Override
 
-    public PropagationMode getPropagationMode() {
-        return propagationMode;
+    public PropagationMode getMode() {
+        return mode;
     }
 
     @Override
 
-    public void setPropagationMode(final PropagationMode propagationMode) {
-        this.propagationMode = propagationMode;
+    public void setMode(final PropagationMode mode) {
+        this.mode = mode;
     }
 
     @Override
 
-    public ResourceOperation getPropagationOperation() {
-        return propagationOperation;
+    public ResourceOperation getOperation() {
+        return operation;
     }
 
     @Override
 
-    public void setPropagationOperation(final ResourceOperation 
propagationOperation) {
-        this.propagationOperation = propagationOperation;
+    public void setOperation(final ResourceOperation operation) {
+        this.operation = operation;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PropagationTaskValidator.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PropagationTaskValidator.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PropagationTaskValidator.java
index 43db7f5..48d0cc3 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PropagationTaskValidator.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PropagationTaskValidator.java
@@ -35,8 +35,8 @@ public class PropagationTaskValidator extends 
AbstractValidator<PropagationTaskC
         if (task == null) {
             isValid = true;
         } else {
-            isValid = task.getPropagationMode() != null
-                    && task.getPropagationOperation() != null
+            isValid = task.getMode() != null
+                    && task.getOperation() != null
                     && !task.getAttributes().isEmpty()
                     && task.getResource() != null;
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ReportTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ReportTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ReportTest.java
index 536d74f..8c419aa 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ReportTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ReportTest.java
@@ -55,7 +55,7 @@ public class ReportTest extends AbstractTest {
 
     @Test
     public void save() {
-        int beforeCount = reportDAO.count();
+        int beforeCount = reportDAO.findAll().size();
 
         Report report = entityFactory.newEntity(Report.class);
         report.setName("new report");
@@ -66,7 +66,7 @@ public class ReportTest extends AbstractTest {
         assertNotNull(report);
         assertNotNull(report.getKey());
 
-        int afterCount = reportDAO.count();
+        int afterCount = reportDAO.findAll().size();
         assertEquals(afterCount, beforeCount + 1);
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/TaskTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/TaskTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/TaskTest.java
index 2fa4a8c..9055fbc 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/TaskTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/TaskTest.java
@@ -68,7 +68,8 @@ public class TaskTest extends AbstractTest {
 
     @Test
     public void findPaginated() {
-        List<Task> tasks = taskDAO.findAll(1, 2, 
Collections.<OrderByClause>emptyList(), TaskType.PROPAGATION);
+        List<Task> tasks = taskDAO.findAll(
+                TaskType.PROPAGATION, null, null, null, 1, 2, 
Collections.<OrderByClause>emptyList());
         assertNotNull(tasks);
         assertEquals(2, tasks.size());
 
@@ -76,7 +77,8 @@ public class TaskTest extends AbstractTest {
             assertNotNull(task);
         }
 
-        tasks = taskDAO.findAll(2, 2, Collections.<OrderByClause>emptyList(), 
TaskType.PROPAGATION);
+        tasks = taskDAO.findAll(
+                TaskType.PROPAGATION, null, null, null, 2, 2, 
Collections.<OrderByClause>emptyList());
         assertNotNull(tasks);
         assertEquals(2, tasks.size());
 
@@ -84,9 +86,12 @@ public class TaskTest extends AbstractTest {
             assertNotNull(task);
         }
 
-        tasks = taskDAO.findAll(1000, 2, 
Collections.<OrderByClause>emptyList(), TaskType.PROPAGATION);
+        tasks = taskDAO.findAll(
+                TaskType.PROPAGATION, null, null, null, 1000, 2, 
Collections.<OrderByClause>emptyList());
         assertNotNull(tasks);
         assertTrue(tasks.isEmpty());
+
+        assertEquals(5, taskDAO.count(TaskType.PROPAGATION, null, null, null));
     }
 
     @Test
@@ -109,8 +114,8 @@ public class TaskTest extends AbstractTest {
         PropagationTask task = entityFactory.newEntity(PropagationTask.class);
         task.setResource(resource);
         task.setAnyTypeKind(AnyTypeKind.USER);
-        task.setPropagationMode(PropagationMode.TWO_PHASES);
-        task.setPropagationOperation(ResourceOperation.CREATE);
+        task.setMode(PropagationMode.TWO_PHASES);
+        task.setOperation(ResourceOperation.CREATE);
         task.setConnObjectKey("[email protected]");
 
         Set<Attribute> attributes = new HashSet<>();
@@ -139,6 +144,8 @@ public class TaskTest extends AbstractTest {
 
         resource = resourceDAO.find(resource.getKey());
         assertNotNull(resource);
-        assertFalse(taskDAO.findAll(resource, 
TaskType.PROPAGATION).contains(task));
+        assertFalse(taskDAO.findAll(
+                TaskType.PROPAGATION, resource, null, null, -1, -1, 
Collections.<OrderByClause>emptyList()).
+                contains(task));
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceTest.java
index 1cd5e47..5628c29 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceTest.java
@@ -25,6 +25,7 @@ import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -37,6 +38,7 @@ import 
org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
 import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
 import org.apache.syncope.core.persistence.api.dao.TaskDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
+import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
 import org.apache.syncope.core.persistence.api.entity.ConnInstance;
 import 
org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy;
@@ -216,7 +218,8 @@ public class ResourceTest extends AbstractTest {
         // -------------------------------------
 
         // Get tasks
-        List<PropagationTask> propagationTasks = taskDAO.findAll(resource, 
TaskType.PROPAGATION);
+        List<PropagationTask> propagationTasks = taskDAO.findAll(
+                TaskType.PROPAGATION, resource, null, null, -1, -1, 
Collections.<OrderByClause>emptyList());
         assertFalse(propagationTasks.isEmpty());
 
         // delete resource

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java
index e2b1c9e..7ef25aa 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java
@@ -24,6 +24,7 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
+import java.util.Collections;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.Set;
@@ -40,12 +41,12 @@ import 
org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
 import org.apache.syncope.core.persistence.api.dao.TaskDAO;
 import org.apache.syncope.core.persistence.api.dao.TaskExecDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
+import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
 import 
org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
 import org.apache.syncope.core.persistence.api.entity.task.PushTask;
 import org.apache.syncope.core.persistence.api.entity.task.SyncTask;
 import org.apache.syncope.core.persistence.api.entity.task.TaskExec;
-import org.apache.syncope.core.persistence.api.entity.AnyTemplate;
 import org.apache.syncope.core.persistence.api.entity.task.AnyTemplateSyncTask;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
@@ -92,8 +93,8 @@ public class TaskTest extends AbstractTest {
         PropagationTask task = entityFactory.newEntity(PropagationTask.class);
         task.setResource(resource);
         task.setAnyTypeKind(AnyTypeKind.USER);
-        task.setPropagationMode(PropagationMode.TWO_PHASES);
-        task.setPropagationOperation(ResourceOperation.CREATE);
+        task.setMode(PropagationMode.TWO_PHASES);
+        task.setOperation(ResourceOperation.CREATE);
         task.setConnObjectKey("[email protected]");
 
         Set<Attribute> attributes = new HashSet<>();
@@ -110,7 +111,9 @@ public class TaskTest extends AbstractTest {
         taskDAO.flush();
 
         resource = resourceDAO.find("ws-target-resource-1");
-        assertTrue(taskDAO.findAll(resource, 
TaskType.PROPAGATION).contains(task));
+        assertTrue(taskDAO.findAll(
+                TaskType.PROPAGATION, resource, null, null, -1, -1, 
Collections.<OrderByClause>emptyList()).
+                contains(task));
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/syncope/blob/c14a20d7/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml 
b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
index 5c61a22..0d1e67b 100644
--- a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
+++ b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
@@ -984,14 +984,14 @@ under the License.
                intAttrName="location" intMappingType="AnyObjectPlainSchema"
                mandatoryCondition="false" connObjectKey="0" password="0" 
purpose="BOTH"/>
     
-  <Task DTYPE="PropagationTask" type="PROPAGATION" id="1" 
propagationMode="TWO_PHASES" propagationOperation="UPDATE"
+  <Task DTYPE="PropagationTask" type="PROPAGATION" id="1" mode="TWO_PHASES" 
operation="UPDATE"
         objectClassName="__ACCOUNT__" resource_name="ws-target-resource-2" 
anyTypeKind="USER" anyKey="1"
         
xmlAttributes='[{"name":"__PASSWORD__","value":[{"readOnly":false,"disposed":false,"encryptedBytes":"m9nh2US0Sa6m+cXccCq0Xw==","base64SHA1Hash":"GFJ69qfjxEOdrmt+9q+0Cw2uz60="}]},{"name":"__NAME__","value":["userId"],"nameValue":"userId"},{"name":"fullname","value":["fullname"]},{"name":"type","value":["type"]}]'/>
   <TaskExec id="1" task_id="1" status="SUCCESS"/>
-  <Task DTYPE="PropagationTask" type="PROPAGATION" id="2" 
propagationMode="ONE_PHASE" propagationOperation="CREATE"
+  <Task DTYPE="PropagationTask" type="PROPAGATION" id="2" mode="ONE_PHASE" 
operation="CREATE"
         objectClassName="__ACCOUNT__" resource_name="ws-target-resource-2" 
anyTypeKind="USER" anyKey="1"
         
xmlAttributes='[{"name":"__PASSWORD__","value":[{"readOnly":false,"disposed":false,"encryptedBytes":"m9nh2US0Sa6m+cXccCq0Xw==","base64SHA1Hash":"GFJ69qfjxEOdrmt+9q+0Cw2uz60="}]},{"name":"__NAME__","value":["userId"],"nameValue":"userId"},{"name":"fullname","value":["fullname"]},{"name":"type","value":["type"]}]'/>
-  <Task DTYPE="PropagationTask" type="PROPAGATION" id="3" 
propagationMode="TWO_PHASES" propagationOperation="DELETE"
+  <Task DTYPE="PropagationTask" type="PROPAGATION" id="3" mode="TWO_PHASES" 
operation="DELETE"
         objectClassName="__ACCOUNT__" resource_name="ws-target-resource-2" 
anyTypeKind="USER" anyKey="1"
         
xmlAttributes='[{"name":"__PASSWORD__","value":[{"readOnly":false,"disposed":false,"encryptedBytes":"m9nh2US0Sa6m+cXccCq0Xw==","base64SHA1Hash":"GFJ69qfjxEOdrmt+9q+0Cw2uz60="}]},{"name":"__NAME__","value":["userId"],"nameValue":"userId"},{"name":"type","value":["type"]}]'/>
   <Task DTYPE="SyncTask" type="SYNCHRONIZATION" id="4" name="CSV (update 
matching; assign unmatching)" resource_name="resource-csv"
@@ -1003,7 +1003,7 @@ under the License.
                        
template='{"@class":"org.apache.syncope.common.lib.to.GroupTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"GROUP","realm":null,"status":null,"name":null,"userOwner":null,"groupOwner":null,"adynMembershipCond":null,"udynMembershipCond":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"propagationStatuses":[],"plainAttrs":[]}'/>
   <Task DTYPE="SchedTask" type="SCHEDULED" id="5" name="SampleJob Task" 
         
jobDelegateClassName="org.apache.syncope.fit.core.reference.TestSampleJobDelegate"
 cronExpression="0 0 0 1 * ?"/>
-  <Task DTYPE="PropagationTask" type="PROPAGATION" id="6" 
propagationMode="TWO_PHASES" propagationOperation="UPDATE"
+  <Task DTYPE="PropagationTask" type="PROPAGATION" id="6" mode="TWO_PHASES" 
operation="UPDATE"
         objectClassName="__ACCOUNT__" 
resource_name="ws-target-resource-nopropagation" anyTypeKind="USER" anyKey="1"
         
xmlAttributes='[{"name":"__PASSWORD__","value":[{"readOnly":false,"disposed":false,"encryptedBytes":"m9nh2US0Sa6m+cXccCq0Xw==","base64SHA1Hash":"GFJ69qfjxEOdrmt+9q+0Cw2uz60="}]},{"name":"__NAME__","value":["userId"],"nameValue":"userId"},{"name":"fullname","value":["fullname"]},{"name":"type","value":["type"]}]'/>
   <TaskExec id="6" task_id="6" status="SUCCESS"/>
@@ -1102,7 +1102,7 @@ under the License.
   <Task DTYPE="SyncTask" type="SYNCHRONIZATION" id="26" name="CSV (ignore 
matching; assign unmatching)" resource_name="resource-csv"
         destinationRealm_id="1" performCreate="1" performUpdate="1" 
performDelete="1" syncStatus="1" fullReconciliation="0"
         unmatchingRule="ASSIGN" matchingRule="IGNORE"/>
-  <Task DTYPE="PropagationTask" type="PROPAGATION" id="27" 
propagationMode="ONE_PHASE" propagationOperation="CREATE"
+  <Task DTYPE="PropagationTask" type="PROPAGATION" id="27" mode="ONE_PHASE" 
operation="CREATE"
         objectClassName="__ACCOUNT__" resource_name="resource-testdb" 
anyTypeKind="USER" anyKey="1"
         
xmlAttributes='[{"name":"__PASSWORD__","value":[{"readOnly":false,"disposed":false,"encryptedBytes":"m9nh2US0Sa6m+cXccCq0Xw==","base64SHA1Hash":"GFJ69qfjxEOdrmt+9q+0Cw2uz60="}]},{"name":"__NAME__","value":["userId"],"nameValue":"userId"},{"name":"fullname","value":["fullname"]},{"name":"type","value":["type"]}]'/>
   <Task DTYPE="SyncTask" type="SYNCHRONIZATION" id="28" name="Scripted SQL" 
resource_name="resource-db-scripted"

Reply via email to