Author: sebb
Date: Wed May 14 07:30:30 2008
New Revision: 656289

URL: http://svn.apache.org/viewvc?rev=656289&view=rev
Log:
Use ConversionException to show location of any errors loading the test plan

Modified:
    
jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/ScriptWrapperConverter.java

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/ScriptWrapperConverter.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/ScriptWrapperConverter.java?rev=656289&r1=656288&r2=656289&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/ScriptWrapperConverter.java
 (original)
+++ 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/ScriptWrapperConverter.java
 Wed May 14 07:30:30 2008
@@ -22,6 +22,7 @@
 import org.apache.jorphan.collections.HashTree;
 
 import com.thoughtworks.xstream.mapper.Mapper;
+import com.thoughtworks.xstream.converters.ConversionException;
 import com.thoughtworks.xstream.converters.Converter;
 import com.thoughtworks.xstream.converters.MarshallingContext;
 import com.thoughtworks.xstream.converters.UnmarshallingContext;
@@ -29,7 +30,7 @@
 import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
 
 /**
- * @author mstover
+ * Handles XStream conversion of Test Scripts
  * 
  */
 public class ScriptWrapperConverter implements Converter {
@@ -90,10 +91,33 @@
                ConversionHelp.setInVersion(wrap.version);// Make sure decoding
                                                                                
                        // follows input file
                reader.moveDown();
-               wrap.testPlan = (HashTree) context.convertAnother(wrap, 
getNextType(reader));
+               // Catch errors and rethrow as ConversionException so we get 
location details
+               try {
+            wrap.testPlan = (HashTree) context.convertAnother(wrap, 
getNextType(reader));
+        } catch (NoClassDefFoundError e) {
+            throw createConversionException(e);
+        } catch (Exception e) {
+            throw createConversionException(e);
+        }
                return wrap;
        }
 
+    private ConversionException createConversionException(Throwable e) {
+        final ConversionException conversionException = new 
ConversionException(e);
+        StackTraceElement[] ste = e.getStackTrace();
+        if (ste!=null){
+            for(int i=0; i<ste.length; i++){
+                StackTraceElement top=ste[i];
+                String className=top.getClassName();
+                if (className.startsWith("org.apache.jmeter.")){
+                    conversionException.add("first-jmeter-class", 
top.toString());
+                    break;
+                }
+            }
+        }
+        return conversionException;
+    }
+
        protected Class getNextType(HierarchicalStreamReader reader) {
                String classAttribute = 
reader.getAttribute(ConversionHelp.ATT_CLASS);
                Class type;



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to