You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2009/04/16 14:38:48 UTC

svn commit: r765611 - in /tuscany/branches/sca-java-1.x/modules/core/src/main/java/org/apache/tuscany/sca/core/scope: CompositeScopeContainer.java RequestScopeContainer.java StatelessScopeContainer.java

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