SLING-10099 : Validators should all agree for a service user to be valid and should be configurable (tests, cleanup)
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 cbcba54..ef9ad62 100644
--- a/src/test/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImplTest.java
+++ b/src/test/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImplTest.java
@@ -18,40 +18,36 @@
  */
 package org.apache.sling.serviceusermapping.impl;
 
-import static junit.framework.TestCase.assertFalse;
-import static junit.framework.TestCase.assertTrue;
-import static junit.framework.TestCase.assertNull;
-import static junit.framework.TestCase.assertEquals;
-import static junit.framework.TestCase.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Dictionary;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
-import java.util.stream.StreamSupport;
-
 import org.apache.sling.serviceusermapping.ServicePrincipalsValidator;
-import org.apache.sling.serviceusermapping.ServiceUserMapper;
 import org.apache.sling.serviceusermapping.ServiceUserValidator;
 import org.junit.Test;
 import org.mockito.ArgumentCaptor;
-import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
 import org.osgi.framework.ServiceRegistration;
 
-import junit.framework.TestCase;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Dictionary;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Future;
+import java.util.stream.StreamSupport;
+
+import static org.apache.sling.serviceusermapping.ServiceUserMapper.VALIDATOR_ID;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+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";
@@ -122,29 +118,29 @@
         assertTrue(mapper.isValidUser("org", "foo", "bar", false));
         assertFalse(mapper.isValidUser("org", "foo", "bar", true));
 
-        assertTrue(mapper.areValidPrincipals(Arrays.asList("baz"), "org", "foo", false));
-        assertFalse(mapper.areValidPrincipals(Arrays.asList("baz"), "org", "foo", true));
+        assertTrue(mapper.areValidPrincipals(Collections.singletonList("baz"), "org", "foo", false));
+        assertFalse(mapper.areValidPrincipals(Collections.singletonList("baz"), "org", "foo", true));
 
         Map<String, Object> properties = new HashMap<>();
-        properties.put(ServiceUserMapper.VALIDATOR_ID, "bla");
+        properties.put(VALIDATOR_ID, "bla");
         mapper.bindServiceUserValidator(userValidator, properties);
 
         assertTrue(mapper.isValidUser("org", "foo", "bar", false));
         assertFalse(mapper.isValidUser("org", "foo", "bar", true));
 
-        assertTrue(mapper.areValidPrincipals(Arrays.asList("baz"), "org", "foo", false));
-        assertFalse(mapper.areValidPrincipals(Arrays.asList("baz"), "org", "foo", true));
+        assertTrue(mapper.areValidPrincipals(Collections.singletonList("baz"), "org", "foo", false));
+        assertFalse(mapper.areValidPrincipals(Collections.singletonList("baz"), "org", "foo", true));
 
-        properties.put(ServiceUserMapper.VALIDATOR_ID, "bli");
+        properties.put(VALIDATOR_ID, "bli");
         mapper.bindServicePrincipalsValidator(principalsValidator2, properties);
 
         assertTrue(mapper.isValidUser("org", "foo", "bar", false));
         assertFalse(mapper.isValidUser("org", "foo", "bar", true));
 
-        assertTrue(mapper.areValidPrincipals(Arrays.asList("baz"), "org", "foo", false));
-        assertFalse(mapper.areValidPrincipals(Arrays.asList("baz"), "org", "foo", true));
+        assertTrue(mapper.areValidPrincipals(Collections.singletonList("baz"), "org", "foo", false));
+        assertFalse(mapper.areValidPrincipals(Collections.singletonList("baz"), "org", "foo", true));
 
-        properties.put(ServiceUserMapper.VALIDATOR_ID, "blub");
+        properties.put(VALIDATOR_ID, "blub");
         try {
             mapper.bindServicePrincipalsValidator(principalsValidator1, properties);
             fail();
@@ -155,8 +151,8 @@
         assertFalse(mapper.isValidUser("org", "foo", "bar", false));
         assertFalse(mapper.isValidUser("org", "foo", "bar", true));
 
-        assertFalse(mapper.areValidPrincipals(Arrays.asList("baz"), "org", "foo", false));
-        assertFalse(mapper.areValidPrincipals(Arrays.asList("baz"), "org", "foo", true));
+        assertFalse(mapper.areValidPrincipals(Collections.singletonList("baz"), "org", "foo", false));
+        assertFalse(mapper.areValidPrincipals(Collections.singletonList("baz"), "org", "foo", true));
     }
 
     @Test
@@ -173,14 +169,14 @@
 
         final ServiceUserMapperImpl sum = new ServiceUserMapperImpl(null, config);
 
-        TestCase.assertEquals(SAMPLE, sum.getServiceUserID(BUNDLE1, null));
-        TestCase.assertEquals(ANOTHER, sum.getServiceUserID(BUNDLE2, null));
-        TestCase.assertEquals(SAMPLE, sum.getServiceUserID(BUNDLE1, ""));
-        TestCase.assertEquals(ANOTHER, sum.getServiceUserID(BUNDLE2, ""));
-        TestCase.assertEquals(SAMPLE_SUB, sum.getServiceUserID(BUNDLE1, SUB));
-        TestCase.assertEquals(ANOTHER_SUB, sum.getServiceUserID(BUNDLE2, SUB));
-        TestCase.assertEquals(NONE, sum.getServiceUserID(BUNDLE3, null));
-        TestCase.assertEquals(NONE, sum.getServiceUserID(BUNDLE3, SUB));
+        assertEquals(SAMPLE, sum.getServiceUserID(BUNDLE1, null));
+        assertEquals(ANOTHER, sum.getServiceUserID(BUNDLE2, null));
+        assertEquals(SAMPLE, sum.getServiceUserID(BUNDLE1, ""));
+        assertEquals(ANOTHER, sum.getServiceUserID(BUNDLE2, ""));
+        assertEquals(SAMPLE_SUB, sum.getServiceUserID(BUNDLE1, SUB));
+        assertEquals(ANOTHER_SUB, sum.getServiceUserID(BUNDLE2, SUB));
+        assertEquals(NONE, sum.getServiceUserID(BUNDLE3, null));
+        assertEquals(NONE, sum.getServiceUserID(BUNDLE3, SUB));
     }
 
     @Test
@@ -197,14 +193,14 @@
 
         final ServiceUserMapperImpl sum = new ServiceUserMapperImpl(null, config);
 
-        TestCase.assertEquals(SAMPLE, sum.getServiceUserID(BUNDLE1, null));
-        TestCase.assertEquals(ANOTHER, sum.getServiceUserID(BUNDLE2, null));
-        TestCase.assertEquals(SAMPLE, sum.getServiceUserID(BUNDLE1, ""));
-        TestCase.assertEquals(ANOTHER, sum.getServiceUserID(BUNDLE2, ""));
-        TestCase.assertEquals(SAMPLE_SUB, sum.getServiceUserID(BUNDLE1, SUB));
-        TestCase.assertEquals(ANOTHER_SUB, sum.getServiceUserID(BUNDLE2, SUB));
-        TestCase.assertEquals(NONE, sum.getServiceUserID(BUNDLE3, null));
-        TestCase.assertEquals(NONE, sum.getServiceUserID(BUNDLE3, SUB));
+        assertEquals(SAMPLE, sum.getServiceUserID(BUNDLE1, null));
+        assertEquals(ANOTHER, sum.getServiceUserID(BUNDLE2, null));
+        assertEquals(SAMPLE, sum.getServiceUserID(BUNDLE1, ""));
+        assertEquals(ANOTHER, sum.getServiceUserID(BUNDLE2, ""));
+        assertEquals(SAMPLE_SUB, sum.getServiceUserID(BUNDLE1, SUB));
+        assertEquals(ANOTHER_SUB, sum.getServiceUserID(BUNDLE2, SUB));
+        assertEquals(NONE, sum.getServiceUserID(BUNDLE3, null));
+        assertEquals(NONE, sum.getServiceUserID(BUNDLE3, SUB));
     }
 
     @Test
@@ -221,14 +217,14 @@
 
         final ServiceUserMapperImpl sum = new ServiceUserMapperImpl(null, config);
 
-        TestCase.assertEquals(SAMPLE, sum.getServiceUserID(BUNDLE1, null));
-        TestCase.assertEquals(ANOTHER, sum.getServiceUserID(BUNDLE2, null));
-        TestCase.assertEquals(SAMPLE, sum.getServiceUserID(BUNDLE1, ""));
-        TestCase.assertEquals(ANOTHER, sum.getServiceUserID(BUNDLE2, ""));
-        TestCase.assertEquals(SAMPLE_SUB, sum.getServiceUserID(BUNDLE1, SUB));
-        TestCase.assertEquals(ANOTHER_SUB, sum.getServiceUserID(BUNDLE2, SUB));
-        TestCase.assertEquals("serviceuser--" + BUNDLE_SYMBOLIC3, sum.getServiceUserID(BUNDLE3, null));
-        TestCase.assertEquals("serviceuser--" + BUNDLE_SYMBOLIC3 + "--" + SUB, sum.getServiceUserID(BUNDLE3, SUB));
+        assertEquals(SAMPLE, sum.getServiceUserID(BUNDLE1, null));
+        assertEquals(ANOTHER, sum.getServiceUserID(BUNDLE2, null));
+        assertEquals(SAMPLE, sum.getServiceUserID(BUNDLE1, ""));
+        assertEquals(ANOTHER, sum.getServiceUserID(BUNDLE2, ""));
+        assertEquals(SAMPLE_SUB, sum.getServiceUserID(BUNDLE1, SUB));
+        assertEquals(ANOTHER_SUB, sum.getServiceUserID(BUNDLE2, SUB));
+        assertEquals("serviceuser--" + BUNDLE_SYMBOLIC3, sum.getServiceUserID(BUNDLE3, null));
+        assertEquals("serviceuser--" + BUNDLE_SYMBOLIC3 + "--" + SUB, sum.getServiceUserID(BUNDLE3, SUB));
     }
 
     @Test
@@ -244,25 +240,15 @@
         when(config.user_enable_default_mapping()).thenReturn(false);
 
         final ServiceUserMapperImpl sum = new ServiceUserMapperImpl(null, config);
-        ServiceUserValidator serviceUserValidator = new ServiceUserValidator() {
-
-            @Override
-            public boolean isValid(String serviceUserId, String serviceName,
-                    String subServiceName) {
-                if (SAMPLE.equals(serviceUserId)) {
-                    return false;
-                }
-                return true;
-            }
-        };
+        ServiceUserValidator serviceUserValidator = (serviceUserId, serviceName, subServiceName) -> !SAMPLE.equals(serviceUserId);
         sum.bindServiceUserValidator(serviceUserValidator, Collections.emptyMap());
 
-        TestCase.assertEquals(null, sum.getServiceUserID(BUNDLE1, null));
-        TestCase.assertEquals(ANOTHER, sum.getServiceUserID(BUNDLE2, null));
-        TestCase.assertEquals(null, sum.getServiceUserID(BUNDLE1, ""));
-        TestCase.assertEquals(ANOTHER, sum.getServiceUserID(BUNDLE2, ""));
-        TestCase.assertEquals(SAMPLE_SUB, sum.getServiceUserID(BUNDLE1, SUB));
-        TestCase.assertEquals(ANOTHER_SUB, sum.getServiceUserID(BUNDLE2, SUB));
+        assertNull(sum.getServiceUserID(BUNDLE1, null));
+        assertEquals(ANOTHER, sum.getServiceUserID(BUNDLE2, null));
+        assertNull(sum.getServiceUserID(BUNDLE1, ""));
+        assertEquals(ANOTHER, sum.getServiceUserID(BUNDLE2, ""));
+        assertEquals(SAMPLE_SUB, sum.getServiceUserID(BUNDLE1, SUB));
+        assertEquals(ANOTHER_SUB, sum.getServiceUserID(BUNDLE2, SUB));
     }
 
     @Test
@@ -369,9 +355,7 @@
         });
 
         final ServiceUserMapperImpl sum = new ServiceUserMapperImpl(null, config);
-        ServicePrincipalsValidator validator = (servicePrincipalNames, serviceName, subServiceName) -> {
-            return StreamSupport.stream(servicePrincipalNames.spliterator(), false).noneMatch(SAMPLE::equals);
-        };
+        ServicePrincipalsValidator validator = (servicePrincipalNames, serviceName, subServiceName) -> StreamSupport.stream(servicePrincipalNames.spliterator(), false).noneMatch(SAMPLE::equals);
         sum.bindServicePrincipalsValidator(validator, Collections.emptyMap());
 
         assertNull(sum.getServicePrincipalNames(BUNDLE1, null));
@@ -391,14 +375,10 @@
         });
 
         final ServiceUserMapperImpl sum = new ServiceUserMapperImpl(null, config);
-        ServicePrincipalsValidator sampleInvalid = (servicePrincipalNames, serviceName, subServiceName) -> {
-            return StreamSupport.stream(servicePrincipalNames.spliterator(), false).noneMatch(SAMPLE::equals);
-        };
+        ServicePrincipalsValidator sampleInvalid = (servicePrincipalNames, serviceName, subServiceName) -> StreamSupport.stream(servicePrincipalNames.spliterator(), false).noneMatch(SAMPLE::equals);
         sum.bindServicePrincipalsValidator(sampleInvalid, Collections.emptyMap());
 
-        ServicePrincipalsValidator anotherInvalid = (servicePrincipalNames, serviceName, subServiceName) -> {
-            return StreamSupport.stream(servicePrincipalNames.spliterator(), false).noneMatch(ANOTHER::equals);
-        };
+        ServicePrincipalsValidator anotherInvalid = (servicePrincipalNames, serviceName, subServiceName) -> StreamSupport.stream(servicePrincipalNames.spliterator(), false).noneMatch(ANOTHER::equals);
         sum.bindServicePrincipalsValidator(anotherInvalid, Collections.emptyMap());
 
         assertNull(sum.getServicePrincipalNames(BUNDLE1, null));
@@ -416,20 +396,66 @@
         });
 
         final ServiceUserMapperImpl sum = new ServiceUserMapperImpl(null, config);
-        ServicePrincipalsValidator sampleInvalid = (servicePrincipalNames, serviceName, subServiceName) -> {
-            return StreamSupport.stream(servicePrincipalNames.spliterator(), false).noneMatch(SAMPLE::equals);
-        };
+        ServicePrincipalsValidator sampleInvalid = (servicePrincipalNames, serviceName, subServiceName) -> StreamSupport.stream(servicePrincipalNames.spliterator(), false).noneMatch(SAMPLE::equals);
         sum.bindServicePrincipalsValidator(sampleInvalid, Collections.emptyMap());
 
-        ServicePrincipalsValidator anotherInvalid = (servicePrincipalNames, serviceName, subServiceName) -> {
-            return StreamSupport.stream(servicePrincipalNames.spliterator(), false).noneMatch(ANOTHER::equals);
-        };
+        ServicePrincipalsValidator anotherInvalid = (servicePrincipalNames, serviceName, subServiceName) -> StreamSupport.stream(servicePrincipalNames.spliterator(), false).noneMatch(ANOTHER::equals);
         sum.bindServicePrincipalsValidator(anotherInvalid, Collections.emptyMap());
 
         assertEqualPrincipalNames(sum.getServicePrincipalNames(BUNDLE1, null), "validPrincipal");
         assertEqualPrincipalNames(sum.getServicePrincipalNames(BUNDLE1, SUB), "validPrincipal", SAMPLE_SUB);
     }
 
+    @Test
+    public void test_getServicePrincipalNamesInternal_RequiredValidators() {
+        ServiceUserMapperImpl.Config config = mock(ServiceUserMapperImpl.Config.class);
+        when(config.user_mapping()).thenReturn(new String[] {
+                BUNDLE_SYMBOLIC1 + "=["+SAMPLE+"]", //
+                BUNDLE_SYMBOLIC1 + ":" + SUB + "=["+SAMPLE+"," + SAMPLE_SUB + "]"//
+        });
+        when(config.required_validators()).thenReturn(new String[]{"requiredId_1", "requiredId_2"});
+        when(config.require_validation()).thenReturn(false);
+
+        ServiceUserMapperImpl mapper = new ServiceUserMapperImpl(null, config);
+
+        // no required validator present
+        assertEqualPrincipalNames(mapper.getServicePrincipalNamesInternal(BUNDLE1, null), SAMPLE);
+        assertEqualPrincipalNames(mapper.getServicePrincipalNamesInternal(BUNDLE1, SUB), SAMPLE, SAMPLE_SUB);
+    }
+
+    @Test
+    public void test_getServicePrincipalNamesInternal_RequiredValidators_RequireValidation() {
+        ServiceUserMapperImpl.Config config = mock(ServiceUserMapperImpl.Config.class);
+        when(config.user_mapping()).thenReturn(new String[] {
+                BUNDLE_SYMBOLIC1 + "=["+SAMPLE+"]", //
+                BUNDLE_SYMBOLIC1 + ":" + SUB + "=["+SAMPLE+"," + SAMPLE_SUB + "]"//
+        });
+        when(config.required_validators()).thenReturn(new String[]{"requiredId_1", "requiredId_2"});
+        when(config.require_validation()).thenReturn(true);
+
+        ServiceUserMapperImpl mapper = new ServiceUserMapperImpl(null, config);
+        ServicePrincipalsValidator validator = (servicePrincipalNames, serviceName, subServiceName) -> true;
+
+        // no required validator present
+        assertNull(mapper.getServicePrincipalNamesInternal(BUNDLE1, null));
+        assertNull(mapper.getServicePrincipalNamesInternal(BUNDLE1, SUB));
+
+        // just one required validator present
+        mapper.bindServicePrincipalsValidator(validator, Collections.singletonMap(VALIDATOR_ID, "requiredId_1"));
+        assertNull(mapper.getServicePrincipalNamesInternal(BUNDLE1, null));
+        assertNull(mapper.getServicePrincipalNamesInternal(BUNDLE1, SUB));
+
+        // a non-required validator present in addition
+        mapper.bindServicePrincipalsValidator(validator, Collections.singletonMap(VALIDATOR_ID, "not_required"));
+        assertNull(mapper.getServicePrincipalNamesInternal(BUNDLE1, null));
+        assertNull(mapper.getServicePrincipalNamesInternal(BUNDLE1, SUB));
+
+        // all required validators present
+        mapper.bindServicePrincipalsValidator(validator, Collections.singletonMap(VALIDATOR_ID, "requiredId_2"));
+        assertEqualPrincipalNames(mapper.getServicePrincipalNamesInternal(BUNDLE1, null), SAMPLE);
+        assertEqualPrincipalNames(mapper.getServicePrincipalNamesInternal(BUNDLE1, SUB), SAMPLE, SAMPLE_SUB);
+    }
+
     private static void assertEqualPrincipalNames(Iterable<String> result, String... expected) {
         if (expected == null) {
             assertNull(result);
@@ -437,12 +463,10 @@
             assertFalse(result.iterator().hasNext());
         } else {
             Set<String> resultSet = new HashSet<>();
-            Iterator<String> it = result.iterator();
-            while (it.hasNext()) {
-                resultSet.add(it.next());
+            for (String s : result) {
+                resultSet.add(s);
             }
-            Set<String> expectedSet = new HashSet<>();
-            expectedSet.addAll(Arrays.asList(expected));
+            Set<String> expectedSet = new HashSet<>(Arrays.asList(expected));
             assertEquals(expectedSet, resultSet);
         }
     }
@@ -484,12 +508,12 @@
         mca2.configure(mca2Config);
         sum.bindAmendment(mca2, mca2ConfigMap);
 
-        TestCase.assertEquals(SAMPLE, sum.getServiceUserID(BUNDLE1, null));
-        TestCase.assertEquals(ANOTHER, sum.getServiceUserID(BUNDLE2, null));
-        TestCase.assertEquals(SAMPLE, sum.getServiceUserID(BUNDLE1, ""));
-        TestCase.assertEquals(ANOTHER, sum.getServiceUserID(BUNDLE2, ""));
-        TestCase.assertEquals(SAMPLE_SUB, sum.getServiceUserID(BUNDLE1, SUB));
-        TestCase.assertEquals(ANOTHER_SUB, sum.getServiceUserID(BUNDLE2, SUB));
+        assertEquals(SAMPLE, sum.getServiceUserID(BUNDLE1, null));
+        assertEquals(ANOTHER, sum.getServiceUserID(BUNDLE2, null));
+        assertEquals(SAMPLE, sum.getServiceUserID(BUNDLE1, ""));
+        assertEquals(ANOTHER, sum.getServiceUserID(BUNDLE2, ""));
+        assertEquals(SAMPLE_SUB, sum.getServiceUserID(BUNDLE1, SUB));
+        assertEquals(ANOTHER_SUB, sum.getServiceUserID(BUNDLE2, SUB));
     }
 
     @Test
@@ -525,7 +549,7 @@
         sum.bindAmendment(mca1, mca1ConfigMap);
         sum.bindAmendment(mca2, mca2ConfigMap);
 
-        TestCase.assertEquals(ANOTHER_SUB, sum.getServiceUserID(BUNDLE2, ""));
+        assertEquals(ANOTHER_SUB, sum.getServiceUserID(BUNDLE2, ""));
     }
 
 
@@ -544,18 +568,15 @@
         ArgumentCaptor<Runnable> argument = ArgumentCaptor.forClass(Runnable.class);
 
         final ExecutorService executor = mock(ExecutorService.class);
-        when(executor.submit(argument.capture())).thenAnswer(new Answer<Future<Object>>() {
-            @Override
-            public Future<Object> answer(InvocationOnMock invocation) {
-                argument.getValue().run();
-                return null;
-            }
+        when(executor.submit(argument.capture())).thenAnswer((Answer<Future<Object>>) invocation -> {
+            argument.getValue().run();
+            return null;
         });
 
         final ServiceRegistrationContextHelper context = new ServiceRegistrationContextHelper();
         final ServiceUserMapperImpl sum = new ServiceUserMapperImpl(context.getBundleContext(), config, executor);
 
-        TestCase.assertEquals(3, context.getRegistrations(ServiceUserMappedImpl.SERVICEUSERMAPPED).size());
+        assertEquals(3, context.getRegistrations(ServiceUserMappedImpl.SERVICEUSERMAPPED).size());
 
         final MappingConfigAmendment mca1 = new MappingConfigAmendment();
 
@@ -570,7 +591,7 @@
         mca1.configure(mca1Config);
         sum.bindAmendment(mca1, mca1ConfigMap);
 
-        TestCase.assertEquals(4, context.getRegistrations(ServiceUserMappedImpl.SERVICEUSERMAPPED).size());
+        assertEquals(4, context.getRegistrations(ServiceUserMappedImpl.SERVICEUSERMAPPED).size());
 
         final MappingConfigAmendment mca2 = new MappingConfigAmendment();
 
@@ -585,15 +606,15 @@
         mca2.configure(mca2Config);
         sum.bindAmendment(mca2, mca2ConfigMap);
 
-        TestCase.assertEquals(5, context.getRegistrations(ServiceUserMappedImpl.SERVICEUSERMAPPED).size());
+        assertEquals(5, context.getRegistrations(ServiceUserMappedImpl.SERVICEUSERMAPPED).size());
 
         sum.unbindAmendment(mca1, mca1ConfigMap);
 
-        TestCase.assertEquals(4, context.getRegistrations(ServiceUserMappedImpl.SERVICEUSERMAPPED).size());
+        assertEquals(4, context.getRegistrations(ServiceUserMappedImpl.SERVICEUSERMAPPED).size());
     }
 
 
-    private class ServiceRegistrationContextHelper {
+    private static class ServiceRegistrationContextHelper {
 
 
         final BundleContext bundleContext = mock(BundleContext.class);
@@ -602,13 +623,10 @@
 
         public ServiceRegistrationContextHelper() {
             when(bundleContext.registerService(any(String.class), any(Object.class), any(Dictionary.class)))
-                    .then(new Answer<ServiceRegistration>() {
-                        @Override
-                        public ServiceRegistration answer(InvocationOnMock invocationOnMock) throws Throwable {
+                    .then((Answer<ServiceRegistration>) invocationOnMock -> {
 
-                            Object[] arguments = invocationOnMock.getArguments();
-                            return registerService((String) arguments[0], arguments[1], (Dictionary) arguments[2]);
-                        }
+                        Object[] arguments = invocationOnMock.getArguments();
+                        return registerService((String) arguments[0], arguments[1], (Dictionary) arguments[2]);
                     });
             when(bundleContext.getBundle()).thenReturn(bundle);
             when(bundle.getSymbolicName()).thenReturn("mock");
@@ -616,7 +634,7 @@
 
         private ServiceRegistration registerService(String string, Object o, Dictionary dictionary) {
             if (!registrations.containsKey(string)) {
-                registrations.put(string, new HashMap<Object, Dictionary>());
+                registrations.put(string, new HashMap<>());
             }
             final Map<Object, Dictionary> serviceRegistrations = registrations.get(string);
             serviceRegistrations.put(o, dictionary);