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/04/08 10:00:53 UTC
[6/6] syncope git commit: More replacements thanks to
commons-collections
More replacements thanks to commons-collections
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/bac03b25
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/bac03b25
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/bac03b25
Branch: refs/heads/SYNCOPE-119
Commit: bac03b2569644991e26d2879da2eda47bf9debb9
Parents: 091c735
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed Apr 8 10:00:38 2015 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed Apr 8 10:00:38 2015 +0200
----------------------------------------------------------------------
.../syncope/core/logic/NotificationTest.java | 14 ++---
.../syncope/core/misc/CollectionUtils2.java | 61 ++++++++++++++++++++
.../persistence/api/GroupEntitlementUtil.java | 14 +++--
.../validation/InvalidEntityException.java | 15 ++---
.../jpa/entity/AbstractPlainAttr.java | 2 +-
.../api/cache/VirAttrCacheValue.java | 3 +-
.../api/propagation/PropagationManager.java | 3 +-
.../provisioning/java/AsyncConnectorFacade.java | 4 +-
.../java/DefaultGroupProvisioningManager.java | 9 +--
.../java/DefaultUserProvisioningManager.java | 18 +++---
.../java/cache/DisabledVirAttrCache.java | 2 +-
.../data/AbstractAttributableDataBinder.java | 4 +-
.../notification/NotificationManagerImpl.java | 19 +++---
.../DBPasswordPropagationActions.java | 28 ++++-----
.../LDAPMembershipPropagationActions.java | 4 +-
.../LDAPPasswordPropagationActions.java | 27 +++++----
.../propagation/PropagationManagerImpl.java | 47 +++++++--------
.../java/sync/AbstractProvisioningJob.java | 13 +++--
.../java/sync/AbstractSyncResultHandler.java | 2 +-
.../java/sync/AbstractSyncopeResultHandler.java | 2 +
.../java/sync/DBPasswordSyncActions.java | 28 ++++-----
.../java/sync/LDAPMembershipSyncActions.java | 31 +++++-----
.../java/sync/LDAPPasswordSyncActions.java | 2 +-
23 files changed, 213 insertions(+), 139 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/bac03b25/core/logic/src/test/java/org/apache/syncope/core/logic/NotificationTest.java
----------------------------------------------------------------------
diff --git a/core/logic/src/test/java/org/apache/syncope/core/logic/NotificationTest.java b/core/logic/src/test/java/org/apache/syncope/core/logic/NotificationTest.java
index fdf4d11..4555189 100644
--- a/core/logic/src/test/java/org/apache/syncope/core/logic/NotificationTest.java
+++ b/core/logic/src/test/java/org/apache/syncope/core/logic/NotificationTest.java
@@ -256,7 +256,7 @@ public class NotificationTest {
public void notifyByMail() throws Exception {
// 1. create suitable notification for subsequent tests
Notification notification = entityFactory.newEntity(Notification.class);
- notification.addEvent("[REST]:[UserLogic]:[]:[create]:[SUCCESS]");
+ notification.getEvents().add("[REST]:[UserLogic]:[]:[create]:[SUCCESS]");
notification.setUserAbout(new UserFiqlSearchConditionBuilder().inGroups(7L).query());
notification.setRecipients(new UserFiqlSearchConditionBuilder().inGroups(8L).query());
notification.setSelfAsRecipient(true);
@@ -314,7 +314,7 @@ public class NotificationTest {
public void issueSYNCOPE192() throws Exception {
// 1. create suitable notification for subsequent tests
Notification notification = entityFactory.newEntity(Notification.class);
- notification.addEvent("[REST]:[UserLogic]:[]:[create]:[SUCCESS]");
+ notification.getEvents().add("[REST]:[UserLogic]:[]:[create]:[SUCCESS]");
notification.setUserAbout(new UserFiqlSearchConditionBuilder().inGroups(7L).query());
notification.setRecipients(new UserFiqlSearchConditionBuilder().inGroups(8L).query());
notification.setSelfAsRecipient(true);
@@ -366,7 +366,7 @@ public class NotificationTest {
public void notifyByMailEmptyAbout() throws Exception {
// 1. create suitable notification for subsequent tests
Notification notification = entityFactory.newEntity(Notification.class);
- notification.addEvent("[REST]:[UserLogic]:[]:[create]:[SUCCESS]");
+ notification.getEvents().add("[REST]:[UserLogic]:[]:[create]:[SUCCESS]");
notification.setUserAbout(null);
notification.setRecipients(new UserFiqlSearchConditionBuilder().inGroups(8L).query());
notification.setSelfAsRecipient(true);
@@ -416,7 +416,7 @@ public class NotificationTest {
public void notifyByMailWithRetry() throws Exception {
// 1. create suitable notification for subsequent tests
Notification notification = entityFactory.newEntity(Notification.class);
- notification.addEvent("[REST]:[UserLogic]:[]:[create]:[SUCCESS]");
+ notification.getEvents().add("[REST]:[UserLogic]:[]:[create]:[SUCCESS]");
notification.setUserAbout(null);
notification.setRecipients(new UserFiqlSearchConditionBuilder().inGroups(8L).query());
notification.setSelfAsRecipient(true);
@@ -485,7 +485,7 @@ public class NotificationTest {
public void issueSYNCOPE445() throws Exception {
// 1. create suitable notification for subsequent tests
Notification notification = entityFactory.newEntity(Notification.class);
- notification.addEvent("[REST]:[UserLogic]:[]:[create]:[SUCCESS]");
+ notification.getEvents().add("[REST]:[UserLogic]:[]:[create]:[SUCCESS]");
notification.setUserAbout(new UserFiqlSearchConditionBuilder().inGroups(7L).query());
notification.setRecipients(new UserFiqlSearchConditionBuilder().inGroups(8L).query());
notification.setSelfAsRecipient(true);
@@ -544,7 +544,7 @@ public class NotificationTest {
public void issueSYNCOPE492() throws Exception {
// 1. create suitable disabled notification for subsequent tests
Notification notification = entityFactory.newEntity(Notification.class);
- notification.addEvent("[REST]:[UserLogic]:[]:[create]:[SUCCESS]");
+ notification.getEvents().add("[REST]:[UserLogic]:[]:[create]:[SUCCESS]");
notification.setUserAbout(new UserFiqlSearchConditionBuilder().inGroups(7L).query());
notification.setSelfAsRecipient(true);
@@ -588,7 +588,7 @@ public class NotificationTest {
// 1. create suitable notification for subsequent tests
Notification notification = entityFactory.newEntity(Notification.class);
- notification.addEvent("[REST]:[GroupLogic]:[]:[create]:[SUCCESS]");
+ notification.getEvents().add("[REST]:[GroupLogic]:[]:[create]:[SUCCESS]");
notification.setGroupAbout(new GroupFiqlSearchConditionBuilder().is("name").equalTo("group446").query());
notification.setSelfAsRecipient(false);
http://git-wip-us.apache.org/repos/asf/syncope/blob/bac03b25/core/misc/src/main/java/org/apache/syncope/core/misc/CollectionUtils2.java
----------------------------------------------------------------------
diff --git a/core/misc/src/main/java/org/apache/syncope/core/misc/CollectionUtils2.java b/core/misc/src/main/java/org/apache/syncope/core/misc/CollectionUtils2.java
new file mode 100644
index 0000000..44ddc5c
--- /dev/null
+++ b/core/misc/src/main/java/org/apache/syncope/core/misc/CollectionUtils2.java
@@ -0,0 +1,61 @@
+/*
+ * 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.misc;
+
+import java.util.Iterator;
+
+public final class CollectionUtils2 {
+
+ /**
+ * Returns the next element in <tt>iterator</tt> or <tt>defaultValue</tt> if the iterator is empty.
+ *
+ * @param defaultValue the default value to return if the iterator is empty
+ * @return the next element of <tt>iterator</tt> or the default value
+ */
+ public static <T> T getNext(final Iterator<? extends T> iterator, final T defaultValue) {
+ return iterator.hasNext() ? iterator.next() : defaultValue;
+ }
+
+ /**
+ * Returns the first element in <tt>iterable</tt> or <tt>defaultValue</tt> if the iterable is empty.
+ *
+ * <p/>
+ * If no default value is desired (and the caller instead wants a {@link java.util.NoSuchElementException} to be
+ * thrown), it is recommended that <tt>iterable.iterator().next()}</tt> is used instead.
+ *
+ * @param defaultValue the default value to return if the iterable is empty
+ * @return the first element of <tt>iterable</tt> or the default value
+ */
+ public static <T> T getFirst(final Iterable<? extends T> iterable, final T defaultValue) {
+ return getNext(iterable.iterator(), defaultValue);
+ }
+
+ /**
+ * Returns the first element in <tt>iterable</tt> or <tt>null</tt> if the iterable is empty.
+ *
+ * @return the first element of <tt>iterable</tt> or <tt>null</tt>
+ */
+ public static <T> T getFirstOrNull(final Iterable<? extends T> iterable) {
+ return getNext(iterable.iterator(), null);
+ }
+
+ private CollectionUtils2() {
+ // private constructor for static utility class
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/bac03b25/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/GroupEntitlementUtil.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/GroupEntitlementUtil.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/GroupEntitlementUtil.java
index b0f104a..723dfe1 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/GroupEntitlementUtil.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/GroupEntitlementUtil.java
@@ -22,6 +22,8 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.regex.Pattern;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.Transformer;
import org.apache.syncope.core.persistence.api.entity.Entitlement;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -73,11 +75,13 @@ public final class GroupEntitlementUtil {
}
public static Set<Long> getGroupKeys(final List<Entitlement> entitlements) {
- Set<String> names = new HashSet<>(entitlements.size());
- for (Entitlement entitlement : entitlements) {
- names.add(entitlement.getKey());
- }
- return GroupEntitlementUtil.getGroupKeys(names);
+ return getGroupKeys(CollectionUtils.collect(entitlements, new Transformer<Entitlement, String>() {
+
+ @Override
+ public String transform(final Entitlement entitlement) {
+ return entitlement.getKey();
+ }
+ }, new HashSet<String>()));
}
/**
http://git-wip-us.apache.org/repos/asf/syncope/blob/bac03b25/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/attrvalue/validation/InvalidEntityException.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/attrvalue/validation/InvalidEntityException.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/attrvalue/validation/InvalidEntityException.java
index 818fb61..97f1a58 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/attrvalue/validation/InvalidEntityException.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/attrvalue/validation/InvalidEntityException.java
@@ -24,6 +24,8 @@ import java.util.Map;
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.ValidationException;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.Predicate;
import org.apache.syncope.common.lib.types.EntityViolationType;
/**
@@ -97,14 +99,13 @@ public class InvalidEntityException extends ValidationException {
}
public final boolean hasViolation(final EntityViolationType type) {
- boolean found = false;
- for (Class<?> entity : violations.keySet()) {
- if (violations.get(entity).contains(type)) {
- found = true;
- }
- }
+ return CollectionUtils.exists(violations.keySet(), new Predicate<Class<?>>() {
- return found;
+ @Override
+ public boolean evaluate(final Class<?> entity) {
+ return violations.get(entity).contains(type);
+ }
+ });
}
public String getEntityClassSimpleName() {
http://git-wip-us.apache.org/repos/asf/syncope/blob/bac03b25/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractPlainAttr.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractPlainAttr.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractPlainAttr.java
index 2db17f0..aa7af95 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractPlainAttr.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractPlainAttr.java
@@ -80,7 +80,7 @@ public abstract class AbstractPlainAttr extends AbstractEntity<Long> implements
result = Collections.singletonList(getUniqueValue().getValueAsString());
}
- return result;
+ return Collections.unmodifiableList(result);
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/bac03b25/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCacheValue.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCacheValue.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCacheValue.java
index 0db95ac..3288432 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCacheValue.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCacheValue.java
@@ -18,6 +18,7 @@
*/
package org.apache.syncope.core.provisioning.api.cache;
+import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
@@ -73,7 +74,7 @@ public class VirAttrCacheValue {
res.addAll(value);
}
- return res;
+ return Collections.unmodifiableSet(res);
}
public Date getLastAccessDate() {
http://git-wip-us.apache.org/repos/asf/syncope/blob/bac03b25/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java
index 277dfc9..895e0dc 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java
@@ -207,6 +207,7 @@ public interface PropagationManager {
* the creation fails onto a mandatory resource.
*
* @param userKey to be deleted
+ * @param resourceNames resources
* @param noPropResourceNames name of external resources not to be considered for propagation
* @return list of propagation tasks
*/
@@ -231,7 +232,7 @@ public interface PropagationManager {
* @param noPropResourceNames external resource names not to be considered for propagation
* @return list of propagation tasks
*/
- List<PropagationTask> getUserUpdateTaskIds(User user, Boolean enable, Set<String> noPropResourceNames);
+ List<PropagationTask> getUserUpdateTaskIds(User user, Boolean enable, Collection<String> noPropResourceNames);
/**
* Performs update on each resource associated to the user.
http://git-wip-us.apache.org/repos/asf/syncope/blob/bac03b25/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/AsyncConnectorFacade.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/AsyncConnectorFacade.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/AsyncConnectorFacade.java
index 416c8c0..ae2d297 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/AsyncConnectorFacade.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/AsyncConnectorFacade.java
@@ -154,7 +154,7 @@ public class AsyncConnectorFacade {
@Async
public Future<Set<String>> getSchemaNames(final ConnectorFacade connector, final boolean includeSpecial) {
- final Set<String> schemaNames = new HashSet<String>();
+ final Set<String> schemaNames = new HashSet<>();
try {
final Schema schema = connector.schema();
@@ -175,7 +175,7 @@ public class AsyncConnectorFacade {
@Async
public Future<Set<ObjectClass>> getSupportedObjectClasses(final ConnectorFacade connector) {
- final Set<ObjectClass> objectClasses = new HashSet<ObjectClass>();
+ final Set<ObjectClass> objectClasses = new HashSet<>();
try {
final Schema schema = connector.schema();
http://git-wip-us.apache.org/repos/asf/syncope/blob/bac03b25/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java
index 7dc3366..2adbdd0 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java
@@ -26,6 +26,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
+import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -74,7 +75,8 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager
public Map.Entry<Long, List<PropagationStatus>> create(final GroupTO subject, final Set<String> excludedResources) {
WorkflowResult<Long> created = gwfAdapter.create(subject);
- AuthContextUtil.extendAuthContext(created.getResult(), GroupEntitlementUtil.getEntitlementNameFromGroupKey(created.getResult()));
+ AuthContextUtil.extendAuthContext(created.getResult(), GroupEntitlementUtil.getEntitlementNameFromGroupKey(
+ created.getResult()));
List<PropagationTask> tasks =
propagationManager.getGroupCreateTaskIds(created, subject.getVirAttrs(), excludedResources);
@@ -100,7 +102,7 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager
groupOwnerMap.put(created.getResult(), groupOwner.getValues().iterator().next());
}
- AuthContextUtil.extendAuthContext(created.getResult(),
+ AuthContextUtil.extendAuthContext(created.getResult(),
GroupEntitlementUtil.getEntitlementNameFromGroupKey(created.getResult()));
List<PropagationTask> tasks = propagationManager.getGroupCreateTaskIds(
@@ -198,8 +200,7 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager
public List<PropagationStatus> deprovision(final Long groupKey, final Collection<String> resources) {
Group group = groupDAO.authFetch(groupKey);
- Set<String> noPropResourceName = group.getResourceNames();
- noPropResourceName.removeAll(resources);
+ Collection<String> noPropResourceName = CollectionUtils.removeAll(group.getResourceNames(), resources);
List<PropagationTask> tasks = propagationManager.getGroupDeleteTaskIds(
groupKey, new HashSet<>(resources), noPropResourceName);
http://git-wip-us.apache.org/repos/asf/syncope/blob/bac03b25/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java
index c9fbe0f..4eb425f 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java
@@ -25,6 +25,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.syncope.common.lib.mod.MembershipMod;
import org.apache.syncope.common.lib.mod.StatusMod;
import org.apache.syncope.common.lib.mod.UserMod;
@@ -234,11 +235,11 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager {
}
protected List<PropagationStatus> propagateStatus(final User user, final StatusMod statusMod) {
- Set<String> resourcesToBeExcluded = new HashSet<>(user.getResourceNames());
- resourcesToBeExcluded.removeAll(statusMod.getResourceNames());
+ Collection<String> noPropResourceNames =
+ CollectionUtils.removeAll(user.getResourceNames(), statusMod.getResourceNames());
List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(
- user, statusMod.getType() != StatusMod.ModType.SUSPEND, resourcesToBeExcluded);
+ user, statusMod.getType() != StatusMod.ModType.SUSPEND, noPropResourceNames);
PropagationReporter propReporter =
ApplicationContextProvider.getApplicationContext().getBean(PropagationReporter.class);
try {
@@ -274,11 +275,10 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager {
public List<PropagationStatus> deprovision(final Long userKey, final Collection<String> resources) {
final User user = userDAO.authFetch(userKey);
- final Set<String> noPropResourceName = user.getResourceNames();
- noPropResourceName.removeAll(resources);
+ Collection<String> noPropResourceNames = CollectionUtils.removeAll(user.getResourceNames(), resources);
final List<PropagationTask> tasks =
- propagationManager.getUserDeleteTaskIds(userKey, new HashSet<>(resources), noPropResourceName);
+ propagationManager.getUserDeleteTaskIds(userKey, new HashSet<>(resources), noPropResourceNames);
final PropagationReporter propagationReporter =
ApplicationContextProvider.getApplicationContext().getBean(PropagationReporter.class);
try {
@@ -330,12 +330,10 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager {
}
}
- PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
- getBean(PropagationReporter.class);
-
List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(
updated, updated.getResult().getKey().getPassword() != null, excludedResources);
-
+ PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
+ getBean(PropagationReporter.class);
try {
taskExecutor.execute(tasks, propagationReporter);
} catch (PropagationException e) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/bac03b25/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/DisabledVirAttrCache.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/DisabledVirAttrCache.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/DisabledVirAttrCache.java
index d1e0dda..3c3dcca 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/DisabledVirAttrCache.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/DisabledVirAttrCache.java
@@ -38,7 +38,7 @@ public class DisabledVirAttrCache implements VirAttrCache {
}
@Override
- public boolean isValidEntry(VirAttrCacheValue value) {
+ public boolean isValidEntry(final VirAttrCacheValue value) {
return false;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/bac03b25/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAttributableDataBinder.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAttributableDataBinder.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAttributableDataBinder.java
index a33e062..2c94b8b 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAttributableDataBinder.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAttributableDataBinder.java
@@ -166,7 +166,6 @@ abstract class AbstractAttributableDataBinder {
schema = plainSchemaDAO.find(schemaName, reference);
// safely ignore invalid schemas from AttrTO
- // see http://code.google.com/p/syncope/issues/detail?id=17
if (schema == null) {
LOG.debug("Ignoring invalid schema {}", schemaName);
} else if (schema.isReadonly()) {
@@ -753,8 +752,7 @@ abstract class AbstractAttributableDataBinder {
if ((type == AttributableType.USER && resource.getUmapping() != null)
|| (type == AttributableType.GROUP && resource.getGmapping() != null)) {
- MappingItem accountIdItem =
- attrUtilFactory.getInstance(type).getAccountIdItem(resource);
+ MappingItem accountIdItem = attrUtilFactory.getInstance(type).getAccountIdItem(resource);
if (accountIdItem == null) {
throw new NotFoundException(
"AccountId mapping for " + type + " " + subject.getKey()
http://git-wip-us.apache.org/repos/asf/syncope/blob/bac03b25/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/NotificationManagerImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/NotificationManagerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/NotificationManagerImpl.java
index 169ac88..dac783b 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/NotificationManagerImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/NotificationManagerImpl.java
@@ -36,6 +36,7 @@ import org.apache.syncope.common.lib.types.AuditElements.Result;
import org.apache.syncope.common.lib.types.AuditLoggerName;
import org.apache.syncope.common.lib.types.IntMappingType;
import org.apache.syncope.common.lib.types.SubjectType;
+import org.apache.syncope.core.misc.CollectionUtils2;
import org.apache.syncope.core.persistence.api.GroupEntitlementUtil;
import org.apache.syncope.core.persistence.api.dao.ConfDAO;
import org.apache.syncope.core.persistence.api.dao.EntitlementDAO;
@@ -347,15 +348,8 @@ public class NotificationManagerImpl implements NotificationManager {
case UserPlainSchema:
UPlainAttr attr = user.getPlainAttr(recipientAttrName);
- if (attr != null && !attr.getValuesAsStrings().isEmpty()) {
- email = attr.getValuesAsStrings().get(0);
- }
- break;
-
- case UserVirtualSchema:
- UVirAttr virAttr = user.getVirAttr(recipientAttrName);
- if (virAttr != null && !virAttr.getValues().isEmpty()) {
- email = virAttr.getValues().get(0);
+ if (attr != null) {
+ email = CollectionUtils2.getFirstOrNull(attr.getValuesAsStrings());
}
break;
@@ -366,6 +360,13 @@ public class NotificationManagerImpl implements NotificationManager {
}
break;
+ case UserVirtualSchema:
+ UVirAttr virAttr = user.getVirAttr(recipientAttrName);
+ if (virAttr != null) {
+ email = CollectionUtils2.getFirstOrNull(virAttr.getValues());
+ }
+ break;
+
default:
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/bac03b25/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DBPasswordPropagationActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DBPasswordPropagationActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DBPasswordPropagationActions.java
index fd4b3dc..1e75acb 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DBPasswordPropagationActions.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DBPasswordPropagationActions.java
@@ -19,8 +19,9 @@
package org.apache.syncope.core.provisioning.java.propagation;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.Set;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.Predicate;
import org.apache.syncope.common.lib.types.AttributableType;
import org.apache.syncope.common.lib.types.CipherAlgorithm;
import org.apache.syncope.common.lib.types.ConnConfProperty;
@@ -85,22 +86,23 @@ public class DBPasswordPropagationActions extends DefaultPropagationActions {
}
}
- private String getCipherAlgorithm(ConnInstance connInstance) {
- String cipherAlgorithm = CLEARTEXT;
- for (Iterator<ConnConfProperty> propertyIterator = connInstance.getConfiguration().iterator();
- propertyIterator.hasNext();) {
+ private String getCipherAlgorithm(final ConnInstance connInstance) {
+ ConnConfProperty cipherAlgorithm =
+ CollectionUtils.find(connInstance.getConfiguration(), new Predicate<ConnConfProperty>() {
- ConnConfProperty property = propertyIterator.next();
- if ("cipherAlgorithm".equals(property.getSchema().getName())
- && property.getValues() != null && !property.getValues().isEmpty()) {
+ @Override
+ public boolean evaluate(final ConnConfProperty property) {
+ return "cipherAlgorithm".equals(property.getSchema().getName())
+ && property.getValues() != null && !property.getValues().isEmpty();
+ }
+ });
- return (String) property.getValues().get(0);
- }
- }
- return cipherAlgorithm;
+ return cipherAlgorithm == null
+ ? CLEARTEXT
+ : (String) cipherAlgorithm.getValues().get(0);
}
- private boolean cipherAlgorithmMatches(String connectorAlgorithm, CipherAlgorithm userAlgorithm) {
+ private boolean cipherAlgorithmMatches(final String connectorAlgorithm, final CipherAlgorithm userAlgorithm) {
if (userAlgorithm == null) {
return false;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/bac03b25/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java
index 0bd204f..f62aca0 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java
@@ -92,9 +92,9 @@ public class LDAPMembershipPropagationActions extends DefaultPropagationActions
}
LOG.debug("Group accountLinks to propagate for membership: {}", groupAccountLinks);
- Set<Attribute> attributes = new HashSet<Attribute>(task.getAttributes());
+ Set<Attribute> attributes = new HashSet<>(task.getAttributes());
- Set<String> groups = new HashSet<String>(groupAccountLinks);
+ Set<String> groups = new HashSet<>(groupAccountLinks);
Attribute ldapGroups = AttributeUtil.find(getGroupMembershipAttrName(), attributes);
if (ldapGroups != null) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/bac03b25/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java
index fc1b00c..37ce2fa 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java
@@ -19,8 +19,9 @@
package org.apache.syncope.core.provisioning.java.propagation;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.Set;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.Predicate;
import org.apache.syncope.common.lib.types.AttributableType;
import org.apache.syncope.common.lib.types.CipherAlgorithm;
import org.apache.syncope.common.lib.types.ConnConfProperty;
@@ -91,18 +92,20 @@ public class LDAPPasswordPropagationActions extends DefaultPropagationActions {
}
}
- private String getCipherAlgorithm(ConnInstance connInstance) {
- String cipherAlgorithm = CLEARTEXT;
- for (Iterator<ConnConfProperty> propertyIterator = connInstance.getConfiguration().iterator();
- propertyIterator.hasNext();) {
+ private String getCipherAlgorithm(final ConnInstance connInstance) {
+ ConnConfProperty cipherAlgorithm =
+ CollectionUtils.find(connInstance.getConfiguration(), new Predicate<ConnConfProperty>() {
- ConnConfProperty property = propertyIterator.next();
- if ("passwordHashAlgorithm".equals(property.getSchema().getName())
- && property.getValues() != null && !property.getValues().isEmpty()) {
- return (String) property.getValues().get(0);
- }
- }
- return cipherAlgorithm;
+ @Override
+ public boolean evaluate(final ConnConfProperty property) {
+ return "passwordHashAlgorithm".equals(property.getSchema().getName())
+ && property.getValues() != null && !property.getValues().isEmpty();
+ }
+ });
+
+ return cipherAlgorithm == null
+ ? CLEARTEXT
+ : (String) cipherAlgorithm.getValues().get(0);
}
private boolean cipherAlgorithmMatches(String connectorAlgorithm, CipherAlgorithm userAlgorithm) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/bac03b25/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java
index 3108368..122261f 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java
@@ -26,6 +26,8 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.Predicate;
import org.apache.syncope.common.lib.mod.AttrMod;
import org.apache.syncope.common.lib.mod.MembershipMod;
import org.apache.syncope.common.lib.mod.UserMod;
@@ -173,10 +175,15 @@ public class PropagationManagerImpl implements PropagationManager {
virAttrHandler.fillVirtual(user, vAttrs, attrUtilFactory.getInstance(AttributableType.USER));
}
- for (Membership membership : user.getMemberships()) {
- MembershipTO membershipTO;
+ for (final Membership membership : user.getMemberships()) {
if (membership.getVirAttrs() != null && !membership.getVirAttrs().isEmpty()) {
- membershipTO = findMembershipTO(membership, membershipTOs);
+ MembershipTO membershipTO = CollectionUtils.find(membershipTOs, new Predicate<MembershipTO>() {
+
+ @Override
+ public boolean evaluate(final MembershipTO membershipTO) {
+ return membershipTO.getGroupId() == membership.getGroup().getKey();
+ }
+ });
if (membershipTO != null) {
virAttrHandler.fillVirtual(membership,
membershipTO.getVirAttrs(), attrUtilFactory.getInstance(AttributableType.MEMBERSHIP));
@@ -276,7 +283,7 @@ public class PropagationManagerImpl implements PropagationManager {
*/
@Override
public List<PropagationTask> getUserUpdateTaskIds(final User user, final Boolean enable,
- final Set<String> noPropResourceNames) throws NotFoundException {
+ final Collection<String> noPropResourceNames) throws NotFoundException {
return getUpdateTaskIds(
user, // user to be updated on external resources
@@ -385,6 +392,7 @@ public class PropagationManagerImpl implements PropagationManager {
* @throws NotFoundException if group is not found
* @throws UnauthorizedGroupException if caller doesn't own enough entitlements to administer the given group
*/
+ @Override
public List<PropagationTask> getGroupUpdateTaskIds(final WorkflowResult<Long> wfResult,
final Set<String> vAttrsToBeRemoved, final Set<AttrMod> vAttrsToBeUpdated,
final Set<String> noPropResourceNames)
@@ -413,9 +421,16 @@ public class PropagationManagerImpl implements PropagationManager {
// SYNCOPE-458 fill membership virtual attributes
if (subject instanceof User) {
final User user = (User) subject;
- for (Membership membership : user.getMemberships()) {
+ for (final Membership membership : user.getMemberships()) {
if (membership.getVirAttrs() != null && !membership.getVirAttrs().isEmpty()) {
- final MembershipMod membershipMod = findMembershipMod(membership, membershipsToAdd);
+ final MembershipMod membershipMod = CollectionUtils.find(membershipsToAdd,
+ new Predicate<MembershipMod>() {
+
+ @Override
+ public boolean evaluate(final MembershipMod membershipMod) {
+ return membershipMod.getGroup() == membership.getGroup().getKey();
+ }
+ });
if (membershipMod != null) {
virAttrHandler.fillVirtual(membership, membershipMod.getVirAttrsToRemove() == null
? Collections.<String>emptySet()
@@ -750,24 +765,4 @@ public class PropagationManagerImpl implements PropagationManager {
return tasks;
}
-
- protected MembershipTO findMembershipTO(final Membership membership, final Collection<MembershipTO> memberships) {
- for (MembershipTO membershipTO : memberships) {
- if (membershipTO.getGroupId() == membership.getGroup().getKey()) {
- return membershipTO;
- }
- }
- LOG.error("No MembershipTO found for membership {}", membership);
- return null;
- }
-
- protected MembershipMod findMembershipMod(final Membership membership, final Set<MembershipMod> membershipMods) {
- for (MembershipMod membershipMod : membershipMods) {
- if (membershipMod.getGroup() == membership.getGroup().getKey()) {
- return membershipMod;
- }
- }
- LOG.error("No MembershipMod found for membership {}", membership);
- return null;
- }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/bac03b25/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/AbstractProvisioningJob.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/AbstractProvisioningJob.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/AbstractProvisioningJob.java
index 197d4d5..0920146 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/AbstractProvisioningJob.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/AbstractProvisioningJob.java
@@ -22,6 +22,8 @@ import java.lang.reflect.ParameterizedType;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.Transformer;
import org.apache.syncope.common.lib.types.TraceLevel;
import org.apache.syncope.core.persistence.api.dao.EntitlementDAO;
import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
@@ -315,11 +317,14 @@ public abstract class AbstractProvisioningJob<T extends ProvisioningTask, A exte
@Override
protected String doExecute(final boolean dryRun) throws JobExecutionException {
// PRE: grant all authorities (i.e. setup the SecurityContextHolder)
- final List<GrantedAuthority> authorities = new ArrayList<>();
+ List<GrantedAuthority> authorities = new ArrayList<>();
+ CollectionUtils.collect(entitlementDAO.findAll(), new Transformer<Entitlement, GrantedAuthority>() {
- for (Entitlement entitlement : entitlementDAO.findAll()) {
- authorities.add(new SimpleGrantedAuthority(entitlement.getKey()));
- }
+ @Override
+ public GrantedAuthority transform(final Entitlement entitlement) {
+ return new SimpleGrantedAuthority(entitlement.getKey());
+ }
+ }, authorities);
final UserDetails userDetails = new User("admin", "FAKE_PASSWORD", true, true, true, true, authorities);
http://git-wip-us.apache.org/repos/asf/syncope/blob/bac03b25/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/AbstractSyncResultHandler.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/AbstractSyncResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/AbstractSyncResultHandler.java
index 5b9b3a7..3067ca5 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/AbstractSyncResultHandler.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/AbstractSyncResultHandler.java
@@ -513,7 +513,7 @@ public abstract class AbstractSyncResultHandler extends AbstractSyncopeResultHan
LOG.debug("Subject to ignore {}", delta.getObject().getUid().getUidValue());
- final List<ProvisioningResult> ignoreResults = new ArrayList<ProvisioningResult>();
+ final List<ProvisioningResult> ignoreResults = new ArrayList<>();
final ProvisioningResult result = new ProvisioningResult();
result.setId(null);
http://git-wip-us.apache.org/repos/asf/syncope/blob/bac03b25/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/AbstractSyncopeResultHandler.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/AbstractSyncopeResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/AbstractSyncopeResultHandler.java
index cb1890b..ec33571 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/AbstractSyncopeResultHandler.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/AbstractSyncopeResultHandler.java
@@ -116,10 +116,12 @@ public abstract class AbstractSyncopeResultHandler<T extends ProvisioningTask, A
*/
protected ProvisioningProfile<T, A> profile;
+ @Override
public void setProfile(final ProvisioningProfile<T, A> profile) {
this.profile = profile;
}
+ @Override
public ProvisioningProfile<T, A> getProfile() {
return profile;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/bac03b25/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/DBPasswordSyncActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/DBPasswordSyncActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/DBPasswordSyncActions.java
index 75f2078..2b3ca02 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/DBPasswordSyncActions.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/DBPasswordSyncActions.java
@@ -18,7 +18,8 @@
*/
package org.apache.syncope.core.provisioning.java.sync;
-import java.util.Iterator;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.Predicate;
import org.apache.syncope.common.lib.mod.AbstractSubjectMod;
import org.apache.syncope.common.lib.mod.UserMod;
import org.apache.syncope.common.lib.to.AbstractSubjectTO;
@@ -105,18 +106,19 @@ public class DBPasswordSyncActions extends DefaultSyncActions {
}
private String getCipherAlgorithm(final ConnInstance connInstance) {
- String cipherAlgorithm = CLEARTEXT;
- for (Iterator<ConnConfProperty> propertyIterator = connInstance.getConfiguration().iterator();
- propertyIterator.hasNext();) {
-
- ConnConfProperty property = propertyIterator.next();
- if ("cipherAlgorithm".equals(property.getSchema().getName())
- && property.getValues() != null && !property.getValues().isEmpty()) {
-
- return (String) property.getValues().get(0);
- }
- }
- return cipherAlgorithm;
+ ConnConfProperty cipherAlgorithm =
+ CollectionUtils.find(connInstance.getConfiguration(), new Predicate<ConnConfProperty>() {
+
+ @Override
+ public boolean evaluate(final ConnConfProperty property) {
+ return "cipherAlgorithm".equals(property.getSchema().getName())
+ && property.getValues() != null && !property.getValues().isEmpty();
+ }
+ });
+
+ return cipherAlgorithm == null
+ ? CLEARTEXT
+ : (String) cipherAlgorithm.getValues().get(0);
}
@Transactional(readOnly = true)
http://git-wip-us.apache.org/repos/asf/syncope/blob/bac03b25/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/LDAPMembershipSyncActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/LDAPMembershipSyncActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/LDAPMembershipSyncActions.java
index 736cb3f..526b494 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/LDAPMembershipSyncActions.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/LDAPMembershipSyncActions.java
@@ -20,9 +20,10 @@ package org.apache.syncope.core.provisioning.java.sync;
import java.util.Collections;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.Predicate;
import org.apache.syncope.common.lib.mod.AbstractSubjectMod;
import org.apache.syncope.common.lib.mod.MembershipMod;
import org.apache.syncope.common.lib.mod.UserMod;
@@ -32,7 +33,6 @@ import org.apache.syncope.common.lib.types.AuditElements;
import org.apache.syncope.common.lib.types.AuditElements.Result;
import org.apache.syncope.common.lib.types.ConnConfProperty;
import org.apache.syncope.core.persistence.api.dao.GroupDAO;
-import org.apache.syncope.core.persistence.api.entity.ConnInstance;
import org.apache.syncope.core.persistence.api.entity.ExternalResource;
import org.apache.syncope.core.persistence.api.entity.membership.Membership;
import org.apache.syncope.core.persistence.api.entity.group.Group;
@@ -98,20 +98,19 @@ public class LDAPMembershipSyncActions extends DefaultSyncActions {
* @return the name of the attribute used to keep track of group memberships
*/
protected String getGroupMembershipAttrName(final Connector connector) {
- ConnInstance connInstance = connector.getActiveConnInstance();
- Iterator<ConnConfProperty> propertyIterator = connInstance.getConfiguration().iterator();
- String groupMembershipName = "uniquemember";
- while (propertyIterator.hasNext()) {
- ConnConfProperty property = propertyIterator.next();
- if ("groupMemberAttribute".equals(property.getSchema().getName())
- && property.getValues() != null && !property.getValues().isEmpty()) {
-
- groupMembershipName = (String) property.getValues().get(0);
- break;
- }
- }
-
- return groupMembershipName;
+ ConnConfProperty groupMembership = CollectionUtils.find(connector.getActiveConnInstance().getConfiguration(),
+ new Predicate<ConnConfProperty>() {
+
+ @Override
+ public boolean evaluate(final ConnConfProperty property) {
+ return "groupMemberAttribute".equals(property.getSchema().getName())
+ && property.getValues() != null && !property.getValues().isEmpty();
+ }
+ });
+
+ return groupMembership == null
+ ? "uniquemember"
+ : (String) groupMembership.getValues().get(0);
}
/**
http://git-wip-us.apache.org/repos/asf/syncope/blob/bac03b25/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/LDAPPasswordSyncActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/LDAPPasswordSyncActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/LDAPPasswordSyncActions.java
index 16cd796..fe1a8aa 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/LDAPPasswordSyncActions.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/LDAPPasswordSyncActions.java
@@ -82,7 +82,7 @@ public class LDAPPasswordSyncActions extends DefaultSyncActions {
return delta;
}
- private void parseEncodedPassword(String password) {
+ private void parseEncodedPassword(final String password) {
if (password != null && password.startsWith("{")) {
int closingBracketIndex = password.indexOf('}');
String digest = password.substring(1, password.indexOf('}'));