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;
     }
 


Reply via email to