You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by gd...@apache.org on 2005/10/16 10:53:38 UTC

svn commit: r322461 - in /geronimo/trunk/modules: common/src/java/org/apache/geronimo/common/DeploymentException.java common/src/test/org/apache/geronimo/common/DeploymentExceptionTest.java deployment/src/java/org/apache/geronimo/deployment/Deployer.java

Author: gdamour
Date: Sun Oct 16 01:53:27 2005
New Revision: 322461

URL: http://svn.apache.org/viewcvs?rev=322461&view=rev
Log:
GERONIMO-1077 DeploymentException propagated to deployer are incomplete 
(stack + nested exceptions)


GERONIMO-1072 Better error for bad EJB QL

Propagate stack and nested exceptions to deployer. To some extent, 
GERONIMO-1072 was not valid.

Added:
    geronimo/trunk/modules/common/src/test/org/apache/geronimo/common/DeploymentExceptionTest.java
Modified:
    geronimo/trunk/modules/common/src/java/org/apache/geronimo/common/DeploymentException.java
    geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/Deployer.java

Modified: geronimo/trunk/modules/common/src/java/org/apache/geronimo/common/DeploymentException.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/common/src/java/org/apache/geronimo/common/DeploymentException.java?rev=322461&r1=322460&r2=322461&view=diff
==============================================================================
--- geronimo/trunk/modules/common/src/java/org/apache/geronimo/common/DeploymentException.java (original)
+++ geronimo/trunk/modules/common/src/java/org/apache/geronimo/common/DeploymentException.java Sun Oct 16 01:53:27 2005
@@ -23,7 +23,6 @@
  */
 public class DeploymentException extends Exception {
 
-
     public DeploymentException() {
     }
 
@@ -38,5 +37,41 @@
     public DeploymentException(String message, Throwable cause) {
         super(message, cause);
     }
+    
+    public DeploymentException cleanse() {
+        if(null != getCause()) {
+            Throwable root = this;
+            CleanseException previousEx = null;
+            CleanseException rootEx = null;
+            while (null != root) {
+                Throwable e = root.getCause();
+                CleanseException exception = new CleanseException(root.getMessage(), root.toString());
+                if (null == rootEx) {
+                    rootEx = exception;
+                }
+                exception.setStackTrace(root.getStackTrace());
+                if (null != previousEx) {
+                    previousEx.initCause(exception);
+                }
+                previousEx = exception;
+                root = e;
+            }
+            return rootEx;
+        }
 
+        return this;
+    }
+    
+    private static class CleanseException extends DeploymentException {
+        private final String toString;
+        
+        public CleanseException(String message, String toString) {
+            super(message);
+            this.toString = toString;
+        }
+        
+        public String toString() {
+            return toString;
+        }
+    }
 }

Added: geronimo/trunk/modules/common/src/test/org/apache/geronimo/common/DeploymentExceptionTest.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/common/src/test/org/apache/geronimo/common/DeploymentExceptionTest.java?rev=322461&view=auto
==============================================================================
--- geronimo/trunk/modules/common/src/test/org/apache/geronimo/common/DeploymentExceptionTest.java (added)
+++ geronimo/trunk/modules/common/src/test/org/apache/geronimo/common/DeploymentExceptionTest.java Sun Oct 16 01:53:27 2005
@@ -0,0 +1,50 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.geronimo.common;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+
+import junit.framework.TestCase;
+
+/**
+ * @version $Rev: 109898 $ $Date: 2004-12-06 05:21:47 +1100 (Mon, 06 Dec 2004) $
+ */
+public class DeploymentExceptionTest extends TestCase {
+    
+    public void testCleanse() throws Exception {
+        DeploymentException exception = new DeploymentException("message");
+        IllegalArgumentException nested1 = new IllegalArgumentException("nested1");
+        exception.initCause(nested1);
+        IllegalStateException nested2 = new IllegalStateException("nested2");
+        nested1.initCause(nested2);
+        
+        ByteArrayOutputStream expected = new ByteArrayOutputStream();
+        exception.printStackTrace(new PrintStream(expected));
+
+        ByteArrayOutputStream result = new ByteArrayOutputStream();
+        DeploymentException newEx = exception.cleanse();
+        newEx.printStackTrace(new PrintStream(result));
+
+        byte[] expectedBytes = expected.toByteArray();
+        byte[] resultBytes = result.toByteArray();
+        assertEquals(expectedBytes.length, resultBytes.length);
+        for (int i = 0; i < expectedBytes.length; i++) {
+            assertEquals(expectedBytes[i], resultBytes[i]);
+        }
+    }
+}

Modified: geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/Deployer.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/Deployer.java?rev=322461&r1=322460&r2=322461&view=diff
==============================================================================
--- geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/Deployer.java (original)
+++ geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/Deployer.java Sun Oct 16 01:53:27 2005
@@ -19,6 +19,7 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -27,7 +28,6 @@
 import java.util.jar.Attributes;
 import java.util.jar.JarFile;
 import java.util.jar.Manifest;
-import java.net.URI;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -35,16 +35,14 @@
 import org.apache.geronimo.deployment.util.DeploymentUtil;
 import org.apache.geronimo.gbean.GBeanInfo;
 import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.kernel.GBeanNotFoundException;
+import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.kernel.config.Configuration;
 import org.apache.geronimo.kernel.config.ConfigurationData;
 import org.apache.geronimo.kernel.config.ConfigurationStore;
 import org.apache.geronimo.kernel.config.InvalidConfigException;
-import org.apache.geronimo.kernel.config.Configuration;
-import org.apache.geronimo.kernel.Kernel;
-import org.apache.geronimo.kernel.GBeanNotFoundException;
-import org.apache.geronimo.system.main.CommandLineManifest;
 import org.apache.geronimo.system.configuration.ExecutableConfigurationUtil;
-
-import javax.management.MalformedObjectNameException;
+import org.apache.geronimo.system.main.CommandLineManifest;
 
 /**
  * GBean that knows how to deploy modules (by consulting available module builders)
@@ -87,21 +85,11 @@
             return deploy(planFile, moduleFile, null, true, null, null, null, null);
         } catch (DeploymentException e) {
             log.debug("Deployment failed: plan=" + planFile +", module=" + originalModuleFile, e);
-            throw cleanseDeploymentException(e);
+            throw e.cleanse();
         } finally {
             if (tmpDir != null) {
                 DeploymentUtil.recursiveDelete(tmpDir);
             }
-        }
-    }
-
-    private DeploymentException cleanseDeploymentException(DeploymentException source) {
-        if(source.getCause() != null) {
-            Throwable e = source.getCause();
-            DeploymentException newx = new DeploymentException(source.getMessage()+" caused by "+e.getMessage(), null);
-            return newx;
-        } else {
-            return source;
         }
     }