[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"
