You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by kw...@apache.org on 2017/03/21 12:35:26 UTC

svn commit: r1787953 - in /sling/trunk/bundles/extensions/validation/core/src: main/java/org/apache/sling/validation/impl/ValidationServiceImpl.java test/java/org/apache/sling/validation/impl/ValidationServiceImplTest.java

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());