Repository: syncope Updated Branches: refs/heads/master 0d5ba39a3 -> 930db341f
[SYNCOPE-741] Merge from 1_2_X Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/930db341 Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/930db341 Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/930db341 Branch: refs/heads/master Commit: 930db341fc53b0c71ada1b9300979cbd8ac791e5 Parents: 0d5ba39 Author: Francesco Chicchiriccò <[email protected]> Authored: Fri Dec 11 09:42:22 2015 +0100 Committer: Francesco Chicchiriccò <[email protected]> Committed: Fri Dec 11 09:42:22 2015 +0100 ---------------------------------------------------------------------- .../commands/task/TaskSyncopeOperations.java | 10 +-- .../client/console/rest/TaskRestClient.java | 24 ++++---- .../syncope/common/rest/api/beans/AnyQuery.java | 4 +- .../common/rest/api/beans/TaskExecQuery.java | 53 ++++++++++++++++ .../common/rest/api/beans/TaskQuery.java | 18 ++++++ .../common/rest/api/service/TaskService.java | 41 +++++++++---- .../apache/syncope/core/logic/TaskLogic.java | 61 ++++++++++++------- .../core/persistence/api/dao/TaskExecDAO.java | 5 ++ .../core/persistence/jpa/dao/JPATaskDAO.java | 8 +-- .../persistence/jpa/dao/JPATaskExecDAO.java | 64 +++++++++++++++++--- .../provisioning/api/data/TaskDataBinder.java | 2 +- .../java/data/TaskDataBinderImpl.java | 10 +-- .../rest/cxf/service/AbstractAnyService.java | 4 +- .../rest/cxf/service/AnyObjectServiceImpl.java | 2 +- .../core/rest/cxf/service/TaskServiceImpl.java | 41 +++++++++---- .../fit/core/reference/AbstractTaskITCase.java | 4 +- .../fit/core/reference/MultitenancyITCase.java | 2 +- .../core/reference/NotificationTaskITCase.java | 12 ++-- .../core/reference/PropagationTaskITCase.java | 45 +++++++++++++- .../fit/core/reference/PushTaskITCase.java | 4 +- .../fit/core/reference/SchedTaskITCase.java | 6 +- .../fit/core/reference/SyncTaskITCase.java | 16 ++--- .../syncope/fit/core/reference/UserITCase.java | 8 +-- 23 files changed, 331 insertions(+), 113 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/930db341/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskSyncopeOperations.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskSyncopeOperations.java index 8a2ec62..ae6d464 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskSyncopeOperations.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskSyncopeOperations.java @@ -39,18 +39,18 @@ public class TaskSyncopeOperations { return taskService.listJobs(JobStatusType.RUNNING); } - public <T extends AbstractTaskTO> T read(final String taskId) { - return taskService.read(Long.valueOf(taskId)); + public <T extends AbstractTaskTO> T read(final String taskKey) { + return taskService.read(Long.valueOf(taskKey), true); } - public void delete(final String taskId) { - taskService.delete(Long.valueOf(taskId)); + public void delete(final String taskKey) { + taskService.delete(Long.valueOf(taskKey)); } public List<AbstractTaskTO> list(final String type) { return taskService.list(new TaskQuery.Builder().type(TaskType.valueOf(type)).build()).getResult(); } - + public List<AbstractTaskTO> listPropagationTask() { return taskService.list(new TaskQuery.Builder().type(TaskType.PROPAGATION).build()).getResult(); } http://git-wip-us.apache.org/repos/asf/syncope/blob/930db341/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 6781390..876e640 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 @@ -93,29 +93,29 @@ public class TaskRestClient extends BaseRestClient implements ExecutionRestClien return result; } - public PropagationTaskTO readPropagationTask(final Long taskId) { - return getService(TaskService.class).read(taskId); + public PropagationTaskTO readPropagationTask(final Long taskKey) { + return getService(TaskService.class).read(taskKey, false); } - public NotificationTaskTO readNotificationTask(final Long taskId) { - return getService(TaskService.class).read(taskId); + public NotificationTaskTO readNotificationTask(final Long taskKey) { + return getService(TaskService.class).read(taskKey, false); } - public <T extends SchedTaskTO> T readSchedTask(final Class<T> reference, final Long taskId) { - return getService(TaskService.class).read(taskId); + public <T extends SchedTaskTO> T readSchedTask(final Class<T> reference, final Long taskKey) { + return getService(TaskService.class).read(taskKey, false); } - public void delete(final Long taskId, final Class<? extends AbstractTaskTO> taskToClass) { - getService(TaskService.class).delete(taskId); + public void delete(final Long taskKey, final Class<? extends AbstractTaskTO> taskToClass) { + getService(TaskService.class).delete(taskKey); } @Override - public void startExecution(final long taskId) { - startExecution(taskId, false); + public void startExecution(final long taskKey) { + startExecution(taskKey, false); } - public void startExecution(final long taskId, final boolean dryRun) { - getService(TaskService.class).execute(taskId, dryRun); + public void startExecution(final long taskKey, final boolean dryRun) { + getService(TaskService.class).execute(taskKey, dryRun); } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/930db341/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 index d369ee2..4763b13 100644 --- 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 @@ -42,13 +42,13 @@ public class AnyQuery extends AbstractQuery { private Boolean details; - public boolean isDetails() { + public Boolean getDetails() { return details == null ? true : details; } @QueryParam(JAXRSService.PARAM_DETAILS) @DefaultValue("true") - public void setDetails(final boolean details) { + public void setDetails(final Boolean details) { this.details = details; } } http://git-wip-us.apache.org/repos/asf/syncope/blob/930db341/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/TaskExecQuery.java ---------------------------------------------------------------------- diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/TaskExecQuery.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/TaskExecQuery.java new file mode 100644 index 0000000..626b0bb --- /dev/null +++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/TaskExecQuery.java @@ -0,0 +1,53 @@ +/* + * 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.NotNull; +import javax.ws.rs.PathParam; + +public class TaskExecQuery extends AbstractQuery { + + private static final long serialVersionUID = -8792519310029596796L; + + public static class Builder extends AbstractQuery.Builder<TaskExecQuery, Builder> { + + @Override + protected TaskExecQuery newInstance() { + return new TaskExecQuery(); + } + + public Builder key(final Long key) { + getInstance().setKey(key); + return this; + } + } + + private Long key; + + public Long getKey() { + return key; + } + + @NotNull + @PathParam("key") + public void setKey(final Long key) { + this.key = key; + } + +} http://git-wip-us.apache.org/repos/asf/syncope/blob/930db341/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 index 145384e..75442c8 100644 --- 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 @@ -20,6 +20,7 @@ package org.apache.syncope.common.rest.api.beans; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; +import javax.ws.rs.DefaultValue; import javax.ws.rs.MatrixParam; import javax.ws.rs.QueryParam; import org.apache.syncope.common.lib.types.AnyTypeKind; @@ -57,6 +58,11 @@ public class TaskQuery extends AbstractQuery { return this; } + public Builder details(final boolean details) { + getInstance().setDetails(details); + return this; + } + @Override public TaskQuery build() { if (getInstance().type == null) { @@ -75,6 +81,8 @@ public class TaskQuery extends AbstractQuery { private Long anyTypeKey; + private Boolean details; + public TaskType getType() { return type; } @@ -113,4 +121,14 @@ public class TaskQuery extends AbstractQuery { this.anyTypeKey = anyTypeKey; } + public Boolean getDetails() { + 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/930db341/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 5337d44..7e03bfe 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 @@ -42,6 +42,7 @@ import org.apache.syncope.common.lib.to.SchedTaskTO; 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.rest.api.beans.TaskExecQuery; import org.apache.syncope.common.rest.api.beans.TaskQuery; /** @@ -54,31 +55,23 @@ public interface TaskService extends JAXRSService { * Returns the task matching the given key. * * @param key key of task to be read + * @param details whether include executions or not, defaults to true * @param <T> type of taskTO * @return task with matching id */ @GET @Path("{key}") @Produces({ JAXRSService.APPLICATION_XML, MediaType.APPLICATION_JSON }) - <T extends AbstractTaskTO> T read(@NotNull @PathParam("key") Long key); - - /** - * Returns the task execution with the given id. - * - * @param executionKey key of task execution to be read - * @return task execution with matching Id - */ - @GET - @Path("executions/{executionKey}") - @Produces({ JAXRSService.APPLICATION_XML, MediaType.APPLICATION_JSON }) - TaskExecTO readExecution(@NotNull @PathParam("executionKey") Long executionKey); + <T extends AbstractTaskTO> T read( + @NotNull @PathParam("key") Long key, + @QueryParam(JAXRSService.PARAM_DETAILS) @DefaultValue("true") boolean details); /** * Returns a paged list of existing tasks matching the given query. * * @param query query conditions * @param <T> type of taskTO - * @return paged list of existing tasks matching type and the given query + * @return paged list of existing tasks matching the given query */ @GET @Produces({ JAXRSService.APPLICATION_XML, MediaType.APPLICATION_JSON }) @@ -113,6 +106,28 @@ public interface TaskService extends JAXRSService { @Path("{key}") void delete(@NotNull @PathParam("key") Long key); + /* + * Returns the task execution with the given id. + * + * @param executionKey key of task execution to be read + * @return task execution with matching Id + */ + @GET + @Path("executions/{executionKey}") + @Produces({ JAXRSService.APPLICATION_XML, MediaType.APPLICATION_JSON }) + TaskExecTO readExecution(@NotNull @PathParam("executionKey") Long executionKey); + + /** + * Returns a paged list of task executions matching the given query. + * + * @param query query conditions + * @return paged list of task executions the given query + */ + @GET + @Path("{key}/executions") + @Produces({ JAXRSService.APPLICATION_XML, MediaType.APPLICATION_JSON }) + PagedResult<TaskExecTO> listExecutions(@BeanParam TaskExecQuery query); + /** * Deletes the task execution matching the provided key. * http://git-wip-us.apache.org/repos/asf/syncope/blob/930db341/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 3e716d6..1c48f62 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 @@ -113,7 +113,7 @@ public class TaskLogic extends AbstractJobLogic<AbstractTaskTO> { throw sce; } - return binder.getTaskTO(task, taskUtils); + return binder.getTaskTO(task, taskUtils, false); } @PreAuthorize("hasRole('" + StandardEntitlement.TASK_UPDATE + "')") @@ -145,7 +145,7 @@ public class TaskLogic extends AbstractJobLogic<AbstractTaskTO> { throw sce; } - return binder.getTaskTO(task, taskUtils); + return binder.getTaskTO(task, taskUtils, false); } @PreAuthorize("hasRole('" + StandardEntitlement.TASK_LIST + "')") @@ -159,7 +159,7 @@ public class TaskLogic extends AbstractJobLogic<AbstractTaskTO> { @SuppressWarnings("unchecked") 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 int page, final int size, final List<OrderByClause> orderByClauses, final boolean details) { final TaskUtils taskUtils = taskUtilsFactory.getInstance(type); @@ -167,29 +167,20 @@ public class TaskLogic extends AbstractJobLogic<AbstractTaskTO> { 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, taskUtils); - } - }, new ArrayList<T>()); + @Override + public T transform(final Task task) { + return (T) binder.getTaskTO(task, taskUtils, details); + } + }, new ArrayList<T>()); } @PreAuthorize("hasRole('" + StandardEntitlement.TASK_READ + "')") - public <T extends AbstractTaskTO> T read(final Long taskKey) { + public <T extends AbstractTaskTO> T read(final Long taskKey, final boolean details) { Task task = taskDAO.find(taskKey); if (task == null) { throw new NotFoundException("Task " + taskKey); } - return binder.getTaskTO(task, taskUtilsFactory.getInstance(task)); - } - - @PreAuthorize("hasRole('" + StandardEntitlement.TASK_READ + "')") - public TaskExecTO readExecution(final Long execKey) { - TaskExec taskExec = taskExecDAO.find(execKey); - if (taskExec == null) { - throw new NotFoundException("Task execution " + execKey); - } - return binder.getTaskExecTO(taskExec); + return binder.getTaskTO(task, taskUtilsFactory.getInstance(task), details); } @PreAuthorize("hasRole('" + StandardEntitlement.TASK_EXECUTE + "')") @@ -253,7 +244,7 @@ public class TaskLogic extends AbstractJobLogic<AbstractTaskTO> { } TaskUtils taskUtils = taskUtilsFactory.getInstance(task); - T taskToDelete = binder.getTaskTO(task, taskUtils); + T taskToDelete = binder.getTaskTO(task, taskUtils, true); if (TaskType.SCHEDULED == taskUtils.getType() || TaskType.SYNCHRONIZATION == taskUtils.getType() @@ -266,6 +257,34 @@ public class TaskLogic extends AbstractJobLogic<AbstractTaskTO> { return taskToDelete; } + @PreAuthorize("hasRole('" + StandardEntitlement.TASK_READ + "')") + public TaskExecTO readExecution(final Long execKey) { + TaskExec taskExec = taskExecDAO.find(execKey); + if (taskExec == null) { + throw new NotFoundException("Task execution " + execKey); + } + return binder.getTaskExecTO(taskExec); + } + + @PreAuthorize("hasRole('" + StandardEntitlement.TASK_READ + "')") + public int countExecutions(final Long taskId) { + return taskExecDAO.count(taskId); + } + + @PreAuthorize("hasRole('" + StandardEntitlement.TASK_READ + "')") + public List<TaskExecTO> listExecutions( + final Long taskKey, final int page, final int size, final List<OrderByClause> orderByClauses) { + + return CollectionUtils.collect(taskExecDAO.findAll(taskKey, page, size, orderByClauses), + new Transformer<TaskExec, TaskExecTO>() { + + @Override + public TaskExecTO transform(final TaskExec taskExec) { + return binder.getTaskExecTO(taskExec); + } + }, new ArrayList<TaskExecTO>()); + } + @PreAuthorize("hasRole('" + StandardEntitlement.TASK_DELETE + "')") public TaskExecTO deleteExecution(final Long execKey) { TaskExec taskExec = taskExecDAO.find(execKey); @@ -299,7 +318,7 @@ public class TaskLogic extends AbstractJobLogic<AbstractTaskTO> { if ((key != null) && !key.equals(0L)) { try { final Task task = taskDAO.find(key); - return binder.getTaskTO(task, taskUtilsFactory.getInstance(task)); + return binder.getTaskTO(task, taskUtilsFactory.getInstance(task), false); } catch (Throwable ignore) { LOG.debug("Unresolved reference", ignore); throw new UnresolvedReferenceException(ignore); http://git-wip-us.apache.org/repos/asf/syncope/blob/930db341/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskExecDAO.java ---------------------------------------------------------------------- diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskExecDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskExecDAO.java index 103016d..72e2988 100644 --- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskExecDAO.java +++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskExecDAO.java @@ -20,6 +20,7 @@ package org.apache.syncope.core.persistence.api.dao; import java.util.List; 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.task.Task; import org.apache.syncope.core.persistence.api.entity.task.TaskExec; @@ -33,6 +34,10 @@ public interface TaskExecDAO extends DAO<TaskExec, Long> { List<TaskExec> findAll(TaskType type); + int count(Long taskKey); + + List<TaskExec> findAll(Long taskKey, int page, int itemsPerPage, List<OrderByClause> orderByClauses); + TaskExec save(TaskExec execution); void saveAndAdd(Long taskId, TaskExec execution); http://git-wip-us.apache.org/repos/asf/syncope/blob/930db341/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 1ea8968..582cd18 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 @@ -149,7 +149,9 @@ public class JPATaskDAO extends AbstractDAO<Task, Long> implements TaskDAO { } } - if (statement.length() > 0) { + if (statement.length() == 0) { + statement.append("ORDER BY t.id DESC"); + } else { statement.insert(0, "ORDER BY "); } return statement.toString(); @@ -167,9 +169,7 @@ public class JPATaskDAO extends AbstractDAO<Task, Long> implements TaskDAO { final List<OrderByClause> orderByClauses) { StringBuilder queryString = buildFindAllQuery(type, resource, anyTypeKind, anyTypeKey). - append(orderByClauses.isEmpty() - ? "ORDER BY t.id DESC" - : toOrderByStatement(getEntityReference(type), orderByClauses)); + append(toOrderByStatement(getEntityReference(type), orderByClauses)); Query query = entityManager().createQuery(queryString.toString()); query.setParameter("type", type); http://git-wip-us.apache.org/repos/asf/syncope/blob/930db341/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 9b03814..4876056 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 @@ -19,16 +19,19 @@ package org.apache.syncope.core.persistence.jpa.dao; import java.util.List; +import javax.persistence.Query; import javax.persistence.TypedQuery; 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.TaskExecDAO; +import org.apache.syncope.core.persistence.api.dao.search.OrderByClause; import org.apache.syncope.core.persistence.api.entity.task.Task; import org.apache.syncope.core.persistence.api.entity.task.TaskExec; import org.apache.syncope.core.persistence.jpa.entity.task.JPATaskExec; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ReflectionUtils; @Repository public class JPATaskExecDAO extends AbstractDAO<TaskExec, Long> implements TaskExecDAO { @@ -67,14 +70,59 @@ 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)"); - - TypedQuery<TaskExec> query = entityManager().createQuery(queryString.toString(), TaskExec.class); + String queryString = "SELECT e FROM " + JPATaskExec.class.getSimpleName() + + " e WHERE e.task IN (" + + "SELECT t FROM " + taskDAO.getEntityReference(type).getSimpleName() + " t)"; + + TypedQuery<TaskExec> query = entityManager().createQuery(queryString, TaskExec.class); + return query.getResultList(); + } + + @Override + public int count(final Long taskKey) { + Query countQuery = entityManager().createNativeQuery( + "SELECT COUNT(e.id) FROM " + JPATaskExec.TABLE + " e WHERE e.task_id=?1"); + countQuery.setParameter(1, taskKey); + + return ((Number) countQuery.getSingleResult()).intValue(); + } + + private String toOrderByStatement(final List<OrderByClause> orderByClauses) { + StringBuilder statement = new StringBuilder(); + + for (OrderByClause clause : orderByClauses) { + String field = clause.getField().trim(); + if (ReflectionUtils.findField(JPATaskExec.class, field) != null) { + statement.append("e.").append(field).append(' ').append(clause.getDirection().name()); + } + } + + if (statement.length() == 0) { + statement.append("ORDER BY e.id DESC"); + } else { + statement.insert(0, "ORDER BY "); + } + return statement.toString(); + } + + @Override + public List<TaskExec> findAll( + final Long taskKey, final int page, final int itemsPerPage, final List<OrderByClause> orderByClauses) { + + String queryString = + "SELECT e FROM " + JPATaskExec.class.getSimpleName() + " e WHERE e.task.id=:taskKey " + + toOrderByStatement(orderByClauses); + + TypedQuery<TaskExec> query = entityManager().createQuery(queryString, TaskExec.class); + query.setParameter("taskKey", taskKey); + + // page starts from 1, while setFirtResult() starts from 0 + query.setFirstResult(itemsPerPage * (page <= 0 ? 0 : page - 1)); + + if (itemsPerPage >= 0) { + query.setMaxResults(itemsPerPage); + } + return query.getResultList(); } http://git-wip-us.apache.org/repos/asf/syncope/blob/930db341/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/TaskDataBinder.java ---------------------------------------------------------------------- diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/TaskDataBinder.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/TaskDataBinder.java index 997e98e..dcaca2b 100644 --- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/TaskDataBinder.java +++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/TaskDataBinder.java @@ -32,7 +32,7 @@ public interface TaskDataBinder { TaskExecTO getTaskExecTO(TaskExec execution); - <T extends AbstractTaskTO> T getTaskTO(Task task, TaskUtils taskUtil); + <T extends AbstractTaskTO> T getTaskTO(Task task, TaskUtils taskUtil, boolean details); void updateSchedTask(SchedTask task, SchedTaskTO taskTO, TaskUtils taskUtil); http://git-wip-us.apache.org/repos/asf/syncope/blob/930db341/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/TaskDataBinderImpl.java ---------------------------------------------------------------------- diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/TaskDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/TaskDataBinderImpl.java index 94dcd13..d3035a3 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/TaskDataBinderImpl.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/TaskDataBinderImpl.java @@ -280,7 +280,7 @@ public class TaskDataBinderImpl implements TaskDataBinder { } @Override - public <T extends AbstractTaskTO> T getTaskTO(final Task task, final TaskUtils taskUtils) { + public <T extends AbstractTaskTO> T getTaskTO(final Task task, final TaskUtils taskUtils, final boolean details) { T taskTO = taskUtils.newTaskTO(); BeanUtils.copyProperties(task, taskTO, IGNORE_TASK_PROPERTIES); @@ -289,9 +289,11 @@ public class TaskDataBinderImpl implements TaskDataBinder { taskTO.setStartDate(latestExec == null ? null : latestExec.getStartDate()); taskTO.setEndDate(latestExec == null ? null : latestExec.getEndDate()); - for (TaskExec execution : task.getExecs()) { - if (execution != null) { - taskTO.getExecutions().add(getTaskExecTO(execution)); + if (details) { + for (TaskExec execution : task.getExecs()) { + if (execution != null) { + taskTO.getExecutions().add(getTaskExecTO(execution)); + } } } http://git-wip-us.apache.org/repos/asf/syncope/blob/930db341/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java ---------------------------------------------------------------------- diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java index 609f1f8..e1b43b4 100644 --- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java +++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java @@ -117,7 +117,7 @@ public abstract class AbstractAnyService<TO extends AnyTO, P extends AnyPatch> listQuery.getSize(), getOrderByClauses(listQuery.getOrderBy()), realm, - listQuery.isDetails()), + listQuery.getDetails()), listQuery.getPage(), listQuery.getSize(), getAnyLogic().count(realm)); @@ -138,7 +138,7 @@ public abstract class AbstractAnyService<TO extends AnyTO, P extends AnyPatch> searchQuery.getSize(), getOrderByClauses(searchQuery.getOrderBy()), isAssignableCond ? SyncopeConstants.ROOT_REALM : realm, - searchQuery.isDetails()), + searchQuery.getDetails()), searchQuery.getPage(), searchQuery.getSize(), getAnyLogic().searchCount(cond, isAssignableCond ? SyncopeConstants.ROOT_REALM : realm)); http://git-wip-us.apache.org/repos/asf/syncope/blob/930db341/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AnyObjectServiceImpl.java ---------------------------------------------------------------------- diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AnyObjectServiceImpl.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AnyObjectServiceImpl.java index 10c46a8..b5227e4 100644 --- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AnyObjectServiceImpl.java +++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AnyObjectServiceImpl.java @@ -63,7 +63,7 @@ public class AnyObjectServiceImpl extends AbstractAnyService<AnyObjectTO, AnyObj AnySearchQuery searchQuery = new AnySearchQuery(); searchQuery.setFiql(new AnyObjectFiqlSearchConditionBuilder(type).query()); - searchQuery.setDetails(listQuery.isDetails()); + searchQuery.setDetails(listQuery.getDetails()); searchQuery.setOrderBy(listQuery.getOrderBy()); searchQuery.setPage(listQuery.getPage()); searchQuery.setSize(listQuery.getSize()); http://git-wip-us.apache.org/repos/asf/syncope/blob/930db341/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/TaskServiceImpl.java ---------------------------------------------------------------------- diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/TaskServiceImpl.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/TaskServiceImpl.java index 17bceb8..748d998 100644 --- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/TaskServiceImpl.java +++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/TaskServiceImpl.java @@ -33,6 +33,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.rest.api.RESTHeaders; +import org.apache.syncope.common.rest.api.beans.TaskExecQuery; import org.apache.syncope.common.rest.api.beans.TaskQuery; import org.apache.syncope.common.rest.api.service.TaskService; import org.apache.syncope.core.logic.TaskLogic; @@ -66,11 +67,6 @@ public class TaskServiceImpl extends AbstractServiceImpl implements TaskService } @Override - public void deleteExecution(final Long executionKey) { - logic.deleteExecution(executionKey); - } - - @Override public TaskExecTO execute(final Long key, final boolean dryRun) { return logic.execute(key, dryRun); } @@ -86,7 +82,8 @@ public class TaskServiceImpl extends AbstractServiceImpl implements TaskService query.getAnyTypeKey(), query.getPage(), query.getSize(), - getOrderByClauses(query.getOrderBy())), + getOrderByClauses(query.getOrderBy()), + query.getDetails()), query.getPage(), query.getSize(), logic.count( @@ -97,13 +94,8 @@ public class TaskServiceImpl extends AbstractServiceImpl implements TaskService } @Override - public <T extends AbstractTaskTO> T read(final Long key) { - return logic.read(key); - } - - @Override - public TaskExecTO readExecution(final Long executionKey) { - return logic.readExecution(executionKey); + public <T extends AbstractTaskTO> T read(final Long key, final boolean details) { + return logic.read(key, details); } @Override @@ -118,6 +110,29 @@ public class TaskServiceImpl extends AbstractServiceImpl implements TaskService } @Override + public TaskExecTO readExecution(final Long executionKey) { + return logic.readExecution(executionKey); + } + + @Override + public PagedResult<TaskExecTO> listExecutions(final TaskExecQuery query) { + return buildPagedResult( + logic.listExecutions( + query.getKey(), + query.getPage(), + query.getSize(), + getOrderByClauses(query.getOrderBy())), + query.getPage(), + query.getSize(), + logic.countExecutions(query.getKey())); + } + + @Override + public void deleteExecution(final Long executionKey) { + logic.deleteExecution(executionKey); + } + + @Override public BulkActionResult bulk(final BulkAction bulkAction) { BulkActionResult result = new BulkActionResult(); http://git-wip-us.apache.org/repos/asf/syncope/blob/930db341/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AbstractTaskITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AbstractTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AbstractTaskITCase.java index c0991a4..88d2450 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AbstractTaskITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AbstractTaskITCase.java @@ -94,7 +94,7 @@ public abstract class AbstractTaskITCase extends AbstractITCase { protected static TaskExecTO execTask(final TaskService taskService, final Long taskKey, final String initialStatus, final int maxWaitSeconds, final boolean dryRun) { - AbstractTaskTO taskTO = taskService.read(taskKey); + AbstractTaskTO taskTO = taskService.read(taskKey, true); assertNotNull(taskTO); assertNotNull(taskTO.getExecutions()); @@ -112,7 +112,7 @@ public abstract class AbstractTaskITCase extends AbstractITCase { } catch (InterruptedException e) { } - taskTO = taskService.read(taskTO.getKey()); + taskTO = taskService.read(taskTO.getKey(), true); assertNotNull(taskTO); assertNotNull(taskTO.getExecutions()); http://git-wip-us.apache.org/repos/asf/syncope/blob/930db341/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/MultitenancyITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/MultitenancyITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/MultitenancyITCase.java index 8d456ff..bb56342 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/MultitenancyITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/MultitenancyITCase.java @@ -198,7 +198,7 @@ public class MultitenancyITCase extends AbstractITCase { response = adminClient.getService(TaskService.class).create(task); assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatus()); task = adminClient.getService(TaskService.class).read( - Long.valueOf(StringUtils.substringAfterLast(response.getLocation().toASCIIString(), "/"))); + Long.valueOf(StringUtils.substringAfterLast(response.getLocation().toASCIIString(), "/")), true); assertNotNull(resource); // synchronize http://git-wip-us.apache.org/repos/asf/syncope/blob/930db341/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/NotificationTaskITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/NotificationTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/NotificationTaskITCase.java index 853b17c..0d18693 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/NotificationTaskITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/NotificationTaskITCase.java @@ -144,7 +144,7 @@ public class NotificationTaskITCase extends AbstractTaskITCase { assertTrue(verifyMail(sender, subject, recipient)); // verify message body - taskTO = taskService.read(taskTO.getKey()); + taskTO = taskService.read(taskTO.getKey(), true); assertNotNull(taskTO); assertTrue(taskTO.isExecuted()); assertNotNull(taskTO.getTextBody()); @@ -191,7 +191,7 @@ public class NotificationTaskITCase extends AbstractTaskITCase { // 4. verify notification could not be delivered execTask(taskService, taskTO.getKey(), NotificationJob.Status.NOT_SENT.name(), 5, false); - taskTO = taskService.read(taskTO.getKey()); + taskTO = taskService.read(taskTO.getKey(), true); assertNotNull(taskTO); assertFalse(taskTO.isExecuted()); assertFalse(taskTO.getExecutions().isEmpty()); @@ -217,7 +217,7 @@ public class NotificationTaskITCase extends AbstractTaskITCase { // generate an execution in order to verify the deletion of a notification task with one or more executions execNotificationTask(taskService, taskTO.getKey(), 50); - taskTO = taskService.read(taskTO.getKey()); + taskTO = taskService.read(taskTO.getKey(), true); assertTrue(taskTO.isExecuted()); assertFalse(taskTO.getExecutions().isEmpty()); @@ -240,7 +240,7 @@ public class NotificationTaskITCase extends AbstractTaskITCase { execNotificationTask(taskService, taskTO.getKey(), 50); // 4. verify - taskTO = taskService.read(taskTO.getKey()); + taskTO = taskService.read(taskTO.getKey(), true); assertNotNull(taskTO); assertTrue(taskTO.isExecuted()); assertEquals(1, taskTO.getExecutions().size()); @@ -269,7 +269,7 @@ public class NotificationTaskITCase extends AbstractTaskITCase { assertTrue(verifyMail(sender, subject, recipient)); // verify that last exec status was updated - taskTO = taskService.read(taskTO.getKey()); + taskTO = taskService.read(taskTO.getKey(), true); assertNotNull(taskTO); assertTrue(taskTO.isExecuted()); assertTrue(taskTO.getExecutions().isEmpty()); @@ -291,7 +291,7 @@ public class NotificationTaskITCase extends AbstractTaskITCase { assertTrue(verifyMail(sender, subject, recipient)); // verify task - taskTO = taskService.read(taskTO.getKey()); + taskTO = taskService.read(taskTO.getKey(), true); assertTrue(taskTO.isExecuted()); assertNotNull(taskTO); assertTrue(taskTO.getRecipients().contains("[email protected]")); http://git-wip-us.apache.org/repos/asf/syncope/blob/930db341/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PropagationTaskITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PropagationTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PropagationTaskITCase.java index 5b65496..cd2a010 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PropagationTaskITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PropagationTaskITCase.java @@ -32,6 +32,7 @@ import org.apache.syncope.common.lib.to.PropagationTaskTO; import org.apache.syncope.common.lib.to.TaskExecTO; import org.apache.syncope.common.lib.to.UserTO; import org.apache.syncope.common.lib.types.TaskType; +import org.apache.syncope.common.rest.api.beans.TaskExecQuery; import org.apache.syncope.common.rest.api.beans.TaskQuery; import org.junit.FixMethodOrder; import org.junit.Test; @@ -69,7 +70,7 @@ public class PropagationTaskITCase extends AbstractTaskITCase { @Test public void read() { - final PropagationTaskTO taskTO = taskService.read(3L); + final PropagationTaskTO taskTO = taskService.read(3L, true); assertNotNull(taskTO); assertNotNull(taskTO.getExecutions()); assertTrue(taskTO.getExecutions().isEmpty()); @@ -109,4 +110,46 @@ public class PropagationTaskITCase extends AbstractTaskITCase { assertFalse(taskService.list(new TaskQuery.Builder().type(TaskType.PROPAGATION).build()).getResult(). containsAll(after)); } + + @Test + public void issueSYNCOPE741() { + for (int i = 0; i < 3; i++) { + taskService.execute(1L, false); + taskService.execute(2L, false); + } + try { + Thread.sleep(3000); + } catch (InterruptedException e) { + // ignore + } + + // check list + PagedResult<AbstractTaskTO> tasks = taskService.list( + new TaskQuery.Builder().type(TaskType.PROPAGATION).page(1).size(2).details(false).build()); + for (AbstractTaskTO item : tasks.getResult()) { + assertTrue(item.getExecutions().isEmpty()); + } + + tasks = taskService.list( + new TaskQuery.Builder().type(TaskType.PROPAGATION).page(1).size(2).details(true).build()); + for (AbstractTaskTO item : tasks.getResult()) { + assertFalse(item.getExecutions().isEmpty()); + } + + // check read + PropagationTaskTO task = taskService.read(1L, false); + assertNotNull(task); + assertEquals(1L, task.getKey()); + assertTrue(task.getExecutions().isEmpty()); + + task = taskService.read(1L, true); + assertNotNull(task); + assertEquals(1L, task.getKey()); + assertFalse(task.getExecutions().isEmpty()); + + // check list executions + PagedResult<TaskExecTO> execs = taskService.listExecutions( + new TaskExecQuery.Builder().key(1L).page(1).size(2).build()); + assertTrue(execs.getTotalCount() >= execs.getResult().size()); + } } http://git-wip-us.apache.org/repos/asf/syncope/blob/930db341/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PushTaskITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PushTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PushTaskITCase.java index 1371d69..2213f53 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PushTaskITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PushTaskITCase.java @@ -73,7 +73,7 @@ public class PushTaskITCase extends AbstractTaskITCase { @Test public void read() { - PushTaskTO pushTaskTO = taskService.<PushTaskTO>read(17L); + PushTaskTO pushTaskTO = taskService.<PushTaskTO>read(17L, true); assertEquals(UnmatchingRule.ASSIGN, pushTaskTO.getUnmatchingRule()); assertEquals(MatchingRule.UPDATE, pushTaskTO.getMatchingRule()); } @@ -104,7 +104,7 @@ public class PushTaskITCase extends AbstractTaskITCase { final PushTaskTO actual = getObject(response.getLocation(), TaskService.class, PushTaskTO.class); assertNotNull(actual); - task = taskService.read(actual.getKey()); + task = taskService.read(actual.getKey(), true); assertNotNull(task); assertEquals(task.getKey(), actual.getKey()); assertEquals(task.getJobDelegateClassName(), actual.getJobDelegateClassName()); http://git-wip-us.apache.org/repos/asf/syncope/blob/930db341/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SchedTaskITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SchedTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SchedTaskITCase.java index 884ff9a..3d1605d 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SchedTaskITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SchedTaskITCase.java @@ -67,7 +67,7 @@ public class SchedTaskITCase extends AbstractTaskITCase { @Test public void update() { - SchedTaskTO task = taskService.read(SCHED_TASK_ID); + SchedTaskTO task = taskService.read(SCHED_TASK_ID, true); assertNotNull(task); SchedTaskTO taskMod = new SchedTaskTO(); @@ -75,7 +75,7 @@ public class SchedTaskITCase extends AbstractTaskITCase { taskMod.setCronExpression(null); taskService.update(taskMod); - SchedTaskTO actual = taskService.read(taskMod.getKey()); + SchedTaskTO actual = taskService.read(taskMod.getKey(), true); assertNotNull(actual); assertEquals(task.getKey(), actual.getKey()); assertNull(actual.getCronExpression()); @@ -94,7 +94,7 @@ public class SchedTaskITCase extends AbstractTaskITCase { assertEquals("issueSYNCOPE144", actual.getName()); assertEquals("issueSYNCOPE144 Description", actual.getDescription()); - task = taskService.read(actual.getKey()); + task = taskService.read(actual.getKey(), true); assertNotNull(task); assertEquals("issueSYNCOPE144", task.getName()); assertEquals("issueSYNCOPE144 Description", task.getDescription()); http://git-wip-us.apache.org/repos/asf/syncope/blob/930db341/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java index eeabd8f..b774bde 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java @@ -83,7 +83,7 @@ public class SyncTaskITCase extends AbstractTaskITCase { @BeforeClass public static void testSyncActionsSetup() { - SyncTaskTO syncTask = taskService.read(SYNC_TASK_ID); + SyncTaskTO syncTask = taskService.read(SYNC_TASK_ID, true); syncTask.getActionsClassNames().add(TestSyncActions.class.getName()); taskService.update(syncTask); } @@ -129,7 +129,7 @@ public class SyncTaskITCase extends AbstractTaskITCase { SyncTaskTO actual = getObject(response.getLocation(), TaskService.class, SyncTaskTO.class); assertNotNull(actual); - task = taskService.read(actual.getKey()); + task = taskService.read(actual.getKey(), true); assertNotNull(task); assertEquals(actual.getKey(), task.getKey()); assertEquals(actual.getJobDelegateClassName(), task.getJobDelegateClassName()); @@ -458,7 +458,7 @@ public class SyncTaskITCase extends AbstractTaskITCase { jdbcTemplate.execute("INSERT INTO testsync VALUES (1002, 'user2', 'Rossi', '[email protected]')"); // 2. create new sync task for test-db, with reconciliation filter (surname 'Rossi') - task = taskService.read(10L); + task = taskService.read(10L, true); task.setSyncMode(SyncMode.FILTERED_RECONCILIATION); task.setReconciliationFilterBuilderClassName(TestReconciliationFilterBuilder.class.getName()); Response response = taskService.create(task); @@ -536,13 +536,13 @@ public class SyncTaskITCase extends AbstractTaskITCase { //----------------------------- // Update sync task - SyncTaskTO task = taskService.read(9L); + SyncTaskTO task = taskService.read(9L, true); assertNotNull(task); task.getTemplates().put(AnyTypeKind.USER.name(), template); taskService.update(task); - SyncTaskTO actual = taskService.read(task.getKey()); + SyncTaskTO actual = taskService.read(task.getKey(), true); assertNotNull(actual); assertEquals(task.getKey(), actual.getKey()); assertFalse(actual.getTemplates().get(AnyTypeKind.USER.name()).getResources().isEmpty()); @@ -631,7 +631,7 @@ public class SyncTaskITCase extends AbstractTaskITCase { execProvisioningTask(taskService, task.getKey(), 50, false); - SyncTaskTO executed = taskService.read(task.getKey()); + SyncTaskTO executed = taskService.read(task.getKey(), true); assertEquals(1, executed.getExecutions().size()); // asser for just one match @@ -689,7 +689,7 @@ public class SyncTaskITCase extends AbstractTaskITCase { assertTrue(userTO.getVirAttrMap().isEmpty()); // Update sync task - SyncTaskTO task = taskService.read(12L); + SyncTaskTO task = taskService.read(12L, true); assertNotNull(task); UserTO template = new UserTO(); @@ -755,7 +755,7 @@ public class SyncTaskITCase extends AbstractTaskITCase { SyncTaskTO actual = getObject(taskResponse.getLocation(), TaskService.class, SyncTaskTO.class); assertNotNull(actual); - syncTask = taskService.read(actual.getKey()); + syncTask = taskService.read(actual.getKey(), true); assertNotNull(syncTask); assertEquals(actual.getKey(), syncTask.getKey()); assertEquals(actual.getJobDelegateClassName(), syncTask.getJobDelegateClassName()); http://git-wip-us.apache.org/repos/asf/syncope/blob/930db341/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/UserITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/UserITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/UserITCase.java index 44f09c2..199fe0b 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/UserITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/UserITCase.java @@ -168,7 +168,7 @@ public class UserITCase extends AbstractITCase { assertTrue(newMaxKey > maxKey); // get last task - PropagationTaskTO taskTO = taskService.read(newMaxKey); + PropagationTaskTO taskTO = taskService.read(newMaxKey, true); assertNotNull(taskTO); assertFalse(taskTO.getExecutions().isEmpty()); assertEquals(PropagationTaskExecStatus.NOT_ATTEMPTED.name(), taskTO.getExecutions().get(0).getStatus()); @@ -353,7 +353,7 @@ public class UserITCase extends AbstractITCase { assertFalse(tasks.getResult().isEmpty()); long maxKey = tasks.getResult().iterator().next().getKey(); - PropagationTaskTO taskTO = taskService.read(maxKey); + PropagationTaskTO taskTO = taskService.read(maxKey, true); assertNotNull(taskTO); int maxTaskExecutions = taskTO.getExecutions().size(); @@ -400,7 +400,7 @@ public class UserITCase extends AbstractITCase { assertEquals(newMaxKey, maxKey); // get last task - taskTO = taskService.read(newMaxKey); + taskTO = taskService.read(newMaxKey, true); assertNotNull(taskTO); assertEquals(maxTaskExecutions, taskTO.getExecutions().size()); @@ -764,7 +764,7 @@ public class UserITCase extends AbstractITCase { // all update executions have to be registered assertTrue(newMaxKey > maxKey); - PropagationTaskTO taskTO = taskService.read(newMaxKey); + PropagationTaskTO taskTO = taskService.read(newMaxKey, true); assertNotNull(taskTO); assertEquals(1, taskTO.getExecutions().size());
