Author: cziegeler
Date: Thu Jul 21 14:54:07 2016
New Revision: 1753699
URL: http://svn.apache.org/viewvc?rev=1753699&view=rev
Log:
SLING-5885 : ResourceResolverFactory might not get correctly re-registered if
configuration is changed
Modified:
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/FactoryPreconditions.java
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java
Modified:
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/FactoryPreconditions.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/FactoryPreconditions.java?rev=1753699&r1=1753698&r2=1753699&view=diff
==============================================================================
---
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/FactoryPreconditions.java
(original)
+++
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/FactoryPreconditions.java
Thu Jul 21 14:54:07 2016
@@ -80,11 +80,13 @@ public class FactoryPreconditions {
}
if ( namesConfiguration != null ) {
for(final String r : namesConfiguration) {
- final String value = r.trim();
- if ( !value.isEmpty() ) {
- final RequiredProvider rp = new RequiredProvider();
- rp.name = value;
- rps.add(rp);
+ if( r != null ) {
+ final String value = r.trim();
+ if ( !value.isEmpty() ) {
+ final RequiredProvider rp = new RequiredProvider();
+ rp.name = value;
+ rps.add(rp);
+ }
}
}
}
Modified:
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java?rev=1753699&r1=1753698&r2=1753699&view=diff
==============================================================================
---
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java
(original)
+++
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java
Thu Jul 21 14:54:07 2016
@@ -30,6 +30,7 @@ import org.apache.commons.collections.bi
import org.apache.felix.scr.annotations.Activate;
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.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.PropertyUnbounded;
@@ -541,8 +542,17 @@ public class ResourceResolverFactoryActi
final String[] requiredResourceProviderNames =
PropertiesUtil.toStringArray(properties.get(PROP_REQUIRED_PROVIDERS));
if ( requiredResourceProvidersLegacy != null &&
requiredResourceProvidersLegacy.length > 0 ) {
- logger.error("ResourceResolverFactory is using deprecated required
providers configuration (" + PROP_REQUIRED_PROVIDERS_LEGACY +
- "). Please change to use the property " +
PROP_REQUIRED_PROVIDERS + " for values: " +
Arrays.toString(requiredResourceProvidersLegacy));
+ boolean hasRealValue = false;
+ for(final String name : requiredResourceProvidersLegacy) {
+ if ( name != null && !name.trim().isEmpty() ) {
+ hasRealValue = true;
+ break;
+ }
+ }
+ if ( hasRealValue ) {
+ logger.error("ResourceResolverFactory is using deprecated
required providers configuration (" + PROP_REQUIRED_PROVIDERS_LEGACY +
+ "). Please change to use the property " +
PROP_REQUIRED_PROVIDERS + " for values: " +
Arrays.toString(requiredResourceProvidersLegacy));
+ }
}
// for testing: if we run unit test, both trackers are set from the
outside
if ( this.resourceProviderTracker == null ) {
@@ -579,6 +589,12 @@ public class ResourceResolverFactoryActi
}
}
+ @Modified
+ protected void modified(final ComponentContext context) {
+ this.deactivate();
+ this.activate(context);
+ }
+
/**
* Deactivates this component (called by SCR to take out of service)
*/
@@ -589,9 +605,14 @@ public class ResourceResolverFactoryActi
this.componentContext = null;
this.changeListenerWhiteboard.deactivate();
+ this.changeListenerWhiteboard = null;
this.resourceProviderTracker.deactivate();
+ this.resourceProviderTracker = null;
+
this.preconds.deactivate();
this.resourceDecoratorTracker.close();
+
+ this.unregisterFactory();
}
/**