karlpauls commented on a change in pull request #2:
URL: 
https://github.com/apache/sling-org-apache-sling-serviceusermapper/pull/2#discussion_r566224484



##########
File path: 
src/main/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImpl.java
##########
@@ -455,38 +486,54 @@ private boolean isValidUser(final String userId, final 
String serviceName, final
             log.debug("isValidUser: userId is null -> invalid");
             return false;
         }
-        if ( !userValidators.isEmpty()  || require) {
-            for (final ServiceUserValidator validator : userValidators) {
-                if ( validator.isValid(userId, serviceName, subServiceName) ) {
-                    log.debug("isValidUser: Validator {} accepts userId [{}] 
-> valid", validator, userId);
-                    return true;
+        List<ServiceUserValidator> validators = getUserValidators();
+        if (!validators.isEmpty()) {
+            for (final ServiceUserValidator validator : validators) {
+                if (!validator.isValid(userId, serviceName, subServiceName)) {
+                    log.debug("isValidUser: Validator {} doesn't accept userId 
[{}] -> invalid", validator, userId);
+                    return false;
                 }
             }
-            log.debug("isValidUser: No validator accepted userId [{}] -> 
invalid", userId);
-            return false;
+            log.debug("isValidUser: All validators accepted userId [{}] -> 
valid", userId);
         } else {
             log.debug("isValidUser: No active validators for userId [{}] -> 
valid", userId);
-            return true;
         }
+        return !require || !validators.isEmpty();
     }
 
     private boolean areValidPrincipals(final Iterable<String> principalNames, 
final String serviceName, final String subServiceName, boolean require) {
         if (principalNames == null) {
             log.debug("areValidPrincipals: principalNames are null -> 
invalid");
             return false;
         }
-        if ( !principalsValidators.isEmpty() || require ) {
-            for (final ServicePrincipalsValidator validator : 
principalsValidators) {
-                if ( validator.isValid(principalNames, serviceName, 
subServiceName) ) {
-                    log.debug("areValidPrincipals: Validator {} accepts 
principal names [{}] -> valid", validator, principalNames);
-                    return true;
+        List<ServicePrincipalsValidator> validators = 
getPrincipalsValidators();
+        if (!validators.isEmpty() || require) {
+            for (final ServicePrincipalsValidator validator : validators) {
+                if (!validator.isValid(principalNames, serviceName, 
subServiceName)) {
+                    log.debug("areValidPrincipals: Validator {} doesn't accept 
principal names [{}] -> invalid", validator, principalNames);
+                    return false;
                 }
             }
-            log.debug("areValidPrincipals: No validator accepted principal 
names [{}] -> invalid", principalNames);
-            return false;
+            log.debug("areValidPrincipals: All validators accepted principal 
names [{}] -> valid", principalNames);
         } else {
             log.debug("areValidPrincipals: No active validators for principal 
names [{}] -> valid", principalNames);
-            return true;
+        }
+        return !require || !validators.isEmpty();
+    }
+
+    private List<ServiceUserValidator> getUserValidators() {
+        if (presentValidators.containsAll(requiredValidators)) {
+            return userValidators;
+        } else {
+            return Collections.emptyList();
+        }
+    }
+
+    private List<ServicePrincipalsValidator> getPrincipalsValidators() {

Review comment:
       I changed it to reuse a common base methods - we don't have annotations 
in here yet.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to