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