Author: kwin
Date: Tue Mar 21 12:35:26 2017
New Revision: 1787953

URL: http://svn.apache.org/viewvc?rev=1787953&view=rev
Log:
SLING-6659 prevent NPE by creating the ValidatorMap in the constructor rather 
than in its activate method

Even for dynamic service references, the bind might be called during the 
activate (or even before), see http://stackoverflow.com/a/15782806/5155923

Modified:
    
sling/trunk/bundles/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ValidationServiceImpl.java
    
sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/ValidationServiceImplTest.java

Modified: 
sling/trunk/bundles/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ValidationServiceImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ValidationServiceImpl.java?rev=1787953&r1=1787952&r2=1787953&view=diff
==============================================================================
--- 
sling/trunk/bundles/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ValidationServiceImpl.java
 (original)
+++ 
sling/trunk/bundles/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ValidationServiceImpl.java
 Tue Mar 21 12:35:26 2017
@@ -81,7 +81,7 @@ public class ValidationServiceImpl imple
     
     /** List of all known validators (key=id of validator) */
     @Nonnull
-    ValidatorMap validatorMap;
+    final ValidatorMap validatorMap;
     
     Collection<String> searchPaths;
     
@@ -101,10 +101,13 @@ public class ValidationServiceImpl imple
 
     @Reference
     private ServiceUserMapped serviceUserMapped;
+    
+    public ValidationServiceImpl() {
+        this.validatorMap = new ValidatorMap();
+    }
 
     @Activate
     protected void activate(ValidationServiceConfiguration configuration) {
-        this.validatorMap = new ValidatorMap();
         this.configuration = configuration;
         ResourceResolver rr = null;
         try {

Modified: 
sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/ValidationServiceImplTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/ValidationServiceImplTest.java?rev=1787953&r1=1787952&r2=1787953&view=diff
==============================================================================
--- 
sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/ValidationServiceImplTest.java
 (original)
+++ 
sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/ValidationServiceImplTest.java
 Tue Mar 21 12:35:26 2017
@@ -115,7 +115,6 @@ public class ValidationServiceImplTest {
         validationService = new ValidationServiceImpl();
         validationService.searchPaths = 
Arrays.asList(context.resourceResolver().getSearchPath());
         validationService.configuration = configuration;
-        validationService.validatorMap = new ValidatorMap();
         Mockito.doReturn(20).when(configuration).defaultSeverity();
         validationService.resourceBundleProviders = 
Collections.singletonList(resourceBundleProvider);
         
Mockito.doReturn(defaultResourceBundle).when(resourceBundleProvider).getResourceBundle(Mockito.anyObject());


Reply via email to