Author: sebb
Date: Mon Sep 26 11:18:30 2011
New Revision: 1175800

URL: http://svn.apache.org/viewvc?rev=1175800&view=rev
Log:
Bug 51885 - Allow a JMeter Variable as input to XPathExtractor
part 2 of fix

Modified:
    
jakarta/jmeter/trunk/src/components/org/apache/jmeter/extractor/XPathExtractor.java

Modified: 
jakarta/jmeter/trunk/src/components/org/apache/jmeter/extractor/XPathExtractor.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/components/org/apache/jmeter/extractor/XPathExtractor.java?rev=1175800&r1=1175799&r2=1175800&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/components/org/apache/jmeter/extractor/XPathExtractor.java
 (original)
+++ 
jakarta/jmeter/trunk/src/components/org/apache/jmeter/extractor/XPathExtractor.java
 Mon Sep 26 11:18:30 2011
@@ -20,13 +20,18 @@ package org.apache.jmeter.extractor;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.Serializable;
-import java.io.UnsupportedEncodingException;
 import java.io.StringWriter;
+import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
 import java.util.List;
 
 import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
 
 import org.apache.jmeter.assertions.AssertionResult;
 import org.apache.jmeter.processor.PostProcessor;
@@ -49,12 +54,6 @@ import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 import org.xml.sax.SAXException;
 
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
 //@see org.apache.jmeter.extractor.TestXPathExtractor for unit tests
 
 /**
@@ -135,12 +134,18 @@ public class XPathExtractor extends Abst
         vars.put(matchNR, "0"); // In case parse fails // $NON-NLS-1$
         vars.remove(concat(refName,"1")); // In case parse fails // $NON-NLS-1$
 
-        List<SampleResult> samples = getSampleList(previousResult);
+        List<String> matches = new ArrayList<String>();
         try{
-            List<String> matches = new ArrayList<String>();
-            for (SampleResult res : samples) {
-                Document d = parseResponse(res);
+            if (isScopeVariable()){
+                String inputString=vars.get(getVariableName());
+                Document d =  parseResponse(inputString);
                 getValuesForXPath(d,getXPathQuery(),matches);
+            } else {
+                List<SampleResult> samples = getSampleList(previousResult);
+                for (SampleResult res : samples) {
+                    Document d = parseResponse(res.getResponseDataAsString());
+                    getValuesForXPath(d,getXPathQuery(),matches);
+                }
             }
             final int matchCount = matches.size();
             vars.put(matchNR, String.valueOf(matchCount));
@@ -280,11 +285,11 @@ public class XPathExtractor extends Abst
     /**
      * Converts (X)HTML response to DOM object Tree.
      * This version cares of charset of response.
-     * @param result
+     * @param unicodeData
      * @return
      *
      */
-    private Document parseResponse(SampleResult result)
+    private Document parseResponse(String unicodeData)
       throws UnsupportedEncodingException, IOException, 
ParserConfigurationException,SAXException,TidyException
     {
       //TODO: validate contentType for reasonable types?
@@ -292,7 +297,6 @@ public class XPathExtractor extends Abst
       // NOTE: responseData encoding is server specific
       //       Therefore we do byte -> unicode -> byte conversion
       //       to ensure UTF-8 encoding as required by XPathUtil
-      String unicodeData = result.getResponseDataAsString();
       // convert unicode String -> UTF-8 bytes
       byte[] utf8data = unicodeData.getBytes("UTF-8"); // $NON-NLS-1$
       ByteArrayInputStream in = new ByteArrayInputStream(utf8data);



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to