You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2018/07/27 07:40:21 UTC

[2/3] syncope git commit: [SYNCOPE-1346] Ensure PropagationTask is not already in the JPA context before creating new one

[SYNCOPE-1346] Ensure PropagationTask is not already in the JPA context before creating new one


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

Branch: refs/heads/master
Commit: ae058846238567128f1ff4969e5f8709750c35ae
Parents: 0895017
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Jul 27 09:39:43 2018 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Jul 27 09:39:55 2018 +0200

----------------------------------------------------------------------
 .../apache/syncope/core/logic/TaskLogic.java    |  2 +-
 .../AbstractPropagationTaskExecutor.java        | 23 ++++++++++++--------
 2 files changed, 15 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/ae058846/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 2da812e..526fb63 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
@@ -228,7 +228,7 @@ public class TaskLogic extends AbstractExecutableLogic<TaskTO> {
         ExecTO result = null;
         switch (taskUtil.getType()) {
             case PROPAGATION:
-                TaskExec propExec = taskExecutor.execute((PropagationTaskTO) binder.getTaskTO(task, taskUtil, false));
+                TaskExec propExec = taskExecutor.execute(binder.<PropagationTaskTO>getTaskTO(task, taskUtil, false));
                 result = binder.getExecTO(propExec);
                 break;
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/ae058846/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
index b55eacc..4d7f00d 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
@@ -350,15 +350,20 @@ public abstract class AbstractPropagationTaskExecutor implements PropagationTask
     }
 
     protected TaskExec execute(final PropagationTaskTO taskTO, final PropagationReporter reporter) {
-        PropagationTask task = entityFactory.newEntity(PropagationTask.class);
-        task.setResource(resourceDAO.find(taskTO.getResource()));
-        task.setObjectClassName(taskTO.getObjectClassName());
-        task.setAnyTypeKind(taskTO.getAnyTypeKind());
-        task.setAnyType(taskTO.getAnyType());
-        task.setEntityKey(taskTO.getEntityKey());
-        task.setOperation(taskTO.getOperation());
-        task.setConnObjectKey(taskTO.getConnObjectKey());
-        task.setOldConnObjectKey(taskTO.getOldConnObjectKey());
+        PropagationTask task;
+        if (taskTO.getKey() == null) {
+            task = entityFactory.newEntity(PropagationTask.class);
+            task.setResource(resourceDAO.find(taskTO.getResource()));
+            task.setObjectClassName(taskTO.getObjectClassName());
+            task.setAnyTypeKind(taskTO.getAnyTypeKind());
+            task.setAnyType(taskTO.getAnyType());
+            task.setEntityKey(taskTO.getEntityKey());
+            task.setOperation(taskTO.getOperation());
+            task.setConnObjectKey(taskTO.getConnObjectKey());
+            task.setOldConnObjectKey(taskTO.getOldConnObjectKey());
+        } else {
+            task = taskDAO.find(taskTO.getKey());
+        }
         Set<Attribute> attributes = new HashSet<>();
         if (StringUtils.isNotBlank(taskTO.getAttributes())) {
             attributes.addAll(Arrays.asList(POJOHelper.deserialize(taskTO.getAttributes(), Attribute[].class)));