Author: antelder
Date: Thu Apr 16 12:38:47 2009
New Revision: 765611
URL: http://svn.apache.org/viewvc?rev=765611&view=rev
Log:
TUSCANY-2851, fix exceptions during init processing of java components to call
destroy
Modified:
tuscany/branches/sca-java-1.x/modules/core/src/main/java/org/apache/tuscany/sca/core/scope/CompositeScopeContainer.java
tuscany/branches/sca-java-1.x/modules/core/src/main/java/org/apache/tuscany/sca/core/scope/RequestScopeContainer.java
tuscany/branches/sca-java-1.x/modules/core/src/main/java/org/apache/tuscany/sca/core/scope/StatelessScopeContainer.java
Modified:
tuscany/branches/sca-java-1.x/modules/core/src/main/java/org/apache/tuscany/sca/core/scope/CompositeScopeContainer.java
URL:
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/core/src/main/java/org/apache/tuscany/sca/core/scope/CompositeScopeContainer.java?rev=765611&r1=765610&r2=765611&view=diff
==============================================================================
---
tuscany/branches/sca-java-1.x/modules/core/src/main/java/org/apache/tuscany/sca/core/scope/CompositeScopeContainer.java
(original)
+++
tuscany/branches/sca-java-1.x/modules/core/src/main/java/org/apache/tuscany/sca/core/scope/CompositeScopeContainer.java
Thu Apr 16 12:38:47 2009
@@ -50,7 +50,20 @@
public synchronized InstanceWrapper getWrapper(KEY contextId) throws
TargetResolutionException {
if (wrapper == null) {
wrapper = createInstanceWrapper();
- wrapper.start();
+ try {
+ wrapper.start();
+ } catch (ThreadDeath td) {
+ throw td;
+ } catch (Throwable e) {
+ try {
+ wrapper.stop();
+ } catch (ThreadDeath td) {
+ throw td;
+ } catch (Throwable e2) {
+ }
+ wrapper = null;
+ throw new TargetInitializationException(e);
+ }
}
return wrapper;
}
Modified:
tuscany/branches/sca-java-1.x/modules/core/src/main/java/org/apache/tuscany/sca/core/scope/RequestScopeContainer.java
URL:
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/core/src/main/java/org/apache/tuscany/sca/core/scope/RequestScopeContainer.java?rev=765611&r1=765610&r2=765611&view=diff
==============================================================================
---
tuscany/branches/sca-java-1.x/modules/core/src/main/java/org/apache/tuscany/sca/core/scope/RequestScopeContainer.java
(original)
+++
tuscany/branches/sca-java-1.x/modules/core/src/main/java/org/apache/tuscany/sca/core/scope/RequestScopeContainer.java
Thu Apr 16 12:38:47 2009
@@ -62,6 +62,14 @@
// synchronized (destroyQueues) {
// destroyQueues.clear();
// }
+ for (InstanceWrapper ctx : wrappers.values()) {
+ try {
+ ctx.stop();
+ } catch (ThreadDeath td) {
+ throw td;
+ } catch (Throwable e2) {
+ }
+ }
lifecycleState = STOPPED;
}
@@ -72,8 +80,20 @@
}
if (ctx == null) {
ctx = super.createInstanceWrapper();
- ctx.start();
- wrappers.put(Thread.currentThread(), ctx);
+ try {
+ ctx.start();
+ wrappers.put(Thread.currentThread(), ctx);
+ } catch (ThreadDeath td) {
+ throw td;
+ } catch (Throwable e) {
+ try {
+ ctx.stop();
+ } catch (ThreadDeath td) {
+ throw td;
+ } catch (Throwable e2) {
+ }
+ throw new TargetInitializationException(e);
+ }
}
return ctx;
}
Modified:
tuscany/branches/sca-java-1.x/modules/core/src/main/java/org/apache/tuscany/sca/core/scope/StatelessScopeContainer.java
URL:
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/core/src/main/java/org/apache/tuscany/sca/core/scope/StatelessScopeContainer.java?rev=765611&r1=765610&r2=765611&view=diff
==============================================================================
---
tuscany/branches/sca-java-1.x/modules/core/src/main/java/org/apache/tuscany/sca/core/scope/StatelessScopeContainer.java
(original)
+++
tuscany/branches/sca-java-1.x/modules/core/src/main/java/org/apache/tuscany/sca/core/scope/StatelessScopeContainer.java
Thu Apr 16 12:38:47 2009
@@ -36,7 +36,19 @@
public InstanceWrapper getWrapper(KEY contextId)
throws TargetResolutionException {
InstanceWrapper ctx = createInstanceWrapper();
- ctx.start();
+ try {
+ ctx.start();
+ } catch (ThreadDeath td) {
+ throw td;
+ } catch (Throwable e) {
+ try {
+ ctx.stop();
+ } catch (ThreadDeath td) {
+ throw td;
+ } catch (Throwable e2) {
+ }
+ throw new TargetInitializationException(e);
+ }
return ctx;
}