You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2012/12/16 19:22:12 UTC
svn commit: r1422655 -
/jmeter/trunk/src/components/org/apache/jmeter/extractor/JSoupExtractor.java
Author: pmouawad
Date: Sun Dec 16 18:22:12 2012
New Revision: 1422655
URL: http://svn.apache.org/viewvc?rev=1422655&view=rev
Log:
Bug 54259 - Introduce a CSS or jquery-like based Extractor
Introduce parse caching to improve performances
Bugzilla Id: 54259
Modified:
jmeter/trunk/src/components/org/apache/jmeter/extractor/JSoupExtractor.java (contents, props changed)
Modified: jmeter/trunk/src/components/org/apache/jmeter/extractor/JSoupExtractor.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/extractor/JSoupExtractor.java?rev=1422655&r1=1422654&r2=1422655&view=diff
==============================================================================
--- jmeter/trunk/src/components/org/apache/jmeter/extractor/JSoupExtractor.java (original)
+++ jmeter/trunk/src/components/org/apache/jmeter/extractor/JSoupExtractor.java Sun Dec 16 18:22:12 2012
@@ -20,6 +20,7 @@ package org.apache.jmeter.extractor;
import java.util.List;
+import org.apache.jmeter.threads.JMeterContextService;
import org.apache.jorphan.util.JOrphanUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
@@ -38,6 +39,7 @@ public class JSoupExtractor implements E
*/
private static final long serialVersionUID = -6308012192067714191L;
+ private static final String CACHE_KEY_PREFIX = JSoupExtractor.class.getName()+"_PARSED_BODY";
/**
*
@@ -47,13 +49,23 @@ public class JSoupExtractor implements E
}
/**
- * @see org.apache.jmeter.extractor.Extractor#extract(java.lang.String, java.lang.String, int, java.lang.String, java.util.List, int, boolean)
+ * @see org.apache.jmeter.extractor.Extractor#extract(java.lang.String, java.lang.String, int, java.lang.String, java.util.List, int, String)
*/
@Override
public int extract(String expression, String attribute, int matchNumber,
String inputString, List<String> result, int found,
- boolean cacheIfPossible) {
- Document document = Jsoup.parse(inputString);
+ String cacheKey) {
+ Document document = null;
+ if (cacheKey != null) {
+ document = (Document)
+ JMeterContextService.getContext().getSamplerContext().get(CACHE_KEY_PREFIX+cacheKey);
+ if(document==null) {
+ document = Jsoup.parse(inputString);
+ JMeterContextService.getContext().getSamplerContext().put(CACHE_KEY_PREFIX+cacheKey, document);
+ }
+ } else {
+ document = Jsoup.parse(inputString);
+ }
Elements elements = document.select(expression);
int size = elements.size();
for (int i = 0; i < size; i++) {
Propchange: jmeter/trunk/src/components/org/apache/jmeter/extractor/JSoupExtractor.java
------------------------------------------------------------------------------
svn:eol-style = native