TUSCANY-3834 - continue stopping components in the case of exceptions thrown during a previous component stop.
git-svn-id: https://svn.apache.org/repos/asf/tuscany/sca-java-1.x/trunk@1068894 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/CompositeActivatorImpl.java b/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/CompositeActivatorImpl.java
index c5ffbc4..af3e606 100644
--- a/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/CompositeActivatorImpl.java
+++ b/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/CompositeActivatorImpl.java
@@ -739,13 +739,17 @@
for (Binding binding : service.getBindings()) {
final ServiceBindingProvider bindingProvider = ((RuntimeComponentService)service).getBindingProvider(binding);
if (bindingProvider != null) {
- // Allow bindings to read properties. Requires PropertyPermission read in security policy.
- AccessController.doPrivileged(new PrivilegedAction<Object>() {
- public Object run() {
- bindingProvider.stop();
- return null;
- }
- });
+ try {
+ // Allow bindings to read properties. Requires PropertyPermission read in security policy.
+ AccessController.doPrivileged(new PrivilegedAction<Object>() {
+ public Object run() {
+ bindingProvider.stop();
+ return null;
+ }
+ });
+ } catch (Throwable ex){
+ logger.log(Level.SEVERE, ex.getMessage(), ex);
+ }
}
}
}
@@ -758,26 +762,34 @@
for (Binding binding : reference.getBindings()) {
final ReferenceBindingProvider bindingProvider = runtimeRef.getBindingProvider(binding);
if (bindingProvider != null) {
- // Allow bindings to read properties. Requires PropertyPermission read in security policy.
- AccessController.doPrivileged(new PrivilegedAction<Object>() {
- public Object run() {
- bindingProvider.stop();
- return null;
- }
- });
+ try {
+ // Allow bindings to read properties. Requires PropertyPermission read in security policy.
+ AccessController.doPrivileged(new PrivilegedAction<Object>() {
+ public Object run() {
+ bindingProvider.stop();
+ return null;
+ }
+ });
+ } catch (Throwable ex){
+ logger.log(Level.SEVERE, ex.getMessage(), ex);
+ }
}
}
for (Endpoint endpoint : reference.getEndpoints()) {
final EndpointResolver endpointResolver = runtimeRef.getEndpointResolver(endpoint);
if (endpointResolver != null) {
- // Allow endpoint resolvers to do any shutdown reference manipulation
- AccessController.doPrivileged(new PrivilegedAction<Object>() {
- public Object run() {
- endpointResolver.stop();
- return null;
- }
- });
+ try {
+ // Allow endpoint resolvers to do any shutdown reference manipulation
+ AccessController.doPrivileged(new PrivilegedAction<Object>() {
+ public Object run() {
+ endpointResolver.stop();
+ return null;
+ }
+ });
+ } catch (Throwable ex){
+ logger.log(Level.SEVERE, ex.getMessage(), ex);
+ }
}
}
}
@@ -787,13 +799,17 @@
} else {
final ImplementationProvider implementationProvider = ((RuntimeComponent)component).getImplementationProvider();
if (implementationProvider != null) {
- // Allow bindings to read properties. Requires PropertyPermission read in security policy.
- AccessController.doPrivileged(new PrivilegedAction<Object>() {
- public Object run() {
- implementationProvider.stop();
- return null;
- }
- });
+ try {
+ // Allow bindings to read properties. Requires PropertyPermission read in security policy.
+ AccessController.doPrivileged(new PrivilegedAction<Object>() {
+ public Object run() {
+ implementationProvider.stop();
+ return null;
+ }
+ });
+ } catch (Throwable ex){
+ logger.log(Level.SEVERE, ex.getMessage(), ex);
+ }
}
}
@@ -801,7 +817,11 @@
ScopedRuntimeComponent runtimeComponent = (ScopedRuntimeComponent)component;
if (runtimeComponent.getScopeContainer() != null &&
runtimeComponent.getScopeContainer().getLifecycleState() != ScopeContainer.STOPPED) {
- runtimeComponent.getScopeContainer().stop();
+ try {
+ runtimeComponent.getScopeContainer().stop();
+ } catch (Throwable ex){
+ logger.log(Level.SEVERE, ex.getMessage(), ex);
+ }
}
}
diff --git a/modules/core/src/main/java/org/apache/tuscany/sca/core/scope/CompositeScopeContainer.java b/modules/core/src/main/java/org/apache/tuscany/sca/core/scope/CompositeScopeContainer.java
index 7a19651..8c727ec 100644
--- a/modules/core/src/main/java/org/apache/tuscany/sca/core/scope/CompositeScopeContainer.java
+++ b/modules/core/src/main/java/org/apache/tuscany/sca/core/scope/CompositeScopeContainer.java
@@ -40,6 +40,7 @@
try {
wrapper.stop();
} catch (TargetDestructionException e) {
+ wrapper = null;
throw new IllegalStateException(e);
}
}