http://git-wip-us.apache.org/repos/asf/syncope/blob/80589a1b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/DefaultPushActions.java ---------------------------------------------------------------------- diff --git a/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/DefaultPushActions.java b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/DefaultPushActions.java index a9ba96e..dbbdd2a 100644 --- a/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/DefaultPushActions.java +++ b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/DefaultPushActions.java @@ -18,7 +18,6 @@ */ package org.apache.syncope.server.provisioning.java.sync; -import java.util.List; import org.apache.syncope.server.persistence.api.entity.Subject; import org.apache.syncope.server.provisioning.api.sync.PushActions; import org.apache.syncope.server.provisioning.api.sync.ProvisioningProfile; @@ -78,11 +77,12 @@ public abstract class DefaultPushActions implements PushActions { @Override public <T extends Subject<?, ?, ?>> void after( - final ProvisioningProfile<?, ?> profile, final T subject, final ProvisioningResult result) throws JobExecutionException { + final ProvisioningProfile<?, ?> profile, final T subject, final ProvisioningResult result) + throws JobExecutionException { } @Override - public void afterAll(final ProvisioningProfile<?, ?> profile, final List<ProvisioningResult> results) + public void afterAll(final ProvisioningProfile<?, ?> profile) throws JobExecutionException { } }
http://git-wip-us.apache.org/repos/asf/syncope/blob/80589a1b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/DefaultSyncActions.java ---------------------------------------------------------------------- diff --git a/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/DefaultSyncActions.java b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/DefaultSyncActions.java index b957d2a..6589cdf 100644 --- a/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/DefaultSyncActions.java +++ b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/DefaultSyncActions.java @@ -18,7 +18,6 @@ */ package org.apache.syncope.server.provisioning.java.sync; -import java.util.List; import org.apache.syncope.common.lib.mod.AbstractSubjectMod; import org.apache.syncope.common.lib.to.AbstractSubjectTO; import org.apache.syncope.server.provisioning.api.sync.SyncActions; @@ -104,12 +103,13 @@ public abstract class DefaultSyncActions implements SyncActions { @Override public <T extends AbstractSubjectTO> void after( - final ProvisioningProfile<?, ?> profile, final SyncDelta delta, final T subject, final ProvisioningResult result) + final ProvisioningProfile<?, ?> profile, final SyncDelta delta, final T subject, + final ProvisioningResult result) throws JobExecutionException { } @Override - public void afterAll(final ProvisioningProfile<?, ?> profile, final List<ProvisioningResult> results) + public void afterAll(final ProvisioningProfile<?, ?> profile) throws JobExecutionException { } } http://git-wip-us.apache.org/repos/asf/syncope/blob/80589a1b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/LDAPMembershipSyncActions.java ---------------------------------------------------------------------- diff --git a/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/LDAPMembershipSyncActions.java b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/LDAPMembershipSyncActions.java index b705c64..145cd4d 100644 --- a/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/LDAPMembershipSyncActions.java +++ b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/LDAPMembershipSyncActions.java @@ -146,17 +146,17 @@ public class LDAPMembershipSyncActions extends DefaultSyncActions { /** * Build UserMod for adding membership to given user, for given role. * - * @param userId user to be assigned membership to given role + * @param userKey user to be assigned membership to given role * @param roleTO role for adding membership * @return UserMod for user update */ - protected UserMod getUserMod(final Long userId, final RoleTO roleTO) { + protected UserMod getUserMod(final Long userKey, final RoleTO roleTO) { UserMod userMod = new UserMod(); // no actual modification takes place when user has already the role assigned - if (membersBeforeRoleUpdate.containsKey(userId)) { - membersBeforeRoleUpdate.remove(userId); + if (membersBeforeRoleUpdate.containsKey(userKey)) { + membersBeforeRoleUpdate.remove(userKey); } else { - userMod.setKey(userId); + userMod.setKey(userKey); MembershipMod membershipMod = new MembershipMod(); membershipMod.setRole(roleTO.getKey()); @@ -265,13 +265,13 @@ public class LDAPMembershipSyncActions extends DefaultSyncActions { final Connector connector = profile.getConnector(); for (Object membValue : getMembAttrValues(delta, connector)) { - Long userId = syncUtilities.findMatchingAttributableId( + Long userKey = syncUtilities.findMatchingAttributableKey( ObjectClass.ACCOUNT, membValue.toString(), profile.getTask().getResource(), profile.getConnector()); - if (userId != null) { - UserMod userMod = getUserMod(userId, roleTO); + if (userKey != null) { + UserMod userMod = getUserMod(userKey, roleTO); userUpdate(userMod, resource.getKey()); } } http://git-wip-us.apache.org/repos/asf/syncope/blob/80589a1b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/PushJobImpl.java ---------------------------------------------------------------------- diff --git a/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/PushJobImpl.java b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/PushJobImpl.java index d40b4be..3f7b291 100644 --- a/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/PushJobImpl.java +++ b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/PushJobImpl.java @@ -18,7 +18,6 @@ */ package org.apache.syncope.server.provisioning.java.sync; -import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Set; @@ -36,11 +35,12 @@ import org.apache.syncope.server.persistence.api.entity.user.UMapping; import org.apache.syncope.server.persistence.api.entity.user.User; import org.apache.syncope.server.provisioning.api.Connector; import org.apache.syncope.server.provisioning.api.sync.ProvisioningProfile; -import org.apache.syncope.server.provisioning.api.sync.ProvisioningResult; import org.apache.syncope.server.provisioning.api.sync.PushActions; import org.apache.syncope.server.misc.spring.ApplicationContextProvider; import org.apache.syncope.server.misc.search.SearchCondConverter; import org.apache.syncope.server.provisioning.api.job.PushJob; +import org.apache.syncope.server.provisioning.api.sync.RolePushResultHandler; +import org.apache.syncope.server.provisioning.api.sync.UserPushResultHandler; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.support.AbstractBeanDefinition; @@ -50,6 +50,7 @@ import org.springframework.beans.factory.support.AbstractBeanDefinition; * * @see AbstractProvisioningJob * @see PushTask + * @see PushActions */ public class PushJobImpl extends AbstractProvisioningJob<PushTask, PushActions> implements PushJob { @@ -82,27 +83,26 @@ public class PushJobImpl extends AbstractProvisioningJob<PushTask, PushActions> final boolean dryRun) throws JobExecutionException { LOG.debug("Execute synchronization (push) with resource {}", pushTask.getResource()); - final List<ProvisioningResult> results = new ArrayList<>(); - final Set<Long> authorizations = RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()); final ProvisioningProfile<PushTask, PushActions> profile = new ProvisioningProfile<>(connector, pushTask); - profile.getActions().addAll(actions); + if (actions != null) { + profile.getActions().addAll(actions); + } profile.setDryRun(dryRun); profile.setResAct(null); - profile.getResults().addAll(results); final UserPushResultHandler uhandler = - (UserPushResultHandler) ApplicationContextProvider.getApplicationContext().getBeanFactory().createBean( - UserPushResultHandler.class, AbstractBeanDefinition.AUTOWIRE_BY_NAME, false); + (UserPushResultHandler) ApplicationContextProvider.getApplicationContext().getBeanFactory(). + createBean(UserPushResultHandlerImpl.class, AbstractBeanDefinition.AUTOWIRE_BY_NAME, false); uhandler.setProfile(profile); final RolePushResultHandler rhandler = - (RolePushResultHandler) ApplicationContextProvider.getApplicationContext().getBeanFactory().createBean( - RolePushResultHandler.class, AbstractBeanDefinition.AUTOWIRE_BY_NAME, false); + (RolePushResultHandler) ApplicationContextProvider.getApplicationContext().getBeanFactory(). + createBean(RolePushResultHandlerImpl.class, AbstractBeanDefinition.AUTOWIRE_BY_NAME, false); rhandler.setProfile(profile); - if (!profile.isDryRun()) { + if (actions != null && !profile.isDryRun()) { for (PushActions action : actions) { action.beforeAll(profile); } @@ -139,13 +139,13 @@ public class PushJobImpl extends AbstractProvisioningJob<PushTask, PushActions> } } - if (!profile.isDryRun()) { + if (actions != null && !profile.isDryRun()) { for (PushActions action : actions) { - action.afterAll(profile, results); + action.afterAll(profile); } } - final String result = createReport(results, pushTask.getResource().getSyncTraceLevel(), dryRun); + final String result = createReport(profile.getResults(), pushTask.getResource().getSyncTraceLevel(), dryRun); LOG.debug("Sync result: {}", result); http://git-wip-us.apache.org/repos/asf/syncope/blob/80589a1b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/RolePushResultHandler.java ---------------------------------------------------------------------- diff --git a/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/RolePushResultHandler.java b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/RolePushResultHandler.java deleted file mode 100644 index 60d6bdb..0000000 --- a/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/RolePushResultHandler.java +++ /dev/null @@ -1,154 +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.server.provisioning.java.sync; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import org.apache.syncope.common.lib.mod.RoleMod; -import org.apache.syncope.common.lib.to.AbstractSubjectTO; -import org.apache.syncope.common.lib.to.RoleTO; -import org.apache.syncope.common.lib.types.PropagationByResource; -import org.apache.syncope.common.lib.types.ResourceOperation; -import org.apache.syncope.server.persistence.api.entity.Mapping; -import org.apache.syncope.server.persistence.api.entity.MappingItem; -import org.apache.syncope.server.persistence.api.entity.Subject; -import org.apache.syncope.server.persistence.api.entity.role.Role; -import org.apache.syncope.server.provisioning.api.TimeoutException; -import org.identityconnectors.framework.common.objects.ConnectorObject; -import org.identityconnectors.framework.common.objects.ObjectClass; -import org.identityconnectors.framework.common.objects.Uid; - -public class RolePushResultHandler extends AbstractSubjectPushResultHandler { - - @Override - protected Subject<?, ?, ?> deprovision(final Subject<?, ?, ?> sbj) { - final RoleTO before = roleTransfer.getRoleTO(Role.class.cast(sbj)); - - final List<String> noPropResources = new ArrayList<>(before.getResources()); - noPropResources.remove(profile.getTask().getResource().getKey()); - - taskExecutor.execute(propagationManager.getRoleDeleteTaskIds(before.getKey(), noPropResources)); - - return roleDAO.authFetch(before.getKey()); - } - - @Override - protected Subject<?, ?, ?> provision(final Subject<?, ?, ?> sbj, final Boolean enabled) { - final RoleTO before = roleTransfer.getRoleTO(Role.class.cast(sbj)); - - final List<String> noPropResources = new ArrayList<>(before.getResources()); - noPropResources.remove(profile.getTask().getResource().getKey()); - - final PropagationByResource propByRes = new PropagationByResource(); - propByRes.add(ResourceOperation.CREATE, profile.getTask().getResource().getKey()); - - taskExecutor.execute(propagationManager.getRoleCreateTaskIds( - before.getKey(), - Collections.unmodifiableCollection(before.getVirAttrs()), - propByRes, - noPropResources)); - - return roleDAO.authFetch(before.getKey()); - } - - @Override - protected Subject<?, ?, ?> link(final Subject<?, ?, ?> sbj, final Boolean unlink) { - final RoleMod roleMod = new RoleMod(); - roleMod.setKey(sbj.getKey()); - - if (unlink) { - roleMod.getResourcesToRemove().add(profile.getTask().getResource().getKey()); - } else { - roleMod.getResourcesToAdd().add(profile.getTask().getResource().getKey()); - } - - rwfAdapter.update(roleMod); - - return roleDAO.authFetch(sbj.getKey()); - } - - @Override - protected Subject<?, ?, ?> unassign(final Subject<?, ?, ?> sbj) { - final RoleMod roleMod = new RoleMod(); - roleMod.setKey(sbj.getKey()); - roleMod.getResourcesToRemove().add(profile.getTask().getResource().getKey()); - rwfAdapter.update(roleMod); - return deprovision(sbj); - } - - @Override - protected Subject<?, ?, ?> assign(final Subject<?, ?, ?> sbj, final Boolean enabled) { - final RoleMod roleMod = new RoleMod(); - roleMod.setKey(sbj.getKey()); - roleMod.getResourcesToAdd().add(profile.getTask().getResource().getKey()); - rwfAdapter.update(roleMod); - return provision(sbj, enabled); - } - - @Override - protected String getName(final Subject<?, ?, ?> subject) { - return Role.class.cast(subject).getName(); - } - - @Override - protected AbstractSubjectTO getSubjectTO(final long key) { - try { - return roleTransfer.getRoleTO(roleDAO.authFetch(key)); - } catch (Exception e) { - LOG.warn("Error retrieving user {}", key, e); - return null; - } - } - - @Override - protected Subject<?, ?, ?> getSubject(final long key) { - try { - return roleDAO.authFetch(key); - } catch (Exception e) { - LOG.warn("Error retrieving role {}", key, e); - return null; - } - } - - @Override - protected ConnectorObject getRemoteObject(final String accountId) { - ConnectorObject obj = null; - - try { - final Uid uid = new Uid(accountId); - - obj = profile.getConnector().getObject( - ObjectClass.GROUP, - uid, - profile.getConnector().getOperationOptions(Collections.<MappingItem>emptySet())); - } catch (TimeoutException toe) { - LOG.debug("Request timeout", toe); - throw toe; - } catch (RuntimeException ignore) { - LOG.debug("While resolving {}", accountId, ignore); - } - return obj; - } - - @Override - protected Mapping<?> getMapping() { - return profile.getTask().getResource().getRmapping(); - } -} http://git-wip-us.apache.org/repos/asf/syncope/blob/80589a1b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/RolePushResultHandlerImpl.java ---------------------------------------------------------------------- diff --git a/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/RolePushResultHandlerImpl.java b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/RolePushResultHandlerImpl.java new file mode 100644 index 0000000..112d8cc --- /dev/null +++ b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/RolePushResultHandlerImpl.java @@ -0,0 +1,155 @@ +/* + * 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.server.provisioning.java.sync; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import org.apache.syncope.common.lib.mod.RoleMod; +import org.apache.syncope.common.lib.to.AbstractSubjectTO; +import org.apache.syncope.common.lib.to.RoleTO; +import org.apache.syncope.common.lib.types.PropagationByResource; +import org.apache.syncope.common.lib.types.ResourceOperation; +import org.apache.syncope.server.persistence.api.entity.Mapping; +import org.apache.syncope.server.persistence.api.entity.MappingItem; +import org.apache.syncope.server.persistence.api.entity.Subject; +import org.apache.syncope.server.persistence.api.entity.role.Role; +import org.apache.syncope.server.provisioning.api.TimeoutException; +import org.apache.syncope.server.provisioning.api.sync.RolePushResultHandler; +import org.identityconnectors.framework.common.objects.ConnectorObject; +import org.identityconnectors.framework.common.objects.ObjectClass; +import org.identityconnectors.framework.common.objects.Uid; + +public class RolePushResultHandlerImpl extends AbstractPushResultHandler implements RolePushResultHandler { + + @Override + protected Subject<?, ?, ?> deprovision(final Subject<?, ?, ?> sbj) { + final RoleTO before = roleTransfer.getRoleTO(Role.class.cast(sbj)); + + final List<String> noPropResources = new ArrayList<>(before.getResources()); + noPropResources.remove(profile.getTask().getResource().getKey()); + + taskExecutor.execute(propagationManager.getRoleDeleteTaskIds(before.getKey(), noPropResources)); + + return roleDAO.authFetch(before.getKey()); + } + + @Override + protected Subject<?, ?, ?> provision(final Subject<?, ?, ?> sbj, final Boolean enabled) { + final RoleTO before = roleTransfer.getRoleTO(Role.class.cast(sbj)); + + final List<String> noPropResources = new ArrayList<>(before.getResources()); + noPropResources.remove(profile.getTask().getResource().getKey()); + + final PropagationByResource propByRes = new PropagationByResource(); + propByRes.add(ResourceOperation.CREATE, profile.getTask().getResource().getKey()); + + taskExecutor.execute(propagationManager.getRoleCreateTaskIds( + before.getKey(), + Collections.unmodifiableCollection(before.getVirAttrs()), + propByRes, + noPropResources)); + + return roleDAO.authFetch(before.getKey()); + } + + @Override + protected Subject<?, ?, ?> link(final Subject<?, ?, ?> sbj, final Boolean unlink) { + final RoleMod roleMod = new RoleMod(); + roleMod.setKey(sbj.getKey()); + + if (unlink) { + roleMod.getResourcesToRemove().add(profile.getTask().getResource().getKey()); + } else { + roleMod.getResourcesToAdd().add(profile.getTask().getResource().getKey()); + } + + rwfAdapter.update(roleMod); + + return roleDAO.authFetch(sbj.getKey()); + } + + @Override + protected Subject<?, ?, ?> unassign(final Subject<?, ?, ?> sbj) { + final RoleMod roleMod = new RoleMod(); + roleMod.setKey(sbj.getKey()); + roleMod.getResourcesToRemove().add(profile.getTask().getResource().getKey()); + rwfAdapter.update(roleMod); + return deprovision(sbj); + } + + @Override + protected Subject<?, ?, ?> assign(final Subject<?, ?, ?> sbj, final Boolean enabled) { + final RoleMod roleMod = new RoleMod(); + roleMod.setKey(sbj.getKey()); + roleMod.getResourcesToAdd().add(profile.getTask().getResource().getKey()); + rwfAdapter.update(roleMod); + return provision(sbj, enabled); + } + + @Override + protected String getName(final Subject<?, ?, ?> subject) { + return Role.class.cast(subject).getName(); + } + + @Override + protected AbstractSubjectTO getSubjectTO(final long key) { + try { + return roleTransfer.getRoleTO(key); + } catch (Exception e) { + LOG.warn("Error retrieving user {}", key, e); + return null; + } + } + + @Override + protected Subject<?, ?, ?> getSubject(final long key) { + try { + return roleDAO.authFetch(key); + } catch (Exception e) { + LOG.warn("Error retrieving role {}", key, e); + return null; + } + } + + @Override + protected ConnectorObject getRemoteObject(final String accountId) { + ConnectorObject obj = null; + + try { + final Uid uid = new Uid(accountId); + + obj = profile.getConnector().getObject( + ObjectClass.GROUP, + uid, + profile.getConnector().getOperationOptions(Collections.<MappingItem>emptySet())); + } catch (TimeoutException toe) { + LOG.debug("Request timeout", toe); + throw toe; + } catch (RuntimeException ignore) { + LOG.debug("While resolving {}", accountId, ignore); + } + return obj; + } + + @Override + protected Mapping<?> getMapping() { + return profile.getTask().getResource().getRmapping(); + } +} http://git-wip-us.apache.org/repos/asf/syncope/blob/80589a1b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/RoleSyncResultHandler.java ---------------------------------------------------------------------- diff --git a/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/RoleSyncResultHandler.java b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/RoleSyncResultHandler.java deleted file mode 100644 index d172077..0000000 --- a/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/RoleSyncResultHandler.java +++ /dev/null @@ -1,167 +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.server.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.RoleMod; -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.RoleTO; -import org.apache.syncope.common.lib.types.AttributableType; -import org.apache.syncope.server.persistence.api.entity.AttributableUtil; -import org.apache.syncope.server.provisioning.api.sync.ProvisioningResult; -import org.identityconnectors.framework.common.objects.SyncDelta; - -public class RoleSyncResultHandler extends AbstractSubjectSyncResultHandler { - - protected Map<Long, String> roleOwnerMap = new HashMap<>(); - - public Map<Long, String> getRoleOwnerMap() { - return this.roleOwnerMap; - } - - @Override - protected AttributableUtil getAttributableUtil() { - return attrUtilFactory.getInstance(AttributableType.ROLE); - } - - @Override - protected String getName(final AbstractSubjectTO subjectTO) { - return RoleTO.class.cast(subjectTO).getName(); - } - - @Override - protected AbstractSubjectTO getSubjectTO(final long key) { - try { - return roleTransfer.getRoleTO(roleDAO.authFetch(key)); - } catch (Exception e) { - LOG.warn("Error retrieving role {}", key, e); - return null; - } - } - - @Override - protected AbstractSubjectMod getSubjectMod( - final AbstractSubjectTO subjectTO, final SyncDelta delta) { - - return connObjectUtil.getAttributableMod( - subjectTO.getKey(), - delta.getObject(), - subjectTO, - profile.getTask(), - attrUtilFactory.getInstance(AttributableType.ROLE)); - } - - @Override - protected AbstractSubjectTO create( - final AbstractSubjectTO subjectTO, final SyncDelta _delta, final ProvisioningResult result) { - - RoleTO roleTO = RoleTO.class.cast(subjectTO); - - Map.Entry<Long, List<PropagationStatus>> created = roleProvisioningManager.create(roleTO, roleOwnerMap, - Collections.singleton(profile.getTask().getResource().getKey())); - - roleTO = roleTransfer.getRoleTO(roleDAO.authFetch(created.getKey())); - - result.setId(created.getKey()); - result.setName(getName(subjectTO)); - - return roleTO; - } - - @Override - protected AbstractSubjectTO link( - final AbstractSubjectTO before, - final ProvisioningResult result, - final boolean unlink) { - - final RoleMod roleMod = new RoleMod(); - roleMod.setKey(before.getKey()); - - if (unlink) { - roleMod.getResourcesToRemove().add(profile.getTask().getResource().getKey()); - } else { - roleMod.getResourcesToAdd().add(profile.getTask().getResource().getKey()); - } - - return roleTransfer.getRoleTO(roleDAO.authFetch(rwfAdapter.update(roleMod).getResult())); - } - - @Override - protected AbstractSubjectTO update( - final AbstractSubjectTO before, - final AbstractSubjectMod subjectMod, - final SyncDelta delta, - final ProvisioningResult result) { - - RoleMod roleMod = RoleMod.class.cast(subjectMod); - - Map.Entry<Long, List<PropagationStatus>> updated = roleProvisioningManager.update(roleMod); - - //moved after role provisioning manager - String roleOwner = null; - for (AttrMod attrMod : roleMod.getAttrsToUpdate()) { - if (attrMod.getSchema().isEmpty()) { - roleOwner = attrMod.getValuesToBeAdded().iterator().next(); - } - } - if (roleOwner != null) { - roleOwnerMap.put(updated.getKey(), roleOwner); - } - - final RoleTO after = roleTransfer.getRoleTO(roleDAO.authFetch(updated.getKey())); - - result.setName(getName(after)); - - return after; - } - - @Override - protected void deprovision(final Long id, final boolean unlink) { - - taskExecutor.execute( - propagationManager.getRoleDeleteTaskIds(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 delete(final Long id) { - try { - taskExecutor.execute( - propagationManager.getRoleDeleteTaskIds(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); - } - - roleProvisioningManager.delete(id); - } -} http://git-wip-us.apache.org/repos/asf/syncope/blob/80589a1b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/RoleSyncResultHandlerImpl.java ---------------------------------------------------------------------- diff --git a/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/RoleSyncResultHandlerImpl.java b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/RoleSyncResultHandlerImpl.java new file mode 100644 index 0000000..2cada75 --- /dev/null +++ b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/RoleSyncResultHandlerImpl.java @@ -0,0 +1,169 @@ +/* + * 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.server.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.RoleMod; +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.RoleTO; +import org.apache.syncope.common.lib.types.AttributableType; +import org.apache.syncope.server.persistence.api.entity.AttributableUtil; +import org.apache.syncope.server.provisioning.api.sync.ProvisioningResult; +import org.apache.syncope.server.provisioning.api.sync.RoleSyncResultHandler; +import org.identityconnectors.framework.common.objects.SyncDelta; + +public class RoleSyncResultHandlerImpl extends AbstractSyncResultHandler implements RoleSyncResultHandler { + + protected Map<Long, String> roleOwnerMap = new HashMap<>(); + + @Override + public Map<Long, String> getRoleOwnerMap() { + return this.roleOwnerMap; + } + + @Override + protected AttributableUtil getAttributableUtil() { + return attrUtilFactory.getInstance(AttributableType.ROLE); + } + + @Override + protected String getName(final AbstractSubjectTO subjectTO) { + return RoleTO.class.cast(subjectTO).getName(); + } + + @Override + protected AbstractSubjectTO getSubjectTO(final long key) { + try { + return roleTransfer.getRoleTO(key); + } catch (Exception e) { + LOG.warn("Error retrieving role {}", key, e); + return null; + } + } + + @Override + protected AbstractSubjectMod getSubjectMod( + final AbstractSubjectTO subjectTO, final SyncDelta delta) { + + return connObjectUtil.getAttributableMod( + subjectTO.getKey(), + delta.getObject(), + subjectTO, + profile.getTask(), + attrUtilFactory.getInstance(AttributableType.ROLE)); + } + + @Override + protected AbstractSubjectTO create( + final AbstractSubjectTO subjectTO, final SyncDelta _delta, final ProvisioningResult result) { + + RoleTO roleTO = RoleTO.class.cast(subjectTO); + + Map.Entry<Long, List<PropagationStatus>> created = roleProvisioningManager.create(roleTO, roleOwnerMap, + Collections.singleton(profile.getTask().getResource().getKey())); + + roleTO = roleTransfer.getRoleTO(created.getKey()); + + result.setId(created.getKey()); + result.setName(getName(subjectTO)); + + return roleTO; + } + + @Override + protected AbstractSubjectTO link( + final AbstractSubjectTO before, + final ProvisioningResult result, + final boolean unlink) { + + final RoleMod roleMod = new RoleMod(); + roleMod.setKey(before.getKey()); + + if (unlink) { + roleMod.getResourcesToRemove().add(profile.getTask().getResource().getKey()); + } else { + roleMod.getResourcesToAdd().add(profile.getTask().getResource().getKey()); + } + + return roleTransfer.getRoleTO(rwfAdapter.update(roleMod).getResult()); + } + + @Override + protected AbstractSubjectTO update( + final AbstractSubjectTO before, + final AbstractSubjectMod subjectMod, + final SyncDelta delta, + final ProvisioningResult result) { + + RoleMod roleMod = RoleMod.class.cast(subjectMod); + + Map.Entry<Long, List<PropagationStatus>> updated = roleProvisioningManager.update(roleMod); + + //moved after role provisioning manager + String roleOwner = null; + for (AttrMod attrMod : roleMod.getPlainAttrsToUpdate()) { + if (attrMod.getSchema().isEmpty()) { + roleOwner = attrMod.getValuesToBeAdded().iterator().next(); + } + } + if (roleOwner != null) { + roleOwnerMap.put(updated.getKey(), roleOwner); + } + + final RoleTO after = roleTransfer.getRoleTO(updated.getKey()); + + result.setName(getName(after)); + + return after; + } + + @Override + protected void deprovision(final Long id, final boolean unlink) { + + taskExecutor.execute( + propagationManager.getRoleDeleteTaskIds(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 delete(final Long id) { + try { + taskExecutor.execute( + propagationManager.getRoleDeleteTaskIds(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); + } + + roleProvisioningManager.delete(id); + } +} http://git-wip-us.apache.org/repos/asf/syncope/blob/80589a1b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/SyncJobImpl.java ---------------------------------------------------------------------- diff --git a/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/SyncJobImpl.java b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/SyncJobImpl.java index c47bff6..47a118f 100644 --- a/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/SyncJobImpl.java +++ b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/SyncJobImpl.java @@ -18,8 +18,6 @@ */ package org.apache.syncope.server.provisioning.java.sync; -import java.util.ArrayList; -import java.util.List; import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.apache.syncope.common.lib.mod.ReferenceMod; @@ -34,11 +32,12 @@ import org.apache.syncope.server.persistence.api.entity.task.SyncTask; import org.apache.syncope.server.persistence.api.entity.user.UMapping; import org.apache.syncope.server.provisioning.api.Connector; import org.apache.syncope.server.provisioning.api.sync.ProvisioningProfile; -import org.apache.syncope.server.provisioning.api.sync.ProvisioningResult; import org.apache.syncope.server.provisioning.api.sync.SyncActions; import org.apache.syncope.server.misc.security.UnauthorizedRoleException; import org.apache.syncope.server.misc.spring.ApplicationContextProvider; import org.apache.syncope.server.provisioning.api.job.SyncJob; +import org.apache.syncope.server.provisioning.api.sync.RoleSyncResultHandler; +import org.apache.syncope.server.provisioning.api.sync.UserSyncResultHandler; import org.apache.syncope.server.workflow.api.RoleWorkflowAdapter; import org.identityconnectors.framework.common.objects.ObjectClass; import org.identityconnectors.framework.common.objects.SyncToken; @@ -74,14 +73,14 @@ public class SyncJobImpl extends AbstractProvisioningJob<SyncTask, SyncActions> roleMod.setRoleOwner(null); roleMod.setUserOwner(null); } else { - Long userId = syncUtilities.findMatchingAttributableId( + Long userId = syncUtilities.findMatchingAttributableKey( ObjectClass.ACCOUNT, entry.getValue(), rhandler.getProfile().getTask().getResource(), rhandler.getProfile().getConnector()); if (userId == null) { - Long roleId = syncUtilities.findMatchingAttributableId( + Long roleId = syncUtilities.findMatchingAttributableKey( ObjectClass.GROUP, entry.getValue(), rhandler.getProfile().getTask().getResource(), @@ -109,27 +108,26 @@ public class SyncJobImpl extends AbstractProvisioningJob<SyncTask, SyncActions> LOG.debug("Execute synchronization with token {}", syncTask.getResource().getUsyncToken()); - final List<ProvisioningResult> results = new ArrayList<>(); - final ProvisioningProfile<SyncTask, SyncActions> profile = new ProvisioningProfile<>(connector, syncTask); - profile.getActions().addAll(actions); + if (actions != null) { + profile.getActions().addAll(actions); + } profile.setDryRun(dryRun); profile.setResAct(getSyncPolicySpec(syncTask).getConflictResolutionAction()); - profile.getResults().addAll(results); // Prepare handler for SyncDelta objects (users) final UserSyncResultHandler uhandler = - (UserSyncResultHandler) ApplicationContextProvider.getApplicationContext().getBeanFactory().createBean( - UserSyncResultHandler.class, AbstractBeanDefinition.AUTOWIRE_BY_NAME, false); + (UserSyncResultHandler) ApplicationContextProvider.getApplicationContext().getBeanFactory(). + createBean(UserSyncResultHandlerImpl.class, AbstractBeanDefinition.AUTOWIRE_BY_NAME, false); uhandler.setProfile(profile); // Prepare handler for SyncDelta objects (roles/groups) final RoleSyncResultHandler rhandler = - (RoleSyncResultHandler) ApplicationContextProvider.getApplicationContext().getBeanFactory().createBean( - RoleSyncResultHandler.class, AbstractBeanDefinition.AUTOWIRE_BY_NAME, false); + (RoleSyncResultHandler) ApplicationContextProvider.getApplicationContext().getBeanFactory(). + createBean(RoleSyncResultHandlerImpl.class, AbstractBeanDefinition.AUTOWIRE_BY_NAME, false); rhandler.setProfile(profile); - if (!profile.isDryRun()) { + if (actions != null && !profile.isDryRun()) { for (SyncActions action : actions) { action.beforeAll(profile); } @@ -189,13 +187,13 @@ public class SyncJobImpl extends AbstractProvisioningJob<SyncTask, SyncActions> LOG.error("While setting role owners", e); } - if (!profile.isDryRun()) { + if (actions != null && !profile.isDryRun()) { for (SyncActions action : actions) { - action.afterAll(profile, results); + action.afterAll(profile); } } - final String result = createReport(results, syncTask.getResource().getSyncTraceLevel(), dryRun); + final String result = createReport(profile.getResults(), syncTask.getResource().getSyncTraceLevel(), dryRun); LOG.debug("Sync result: {}", result); http://git-wip-us.apache.org/repos/asf/syncope/blob/80589a1b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/SyncUtilities.java ---------------------------------------------------------------------- diff --git a/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/SyncUtilities.java b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/SyncUtilities.java index 0d62487..299aba0 100644 --- a/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/SyncUtilities.java +++ b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/SyncUtilities.java @@ -115,11 +115,12 @@ public class SyncUtilities { @Autowired protected AttributableUtilFactory attrUtilFactory; - public Long findMatchingAttributableId( + public Long findMatchingAttributableKey( final ObjectClass oclass, final String name, final ExternalResource resource, final Connector connector) { + Long result = null; final AttributableUtil attrUtil = attrUtilFactory.getInstance(oclass); @@ -137,15 +138,15 @@ public class SyncUtilities { ConnectorObject connObj = found.iterator().next(); try { - final List<Long> subjectIds = findExisting(connObj.getUid().getUidValue(), connObj, resource, attrUtil); - if (subjectIds.isEmpty()) { + List<Long> subjectKeys = findExisting(connObj.getUid().getUidValue(), connObj, resource, attrUtil); + if (subjectKeys.isEmpty()) { LOG.debug("No matching {} found for {}, aborting", attrUtil.getType(), connObj); } else { - if (subjectIds.size() > 1) { - LOG.warn("More than one {} found {} - taking first only", attrUtil.getType(), subjectIds); + if (subjectKeys.size() > 1) { + LOG.warn("More than one {} found {} - taking first only", attrUtil.getType(), subjectKeys); } - result = subjectIds.iterator().next(); + result = subjectKeys.iterator().next(); } } catch (IllegalArgumentException e) { LOG.warn(e.getMessage()); @@ -155,14 +156,14 @@ public class SyncUtilities { return result; } - public List<Long> findByAccountIdItem( + private List<Long> findByAccountIdItem( final String uid, final ExternalResource resource, final AttributableUtil attrUtil) { final List<Long> result = new ArrayList<>(); final MappingItem accountIdItem = attrUtil.getAccountIdItem(resource); switch (accountIdItem.getIntMappingType()) { - case UserSchema: - case RoleSchema: + case UserPlainSchema: + case RolePlainSchema: final PlainAttrValue value = attrUtil.newPlainAttrValue(); PlainSchema schema = plainSchemaDAO.find(accountIdItem.getIntAttrName(), attrUtil.plainSchemaClass()); @@ -227,7 +228,7 @@ public class SyncUtilities { return result; } - public List<Long> search(final SearchCond searchCond, final SubjectType type) { + private List<Long> search(final SearchCond searchCond, final SubjectType type) { final List<Long> result = new ArrayList<>(); List<Subject<?, ?, ?>> subjects = searchDAO.search( @@ -240,13 +241,13 @@ public class SyncUtilities { return result; } - public List<Long> findByCorrelationRule( + private List<Long> findByCorrelationRule( final ConnectorObject connObj, final SyncCorrelationRule rule, final SubjectType type) { return search(rule.getSearchCond(connObj), type); } - public List<Long> findByAttributableSearch( + private List<Long> findByAttributableSearch( final ConnectorObject connObj, final List<String> altSearchSchemas, final ExternalResource resource, @@ -287,7 +288,7 @@ public class SyncUtilities { SearchCond nodeCond; // users: just id or username can be selected to be used // roles: just id or name can be selected to be used - if ("id".equalsIgnoreCase(schema) + if ("key".equalsIgnoreCase(schema) || "username".equalsIgnoreCase(schema) || "name".equalsIgnoreCase(schema)) { SubjectCond cond = new SubjectCond(); http://git-wip-us.apache.org/repos/asf/syncope/blob/80589a1b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/UserPushResultHandler.java ---------------------------------------------------------------------- diff --git a/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/UserPushResultHandler.java b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/UserPushResultHandler.java deleted file mode 100644 index 3302388..0000000 --- a/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/UserPushResultHandler.java +++ /dev/null @@ -1,159 +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.server.provisioning.java.sync; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import org.apache.syncope.common.lib.mod.UserMod; -import org.apache.syncope.common.lib.to.AbstractSubjectTO; -import org.apache.syncope.common.lib.to.UserTO; -import org.apache.syncope.common.lib.types.PropagationByResource; -import org.apache.syncope.common.lib.types.ResourceOperation; -import org.apache.syncope.server.persistence.api.entity.Mapping; -import org.apache.syncope.server.persistence.api.entity.MappingItem; -import org.apache.syncope.server.persistence.api.entity.Subject; -import org.apache.syncope.server.persistence.api.entity.user.User; -import org.apache.syncope.server.provisioning.api.TimeoutException; -import org.identityconnectors.framework.common.objects.ConnectorObject; -import org.identityconnectors.framework.common.objects.ObjectClass; -import org.identityconnectors.framework.common.objects.Uid; - -public class UserPushResultHandler extends AbstractSubjectPushResultHandler { - - @Override - protected Subject<?, ?, ?> deprovision(final Subject<?, ?, ?> sbj) { - final UserTO before = userTransfer.getUserTO(userDAO.authFetch(sbj.getKey())); - - final List<String> noPropResources = new ArrayList<>(before.getResources()); - noPropResources.remove(profile.getTask().getResource().getKey()); - - taskExecutor.execute(propagationManager.getUserDeleteTaskIds(before.getKey(), - Collections.singleton(profile.getTask().getResource().getKey()), noPropResources)); - - return userDAO.authFetch(before.getKey()); - } - - @Override - protected Subject<?, ?, ?> provision(final Subject<?, ?, ?> sbj, final Boolean enabled) { - final UserTO before = userTransfer.getUserTO(userDAO.authFetch(sbj.getKey())); - - final List<String> noPropResources = new ArrayList<>(before.getResources()); - noPropResources.remove(profile.getTask().getResource().getKey()); - - final PropagationByResource propByRes = new PropagationByResource(); - propByRes.add(ResourceOperation.CREATE, profile.getTask().getResource().getKey()); - - taskExecutor.execute(propagationManager.getUserCreateTaskIds( - before.getKey(), - enabled, - propByRes, - null, - Collections.unmodifiableCollection(before.getVirAttrs()), - Collections.unmodifiableCollection(before.getMemberships()), - noPropResources)); - - return userDAO.authFetch(before.getKey()); - } - - @Override - protected Subject<?, ?, ?> link(final Subject<?, ?, ?> sbj, final Boolean unlink) { - final UserMod userMod = new UserMod(); - userMod.setKey(sbj.getKey()); - - if (unlink) { - userMod.getResourcesToRemove().add(profile.getTask().getResource().getKey()); - } else { - userMod.getResourcesToAdd().add(profile.getTask().getResource().getKey()); - } - - uwfAdapter.update(userMod); - - return userDAO.authFetch(userMod.getKey()); - } - - @Override - protected Subject<?, ?, ?> unassign(final Subject<?, ?, ?> sbj) { - final UserMod userMod = new UserMod(); - userMod.setKey(sbj.getKey()); - userMod.getResourcesToRemove().add(profile.getTask().getResource().getKey()); - uwfAdapter.update(userMod); - return deprovision(sbj); - } - - @Override - protected Subject<?, ?, ?> assign(final Subject<?, ?, ?> sbj, final Boolean enabled) { - final UserMod userMod = new UserMod(); - userMod.setKey(sbj.getKey()); - userMod.getResourcesToAdd().add(profile.getTask().getResource().getKey()); - uwfAdapter.update(userMod); - return provision(sbj, enabled); - } - - @Override - protected String getName(final Subject<?, ?, ?> subject) { - return User.class.cast(subject).getUsername(); - } - - @Override - protected AbstractSubjectTO getSubjectTO(final long key) { - try { - return userTransfer.getUserTO(userDAO.authFetch(key)); - } catch (Exception e) { - LOG.warn("Error retrieving user {}", key, e); - return null; - } - } - - @Override - protected Subject<?, ?, ?> getSubject(final long key) { - try { - return userDAO.authFetch(key); - } catch (Exception e) { - LOG.warn("Error retrieving user {}", key, e); - return null; - } - } - - @Override - protected ConnectorObject getRemoteObject(final String accountId) { - ConnectorObject obj = null; - - try { - final Uid uid = new Uid(accountId); - - obj = profile.getConnector().getObject( - ObjectClass.ACCOUNT, - uid, - profile.getConnector().getOperationOptions(Collections.<MappingItem>emptySet())); - - } catch (TimeoutException toe) { - LOG.debug("Request timeout", toe); - throw toe; - } catch (RuntimeException ignore) { - LOG.debug("While resolving {}", accountId, ignore); - } - return obj; - } - - @Override - protected Mapping<?> getMapping() { - return profile.getTask().getResource().getUmapping(); - } -} http://git-wip-us.apache.org/repos/asf/syncope/blob/80589a1b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/UserPushResultHandlerImpl.java ---------------------------------------------------------------------- diff --git a/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/UserPushResultHandlerImpl.java b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/UserPushResultHandlerImpl.java new file mode 100644 index 0000000..57fe4a7 --- /dev/null +++ b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/UserPushResultHandlerImpl.java @@ -0,0 +1,160 @@ +/* + * 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.server.provisioning.java.sync; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import org.apache.syncope.common.lib.mod.UserMod; +import org.apache.syncope.common.lib.to.AbstractSubjectTO; +import org.apache.syncope.common.lib.to.UserTO; +import org.apache.syncope.common.lib.types.PropagationByResource; +import org.apache.syncope.common.lib.types.ResourceOperation; +import org.apache.syncope.server.persistence.api.entity.Mapping; +import org.apache.syncope.server.persistence.api.entity.MappingItem; +import org.apache.syncope.server.persistence.api.entity.Subject; +import org.apache.syncope.server.persistence.api.entity.user.User; +import org.apache.syncope.server.provisioning.api.TimeoutException; +import org.apache.syncope.server.provisioning.api.sync.UserPushResultHandler; +import org.identityconnectors.framework.common.objects.ConnectorObject; +import org.identityconnectors.framework.common.objects.ObjectClass; +import org.identityconnectors.framework.common.objects.Uid; + +public class UserPushResultHandlerImpl extends AbstractPushResultHandler implements UserPushResultHandler { + + @Override + protected Subject<?, ?, ?> deprovision(final Subject<?, ?, ?> sbj) { + final UserTO before = userTransfer.getUserTO(sbj.getKey()); + + final List<String> noPropResources = new ArrayList<>(before.getResources()); + noPropResources.remove(profile.getTask().getResource().getKey()); + + taskExecutor.execute(propagationManager.getUserDeleteTaskIds(before.getKey(), + Collections.singleton(profile.getTask().getResource().getKey()), noPropResources)); + + return userDAO.authFetch(before.getKey()); + } + + @Override + protected Subject<?, ?, ?> provision(final Subject<?, ?, ?> sbj, final Boolean enabled) { + final UserTO before = userTransfer.getUserTO(sbj.getKey()); + + final List<String> noPropResources = new ArrayList<>(before.getResources()); + noPropResources.remove(profile.getTask().getResource().getKey()); + + final PropagationByResource propByRes = new PropagationByResource(); + propByRes.add(ResourceOperation.CREATE, profile.getTask().getResource().getKey()); + + taskExecutor.execute(propagationManager.getUserCreateTaskIds( + before.getKey(), + enabled, + propByRes, + null, + Collections.unmodifiableCollection(before.getVirAttrs()), + Collections.unmodifiableCollection(before.getMemberships()), + noPropResources)); + + return userDAO.authFetch(before.getKey()); + } + + @Override + protected Subject<?, ?, ?> link(final Subject<?, ?, ?> sbj, final Boolean unlink) { + final UserMod userMod = new UserMod(); + userMod.setKey(sbj.getKey()); + + if (unlink) { + userMod.getResourcesToRemove().add(profile.getTask().getResource().getKey()); + } else { + userMod.getResourcesToAdd().add(profile.getTask().getResource().getKey()); + } + + uwfAdapter.update(userMod); + + return userDAO.authFetch(userMod.getKey()); + } + + @Override + protected Subject<?, ?, ?> unassign(final Subject<?, ?, ?> sbj) { + final UserMod userMod = new UserMod(); + userMod.setKey(sbj.getKey()); + userMod.getResourcesToRemove().add(profile.getTask().getResource().getKey()); + uwfAdapter.update(userMod); + return deprovision(sbj); + } + + @Override + protected Subject<?, ?, ?> assign(final Subject<?, ?, ?> sbj, final Boolean enabled) { + final UserMod userMod = new UserMod(); + userMod.setKey(sbj.getKey()); + userMod.getResourcesToAdd().add(profile.getTask().getResource().getKey()); + uwfAdapter.update(userMod); + return provision(sbj, enabled); + } + + @Override + protected String getName(final Subject<?, ?, ?> subject) { + return User.class.cast(subject).getUsername(); + } + + @Override + protected AbstractSubjectTO getSubjectTO(final long key) { + try { + return userTransfer.getUserTO(key); + } catch (Exception e) { + LOG.warn("Error retrieving user {}", key, e); + return null; + } + } + + @Override + protected Subject<?, ?, ?> getSubject(final long key) { + try { + return userDAO.authFetch(key); + } catch (Exception e) { + LOG.warn("Error retrieving user {}", key, e); + return null; + } + } + + @Override + protected ConnectorObject getRemoteObject(final String accountId) { + ConnectorObject obj = null; + + try { + final Uid uid = new Uid(accountId); + + obj = profile.getConnector().getObject( + ObjectClass.ACCOUNT, + uid, + profile.getConnector().getOperationOptions(Collections.<MappingItem>emptySet())); + + } catch (TimeoutException toe) { + LOG.debug("Request timeout", toe); + throw toe; + } catch (RuntimeException ignore) { + LOG.debug("While resolving {}", accountId, ignore); + } + return obj; + } + + @Override + protected Mapping<?> getMapping() { + return profile.getTask().getResource().getUmapping(); + } +} http://git-wip-us.apache.org/repos/asf/syncope/blob/80589a1b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/UserSyncResultHandler.java ---------------------------------------------------------------------- diff --git a/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/UserSyncResultHandler.java b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/UserSyncResultHandler.java deleted file mode 100644 index 58e81ed..0000000 --- a/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/UserSyncResultHandler.java +++ /dev/null @@ -1,155 +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.server.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.server.persistence.api.entity.AttributableUtil; -import org.apache.syncope.server.provisioning.api.sync.ProvisioningResult; -import org.identityconnectors.framework.common.objects.SyncDelta; -import org.quartz.JobExecutionException; - -public class UserSyncResultHandler extends AbstractSubjectSyncResultHandler { - - @Override - protected AttributableUtil getAttributableUtil() { - return attrUtilFactory.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 userTransfer.getUserTO(userDAO.authFetch(key)); - } catch (Exception e) { - LOG.warn("Error retrieving user {}", key, e); - return null; - } - } - - @Override - protected AbstractSubjectMod getSubjectMod( - final AbstractSubjectTO subjectTO, final SyncDelta delta) { - - return connObjectUtil.getAttributableMod( - subjectTO.getKey(), - delta.getObject(), - subjectTO, - profile.getTask(), - getAttributableUtil()); - } - - @Override - protected AbstractSubjectTO create( - final AbstractSubjectTO subjectTO, final SyncDelta delta, final ProvisioningResult result) { - - UserTO userTO = UserTO.class.cast(subjectTO); - - Boolean enabled = syncUtilities.readEnabled(delta.getObject(), profile.getTask()); - //Delegate User Workflow Creation and its Propagation to provisioning manager - Map.Entry<Long, List<PropagationStatus>> created = userProvisioningManager.create(userTO, true, true, enabled, - Collections.singleton(profile.getTask().getResource().getKey())); - - userTO = userTransfer.getUserTO(userDAO.authFetch(created.getKey())); - - result.setId(created.getKey()); - - return userTO; - } - - @Override - protected List<ProvisioningResult> link(SyncDelta delta, List<Long> subjects, AttributableUtil attrUtil, - boolean unlink) throws JobExecutionException { - return super.link(delta, subjects, attrUtil, unlink); //To change body of generated methods, choose Tools | Templates. - } - - @Override - protected AbstractSubjectTO link( - final AbstractSubjectTO before, - final ProvisioningResult result, - final boolean unlink) { - - final 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 userTransfer.getUserTO(userDAO.authFetch(uwfAdapter.update(userMod).getResult().getKey().getKey())); - } - - @Override - protected AbstractSubjectTO update( - 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()); - - Map.Entry<Long, List<PropagationStatus>> updated = userProvisioningManager.update(userMod, before.getKey(), - result, enabled, Collections.singleton(profile.getTask().getResource().getKey())); - - return userTransfer.getUserTO(userDAO.authFetch(updated.getKey())); - } - - @Override - protected void deprovision( - final Long key, - final boolean unlink) { - - taskExecutor.execute( - propagationManager.getUserDeleteTaskIds(key, profile.getTask().getResource().getKey())); - - if (unlink) { - final UserMod userMod = new UserMod(); - userMod.setKey(key); - userMod.getResourcesToRemove().add(profile.getTask().getResource().getKey()); - } - } - - @Override - protected void delete(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); - } -} http://git-wip-us.apache.org/repos/asf/syncope/blob/80589a1b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/UserSyncResultHandlerImpl.java ---------------------------------------------------------------------- diff --git a/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/UserSyncResultHandlerImpl.java b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/UserSyncResultHandlerImpl.java new file mode 100644 index 0000000..9a7e1ba --- /dev/null +++ b/syncope620/server/provisioning-java/src/main/java/org/apache/syncope/server/provisioning/java/sync/UserSyncResultHandlerImpl.java @@ -0,0 +1,149 @@ +/* + * 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.server.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.server.persistence.api.entity.AttributableUtil; +import org.apache.syncope.server.provisioning.api.sync.ProvisioningResult; +import org.apache.syncope.server.provisioning.api.sync.UserSyncResultHandler; +import org.identityconnectors.framework.common.objects.SyncDelta; + +public class UserSyncResultHandlerImpl extends AbstractSyncResultHandler implements UserSyncResultHandler { + + @Override + protected AttributableUtil getAttributableUtil() { + return attrUtilFactory.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 userTransfer.getUserTO(key); + } catch (Exception e) { + LOG.warn("Error retrieving user {}", key, e); + return null; + } + } + + @Override + protected AbstractSubjectMod getSubjectMod( + final AbstractSubjectTO subjectTO, final SyncDelta delta) { + + return connObjectUtil.getAttributableMod( + subjectTO.getKey(), + delta.getObject(), + subjectTO, + profile.getTask(), + getAttributableUtil()); + } + + @Override + protected AbstractSubjectTO create( + final AbstractSubjectTO subjectTO, final SyncDelta delta, final ProvisioningResult result) { + + UserTO userTO = UserTO.class.cast(subjectTO); + + Boolean enabled = syncUtilities.readEnabled(delta.getObject(), profile.getTask()); + //Delegate User Workflow Creation and its Propagation to provisioning manager + Map.Entry<Long, List<PropagationStatus>> created = userProvisioningManager.create(userTO, true, true, enabled, + Collections.singleton(profile.getTask().getResource().getKey())); + + userTO = userTransfer.getUserTO(created.getKey()); + + result.setId(created.getKey()); + + return userTO; + } + + @Override + protected AbstractSubjectTO link( + final AbstractSubjectTO before, + final ProvisioningResult result, + final boolean unlink) { + + final 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 userTransfer.getUserTO(uwfAdapter.update(userMod).getResult().getKey().getKey()); + } + + @Override + protected AbstractSubjectTO update( + 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()); + + Map.Entry<Long, List<PropagationStatus>> updated = userProvisioningManager.update(userMod, before.getKey(), + result, enabled, Collections.singleton(profile.getTask().getResource().getKey())); + + return userTransfer.getUserTO(updated.getKey()); + } + + @Override + protected void deprovision( + final Long key, + final boolean unlink) { + + taskExecutor.execute( + propagationManager.getUserDeleteTaskIds(key, profile.getTask().getResource().getKey())); + + if (unlink) { + final UserMod userMod = new UserMod(); + userMod.setKey(key); + userMod.getResourcesToRemove().add(profile.getTask().getResource().getKey()); + } + } + + @Override + protected void delete(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); + } +} http://git-wip-us.apache.org/repos/asf/syncope/blob/80589a1b/syncope620/server/provisioning-java/src/main/resources/mailTemplates/optin.html.vm ---------------------------------------------------------------------- diff --git a/syncope620/server/provisioning-java/src/main/resources/mailTemplates/optin.html.vm b/syncope620/server/provisioning-java/src/main/resources/mailTemplates/optin.html.vm index 007b09b..8240c7b 100644 --- a/syncope620/server/provisioning-java/src/main/resources/mailTemplates/optin.html.vm +++ b/syncope620/server/provisioning-java/src/main/resources/mailTemplates/optin.html.vm @@ -18,19 +18,19 @@ under the License. --> <html> <body> -<h3>Hi $user.getAttrMap().get("firstname").getValues().get(0) $user.getAttrMap().get("surname").getValues().get(0), welcome to Syncope!</h3> +<h3>Hi $user.getPlainAttrMap().get("firstname").getValues().get(0) $user.getPlainAttrMap().get("surname").getValues().get(0), welcome to Syncope!</h3> <p> Your username is $user.getUsername().<br/> - Your email address is $user.getAttrMap().get("email").getValues().get(0). - Your email address inside a <a href="http://localhost/?email=$esc.url($user.getAttrMap().get("email").getValues().get(0))">link</a>. + Your email address is $user.getPlainAttrMap().get("email").getValues().get(0). + Your email address inside a <a href="http://localhost/?email=$esc.url($user.getPlainAttrMap().get("email").getValues().get(0))">link</a>. </p> <p> This message was sent to the following recipients: <ul> #foreach($recipient in $recipients) - <li>$recipient.getAttrMap().get("email").getValues().get(0)</li> + <li>$recipient.getPlainAttrMap().get("email").getValues().get(0)</li> #end </ul> http://git-wip-us.apache.org/repos/asf/syncope/blob/80589a1b/syncope620/server/provisioning-java/src/main/resources/mailTemplates/optin.txt.vm ---------------------------------------------------------------------- diff --git a/syncope620/server/provisioning-java/src/main/resources/mailTemplates/optin.txt.vm b/syncope620/server/provisioning-java/src/main/resources/mailTemplates/optin.txt.vm index b79b317..fc8e398 100644 --- a/syncope620/server/provisioning-java/src/main/resources/mailTemplates/optin.txt.vm +++ b/syncope620/server/provisioning-java/src/main/resources/mailTemplates/optin.txt.vm @@ -14,15 +14,15 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -Hi $user.getAttrMap().get("firstname").getValues().get(0) $user.getAttrMap().get("surname").getValues().get(0), welcome to Syncope! +Hi $user.getPlainAttrMap().get("firstname").getValues().get(0) $user.getPlainAttrMap().get("surname").getValues().get(0), welcome to Syncope! Your username is $user.getUsername(). -Your email address is $user.getAttrMap().get("email").getValues().get(0). -Your email address inside a link: http://localhost/?email=$esc.url($user.getAttrMap().get("email").getValues().get(0)) . +Your email address is $user.getPlainAttrMap().get("email").getValues().get(0). +Your email address inside a link: http://localhost/?email=$esc.url($user.getPlainAttrMap().get("email").getValues().get(0)) . This message was sent to the following recipients: #foreach($recipient in $recipients) - * $recipient.getAttrMap().get("surname").getValues().get(0) + * $recipient.getPlainAttrMap().get("surname").getValues().get(0) #end because one of the following events occurred: http://git-wip-us.apache.org/repos/asf/syncope/blob/80589a1b/syncope620/server/provisioning-java/src/main/resources/provisioningContext.xml ---------------------------------------------------------------------- diff --git a/syncope620/server/provisioning-java/src/main/resources/provisioningContext.xml b/syncope620/server/provisioning-java/src/main/resources/provisioningContext.xml index d3fa665..3b4301e 100644 --- a/syncope620/server/provisioning-java/src/main/resources/provisioningContext.xml +++ b/syncope620/server/provisioning-java/src/main/resources/provisioningContext.xml @@ -20,10 +20,16 @@ under the License. <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" + xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context - http://www.springframework.org/schema/context/spring-context.xsd"> + http://www.springframework.org/schema/context/spring-context.xsd + http://www.springframework.org/schema/task + http://www.springframework.org/schema/task/spring-task.xsd"> + + <task:annotation-driven executor="connectorExecutor"/> + <task:executor id="connectorExecutor" pool-size="10"/> <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false" depends-on="nonJPAdbInitializer"> @@ -34,7 +40,7 @@ under the License. <property name="dataSource" ref="dataSource"/> <property name="transactionManager" ref="transactionManager"/> <property name="jobFactory"> - <bean class="org.springframework.scheduling.quartz.SpringBeanJobFactory"/> + <bean class="org.apache.syncope.server.provisioning.java.job.SpringBeanJobFactory"/> </property> <property name="quartzProperties"> <props> http://git-wip-us.apache.org/repos/asf/syncope/blob/80589a1b/syncope620/server/provisioning-java/src/test/java/org/apache/syncope/server/provisioning/java/data/ResourceDataBinderTest.java ---------------------------------------------------------------------- diff --git a/syncope620/server/provisioning-java/src/test/java/org/apache/syncope/server/provisioning/java/data/ResourceDataBinderTest.java b/syncope620/server/provisioning-java/src/test/java/org/apache/syncope/server/provisioning/java/data/ResourceDataBinderTest.java index 8b8a39b..34d73fe 100644 --- a/syncope620/server/provisioning-java/src/test/java/org/apache/syncope/server/provisioning/java/data/ResourceDataBinderTest.java +++ b/syncope620/server/provisioning-java/src/test/java/org/apache/syncope/server/provisioning/java/data/ResourceDataBinderTest.java @@ -115,7 +115,7 @@ public class ResourceDataBinderTest extends AbstractTest { MappingItemTO item = new MappingItemTO(); item.setIntAttrName("userId"); - item.setIntMappingType(IntMappingType.UserSchema); + item.setIntMappingType(IntMappingType.UserPlainSchema); item.setExtAttrName("campo1"); item.setAccountid(true); item.setMandatoryCondition("false"); http://git-wip-us.apache.org/repos/asf/syncope/blob/80589a1b/syncope620/server/rest-cxf/src/main/java/org/apache/syncope/server/rest/cxf/service/AbstractServiceImpl.java ---------------------------------------------------------------------- diff --git a/syncope620/server/rest-cxf/src/main/java/org/apache/syncope/server/rest/cxf/service/AbstractServiceImpl.java b/syncope620/server/rest-cxf/src/main/java/org/apache/syncope/server/rest/cxf/service/AbstractServiceImpl.java index 9168ab1..94003ab 100644 --- a/syncope620/server/rest-cxf/src/main/java/org/apache/syncope/server/rest/cxf/service/AbstractServiceImpl.java +++ b/syncope620/server/rest-cxf/src/main/java/org/apache/syncope/server/rest/cxf/service/AbstractServiceImpl.java @@ -163,7 +163,7 @@ abstract class AbstractServiceImpl implements JAXRSService { return Collections.<OrderByClause>emptyList(); } - List<OrderByClause> result = new ArrayList<OrderByClause>(); + List<OrderByClause> result = new ArrayList<>(); for (String clause : orderBy.split(",")) { String[] elems = clause.split(" "); @@ -195,7 +195,7 @@ abstract class AbstractServiceImpl implements JAXRSService { protected <T extends AbstractBaseBean> PagedResult<T> buildPagedResult( final List<T> list, final int page, final int size, final int totalCount) { - PagedResult<T> result = new PagedResult<T>(); + PagedResult<T> result = new PagedResult<>(); result.getResult().addAll(list); result.setPage(page); http://git-wip-us.apache.org/repos/asf/syncope/blob/80589a1b/syncope620/server/rest-cxf/src/main/java/org/apache/syncope/server/rest/cxf/service/LoggerServiceImpl.java ---------------------------------------------------------------------- diff --git a/syncope620/server/rest-cxf/src/main/java/org/apache/syncope/server/rest/cxf/service/LoggerServiceImpl.java b/syncope620/server/rest-cxf/src/main/java/org/apache/syncope/server/rest/cxf/service/LoggerServiceImpl.java index 09995b1..7651d05 100644 --- a/syncope620/server/rest-cxf/src/main/java/org/apache/syncope/server/rest/cxf/service/LoggerServiceImpl.java +++ b/syncope620/server/rest-cxf/src/main/java/org/apache/syncope/server/rest/cxf/service/LoggerServiceImpl.java @@ -80,7 +80,7 @@ public class LoggerServiceImpl extends AbstractServiceImpl implements LoggerServ public LoggerTO read(final LoggerType type, final String name) { List<LoggerTO> logger = list(type); for (LoggerTO l : logger) { - if (l.getName().equals(name)) { + if (l.getKey().equals(name)) { return l; } } http://git-wip-us.apache.org/repos/asf/syncope/blob/80589a1b/syncope620/server/rest-cxf/src/main/java/org/apache/syncope/server/rest/cxf/service/ReportServiceImpl.java ---------------------------------------------------------------------- diff --git a/syncope620/server/rest-cxf/src/main/java/org/apache/syncope/server/rest/cxf/service/ReportServiceImpl.java b/syncope620/server/rest-cxf/src/main/java/org/apache/syncope/server/rest/cxf/service/ReportServiceImpl.java index 3b30337..32306e9 100644 --- a/syncope620/server/rest-cxf/src/main/java/org/apache/syncope/server/rest/cxf/service/ReportServiceImpl.java +++ b/syncope620/server/rest-cxf/src/main/java/org/apache/syncope/server/rest/cxf/service/ReportServiceImpl.java @@ -92,14 +92,14 @@ public class ReportServiceImpl extends AbstractServiceImpl implements ReportServ } @Override - public ReportExecTO readExecution(final Long executionId) { - return logic.readExecution(executionId); + public ReportExecTO readExecution(final Long executionKey) { + return logic.readExecution(executionKey); } @Override - public Response exportExecutionResult(final Long executionId, final ReportExecExportFormat fmt) { + public Response exportExecutionResult(final Long executionKey, final ReportExecExportFormat fmt) { final ReportExecExportFormat format = (fmt == null) ? ReportExecExportFormat.XML : fmt; - final ReportExec reportExec = logic.getAndCheckReportExec(executionId); + final ReportExec reportExec = logic.getAndCheckReportExec(executionKey); StreamingOutput sout = new StreamingOutput() { @Override @@ -125,7 +125,7 @@ public class ReportServiceImpl extends AbstractServiceImpl implements ReportServ } @Override - public void deleteExecution(final Long executionId) { - logic.deleteExecution(executionId); + public void deleteExecution(final Long executionKey) { + logic.deleteExecution(executionKey); } }
