You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by se...@apache.org on 2006/03/12 14:01:48 UTC

svn commit: r385282 - in /jakarta/jmeter/branches/rel-2-1: src/components/org/apache/jmeter/assertions/XMLAssertion.java xdocs/changes.xml

Author: sebb
Date: Sun Mar 12 05:01:46 2006
New Revision: 385282

URL: http://svn.apache.org/viewcvs?rev=385282&view=rev
Log:
Bug 38840 - make XML Assertion thread-safe

Modified:
    jakarta/jmeter/branches/rel-2-1/src/components/org/apache/jmeter/assertions/XMLAssertion.java
    jakarta/jmeter/branches/rel-2-1/xdocs/changes.xml

Modified: jakarta/jmeter/branches/rel-2-1/src/components/org/apache/jmeter/assertions/XMLAssertion.java
URL: http://svn.apache.org/viewcvs/jakarta/jmeter/branches/rel-2-1/src/components/org/apache/jmeter/assertions/XMLAssertion.java?rev=385282&r1=385281&r2=385282&view=diff
==============================================================================
--- jakarta/jmeter/branches/rel-2-1/src/components/org/apache/jmeter/assertions/XMLAssertion.java (original)
+++ jakarta/jmeter/branches/rel-2-1/src/components/org/apache/jmeter/assertions/XMLAssertion.java Sun Mar 12 05:01:46 2006
@@ -1,6 +1,5 @@
-// $Header$
 /*
- * Copyright 2003-2004 The Apache Software Foundation.
+ * Copyright 2003-2006 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.
@@ -18,6 +17,7 @@
 
 package org.apache.jmeter.assertions;
 
+import java.io.IOException;
 import java.io.Serializable;
 import java.io.StringReader;
 
@@ -25,10 +25,11 @@
 import org.apache.jmeter.testelement.AbstractTestElement;
 import org.apache.jorphan.logging.LoggingManager;
 import org.apache.log.Logger;
+import org.jdom.JDOMException;
 import org.jdom.input.SAXBuilder;
 
 /**
- * Checks if the result is a well-formed XML content.
+ * Checks if the result is a well-formed XML content using jdom
  * 
  * @author <a href="mailto:gottfried@szing.at">Gottfried Szing</a>
  * @version $Revision$, $Date$
@@ -36,8 +37,12 @@
 public class XMLAssertion extends AbstractTestElement implements Serializable, Assertion {
 	private static final Logger log = LoggingManager.getLoggerForClass();
 
-	// one builder for all requests
-	private static SAXBuilder builder = null;
+	// one builder for all requests in a thread
+    private static ThreadLocal myBuilder = new ThreadLocal() {
+        protected Object initialValue() {
+            return new SAXBuilder();
+        }
+    };
 
 	/**
 	 * Returns the result of the Assertion. Here it checks wether the Sample
@@ -56,30 +61,19 @@
 		// the result data
 		String resultData = new String(getResultBody(response.getResponseData()));
 
-		// create parser like (!) a singleton
-		if (builder == null) {
-			try {
-				// This builds a document of whatever's in the given resource
-				builder = new SAXBuilder();
-			} catch (Exception e) {
-				log.error("Unable to instantiate DOM Builder", e);
-
-				result.setFailure(true);
-				result.setFailureMessage("Unable to instantiate DOM Builder");
-
-				// return with an error
-				return result;
-			}
-		}
+        SAXBuilder builder = (SAXBuilder) myBuilder.get();
 
 		try {
 			builder.build(new StringReader(resultData));
-		} catch (Exception e) {
-			log.debug("Cannot parse result content", e);
-
+		} catch (JDOMException e) {
+			log.debug("Cannot parse result content", e); // may well happen
 			result.setFailure(true);
 			result.setFailureMessage(e.getMessage());
-		}
+		} catch (IOException e) {
+            log.error("Cannot read result content", e); // should never happen
+            result.setError(true);
+            result.setFailureMessage(e.getMessage());
+        }
 
 		return result;
 	}

Modified: jakarta/jmeter/branches/rel-2-1/xdocs/changes.xml
URL: http://svn.apache.org/viewcvs/jakarta/jmeter/branches/rel-2-1/xdocs/changes.xml?rev=385282&r1=385281&r2=385282&view=diff
==============================================================================
--- jakarta/jmeter/branches/rel-2-1/xdocs/changes.xml (original)
+++ jakarta/jmeter/branches/rel-2-1/xdocs/changes.xml Sun Mar 12 05:01:46 2006
@@ -84,6 +84,7 @@
 <li>Bug 38302 - fix XPath function</li>
 <li>Bug 38748 - JDBC DataSourceElement fails with remote testing</li>
 <li>Bug 38902 - sometimes -1 seems to be returned unnecessarily for response code</li>
+<li>Bug 38840 - make XML Assertion thread-safe</li>
 </ul>	
 	
 <h4>Other changes</h4>



---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org