SYNCOPE-909 - Consolidate "Create" functionality
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/377ce234 Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/377ce234 Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/377ce234 Branch: refs/heads/master Commit: 377ce234bcabd209245e47c706760243c1539db2 Parents: 1b325bb Author: Colm O hEigeartaigh <cohei...@apache.org> Authored: Wed Jul 27 14:28:27 2016 +0100 Committer: Colm O hEigeartaigh <cohei...@apache.org> Committed: Wed Jul 27 16:21:34 2016 +0100 ---------------------------------------------------------------------- .../processor/AnyObjectCreateProcessor.java | 64 -------------- .../camel/processor/CreateProcessor.java | 91 ++++++++++++++++++++ .../camel/processor/GroupCreateProcessor.java | 64 -------------- .../camel/processor/UserCreateProcessor.java | 69 --------------- .../src/main/resources/anyObjectRoutes.xml | 4 +- .../src/main/resources/groupRoutes.xml | 4 +- .../src/main/resources/userRoutes.xml | 2 +- .../syncope/fit/core/CamelRouteITCase.java | 4 +- 8 files changed, 98 insertions(+), 204 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/377ce234/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/processor/AnyObjectCreateProcessor.java ---------------------------------------------------------------------- diff --git a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/processor/AnyObjectCreateProcessor.java b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/processor/AnyObjectCreateProcessor.java deleted file mode 100644 index 426ab81..0000000 --- a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/processor/AnyObjectCreateProcessor.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.syncope.core.provisioning.camel.processor; - -import java.util.List; -import java.util.Set; -import org.apache.camel.Exchange; -import org.apache.camel.Processor; -import org.apache.commons.lang3.tuple.ImmutablePair; -import org.apache.syncope.common.lib.to.AnyObjectTO; -import org.apache.syncope.common.lib.types.AnyTypeKind; -import org.apache.syncope.core.persistence.api.entity.task.PropagationTask; -import org.apache.syncope.core.provisioning.api.WorkflowResult; -import org.apache.syncope.core.provisioning.api.propagation.PropagationManager; -import org.apache.syncope.core.provisioning.api.propagation.PropagationReporter; -import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -@Component -public class AnyObjectCreateProcessor implements Processor { - - @Autowired - protected PropagationManager propagationManager; - - @Autowired - protected PropagationTaskExecutor taskExecutor; - - @SuppressWarnings("unchecked") - @Override - public void process(final Exchange exchange) { - WorkflowResult<String> created = (WorkflowResult<String>) exchange.getIn().getBody(); - AnyObjectTO any = exchange.getProperty("any", AnyObjectTO.class); - Set<String> excludedResources = exchange.getProperty("excludedResources", Set.class); - Boolean nullPriorityAsync = exchange.getProperty("nullPriorityAsync", Boolean.class); - - List<PropagationTask> tasks = propagationManager.getCreateTasks( - AnyTypeKind.ANY_OBJECT, - created.getResult(), - created.getPropByRes(), - any.getVirAttrs(), - excludedResources); - PropagationReporter propagationReporter = taskExecutor.execute(tasks, nullPriorityAsync); - - exchange.getOut().setBody(new ImmutablePair<>(created.getResult(), propagationReporter.getStatuses())); - } - -} http://git-wip-us.apache.org/repos/asf/syncope/blob/377ce234/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/processor/CreateProcessor.java ---------------------------------------------------------------------- diff --git a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/processor/CreateProcessor.java b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/processor/CreateProcessor.java new file mode 100644 index 0000000..494e319 --- /dev/null +++ b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/processor/CreateProcessor.java @@ -0,0 +1,91 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.core.provisioning.camel.processor; + +import java.util.List; +import java.util.Set; +import org.apache.camel.Exchange; +import org.apache.camel.Processor; +import org.apache.commons.lang3.tuple.ImmutablePair; +import org.apache.commons.lang3.tuple.Pair; +import org.apache.syncope.common.lib.to.AnyObjectTO; +import org.apache.syncope.common.lib.to.AnyTO; +import org.apache.syncope.common.lib.to.UserTO; +import org.apache.syncope.common.lib.types.AnyTypeKind; +import org.apache.syncope.core.persistence.api.entity.task.PropagationTask; +import org.apache.syncope.core.provisioning.api.WorkflowResult; +import org.apache.syncope.core.provisioning.api.propagation.PropagationManager; +import org.apache.syncope.core.provisioning.api.propagation.PropagationReporter; +import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class CreateProcessor implements Processor { + + @Autowired + protected PropagationManager propagationManager; + + @Autowired + protected PropagationTaskExecutor taskExecutor; + + @SuppressWarnings("unchecked") + @Override + public void process(final Exchange exchange) { + if ((exchange.getIn().getBody() instanceof WorkflowResult)) { + Object actual = exchange.getProperty("actual"); + Set<String> excludedResources = exchange.getProperty("excludedResources", Set.class); + Boolean nullPriorityAsync = exchange.getProperty("nullPriorityAsync", Boolean.class); + + if (actual instanceof UserTO) { + WorkflowResult<Pair<String, Boolean>> created = + (WorkflowResult<Pair<String, Boolean>>) exchange.getIn().getBody(); + + List<PropagationTask> tasks = propagationManager.getUserCreateTasks( + created.getResult().getKey(), + ((UserTO) actual).getPassword(), + created.getResult().getValue(), + created.getPropByRes(), + ((UserTO) actual).getVirAttrs(), + excludedResources); + PropagationReporter propagationReporter = taskExecutor.execute(tasks, nullPriorityAsync); + + exchange.getOut().setBody( + new ImmutablePair<>(created.getResult().getKey(), propagationReporter.getStatuses())); + } else if (actual instanceof AnyTO) { + WorkflowResult<String> created = (WorkflowResult<String>) exchange.getIn().getBody(); + + AnyTypeKind anyTypeKind = AnyTypeKind.GROUP; + if (actual instanceof AnyObjectTO) { + anyTypeKind = AnyTypeKind.ANY_OBJECT; + } + List<PropagationTask> tasks = propagationManager.getCreateTasks( + anyTypeKind, + created.getResult(), + created.getPropByRes(), + ((AnyTO) actual).getVirAttrs(), + excludedResources); + PropagationReporter propagationReporter = taskExecutor.execute(tasks, nullPriorityAsync); + + exchange.getOut().setBody(new ImmutablePair<>(created.getResult(), propagationReporter.getStatuses())); + } + } + } + +} http://git-wip-us.apache.org/repos/asf/syncope/blob/377ce234/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/processor/GroupCreateProcessor.java ---------------------------------------------------------------------- diff --git a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/processor/GroupCreateProcessor.java b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/processor/GroupCreateProcessor.java deleted file mode 100644 index c700743..0000000 --- a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/processor/GroupCreateProcessor.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.syncope.core.provisioning.camel.processor; - -import java.util.List; -import java.util.Set; -import org.apache.camel.Exchange; -import org.apache.camel.Processor; -import org.apache.commons.lang3.tuple.ImmutablePair; -import org.apache.syncope.common.lib.to.GroupTO; -import org.apache.syncope.common.lib.types.AnyTypeKind; -import org.apache.syncope.core.persistence.api.entity.task.PropagationTask; -import org.apache.syncope.core.provisioning.api.WorkflowResult; -import org.apache.syncope.core.provisioning.api.propagation.PropagationManager; -import org.apache.syncope.core.provisioning.api.propagation.PropagationReporter; -import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -@Component -public class GroupCreateProcessor implements Processor { - - @Autowired - protected PropagationManager propagationManager; - - @Autowired - protected PropagationTaskExecutor taskExecutor; - - @SuppressWarnings("unchecked") - @Override - public void process(final Exchange exchange) { - WorkflowResult<String> created = (WorkflowResult<String>) exchange.getIn().getBody(); - GroupTO any = exchange.getProperty("any", GroupTO.class); - Set<String> excludedResources = exchange.getProperty("excludedResources", Set.class); - Boolean nullPriorityAsync = exchange.getProperty("nullPriorityAsync", Boolean.class); - - List<PropagationTask> tasks = propagationManager.getCreateTasks( - AnyTypeKind.GROUP, - created.getResult(), - created.getPropByRes(), - any.getVirAttrs(), - excludedResources); - PropagationReporter propagationReporter = taskExecutor.execute(tasks, nullPriorityAsync); - - exchange.getOut().setBody(new ImmutablePair<>(created.getResult(), propagationReporter.getStatuses())); - } - -} http://git-wip-us.apache.org/repos/asf/syncope/blob/377ce234/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/processor/UserCreateProcessor.java ---------------------------------------------------------------------- diff --git a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/processor/UserCreateProcessor.java b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/processor/UserCreateProcessor.java deleted file mode 100644 index 972b06e..0000000 --- a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/processor/UserCreateProcessor.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.syncope.core.provisioning.camel.processor; - -import java.util.List; -import java.util.Set; -import org.apache.camel.Exchange; -import org.apache.camel.Processor; -import org.apache.commons.lang3.tuple.ImmutablePair; -import org.apache.commons.lang3.tuple.Pair; -import org.apache.syncope.common.lib.to.UserTO; -import org.apache.syncope.core.persistence.api.entity.task.PropagationTask; -import org.apache.syncope.core.provisioning.api.WorkflowResult; -import org.apache.syncope.core.provisioning.api.propagation.PropagationManager; -import org.apache.syncope.core.provisioning.api.propagation.PropagationReporter; -import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -@Component -public class UserCreateProcessor implements Processor { - - @Autowired - protected PropagationManager propagationManager; - - @Autowired - protected PropagationTaskExecutor taskExecutor; - - @SuppressWarnings("unchecked") - @Override - public void process(final Exchange exchange) { - if ((exchange.getIn().getBody() instanceof WorkflowResult)) { - WorkflowResult<Pair<String, Boolean>> created = - (WorkflowResult<Pair<String, Boolean>>) exchange.getIn().getBody(); - UserTO actual = exchange.getProperty("actual", UserTO.class); - Set<String> excludedResources = exchange.getProperty("excludedResources", Set.class); - Boolean nullPriorityAsync = exchange.getProperty("nullPriorityAsync", Boolean.class); - - List<PropagationTask> tasks = propagationManager.getUserCreateTasks( - created.getResult().getKey(), - actual.getPassword(), - created.getResult().getValue(), - created.getPropByRes(), - actual.getVirAttrs(), - excludedResources); - PropagationReporter propagationReporter = taskExecutor.execute(tasks, nullPriorityAsync); - - exchange.getOut().setBody( - new ImmutablePair<>(created.getResult().getKey(), propagationReporter.getStatuses())); - } - } - -} http://git-wip-us.apache.org/repos/asf/syncope/blob/377ce234/ext/camel/provisioning-camel/src/main/resources/anyObjectRoutes.xml ---------------------------------------------------------------------- diff --git a/ext/camel/provisioning-camel/src/main/resources/anyObjectRoutes.xml b/ext/camel/provisioning-camel/src/main/resources/anyObjectRoutes.xml index c0b1fe5..d4e56e4 100644 --- a/ext/camel/provisioning-camel/src/main/resources/anyObjectRoutes.xml +++ b/ext/camel/provisioning-camel/src/main/resources/anyObjectRoutes.xml @@ -21,12 +21,12 @@ under the License. <route id="createAnyObject"> <from uri="direct:createAnyObject"/> - <setProperty propertyName="any"> + <setProperty propertyName="actual"> <simple>${body}</simple> </setProperty> <doTry> <bean ref="awfAdapter" method="create(${body})"/> - <process ref="anyObjectCreateProcessor"/> + <process ref="createProcessor"/> <to uri="direct:createAnyObjectPort"/> <doCatch> <exception>java.lang.RuntimeException</exception> http://git-wip-us.apache.org/repos/asf/syncope/blob/377ce234/ext/camel/provisioning-camel/src/main/resources/groupRoutes.xml ---------------------------------------------------------------------- diff --git a/ext/camel/provisioning-camel/src/main/resources/groupRoutes.xml b/ext/camel/provisioning-camel/src/main/resources/groupRoutes.xml index d7875dc..c71b590 100644 --- a/ext/camel/provisioning-camel/src/main/resources/groupRoutes.xml +++ b/ext/camel/provisioning-camel/src/main/resources/groupRoutes.xml @@ -21,12 +21,12 @@ under the License. <route id="createGroup"> <from uri="direct:createGroup"/> - <setProperty propertyName="any"> + <setProperty propertyName="actual"> <simple>${body}</simple> </setProperty> <doTry> <bean ref="gwfAdapter" method="create(${body})"/> - <process ref="groupCreateProcessor"/> + <process ref="createProcessor"/> <to uri="direct:createGroupPort"/> <doCatch> <exception>java.lang.RuntimeException</exception> http://git-wip-us.apache.org/repos/asf/syncope/blob/377ce234/ext/camel/provisioning-camel/src/main/resources/userRoutes.xml ---------------------------------------------------------------------- diff --git a/ext/camel/provisioning-camel/src/main/resources/userRoutes.xml b/ext/camel/provisioning-camel/src/main/resources/userRoutes.xml index d0d7c77..7936129 100644 --- a/ext/camel/provisioning-camel/src/main/resources/userRoutes.xml +++ b/ext/camel/provisioning-camel/src/main/resources/userRoutes.xml @@ -27,7 +27,7 @@ under the License. <doTry> <bean method="create(${body},${property.disablePwdPolicyCheck},${property.enabled},${property.storePassword})" ref="uwfAdapter" /> - <process ref="userCreateProcessor"/> + <process ref="createProcessor"/> <to uri="direct:createPort"/> <doCatch> <exception>java.lang.RuntimeException</exception> http://git-wip-us.apache.org/repos/asf/syncope/blob/377ce234/fit/core-reference/src/test/java/org/apache/syncope/fit/core/CamelRouteITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/CamelRouteITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/CamelRouteITCase.java index 764fe2c..ce2c638 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/CamelRouteITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/CamelRouteITCase.java @@ -87,7 +87,7 @@ public class CamelRouteITCase extends AbstractITCase { + " <doTry>\n" + " <bean ref=\"uwfAdapter\" method=\"create(${body},${property.disablePwdPolicyCheck},\n" + " ${property.enabled},${property.storePassword})\"/>\n" - + " <process ref=\"userCreateProcessor\" />\n" + + " <process ref=\"createProcessor\" />\n" + " <to uri=\"direct:createPort\"/>\n" + " <to uri=\"log:myLog\"/>\n" + " <doCatch> \n" @@ -129,7 +129,7 @@ public class CamelRouteITCase extends AbstractITCase { + " <doTry>\n" + " <bean ref=\"uwfAdapter\" method=\"create(${body},${property.disablePwdPolicyCheck},\n" + " ${property.enabled},${property.storePassword})\"/>\n" - + " <process ref=\"userCreateProcessor\"/>\n" + + " <process ref=\"createProcessor\"/>\n" + " <to uri=\"direct:createPort\"/>\n" + " <doCatch> \n" + " <exception>java.lang.RuntimeException</exception>\n"