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 2015/05/27 12:20:52 UTC

[1/7] syncope git commit: Upgrading Tomcat

Repository: syncope
Updated Branches:
  refs/heads/1_2_X 13abc8331 -> f672ce492
  refs/heads/SYNCOPE-666 63108c8f8 -> c608b5854
  refs/heads/master c74d19809 -> 8ea1e6acc


Upgrading Tomcat


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

Branch: refs/heads/SYNCOPE-666
Commit: c74d198098eecc3c21e50749de6ec505dc0898a1
Parents: 55d846e
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed May 27 11:42:03 2015 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed May 27 11:42:03 2015 +0200

----------------------------------------------------------------------
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/c74d1980/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 5253fd0..13f4ac1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -406,7 +406,7 @@ under the License.
     <cargo.log>${log.directory}/cargo.log</cargo.log>
     <cargo.output>${log.directory}/cargo-output.log</cargo.output>
 
-    <tomcat.version>8.0.22</tomcat.version>
+    <tomcat.version>8.0.23</tomcat.version>
 
     <anonymousUser>anonymous</anonymousUser>
     <!-- static keys, only used for build: generated overlays will override during archetype:generate -->


[3/7] syncope git commit: [SYNCOPE-673] Applying provided patch

Posted by il...@apache.org.
[SYNCOPE-673] Applying provided patch


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

Branch: refs/heads/1_2_X
Commit: f672ce4925667fd80582878bdd55b9b0d644af0d
Parents: 13abc83
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed May 27 11:58:25 2015 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed May 27 11:58:25 2015 +0200

----------------------------------------------------------------------
 .../syncope/core/sync/impl/RoleSyncResultHandler.java   | 12 +++++-------
 .../syncope/core/sync/impl/UserSyncResultHandler.java   | 11 ++++-------
 2 files changed, 9 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/f672ce49/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java b/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java
index 72ab83d..42929fc 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java
@@ -85,6 +85,9 @@ public class RoleSyncResultHandler extends AbstractSubjectSyncResultHandler {
         RoleTO roleTO = RoleTO.class.cast(subjectTO);
 
         WorkflowResult<Long> created = rwfAdapter.create(roleTO);
+
+        result.setId(created.getResult());
+
         AttributeTO roleOwner = roleTO.getAttrMap().get(StringUtils.EMPTY);
         if (roleOwner != null) {
             roleOwnerMap.put(created.getResult(), roleOwner.getValues().iterator().next());
@@ -97,12 +100,7 @@ public class RoleSyncResultHandler extends AbstractSubjectSyncResultHandler {
 
         taskExecutor.execute(tasks);
 
-        roleTO = roleDataBinder.getRoleTO(created.getResult());
-
-        result.setId(created.getResult());
-        result.setName(getName(subjectTO));
-
-        return roleTO;
+        return roleDataBinder.getRoleTO(created.getResult());
     }
 
     @Override
@@ -152,7 +150,7 @@ public class RoleSyncResultHandler extends AbstractSubjectSyncResultHandler {
 
         taskExecutor.execute(tasks);
 
-        final RoleTO after = roleDataBinder.getRoleTO(updated.getResult());
+        RoleTO after = roleDataBinder.getRoleTO(updated.getResult());
         result.setName(getName(after));
 
         return after;

http://git-wip-us.apache.org/repos/asf/syncope/blob/f672ce49/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java b/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java
index 979feb3..ce055af 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java
@@ -78,8 +78,9 @@ public class UserSyncResultHandler extends AbstractSubjectSyncResultHandler {
         UserTO userTO = UserTO.class.cast(subjectTO);
 
         Boolean enabled = syncUtilities.readEnabled(delta.getObject(), profile.getSyncTask());
-        WorkflowResult<Map.Entry<Long, Boolean>> created =
-                uwfAdapter.create(userTO, true, enabled, true);
+        WorkflowResult<Map.Entry<Long, Boolean>> created = uwfAdapter.create(userTO, true, enabled, true);
+
+        result.setId(created.getResult().getKey());
 
         List<PropagationTask> tasks = propagationManager.getUserCreateTaskIds(created,
                 userTO.getPassword(), userTO.getVirAttrs(),
@@ -88,11 +89,7 @@ public class UserSyncResultHandler extends AbstractSubjectSyncResultHandler {
 
         taskExecutor.execute(tasks);
 
-        userTO = userDataBinder.getUserTO(created.getResult().getKey());
-
-        result.setId(created.getResult().getKey());
-
-        return userTO;
+        return userDataBinder.getUserTO(created.getResult().getKey());
     }
 
     @Override


[6/7] syncope git commit: [SYNCOPE-673] Merge from 1_2_X

Posted by il...@apache.org.
[SYNCOPE-673] Merge from 1_2_X


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

Branch: refs/heads/SYNCOPE-666
Commit: 8ea1e6acc0972628aaf7a011e04370fc1cbd87df
Parents: c74d198 f672ce4
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed May 27 12:17:51 2015 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed May 27 12:17:51 2015 +0200

----------------------------------------------------------------------
 .../java/sync/GroupSyncResultHandlerImpl.java        |  7 ++-----
 .../java/sync/UserSyncResultHandlerImpl.java         | 15 +++++++--------
 2 files changed, 9 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/8ea1e6ac/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/GroupSyncResultHandlerImpl.java
----------------------------------------------------------------------
diff --cc core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/GroupSyncResultHandlerImpl.java
index 1ce0357,0000000..1c66f20
mode 100644,000000..100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/GroupSyncResultHandlerImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/GroupSyncResultHandlerImpl.java
@@@ -1,166 -1,0 +1,163 @@@
 +/*
 + * 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.java.sync;
 +
 +import java.util.Collections;
 +import java.util.HashMap;
 +import java.util.List;
 +import java.util.Map;
 +import org.apache.syncope.common.lib.mod.AbstractSubjectMod;
 +import org.apache.syncope.common.lib.mod.AttrMod;
 +import org.apache.syncope.common.lib.mod.GroupMod;
 +import org.apache.syncope.common.lib.mod.UserMod;
 +import org.apache.syncope.common.lib.to.AbstractSubjectTO;
 +import org.apache.syncope.common.lib.to.PropagationStatus;
 +import org.apache.syncope.common.lib.to.GroupTO;
 +import org.apache.syncope.common.lib.types.AttributableType;
 +import org.apache.syncope.core.persistence.api.entity.AttributableUtils;
 +import org.apache.syncope.core.provisioning.api.sync.ProvisioningResult;
 +import org.apache.syncope.core.provisioning.api.sync.GroupSyncResultHandler;
 +import org.identityconnectors.framework.common.objects.SyncDelta;
 +
 +public class GroupSyncResultHandlerImpl extends AbstractSyncResultHandler implements GroupSyncResultHandler {
 +
 +    protected Map<Long, String> groupOwnerMap = new HashMap<>();
 +
 +    @Override
 +    public Map<Long, String> getGroupOwnerMap() {
 +        return this.groupOwnerMap;
 +    }
 +
 +    @Override
 +    protected AttributableUtils getAttributableUtils() {
 +        return attrUtilsFactory.getInstance(AttributableType.GROUP);
 +    }
 +
 +    @Override
 +    protected String getName(final AbstractSubjectTO subjectTO) {
 +        return GroupTO.class.cast(subjectTO).getName();
 +    }
 +
 +    @Override
 +    protected AbstractSubjectTO getSubjectTO(final long key) {
 +        try {
 +            return groupDataBinder.getGroupTO(key);
 +        } catch (Exception e) {
 +            LOG.warn("Error retrieving group {}", key, e);
 +            return null;
 +        }
 +    }
 +
 +    @Override
 +    protected AbstractSubjectMod getSubjectMod(final AbstractSubjectTO subjectTO, final SyncDelta delta) {
 +        return connObjectUtils.getAttributableMod(
 +                subjectTO.getKey(),
 +                delta.getObject(),
 +                subjectTO,
 +                profile.getTask(),
 +                attrUtilsFactory.getInstance(AttributableType.GROUP));
 +    }
 +
 +    @Override
 +    protected AbstractSubjectTO doCreate(
 +            final AbstractSubjectTO subjectTO, final SyncDelta delta, final ProvisioningResult result) {
 +
 +        GroupTO groupTO = GroupTO.class.cast(subjectTO);
 +
 +        Map.Entry<Long, List<PropagationStatus>> created = groupProvisioningManager.create(groupTO, groupOwnerMap,
 +                Collections.singleton(profile.getTask().getResource().getKey()));
 +
-         groupTO = groupDataBinder.getGroupTO(created.getKey());
- 
 +        result.setKey(created.getKey());
-         result.setName(getName(subjectTO));
 +
-         return groupTO;
++        return groupDataBinder.getGroupTO(created.getKey());
 +    }
 +
 +    @Override
 +    protected AbstractSubjectTO doLink(
 +            final AbstractSubjectTO before,
 +            final ProvisioningResult result,
 +            final boolean unlink) {
 +
-         final GroupMod groupMod = new GroupMod();
++        GroupMod groupMod = new GroupMod();
 +        groupMod.setKey(before.getKey());
 +
 +        if (unlink) {
 +            groupMod.getResourcesToRemove().add(profile.getTask().getResource().getKey());
 +        } else {
 +            groupMod.getResourcesToAdd().add(profile.getTask().getResource().getKey());
 +        }
 +
 +        return groupDataBinder.getGroupTO(gwfAdapter.update(groupMod).getResult());
 +    }
 +
 +    @Override
 +    protected AbstractSubjectTO doUpdate(
 +            final AbstractSubjectTO before,
 +            final AbstractSubjectMod subjectMod,
 +            final SyncDelta delta,
 +            final ProvisioningResult result) {
 +
 +        GroupMod groupMod = GroupMod.class.cast(subjectMod);
 +
 +        Map.Entry<Long, List<PropagationStatus>> updated = groupProvisioningManager.update(groupMod);
 +
 +        // moved after group provisioning manager
 +        String groupOwner = null;
 +        for (AttrMod attrMod : groupMod.getPlainAttrsToUpdate()) {
 +            if (attrMod.getSchema().isEmpty()) {
 +                groupOwner = attrMod.getValuesToBeAdded().iterator().next();
 +            }
 +        }
 +        if (groupOwner != null) {
 +            groupOwnerMap.put(updated.getKey(), groupOwner);
 +        }
 +
 +        final GroupTO after = groupDataBinder.getGroupTO(updated.getKey());
 +
 +        result.setName(getName(after));
 +
 +        return after;
 +    }
 +
 +    @Override
 +    protected void doDeprovision(final Long id, final boolean unlink) {
 +        taskExecutor.execute(
 +                propagationManager.getGroupDeleteTasks(id, profile.getTask().getResource().getKey()));
 +
 +        if (unlink) {
 +            final UserMod userMod = new UserMod();
 +            userMod.setKey(id);
 +            userMod.getResourcesToRemove().add(profile.getTask().getResource().getKey());
 +        }
 +    }
 +
 +    @Override
 +    protected void doDelete(final Long id) {
 +        try {
 +            taskExecutor.execute(
 +                    propagationManager.getGroupDeleteTasks(id, profile.getTask().getResource().getKey()));
 +        } catch (Exception e) {
 +            // A propagation failure doesn't imply a synchronization failure.
 +            // The propagation exception status will be reported into the propagation task execution.
 +            LOG.error("Could not propagate user " + id, e);
 +        }
 +
 +        groupProvisioningManager.delete(id);
 +    }
 +}

http://git-wip-us.apache.org/repos/asf/syncope/blob/8ea1e6ac/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/UserSyncResultHandlerImpl.java
----------------------------------------------------------------------
diff --cc core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/UserSyncResultHandlerImpl.java
index d32a855,0000000..d111ac6
mode 100644,000000..100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/UserSyncResultHandlerImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/UserSyncResultHandlerImpl.java
@@@ -1,146 -1,0 +1,145 @@@
 +/*
 + * 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.java.sync;
 +
 +import java.util.Collections;
 +import java.util.List;
 +import java.util.Map;
 +import org.apache.syncope.common.lib.mod.AbstractSubjectMod;
 +import org.apache.syncope.common.lib.mod.UserMod;
 +import org.apache.syncope.common.lib.to.AbstractSubjectTO;
 +import org.apache.syncope.common.lib.to.PropagationStatus;
 +import org.apache.syncope.common.lib.to.UserTO;
 +import org.apache.syncope.common.lib.types.AttributableType;
 +import org.apache.syncope.core.persistence.api.entity.AttributableUtils;
 +import org.apache.syncope.core.provisioning.api.sync.ProvisioningResult;
 +import org.apache.syncope.core.provisioning.api.sync.UserSyncResultHandler;
 +import org.identityconnectors.framework.common.objects.SyncDelta;
 +
 +public class UserSyncResultHandlerImpl extends AbstractSyncResultHandler implements UserSyncResultHandler {
 +
 +    @Override
 +    protected AttributableUtils getAttributableUtils() {
 +        return attrUtilsFactory.getInstance(AttributableType.USER);
 +    }
 +
 +    @Override
 +    protected String getName(final AbstractSubjectTO subjectTO) {
 +        return UserTO.class.cast(subjectTO).getUsername();
 +    }
 +
 +    @Override
 +    protected AbstractSubjectTO getSubjectTO(final long key) {
 +        try {
 +            return userDataBinder.getUserTO(key);
 +        } catch (Exception e) {
 +            LOG.warn("Error retrieving user {}", key, e);
 +            return null;
 +        }
 +    }
 +
 +    @Override
-     protected AbstractSubjectMod getSubjectMod(
-             final AbstractSubjectTO subjectTO, final SyncDelta delta) {
- 
++    protected AbstractSubjectMod getSubjectMod(final AbstractSubjectTO subjectTO, final SyncDelta delta) {
 +        return connObjectUtils.getAttributableMod(subjectTO.getKey(),
 +                delta.getObject(),
 +                subjectTO,
 +                profile.getTask(),
 +                getAttributableUtils());
 +    }
 +
 +    @Override
 +    protected AbstractSubjectTO doCreate(
 +            final AbstractSubjectTO subjectTO, final SyncDelta delta, final ProvisioningResult result) {
 +
 +        UserTO userTO = UserTO.class.cast(subjectTO);
 +
 +        Boolean enabled = syncUtilities.readEnabled(delta.getObject(), profile.getTask());
-         Map.Entry<Long, List<PropagationStatus>> created = userProvisioningManager.create(userTO, true, true, enabled,
-                 Collections.singleton(profile.getTask().getResource().getKey()));
++        Map.Entry<Long, List<PropagationStatus>> created =
++                userProvisioningManager.create(userTO, true, true, enabled,
++                        Collections.singleton(profile.getTask().getResource().getKey()));
 +
 +        result.setKey(created.getKey());
 +
 +        return userDataBinder.getUserTO(created.getKey());
 +    }
 +
 +    @Override
 +    protected AbstractSubjectTO doLink(
 +            final AbstractSubjectTO before,
 +            final ProvisioningResult result,
 +            final boolean unlink) {
 +
-         final UserMod userMod = new UserMod();
++        UserMod userMod = new UserMod();
 +        userMod.setKey(before.getKey());
 +
 +        if (unlink) {
 +            userMod.getResourcesToRemove().add(profile.getTask().getResource().getKey());
 +        } else {
 +            userMod.getResourcesToAdd().add(profile.getTask().getResource().getKey());
 +        }
 +
 +        return userDataBinder.getUserTO(uwfAdapter.update(userMod).getResult().getKey().getKey());
 +    }
 +
 +    @Override
 +    protected AbstractSubjectTO doUpdate(
 +            final AbstractSubjectTO before,
 +            final AbstractSubjectMod subjectMod,
 +            final SyncDelta delta,
 +            final ProvisioningResult result) {
 +
-         final UserMod userMod = UserMod.class.cast(subjectMod);
-         final Boolean enabled = syncUtilities.readEnabled(delta.getObject(), profile.getTask());
++        UserMod userMod = UserMod.class.cast(subjectMod);
++        Boolean enabled = syncUtilities.readEnabled(delta.getObject(), profile.getTask());
 +
 +        Map.Entry<Long, List<PropagationStatus>> updated = userProvisioningManager.update(userMod, before.getKey(),
 +                result, enabled, Collections.singleton(profile.getTask().getResource().getKey()));
 +
 +        return userDataBinder.getUserTO(updated.getKey());
 +    }
 +
 +    @Override
 +    protected void doDeprovision(
 +            final Long key,
 +            final boolean unlink) {
 +
 +        taskExecutor.execute(
 +                propagationManager.getUserDeleteTasks(
 +                        key, Collections.singleton(profile.getTask().getResource().getKey())));
 +
 +        if (unlink) {
 +            final UserMod userMod = new UserMod();
 +            userMod.setKey(key);
 +            userMod.getResourcesToRemove().add(profile.getTask().getResource().getKey());
 +        }
 +    }
 +
 +    @Override
 +    protected void doDelete(final Long key) {
 +        try {
 +            userProvisioningManager.
 +                    delete(key, Collections.<String>singleton(profile.getTask().getResource().getKey()));
 +        } catch (Exception e) {
 +            // A propagation failure doesn't imply a synchronization failure.
 +            // The propagation exception status will be reported into the propagation task execution.
 +            LOG.error("Could not propagate user " + key, e);
 +        }
 +
 +        uwfAdapter.delete(key);
 +    }
 +}


[5/7] syncope git commit: [SYNCOPE-673] Merge from 1_2_X

Posted by il...@apache.org.
[SYNCOPE-673] Merge from 1_2_X


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

Branch: refs/heads/master
Commit: 8ea1e6acc0972628aaf7a011e04370fc1cbd87df
Parents: c74d198 f672ce4
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed May 27 12:17:51 2015 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed May 27 12:17:51 2015 +0200

----------------------------------------------------------------------
 .../java/sync/GroupSyncResultHandlerImpl.java        |  7 ++-----
 .../java/sync/UserSyncResultHandlerImpl.java         | 15 +++++++--------
 2 files changed, 9 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/8ea1e6ac/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/GroupSyncResultHandlerImpl.java
----------------------------------------------------------------------
diff --cc core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/GroupSyncResultHandlerImpl.java
index 1ce0357,0000000..1c66f20
mode 100644,000000..100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/GroupSyncResultHandlerImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/GroupSyncResultHandlerImpl.java
@@@ -1,166 -1,0 +1,163 @@@
 +/*
 + * 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.java.sync;
 +
 +import java.util.Collections;
 +import java.util.HashMap;
 +import java.util.List;
 +import java.util.Map;
 +import org.apache.syncope.common.lib.mod.AbstractSubjectMod;
 +import org.apache.syncope.common.lib.mod.AttrMod;
 +import org.apache.syncope.common.lib.mod.GroupMod;
 +import org.apache.syncope.common.lib.mod.UserMod;
 +import org.apache.syncope.common.lib.to.AbstractSubjectTO;
 +import org.apache.syncope.common.lib.to.PropagationStatus;
 +import org.apache.syncope.common.lib.to.GroupTO;
 +import org.apache.syncope.common.lib.types.AttributableType;
 +import org.apache.syncope.core.persistence.api.entity.AttributableUtils;
 +import org.apache.syncope.core.provisioning.api.sync.ProvisioningResult;
 +import org.apache.syncope.core.provisioning.api.sync.GroupSyncResultHandler;
 +import org.identityconnectors.framework.common.objects.SyncDelta;
 +
 +public class GroupSyncResultHandlerImpl extends AbstractSyncResultHandler implements GroupSyncResultHandler {
 +
 +    protected Map<Long, String> groupOwnerMap = new HashMap<>();
 +
 +    @Override
 +    public Map<Long, String> getGroupOwnerMap() {
 +        return this.groupOwnerMap;
 +    }
 +
 +    @Override
 +    protected AttributableUtils getAttributableUtils() {
 +        return attrUtilsFactory.getInstance(AttributableType.GROUP);
 +    }
 +
 +    @Override
 +    protected String getName(final AbstractSubjectTO subjectTO) {
 +        return GroupTO.class.cast(subjectTO).getName();
 +    }
 +
 +    @Override
 +    protected AbstractSubjectTO getSubjectTO(final long key) {
 +        try {
 +            return groupDataBinder.getGroupTO(key);
 +        } catch (Exception e) {
 +            LOG.warn("Error retrieving group {}", key, e);
 +            return null;
 +        }
 +    }
 +
 +    @Override
 +    protected AbstractSubjectMod getSubjectMod(final AbstractSubjectTO subjectTO, final SyncDelta delta) {
 +        return connObjectUtils.getAttributableMod(
 +                subjectTO.getKey(),
 +                delta.getObject(),
 +                subjectTO,
 +                profile.getTask(),
 +                attrUtilsFactory.getInstance(AttributableType.GROUP));
 +    }
 +
 +    @Override
 +    protected AbstractSubjectTO doCreate(
 +            final AbstractSubjectTO subjectTO, final SyncDelta delta, final ProvisioningResult result) {
 +
 +        GroupTO groupTO = GroupTO.class.cast(subjectTO);
 +
 +        Map.Entry<Long, List<PropagationStatus>> created = groupProvisioningManager.create(groupTO, groupOwnerMap,
 +                Collections.singleton(profile.getTask().getResource().getKey()));
 +
-         groupTO = groupDataBinder.getGroupTO(created.getKey());
- 
 +        result.setKey(created.getKey());
-         result.setName(getName(subjectTO));
 +
-         return groupTO;
++        return groupDataBinder.getGroupTO(created.getKey());
 +    }
 +
 +    @Override
 +    protected AbstractSubjectTO doLink(
 +            final AbstractSubjectTO before,
 +            final ProvisioningResult result,
 +            final boolean unlink) {
 +
-         final GroupMod groupMod = new GroupMod();
++        GroupMod groupMod = new GroupMod();
 +        groupMod.setKey(before.getKey());
 +
 +        if (unlink) {
 +            groupMod.getResourcesToRemove().add(profile.getTask().getResource().getKey());
 +        } else {
 +            groupMod.getResourcesToAdd().add(profile.getTask().getResource().getKey());
 +        }
 +
 +        return groupDataBinder.getGroupTO(gwfAdapter.update(groupMod).getResult());
 +    }
 +
 +    @Override
 +    protected AbstractSubjectTO doUpdate(
 +            final AbstractSubjectTO before,
 +            final AbstractSubjectMod subjectMod,
 +            final SyncDelta delta,
 +            final ProvisioningResult result) {
 +
 +        GroupMod groupMod = GroupMod.class.cast(subjectMod);
 +
 +        Map.Entry<Long, List<PropagationStatus>> updated = groupProvisioningManager.update(groupMod);
 +
 +        // moved after group provisioning manager
 +        String groupOwner = null;
 +        for (AttrMod attrMod : groupMod.getPlainAttrsToUpdate()) {
 +            if (attrMod.getSchema().isEmpty()) {
 +                groupOwner = attrMod.getValuesToBeAdded().iterator().next();
 +            }
 +        }
 +        if (groupOwner != null) {
 +            groupOwnerMap.put(updated.getKey(), groupOwner);
 +        }
 +
 +        final GroupTO after = groupDataBinder.getGroupTO(updated.getKey());
 +
 +        result.setName(getName(after));
 +
 +        return after;
 +    }
 +
 +    @Override
 +    protected void doDeprovision(final Long id, final boolean unlink) {
 +        taskExecutor.execute(
 +                propagationManager.getGroupDeleteTasks(id, profile.getTask().getResource().getKey()));
 +
 +        if (unlink) {
 +            final UserMod userMod = new UserMod();
 +            userMod.setKey(id);
 +            userMod.getResourcesToRemove().add(profile.getTask().getResource().getKey());
 +        }
 +    }
 +
 +    @Override
 +    protected void doDelete(final Long id) {
 +        try {
 +            taskExecutor.execute(
 +                    propagationManager.getGroupDeleteTasks(id, profile.getTask().getResource().getKey()));
 +        } catch (Exception e) {
 +            // A propagation failure doesn't imply a synchronization failure.
 +            // The propagation exception status will be reported into the propagation task execution.
 +            LOG.error("Could not propagate user " + id, e);
 +        }
 +
 +        groupProvisioningManager.delete(id);
 +    }
 +}

http://git-wip-us.apache.org/repos/asf/syncope/blob/8ea1e6ac/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/UserSyncResultHandlerImpl.java
----------------------------------------------------------------------
diff --cc core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/UserSyncResultHandlerImpl.java
index d32a855,0000000..d111ac6
mode 100644,000000..100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/UserSyncResultHandlerImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/UserSyncResultHandlerImpl.java
@@@ -1,146 -1,0 +1,145 @@@
 +/*
 + * 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.java.sync;
 +
 +import java.util.Collections;
 +import java.util.List;
 +import java.util.Map;
 +import org.apache.syncope.common.lib.mod.AbstractSubjectMod;
 +import org.apache.syncope.common.lib.mod.UserMod;
 +import org.apache.syncope.common.lib.to.AbstractSubjectTO;
 +import org.apache.syncope.common.lib.to.PropagationStatus;
 +import org.apache.syncope.common.lib.to.UserTO;
 +import org.apache.syncope.common.lib.types.AttributableType;
 +import org.apache.syncope.core.persistence.api.entity.AttributableUtils;
 +import org.apache.syncope.core.provisioning.api.sync.ProvisioningResult;
 +import org.apache.syncope.core.provisioning.api.sync.UserSyncResultHandler;
 +import org.identityconnectors.framework.common.objects.SyncDelta;
 +
 +public class UserSyncResultHandlerImpl extends AbstractSyncResultHandler implements UserSyncResultHandler {
 +
 +    @Override
 +    protected AttributableUtils getAttributableUtils() {
 +        return attrUtilsFactory.getInstance(AttributableType.USER);
 +    }
 +
 +    @Override
 +    protected String getName(final AbstractSubjectTO subjectTO) {
 +        return UserTO.class.cast(subjectTO).getUsername();
 +    }
 +
 +    @Override
 +    protected AbstractSubjectTO getSubjectTO(final long key) {
 +        try {
 +            return userDataBinder.getUserTO(key);
 +        } catch (Exception e) {
 +            LOG.warn("Error retrieving user {}", key, e);
 +            return null;
 +        }
 +    }
 +
 +    @Override
-     protected AbstractSubjectMod getSubjectMod(
-             final AbstractSubjectTO subjectTO, final SyncDelta delta) {
- 
++    protected AbstractSubjectMod getSubjectMod(final AbstractSubjectTO subjectTO, final SyncDelta delta) {
 +        return connObjectUtils.getAttributableMod(subjectTO.getKey(),
 +                delta.getObject(),
 +                subjectTO,
 +                profile.getTask(),
 +                getAttributableUtils());
 +    }
 +
 +    @Override
 +    protected AbstractSubjectTO doCreate(
 +            final AbstractSubjectTO subjectTO, final SyncDelta delta, final ProvisioningResult result) {
 +
 +        UserTO userTO = UserTO.class.cast(subjectTO);
 +
 +        Boolean enabled = syncUtilities.readEnabled(delta.getObject(), profile.getTask());
-         Map.Entry<Long, List<PropagationStatus>> created = userProvisioningManager.create(userTO, true, true, enabled,
-                 Collections.singleton(profile.getTask().getResource().getKey()));
++        Map.Entry<Long, List<PropagationStatus>> created =
++                userProvisioningManager.create(userTO, true, true, enabled,
++                        Collections.singleton(profile.getTask().getResource().getKey()));
 +
 +        result.setKey(created.getKey());
 +
 +        return userDataBinder.getUserTO(created.getKey());
 +    }
 +
 +    @Override
 +    protected AbstractSubjectTO doLink(
 +            final AbstractSubjectTO before,
 +            final ProvisioningResult result,
 +            final boolean unlink) {
 +
-         final UserMod userMod = new UserMod();
++        UserMod userMod = new UserMod();
 +        userMod.setKey(before.getKey());
 +
 +        if (unlink) {
 +            userMod.getResourcesToRemove().add(profile.getTask().getResource().getKey());
 +        } else {
 +            userMod.getResourcesToAdd().add(profile.getTask().getResource().getKey());
 +        }
 +
 +        return userDataBinder.getUserTO(uwfAdapter.update(userMod).getResult().getKey().getKey());
 +    }
 +
 +    @Override
 +    protected AbstractSubjectTO doUpdate(
 +            final AbstractSubjectTO before,
 +            final AbstractSubjectMod subjectMod,
 +            final SyncDelta delta,
 +            final ProvisioningResult result) {
 +
-         final UserMod userMod = UserMod.class.cast(subjectMod);
-         final Boolean enabled = syncUtilities.readEnabled(delta.getObject(), profile.getTask());
++        UserMod userMod = UserMod.class.cast(subjectMod);
++        Boolean enabled = syncUtilities.readEnabled(delta.getObject(), profile.getTask());
 +
 +        Map.Entry<Long, List<PropagationStatus>> updated = userProvisioningManager.update(userMod, before.getKey(),
 +                result, enabled, Collections.singleton(profile.getTask().getResource().getKey()));
 +
 +        return userDataBinder.getUserTO(updated.getKey());
 +    }
 +
 +    @Override
 +    protected void doDeprovision(
 +            final Long key,
 +            final boolean unlink) {
 +
 +        taskExecutor.execute(
 +                propagationManager.getUserDeleteTasks(
 +                        key, Collections.singleton(profile.getTask().getResource().getKey())));
 +
 +        if (unlink) {
 +            final UserMod userMod = new UserMod();
 +            userMod.setKey(key);
 +            userMod.getResourcesToRemove().add(profile.getTask().getResource().getKey());
 +        }
 +    }
 +
 +    @Override
 +    protected void doDelete(final Long key) {
 +        try {
 +            userProvisioningManager.
 +                    delete(key, Collections.<String>singleton(profile.getTask().getResource().getKey()));
 +        } catch (Exception e) {
 +            // A propagation failure doesn't imply a synchronization failure.
 +            // The propagation exception status will be reported into the propagation task execution.
 +            LOG.error("Could not propagate user " + key, e);
 +        }
 +
 +        uwfAdapter.delete(key);
 +    }
 +}


[2/7] syncope git commit: [SYNCOPE-673] Applying provided patch

Posted by il...@apache.org.
[SYNCOPE-673] Applying provided patch


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

Branch: refs/heads/master
Commit: f672ce4925667fd80582878bdd55b9b0d644af0d
Parents: 13abc83
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed May 27 11:58:25 2015 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed May 27 11:58:25 2015 +0200

----------------------------------------------------------------------
 .../syncope/core/sync/impl/RoleSyncResultHandler.java   | 12 +++++-------
 .../syncope/core/sync/impl/UserSyncResultHandler.java   | 11 ++++-------
 2 files changed, 9 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/f672ce49/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java b/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java
index 72ab83d..42929fc 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java
@@ -85,6 +85,9 @@ public class RoleSyncResultHandler extends AbstractSubjectSyncResultHandler {
         RoleTO roleTO = RoleTO.class.cast(subjectTO);
 
         WorkflowResult<Long> created = rwfAdapter.create(roleTO);
+
+        result.setId(created.getResult());
+
         AttributeTO roleOwner = roleTO.getAttrMap().get(StringUtils.EMPTY);
         if (roleOwner != null) {
             roleOwnerMap.put(created.getResult(), roleOwner.getValues().iterator().next());
@@ -97,12 +100,7 @@ public class RoleSyncResultHandler extends AbstractSubjectSyncResultHandler {
 
         taskExecutor.execute(tasks);
 
-        roleTO = roleDataBinder.getRoleTO(created.getResult());
-
-        result.setId(created.getResult());
-        result.setName(getName(subjectTO));
-
-        return roleTO;
+        return roleDataBinder.getRoleTO(created.getResult());
     }
 
     @Override
@@ -152,7 +150,7 @@ public class RoleSyncResultHandler extends AbstractSubjectSyncResultHandler {
 
         taskExecutor.execute(tasks);
 
-        final RoleTO after = roleDataBinder.getRoleTO(updated.getResult());
+        RoleTO after = roleDataBinder.getRoleTO(updated.getResult());
         result.setName(getName(after));
 
         return after;

http://git-wip-us.apache.org/repos/asf/syncope/blob/f672ce49/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java b/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java
index 979feb3..ce055af 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java
@@ -78,8 +78,9 @@ public class UserSyncResultHandler extends AbstractSubjectSyncResultHandler {
         UserTO userTO = UserTO.class.cast(subjectTO);
 
         Boolean enabled = syncUtilities.readEnabled(delta.getObject(), profile.getSyncTask());
-        WorkflowResult<Map.Entry<Long, Boolean>> created =
-                uwfAdapter.create(userTO, true, enabled, true);
+        WorkflowResult<Map.Entry<Long, Boolean>> created = uwfAdapter.create(userTO, true, enabled, true);
+
+        result.setId(created.getResult().getKey());
 
         List<PropagationTask> tasks = propagationManager.getUserCreateTaskIds(created,
                 userTO.getPassword(), userTO.getVirAttrs(),
@@ -88,11 +89,7 @@ public class UserSyncResultHandler extends AbstractSubjectSyncResultHandler {
 
         taskExecutor.execute(tasks);
 
-        userTO = userDataBinder.getUserTO(created.getResult().getKey());
-
-        result.setId(created.getResult().getKey());
-
-        return userTO;
+        return userDataBinder.getUserTO(created.getResult().getKey());
     }
 
     @Override


[7/7] syncope git commit: [SYNCOPE-673] Merge from master

Posted by il...@apache.org.
[SYNCOPE-673] Merge from master


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

Branch: refs/heads/SYNCOPE-666
Commit: c608b58540b1f6089e466096522042fd244b5368
Parents: 63108c8 8ea1e6a
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed May 27 12:20:38 2015 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed May 27 12:20:38 2015 +0200

----------------------------------------------------------------------
 .../java/sync/GroupSyncResultHandlerImpl.java            |  5 +----
 .../java/sync/UserSyncResultHandlerImpl.java             | 11 ++++++-----
 pom.xml                                                  |  2 +-
 3 files changed, 8 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/c608b585/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/GroupSyncResultHandlerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/syncope/blob/c608b585/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/UserSyncResultHandlerImpl.java
----------------------------------------------------------------------
diff --cc core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/UserSyncResultHandlerImpl.java
index 8487fa8,d111ac6..d5c41db
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/UserSyncResultHandlerImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/UserSyncResultHandlerImpl.java
@@@ -55,12 -55,24 +55,13 @@@ public class UserSyncResultHandlerImpl 
      }
  
      @Override
 -    protected AbstractSubjectMod getSubjectMod(final AbstractSubjectTO subjectTO, final SyncDelta delta) {
 -        return connObjectUtils.getAttributableMod(subjectTO.getKey(),
 -                delta.getObject(),
 -                subjectTO,
 -                profile.getTask(),
 -                getAttributableUtils());
 -    }
 -
 -    @Override
 -    protected AbstractSubjectTO doCreate(
 -            final AbstractSubjectTO subjectTO, final SyncDelta delta, final ProvisioningResult result) {
 -
 -        UserTO userTO = UserTO.class.cast(subjectTO);
 +    protected AnyTO doCreate(final AnyTO anyTO, final SyncDelta delta, final ProvisioningResult result) {
 +        UserTO userTO = UserTO.class.cast(anyTO);
  
          Boolean enabled = syncUtilities.readEnabled(delta.getObject(), profile.getTask());
-         Map.Entry<Long, List<PropagationStatus>> created = userProvisioningManager.create(userTO, true, true, enabled,
-                 Collections.singleton(profile.getTask().getResource().getKey()));
+         Map.Entry<Long, List<PropagationStatus>> created =
+                 userProvisioningManager.create(userTO, true, true, enabled,
+                         Collections.singleton(profile.getTask().getResource().getKey()));
  
          result.setKey(created.getKey());
  
@@@ -92,8 -104,8 +93,8 @@@
              final SyncDelta delta,
              final ProvisioningResult result) {
  
-         final UserMod userMod = UserMod.class.cast(anyMod);
-         final Boolean enabled = syncUtilities.readEnabled(delta.getObject(), profile.getTask());
 -        UserMod userMod = UserMod.class.cast(subjectMod);
++        UserMod userMod = UserMod.class.cast(anyMod);
+         Boolean enabled = syncUtilities.readEnabled(delta.getObject(), profile.getTask());
  
          Map.Entry<Long, List<PropagationStatus>> updated = userProvisioningManager.update(userMod, before.getKey(),
                  result, enabled, Collections.singleton(profile.getTask().getResource().getKey()));

http://git-wip-us.apache.org/repos/asf/syncope/blob/c608b585/pom.xml
----------------------------------------------------------------------


[4/7] syncope git commit: [SYNCOPE-673] Applying provided patch

Posted by il...@apache.org.
[SYNCOPE-673] Applying provided patch


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

Branch: refs/heads/SYNCOPE-666
Commit: f672ce4925667fd80582878bdd55b9b0d644af0d
Parents: 13abc83
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed May 27 11:58:25 2015 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed May 27 11:58:25 2015 +0200

----------------------------------------------------------------------
 .../syncope/core/sync/impl/RoleSyncResultHandler.java   | 12 +++++-------
 .../syncope/core/sync/impl/UserSyncResultHandler.java   | 11 ++++-------
 2 files changed, 9 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/f672ce49/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java b/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java
index 72ab83d..42929fc 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java
@@ -85,6 +85,9 @@ public class RoleSyncResultHandler extends AbstractSubjectSyncResultHandler {
         RoleTO roleTO = RoleTO.class.cast(subjectTO);
 
         WorkflowResult<Long> created = rwfAdapter.create(roleTO);
+
+        result.setId(created.getResult());
+
         AttributeTO roleOwner = roleTO.getAttrMap().get(StringUtils.EMPTY);
         if (roleOwner != null) {
             roleOwnerMap.put(created.getResult(), roleOwner.getValues().iterator().next());
@@ -97,12 +100,7 @@ public class RoleSyncResultHandler extends AbstractSubjectSyncResultHandler {
 
         taskExecutor.execute(tasks);
 
-        roleTO = roleDataBinder.getRoleTO(created.getResult());
-
-        result.setId(created.getResult());
-        result.setName(getName(subjectTO));
-
-        return roleTO;
+        return roleDataBinder.getRoleTO(created.getResult());
     }
 
     @Override
@@ -152,7 +150,7 @@ public class RoleSyncResultHandler extends AbstractSubjectSyncResultHandler {
 
         taskExecutor.execute(tasks);
 
-        final RoleTO after = roleDataBinder.getRoleTO(updated.getResult());
+        RoleTO after = roleDataBinder.getRoleTO(updated.getResult());
         result.setName(getName(after));
 
         return after;

http://git-wip-us.apache.org/repos/asf/syncope/blob/f672ce49/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java b/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java
index 979feb3..ce055af 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java
@@ -78,8 +78,9 @@ public class UserSyncResultHandler extends AbstractSubjectSyncResultHandler {
         UserTO userTO = UserTO.class.cast(subjectTO);
 
         Boolean enabled = syncUtilities.readEnabled(delta.getObject(), profile.getSyncTask());
-        WorkflowResult<Map.Entry<Long, Boolean>> created =
-                uwfAdapter.create(userTO, true, enabled, true);
+        WorkflowResult<Map.Entry<Long, Boolean>> created = uwfAdapter.create(userTO, true, enabled, true);
+
+        result.setId(created.getResult().getKey());
 
         List<PropagationTask> tasks = propagationManager.getUserCreateTaskIds(created,
                 userTO.getPassword(), userTO.getVirAttrs(),
@@ -88,11 +89,7 @@ public class UserSyncResultHandler extends AbstractSubjectSyncResultHandler {
 
         taskExecutor.execute(tasks);
 
-        userTO = userDataBinder.getUserTO(created.getResult().getKey());
-
-        result.setId(created.getResult().getKey());
-
-        return userTO;
+        return userDataBinder.getUserTO(created.getResult().getKey());
     }
 
     @Override