This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.serviceusermapper-1.2.0 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-serviceusermapper.git
commit dd3c26516805e35de3cf05a1d151f4651fb38c27 Author: Carsten Ziegeler <[email protected]> AuthorDate: Fri Mar 13 07:14:40 2015 +0000 SLING-4495 : Improve ServiceUserMapperImpl#isValidUser git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/extensions/serviceusermapper@1666360 13f79535-47bb-0310-9956-ffa450edef68 --- .../impl/ServiceUserMapperImpl.java | 54 ++++++++++------------ .../impl/ServiceUserMapperImplTest.java | 14 +++--- 2 files changed, 31 insertions(+), 37 deletions(-) diff --git a/src/main/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImpl.java b/src/main/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImpl.java index a7e9929..3f655b6 100644 --- a/src/main/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImpl.java +++ b/src/main/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImpl.java @@ -19,7 +19,6 @@ package org.apache.sling.serviceusermapping.impl; import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.Dictionary; import java.util.HashMap; @@ -27,15 +26,15 @@ import java.util.Hashtable; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.Vector; import java.util.SortedMap; import java.util.SortedSet; import java.util.TreeMap; import java.util.TreeSet; +import java.util.concurrent.CopyOnWriteArrayList; import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Deactivate; import org.apache.felix.scr.annotations.Component; +import org.apache.felix.scr.annotations.Deactivate; import org.apache.felix.scr.annotations.Modified; import org.apache.felix.scr.annotations.Property; import org.apache.felix.scr.annotations.PropertyUnbounded; @@ -105,7 +104,7 @@ public class ServiceUserMapperImpl implements ServiceUserMapper { private Mapping[] activeMappings = new Mapping[0]; - private Vector <ServiceUserValidator> validators = new Vector<ServiceUserValidator>(); + private final List<ServiceUserValidator> validators = new CopyOnWriteArrayList<ServiceUserValidator>(); private SortedMap<Mapping, ServiceRegistration> activeMappingRegistrations = new TreeMap<Mapping, ServiceRegistration>(); @@ -144,22 +143,20 @@ public class ServiceUserMapperImpl implements ServiceUserMapper { bundleContext = null; } } - + /** * bind the serviceUserValidator * @param serviceUserValidator - * @param properties */ - protected void bindServiceUserValidator(final ServiceUserValidator serviceUserValidator, final Map<String, Object> properties){ + protected void bindServiceUserValidator(final ServiceUserValidator serviceUserValidator) { validators.add(serviceUserValidator); } - + /** * unbind the serviceUserValidator * @param serviceUserValidator - * @param properties */ - protected void unbindServiceUserValidator(final ServiceUserValidator serviceUserValidator, final Map<String, Object> properties){ + protected void unbindServiceUserValidator(final ServiceUserValidator serviceUserValidator) { validators.remove(serviceUserValidator); } @@ -211,27 +208,24 @@ public class ServiceUserMapperImpl implements ServiceUserMapper { } } - activeMappings = mappings.toArray(new Mapping[mappings.size()]); updateServiceMappings(mappings); - } - void updateServiceMappings(List<Mapping> newMappings) { - + void updateServiceMappings(final List<Mapping> newMappings) { + // do not do anything if not activated if (bundleContext == null) { return; } - SortedSet<Mapping> orderedActiveMappings = new TreeSet<Mapping>(newMappings); - + final SortedSet<Mapping> orderedActiveMappings = new TreeSet<Mapping>(newMappings); - Iterator<Map.Entry<Mapping, ServiceRegistration>> it = activeMappingRegistrations.entrySet().iterator(); + final Iterator<Map.Entry<Mapping, ServiceRegistration>> it = activeMappingRegistrations.entrySet().iterator(); while (it.hasNext()) { - Map.Entry<Mapping, ServiceRegistration> registrationEntry = it.next(); + final Map.Entry<Mapping, ServiceRegistration> registrationEntry = it.next(); if (!orderedActiveMappings.contains(registrationEntry.getKey())) { registrationEntry.getValue().unregister(); @@ -240,24 +234,24 @@ public class ServiceUserMapperImpl implements ServiceUserMapper { } - for (Mapping mapping: orderedActiveMappings) { + for (final Mapping mapping: orderedActiveMappings) { if (!activeMappingRegistrations.containsKey(mapping)) { - Dictionary<String, Object> properties = new Hashtable<String, Object>(); + final Dictionary<String, Object> properties = new Hashtable<String, Object>(); if (mapping.getSubServiceName() != null) { properties.put(ServiceUserMapped.SUBSERVICENAME, mapping.getSubServiceName()); } properties.put(Mapping.SERVICENAME, mapping.getServiceName()); - ServiceRegistration registration = bundleContext.registerService(ServiceUserMappedImpl.SERVICEUSERMAPPED, + final ServiceRegistration registration = bundleContext.registerService(ServiceUserMappedImpl.SERVICEUSERMAPPED, new ServiceUserMappedImpl(), properties); activeMappingRegistrations.put(mapping, registration); } } } - private String internalGetUserId(String serviceName, String subServiceName) { + private String internalGetUserId(final String serviceName, final String subServiceName) { // try with serviceInfo first - for (Mapping mapping : this.activeMappings) { + for (final Mapping mapping : this.activeMappings) { final String userId = mapping.map(serviceName, subServiceName); if (userId != null) { return userId; @@ -276,22 +270,22 @@ public class ServiceUserMapperImpl implements ServiceUserMapper { return this.defaultUser; } - private boolean isValidUser(String userId, String serviceName, String subServiceName) { + private boolean isValidUser(final String userId, final String serviceName, final String subServiceName) { if (userId == null) { return false; } - if (validators != null && validators.size() > 0) { - for (ServiceUserValidator validator : validators) { - boolean valid = validator.isValid(userId, serviceName, subServiceName); - if (!valid) { - return false; + if ( !validators.isEmpty() ) { + for (final ServiceUserValidator validator : validators) { + if ( validator.isValid(userId, serviceName, subServiceName) ) { + return true; } } + return false; } return true; } - static String getServiceName(Bundle bundle) { + static String getServiceName(final Bundle bundle) { return bundle.getSymbolicName(); } } diff --git a/src/test/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImplTest.java b/src/test/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImplTest.java index e7c86af..9d60966 100644 --- a/src/test/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImplTest.java +++ b/src/test/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImplTest.java @@ -18,6 +18,10 @@ */ package org.apache.sling.serviceusermapping.impl; +import static org.mockito.Matchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + import java.util.Dictionary; import java.util.HashMap; import java.util.Map; @@ -34,10 +38,6 @@ import org.osgi.framework.Constants; import org.osgi.framework.ServiceReference; import org.osgi.framework.ServiceRegistration; -import static org.mockito.Matchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - public class ServiceUserMapperImplTest { private static final String BUNDLE_SYMBOLIC1 = "bundle1"; @@ -96,7 +96,7 @@ public class ServiceUserMapperImplTest { TestCase.assertEquals(SAMPLE_SUB, sum.getServiceUserID(BUNDLE1, SUB)); TestCase.assertEquals(ANOTHER_SUB, sum.getServiceUserID(BUNDLE2, SUB)); } - + @Test public void test_getServiceUserID_WithServiceUserValidator() { @SuppressWarnings("serial") @@ -115,7 +115,7 @@ public class ServiceUserMapperImplTest { final ServiceUserMapperImpl sum = new ServiceUserMapperImpl(); sum.configure(null, config); ServiceUserValidator serviceUserValidator = new ServiceUserValidator() { - + public boolean isValid(String serviceUserId, String serviceName, String subServiceName) { if (SAMPLE.equals(serviceUserId)) { @@ -124,7 +124,7 @@ public class ServiceUserMapperImplTest { return true; } }; - sum.bindServiceUserValidator(serviceUserValidator, null); + sum.bindServiceUserValidator(serviceUserValidator); TestCase.assertEquals(null, sum.getServiceUserID(BUNDLE1, null)); TestCase.assertEquals(ANOTHER, sum.getServiceUserID(BUNDLE2, null)); -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
