This is an automated email from the ASF dual-hosted git repository. ilgrosso pushed a commit to branch 3_0_X in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/3_0_X by this push: new acb6d00be7 Upgrading modernizer-mave-plugin acb6d00be7 is described below commit acb6d00be7159093ff3af84e0b8e6d413cf6f3e3 Author: Francesco Chicchiriccò <ilgro...@apache.org> AuthorDate: Fri Mar 24 08:06:35 2023 +0100 Upgrading modernizer-mave-plugin --- .../core/rest/cxf/service/AbstractAnyService.java | 7 +- .../rest/cxf/service/AnyObjectServiceTest.java | 4 +- .../persistence/jpa/dao/AbstractJPAJSONAnyDAO.java | 16 ++--- .../jpa/content/XMLContentExporter.java | 16 ++--- .../core/persistence/jpa/dao/JPAAnyMatchDAO.java | 2 +- .../core/persistence/jpa/dao/JPAAnyObjectDAO.java | 8 ++- .../core/persistence/jpa/dao/JPAAnySearchDAO.java | 74 +++++++++++----------- .../core/persistence/jpa/dao/JPARealmDAO.java | 12 ++-- .../core/persistence/jpa/dao/JPAUserDAO.java | 6 +- .../notification/DefaultNotificationManager.java | 9 ++- .../propagation/DBPasswordPropagationActions.java | 4 +- .../LDAPMembershipPropagationActions.java | 19 +++--- .../core/spring/policy/DefaultAccountRule.java | 15 +++-- .../core/spring/policy/DefaultPasswordRule.java | 21 +++--- .../syncope/fit/buildtools/cxf/UserService.java | 6 +- pom.xml | 13 ++-- sra/pom.xml | 5 -- 17 files changed, 111 insertions(+), 126 deletions(-) diff --git a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java index 67a3aa93a3..6ff423e38e 100644 --- a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java +++ b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java @@ -111,11 +111,8 @@ public abstract class AbstractAnyService<TO extends AnyTO, CR extends AnyCR, UR result = any.getPlainAttr(schema); } - if (result.isEmpty()) { - throw new NotFoundException("Attribute for type " + schemaType + " and schema " + schema); - } - - return result.get(); + return result. + orElseThrow(() -> new NotFoundException("Attribute for type " + schemaType + " and schema " + schema)); } @Override diff --git a/core/idrepo/rest-cxf/src/test/java/org/apache/syncope/core/rest/cxf/service/AnyObjectServiceTest.java b/core/idrepo/rest-cxf/src/test/java/org/apache/syncope/core/rest/cxf/service/AnyObjectServiceTest.java index 4afe059c48..2263c3c83f 100644 --- a/core/idrepo/rest-cxf/src/test/java/org/apache/syncope/core/rest/cxf/service/AnyObjectServiceTest.java +++ b/core/idrepo/rest-cxf/src/test/java/org/apache/syncope/core/rest/cxf/service/AnyObjectServiceTest.java @@ -228,7 +228,9 @@ public class AnyObjectServiceTest { assertEquals("printer1", list.getResult().get(0).getName()); assertEquals("PRINTER", list.getResult().get(0).getType()); - assertEquals("there", list.getResult().get(1).getPlainAttr("location").get().getValues().get(0)); + Attr location = list.getResult().get(1).getPlainAttr("location").orElse(null); + assertNotNull(location); + assertEquals("there", location.getValues().get(0)); } @Test diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/AbstractJPAJSONAnyDAO.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/AbstractJPAJSONAnyDAO.java index 1101148d7c..fef2e418e5 100644 --- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/AbstractJPAJSONAnyDAO.java +++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/AbstractJPAJSONAnyDAO.java @@ -341,14 +341,14 @@ abstract class AbstractJPAJSONAnyDAO extends AbstractDAO<AbstractEntity> impleme for (PlainAttr<?> attr : any.getPlainAttrs()) { if (attr.getUniqueValue() != null && attr instanceof JSONPlainAttr) { PlainSchema schema = attr.getSchema(); - Optional<A> other = findByPlainAttrUniqueValue(table, anyUtils, schema, attr.getUniqueValue(), false); - if (other.isEmpty() || other.get().getKey().equals(any.getKey())) { - LOG.debug("No duplicate value found for {}", attr.getUniqueValue().getValueAsString()); - } else { - throw new DuplicateException( - "Value " + attr.getUniqueValue().getValueAsString() - + " existing for " + schema.getKey()); - } + findByPlainAttrUniqueValue(table, anyUtils, schema, attr.getUniqueValue(), false). + map(other -> !other.getKey().equals(any.getKey())).ifPresentOrElse( + other -> { + throw new DuplicateException( + "Value " + attr.getUniqueValue().getValueAsString() + + " existing for " + schema.getKey()); + }, + () -> LOG.debug("No duplicate value found for {}", attr.getUniqueValue().getValueAsString())); } } diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java index 79ea9fad17..d76e42ca25 100644 --- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java +++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java @@ -350,10 +350,10 @@ public class XMLContentExporter implements ContentExporter { findFirst(). map(Map.Entry::getValue); - String outputTableName = entity.isPresent() - ? entities.getKey(entity.get()) - : relationTables.keySet().stream().filter(tableName::equalsIgnoreCase).findFirst(). - orElse(tableName); + String outputTableName = entity.map(entities::getKey). + orElseGet(() -> relationTables.keySet().stream(). + filter(tableName::equalsIgnoreCase).findFirst(). + orElse(tableName)); if (isTask(tableName)) { outputTableName = "Task"; } @@ -373,11 +373,9 @@ public class XMLContentExporter implements ContentExporter { if (value != null && (!COLUMNS_TO_BE_NULLIFIED.containsKey(tableName) || !COLUMNS_TO_BE_NULLIFIED.get(tableName).contains(columnName))) { - String name = columnName; - if (entity.isPresent()) { - name = columnName( - () -> (Stream<Attribute<?, ?>>) entity.get().getAttributes().stream(), columnName); - } + String name = entity.map(e -> columnName( + () -> (Stream<Attribute<?, ?>>) e.getAttributes().stream(), columnName)). + orElse(columnName); if (isTask(tableName)) { name = columnName( diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyMatchDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyMatchDAO.java index 4e06850bb8..5f1d25e712 100644 --- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyMatchDAO.java +++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyMatchDAO.java @@ -370,7 +370,7 @@ public class JPAAnyMatchDAO extends AbstractDAO<Any<?>> implements AnyMatchDAO { return false; } - found = attr.isPresent() && matches(attr.get().getValues(), attrValue, schema, cond); + found = attr.map(a -> matches(a.getValues(), attrValue, schema, cond)).orElse(false); } return not ? !found : found; } diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java index 81e6870ad2..7d276a50aa 100644 --- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java +++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java @@ -26,7 +26,7 @@ import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.Optional; +import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; import javax.persistence.NoResultException; @@ -137,8 +137,10 @@ public class JPAAnyObjectDAO extends AbstractAnyDAO<AnyObject> implements AnyObj final Collection<String> groups) { // 1. check if AuthContextUtils.getUsername() is owner of at least one group of which anyObject is member - boolean authorized = authRealms.stream().map(RealmUtils::parseGroupOwnerRealm).filter(Optional::isPresent). - anyMatch(pair -> groups.contains(pair.get().getRight())); + boolean authorized = authRealms.stream(). + map(authRealm -> RealmUtils.parseGroupOwnerRealm(authRealm).orElse(null)). + filter(Objects::nonNull). + anyMatch(pair -> groups.contains(pair.getRight())); // 2. check if anyObject is in at least one DynRealm for which AuthContextUtils.getUsername() owns entitlement if (!authorized) { diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnySearchDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnySearchDAO.java index e3f6b50286..86cf836eb2 100644 --- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnySearchDAO.java +++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnySearchDAO.java @@ -21,7 +21,6 @@ package org.apache.syncope.core.persistence.jpa.dao; import java.util.ArrayList; import java.util.HashSet; import java.util.List; -import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; import javax.persistence.Query; @@ -127,29 +126,29 @@ public class JPAAnySearchDAO extends AbstractAnySearchDAO { Set<String> groupOwners = new HashSet<>(); if (recursive) { - adminRealms.forEach(realmPath -> { - Optional<Pair<String, String>> goRealm = RealmUtils.parseGroupOwnerRealm(realmPath); - if (goRealm.isPresent()) { - groupOwners.add(goRealm.get().getRight()); - } else if (realmPath.startsWith("/")) { - Realm realm = realmDAO.findByFullPath(realmPath); - if (realm == null) { - SyncopeClientException noRealm = SyncopeClientException.build(ClientExceptionType.InvalidRealm); - noRealm.getElements().add("Invalid realm specified: " + realmPath); - throw noRealm; - } else { - realmKeys.addAll(realmDAO.findDescendants(realm).stream(). - map(Realm::getKey).collect(Collectors.toSet())); - } - } else { - DynRealm dynRealm = dynRealmDAO.find(realmPath); - if (dynRealm == null) { - LOG.warn("Ignoring invalid dynamic realm {}", realmPath); - } else { - dynRealmKeys.add(dynRealm.getKey()); - } - } - }); + adminRealms.forEach(realmPath -> RealmUtils.parseGroupOwnerRealm(realmPath).ifPresentOrElse( + goRealm -> groupOwners.add(goRealm.getRight()), + () -> { + if (realmPath.startsWith("/")) { + Realm realm = realmDAO.findByFullPath(realmPath); + if (realm == null) { + SyncopeClientException noRealm = SyncopeClientException.build( + ClientExceptionType.InvalidRealm); + noRealm.getElements().add("Invalid realm specified: " + realmPath); + throw noRealm; + } else { + realmKeys.addAll(realmDAO.findDescendants(realm).stream(). + map(Realm::getKey).collect(Collectors.toSet())); + } + } else { + DynRealm dynRealm = dynRealmDAO.find(realmPath); + if (dynRealm == null) { + LOG.warn("Ignoring invalid dynamic realm {}", realmPath); + } else { + dynRealmKeys.add(dynRealm.getKey()); + } + } + })); if (!dynRealmKeys.isEmpty()) { realmKeys.clear(); } @@ -591,19 +590,20 @@ public class JPAAnySearchDAO extends AbstractAnySearchDAO { cond.getLeaf(ResourceCond.class). ifPresent(leaf -> query.append(getQuery(leaf, not, parameters, svs))); - Optional<AnyCond> anyCond = cond.getLeaf(AnyCond.class); - if (anyCond.isPresent()) { - query.append(getQuery(anyCond.get(), not, parameters, svs)); - } else { - cond.getLeaf(AttrCond.class).ifPresent(leaf -> { - query.append(getQuery(leaf, not, parameters, svs)); - try { - involvedPlainAttrs.add(check(leaf, svs.anyTypeKind).getLeft().getKey()); - } catch (IllegalArgumentException e) { - // ignore - } - }); - } + cond.getLeaf(AnyCond.class).ifPresentOrElse( + anyCond -> { + query.append(getQuery(anyCond, not, parameters, svs)); + }, + () -> { + cond.getLeaf(AttrCond.class).ifPresent(leaf -> { + query.append(getQuery(leaf, not, parameters, svs)); + try { + involvedPlainAttrs.add(check(leaf, svs.anyTypeKind).getLeft().getKey()); + } catch (IllegalArgumentException e) { + // ignore + } + }); + }); // allow for additional search conditions getQueryForCustomConds(cond, parameters, svs, not, query); diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARealmDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARealmDAO.java index da0ca624bb..fbd269a412 100644 --- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARealmDAO.java +++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARealmDAO.java @@ -20,7 +20,6 @@ package org.apache.syncope.core.persistence.jpa.dao; import java.util.ArrayList; import java.util.List; -import java.util.Optional; import javax.persistence.NoResultException; import javax.persistence.TypedQuery; import org.apache.commons.lang3.StringUtils; @@ -89,12 +88,11 @@ public class JPARealmDAO extends AbstractDAO<Realm> implements RealmDAO { } Realm current = root; - for (final String pathElement : fullPath.substring(1).split("/")) { - Optional<Realm> first = findChildren(current).stream(). - filter(realm -> pathElement.equals(realm.getName())).findFirst(); - if (first.isPresent()) { - current = first.get(); - } else { + for (String pathElement : fullPath.substring(1).split("/")) { + current = findChildren(current).stream(). + filter(realm -> pathElement.equals(realm.getName())).findFirst(). + orElse(null); + if (current == null) { return null; } } diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java index 5883df9eb0..c36b5d6b13 100644 --- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java +++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java @@ -196,8 +196,10 @@ public class JPAUserDAO extends AbstractAnyDAO<User> implements UserDAO { final Collection<String> groups) { // 1. check if AuthContextUtils.getUsername() is owner of at least one group of which user is member - boolean authorized = authRealms.stream().map(RealmUtils::parseGroupOwnerRealm).filter(Optional::isPresent). - anyMatch(pair -> groups.contains(pair.get().getRight())); + boolean authorized = authRealms.stream(). + map(authRealm -> RealmUtils.parseGroupOwnerRealm(authRealm).orElse(null)). + filter(Objects::nonNull). + anyMatch(pair -> groups.contains(pair.getRight())); // 2. check if user is in at least one DynRealm for which AuthContextUtils.getUsername() owns entitlement if (!authorized) { diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/DefaultNotificationManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/DefaultNotificationManager.java index 610f6f2f09..9497512eb9 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/DefaultNotificationManager.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/DefaultNotificationManager.java @@ -415,11 +415,10 @@ public class DefaultNotificationManager implements NotificationManager { Optional<? extends UPlainAttr> attr = membership == null ? user.getPlainAttr(recipientAttrName) : user.getPlainAttr(recipientAttrName, membership); - if (attr.isPresent()) { - email = attr.get().getValuesAsStrings().isEmpty() - ? null - : attr.get().getValuesAsStrings().get(0); - } + email = attr.map(a -> a.getValuesAsStrings().isEmpty() + ? null + : a.getValuesAsStrings().get(0)). + orElse(null); break; case DERIVED: 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 e36a73ee45..6deb8cc09f 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 @@ -58,9 +58,7 @@ public class DBPasswordPropagationActions implements PropagationActions { filter(property -> "cipherAlgorithm".equals(property.getSchema().getName()) && property.getValues() != null && !property.getValues().isEmpty()).findFirst(); - return cipherAlgorithm.isPresent() - ? (String) cipherAlgorithm.get().getValues().get(0) - : CLEARTEXT; + return cipherAlgorithm.map(a -> (String) a.getValues().get(0)).orElse(CLEARTEXT); } protected boolean cipherAlgorithmMatches(final String connectorAlgorithm, final CipherAlgorithm userAlgorithm) { 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 2a0cd1297e..d3efe11ce6 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 @@ -110,9 +110,9 @@ public class LDAPMembershipPropagationActions implements PropagationActions { return; } - Optional<Provision> groupProvision = taskInfo.getResource().getProvisionByAnyType(AnyTypeKind.GROUP.name()); - if (groupProvision.isPresent() && groupProvision.get().getMapping() != null - && StringUtils.isNotBlank(groupProvision.get().getMapping().getConnObjectLink())) { + taskInfo.getResource().getProvisionByAnyType(AnyTypeKind.GROUP.name()). + map(Provision::getMapping). + filter(mapping -> StringUtils.isNotBlank(mapping.getConnObjectLink())).ifPresentOrElse(mapping -> { User user = userDAO.find(taskInfo.getEntityKey()); Set<String> groups = new HashSet<>(); @@ -124,7 +124,7 @@ public class LDAPMembershipPropagationActions implements PropagationActions { filter(group -> group.getResources().contains(taskInfo.getResource())). forEach(group -> { String groupConnObjectLink = evaluateGroupConnObjectLink( - groupProvision.get().getMapping().getConnObjectLink(), group); + mapping.getConnObjectLink(), group); LOG.debug("ConnObjectLink for {} is '{}'", group, groupConnObjectLink); if (StringUtils.isNotBlank(groupConnObjectLink)) { @@ -153,7 +153,7 @@ public class LDAPMembershipPropagationActions implements PropagationActions { Set<String> connObjectLinks = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); buildManagedGroupConnObjectLinks( taskInfo.getResource(), - groupProvision.get().getMapping().getConnObjectLink(), + mapping.getConnObjectLink(), connObjectLinks); LOG.debug("Memberships not managed by Syncope: {}", beforeLdapGroups); @@ -172,7 +172,7 @@ public class LDAPMembershipPropagationActions implements PropagationActions { // if groups were added or removed by last update, compute and add the group's connector object link for (MembershipUR memb : ((UserUR) taskInfo.getUpdateRequest()).getMemberships()) { String connObjectLink = evaluateGroupConnObjectLink( - groupProvision.get().getMapping().getConnObjectLink(), + mapping.getConnObjectLink(), groupDAO.find(memb.getGroup())); if (memb.getOperation() == PatchOperation.ADD_REPLACE) { groupsToAdd.add(connObjectLink); @@ -197,11 +197,10 @@ public class LDAPMembershipPropagationActions implements PropagationActions { LOG.debug("Adding Group connObjectLinks to attribute deltas: {}={},{}", getGroupMembershipAttrName(), groupsToAdd, groupsToRemove); data.getAttributeDeltas().add( - AttributeDeltaBuilder.build(getGroupMembershipAttrName(), groupsToAdd, groupsToRemove)); + AttributeDeltaBuilder.build(getGroupMembershipAttrName(), groupsToAdd, + groupsToRemove)); } } - } else { - LOG.debug("Not about user, or group mapping missing for resource: not doing anything"); - } + }, () -> LOG.debug("Not about user, or group mapping missing for resource: not doing anything")); } } diff --git a/core/spring/src/main/java/org/apache/syncope/core/spring/policy/DefaultAccountRule.java b/core/spring/src/main/java/org/apache/syncope/core/spring/policy/DefaultAccountRule.java index 774deb0005..dc0bf2c995 100644 --- a/core/spring/src/main/java/org/apache/syncope/core/spring/policy/DefaultAccountRule.java +++ b/core/spring/src/main/java/org/apache/syncope/core/spring/policy/DefaultAccountRule.java @@ -20,7 +20,7 @@ package org.apache.syncope.core.spring.policy; import java.util.Collection; import java.util.HashSet; -import java.util.Optional; +import java.util.Objects; import java.util.Set; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -28,6 +28,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.syncope.common.lib.policy.AccountRuleConf; import org.apache.syncope.common.lib.policy.DefaultAccountRuleConf; import org.apache.syncope.core.persistence.api.entity.Entity; +import org.apache.syncope.core.persistence.api.entity.PlainAttr; import org.apache.syncope.core.persistence.api.entity.user.LinkedAccount; import org.apache.syncope.core.persistence.api.entity.user.User; import org.apache.syncope.core.provisioning.api.rules.AccountRule; @@ -103,9 +104,9 @@ public class DefaultAccountRule implements AccountRule { Set<String> wordsNotPermitted = new HashSet<>(conf.getWordsNotPermitted()); wordsNotPermitted.addAll( conf.getSchemasNotPermitted().stream(). - map(user::getPlainAttr). - filter(Optional::isPresent). - map(attr -> attr.get().getValuesAsStrings()). + map(schema -> user.getPlainAttr(schema). + map(PlainAttr::getValuesAsStrings).orElse(null)). + filter(Objects::nonNull). filter(values -> !CollectionUtils.isEmpty(values)). flatMap(Collection::stream). collect(Collectors.toSet())); @@ -123,9 +124,9 @@ public class DefaultAccountRule implements AccountRule { Set<String> wordsNotPermitted = new HashSet<>(conf.getWordsNotPermitted()); wordsNotPermitted.addAll( conf.getSchemasNotPermitted().stream(). - map(account::getPlainAttr). - filter(Optional::isPresent). - map(attr -> attr.get().getValuesAsStrings()). + map(schema -> account.getPlainAttr(schema). + map(PlainAttr::getValuesAsStrings).orElse(null)). + filter(Objects::nonNull). filter(values -> !CollectionUtils.isEmpty(values)). flatMap(Collection::stream). collect(Collectors.toSet())); diff --git a/core/spring/src/main/java/org/apache/syncope/core/spring/policy/DefaultPasswordRule.java b/core/spring/src/main/java/org/apache/syncope/core/spring/policy/DefaultPasswordRule.java index fdb72ea239..4182b35cc7 100644 --- a/core/spring/src/main/java/org/apache/syncope/core/spring/policy/DefaultPasswordRule.java +++ b/core/spring/src/main/java/org/apache/syncope/core/spring/policy/DefaultPasswordRule.java @@ -23,7 +23,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; -import java.util.Optional; +import java.util.Objects; import java.util.Properties; import java.util.Set; import java.util.stream.Collectors; @@ -31,6 +31,7 @@ import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; import org.apache.syncope.common.lib.policy.DefaultPasswordRuleConf; import org.apache.syncope.common.lib.policy.PasswordRuleConf; +import org.apache.syncope.core.persistence.api.entity.PlainAttr; import org.apache.syncope.core.persistence.api.entity.user.LinkedAccount; import org.apache.syncope.core.persistence.api.entity.user.User; import org.apache.syncope.core.provisioning.api.rules.PasswordRule; @@ -169,9 +170,9 @@ public class DefaultPasswordRule implements PasswordRule { Set<String> wordsNotPermitted = new HashSet<>(conf.getWordsNotPermitted()); wordsNotPermitted.addAll( conf.getSchemasNotPermitted().stream(). - map(user::getPlainAttr). - filter(Optional::isPresent). - map(attr -> attr.get().getValuesAsStrings()). + map(schema -> user.getPlainAttr(schema). + map(PlainAttr::getValuesAsStrings).orElse(null)). + filter(Objects::nonNull). filter(values -> !CollectionUtils.isEmpty(values)). flatMap(Collection::stream). collect(Collectors.toSet())); @@ -185,9 +186,9 @@ public class DefaultPasswordRule implements PasswordRule { public void enforce(final LinkedAccount account) { conf.getWordsNotPermitted().addAll( conf.getSchemasNotPermitted().stream(). - map(account::getPlainAttr). - filter(Optional::isPresent). - map(attr -> attr.get().getValuesAsStrings()). + map(schema -> account.getPlainAttr(schema). + map(PlainAttr::getValuesAsStrings).orElse(null)). + filter(Objects::nonNull). filter(values -> !CollectionUtils.isEmpty(values)). flatMap(Collection::stream). collect(Collectors.toList())); @@ -206,9 +207,9 @@ public class DefaultPasswordRule implements PasswordRule { Set<String> wordsNotPermitted = new HashSet<>(conf.getWordsNotPermitted()); wordsNotPermitted.addAll( conf.getSchemasNotPermitted().stream(). - map(account::getPlainAttr). - filter(Optional::isPresent). - map(attr -> attr.get().getValuesAsStrings()). + map(schema -> account.getPlainAttr(schema). + map(PlainAttr::getValuesAsStrings).orElse(null)). + filter(Objects::nonNull). filter(values -> !CollectionUtils.isEmpty(values)). flatMap(Collection::stream). collect(Collectors.toSet())); diff --git a/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/cxf/UserService.java b/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/cxf/UserService.java index e586d382b5..e9b70304f8 100644 --- a/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/cxf/UserService.java +++ b/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/cxf/UserService.java @@ -162,11 +162,9 @@ public class UserService { if (user.isEmpty()) { throw new NotFoundException(username); } - if (!password.equals(user.get().getPassword())) { - throw new ForbiddenException(); - } - return user.get(); + return user.filter(u -> password.equals(u.getPassword())). + orElseThrow(() -> new ForbiddenException()); } @POST diff --git a/pom.xml b/pom.xml index b1dba6ece4..35f3e7ecf5 100644 --- a/pom.xml +++ b/pom.xml @@ -439,8 +439,6 @@ under the License. <commons-text.version>1.10.0</commons-text.version> <commons-logging.version>1.1.3</commons-logging.version> - <modernizer-maven.version>2.5.0</modernizer-maven.version> - <pac4j.version>5.5.0</pac4j.version> <cas.version>6.6.7-SNAPSHOT</cas.version> @@ -921,12 +919,6 @@ under the License. <version>${commons-text.version}</version> </dependency> - <dependency> - <groupId>org.gaul</groupId> - <artifactId>modernizer-maven-annotations</artifactId> - <version>${modernizer-maven.version}</version> - </dependency> - <dependency> <groupId>org.apache.tika</groupId> <artifactId>tika-core</artifactId> @@ -1812,12 +1804,15 @@ under the License. <plugin> <groupId>org.gaul</groupId> <artifactId>modernizer-maven-plugin</artifactId> - <version>${modernizer-maven.version}</version> + <version>2.6.0</version> <configuration> <javaVersion>${targetJdk}</javaVersion> <ignorePackages> <ignorePackage>org.apache.syncope.core.persistence.jpa.entity</ignorePackage> </ignorePackages> + <exclusions> + <exclusion>java/util/Optional.get:()Ljava/lang/Object;</exclusion> + </exclusions> </configuration> <executions> <execution> diff --git a/sra/pom.xml b/sra/pom.xml index a13bf0caaa..837f5d2fc7 100644 --- a/sra/pom.xml +++ b/sra/pom.xml @@ -115,11 +115,6 @@ under the License. <artifactId>hibernate-validator</artifactId> </dependency> - <dependency> - <groupId>org.gaul</groupId> - <artifactId>modernizer-maven-annotations</artifactId> - </dependency> - <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId>