Author: cziegeler
Date: Mon Aug 22 12:16:57 2016
New Revision: 1757154
URL: http://svn.apache.org/viewvc?rev=1757154&view=rev
Log:
SLING-5986 : Improve shutdown time when system is stopping
Modified:
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/MockedResourceResolverImplTest.java
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=1757154&r1=1757153&r2=1757154&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
Mon Aug 22 12:16:57 2016
@@ -711,16 +711,20 @@ public class ResourceResolverFactoryActi
if ( localContext != null ) {
final boolean result =
this.preconds.checkPreconditions(unavailableName, unavailableServicePid);
if ( result && this.factoryRegistration == null ) {
- boolean create = true;
- synchronized ( this ) {
- if ( this.factoryRegistration == null ) {
- this.factoryRegistration = new FactoryRegistration();
- } else {
- create = false;
+ // check system bundle state - if stopping, don't register new
factory
+ final Bundle systemBundle =
localContext.getBundleContext().getBundle(Constants.SYSTEM_BUNDLE_LOCATION);
+ if ( systemBundle != null && systemBundle.getState() !=
Bundle.STOPPING ) {
+ boolean create = true;
+ synchronized ( this ) {
+ if ( this.factoryRegistration == null ) {
+ this.factoryRegistration = new
FactoryRegistration();
+ } else {
+ create = false;
+ }
+ }
+ if ( create ) {
+ this.registerFactory(localContext);
}
- }
- if ( create ) {
- this.registerFactory(localContext);
}
} else if ( !result && this.factoryRegistration != null ) {
this.unregisterFactory();
Modified:
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/MockedResourceResolverImplTest.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/MockedResourceResolverImplTest.java?rev=1757154&r1=1757153&r2=1757154&view=diff
==============================================================================
---
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/MockedResourceResolverImplTest.java
(original)
+++
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/MockedResourceResolverImplTest.java
Mon Aug 22 12:16:57 2016
@@ -148,6 +148,10 @@ public class MockedResourceResolverImplT
Mockito.when(componentContext.getBundleContext()).thenReturn(
bundleContext);
+ // system bundle access
+ final Bundle systemBundle = Mockito.mock(Bundle.class);
+ Mockito.when(systemBundle.getState()).thenReturn(Bundle.ACTIVE);
+
Mockito.when(bundleContext.getBundle(Constants.SYSTEM_BUNDLE_LOCATION)).thenReturn(systemBundle);
activator.resourceAccessSecurityTracker = new
ResourceAccessSecurityTracker();
activator.resourceProviderTracker = resourceProviderTracker;
activator.changeListenerWhiteboard = resourceChangeListenerWhiteboard;