You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@jakarta.apache.org by se...@apache.org on 2010/04/24 19:43:27 UTC
svn commit: r937656 -
/jakarta/jmeter/trunk/src/monitor/model/org/apache/jmeter/monitor/parser/ParserImpl.java
Author: sebb
Date: Sat Apr 24 17:43:27 2010
New Revision: 937656
URL: http://svn.apache.org/viewvc?rev=937656&view=rev
Log:
Tidy up class; parse string directly rather than converting to byte[] first
Modified:
jakarta/jmeter/trunk/src/monitor/model/org/apache/jmeter/monitor/parser/ParserImpl.java
Modified: jakarta/jmeter/trunk/src/monitor/model/org/apache/jmeter/monitor/parser/ParserImpl.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/monitor/model/org/apache/jmeter/monitor/parser/ParserImpl.java?rev=937656&r1=937655&r2=937656&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/monitor/model/org/apache/jmeter/monitor/parser/ParserImpl.java (original)
+++ jakarta/jmeter/trunk/src/monitor/model/org/apache/jmeter/monitor/parser/ParserImpl.java Sat Apr 24 17:43:27 2010
@@ -18,6 +18,7 @@ package org.apache.jmeter.monitor.parser
import java.io.ByteArrayInputStream;
import java.io.IOException;
+import java.io.StringReader;
import org.xml.sax.SAXException;
import org.xml.sax.InputSource;
@@ -36,13 +37,11 @@ public abstract class ParserImpl impleme
private static final Logger log = LoggingManager.getLoggerForClass();
- private SAXParserFactory PARSERFACTORY = null;
+ private final SAXParser PARSER;
- private SAXParser PARSER = null;
+ private final MonitorHandler DOCHANDLER;
- private MonitorHandler DOCHANDLER = null;
-
- private ObjectFactory FACTORY = null;
+ private final ObjectFactory FACTORY;
/**
*
@@ -50,16 +49,20 @@ public abstract class ParserImpl impleme
public ParserImpl(ObjectFactory factory) {
super();
this.FACTORY = factory;
+ SAXParser parser = null;
+ MonitorHandler handler = null;
try {
- PARSERFACTORY = SAXParserFactory.newInstance();
- PARSER = PARSERFACTORY.newSAXParser();
- DOCHANDLER = new MonitorHandler();
- DOCHANDLER.setObjectFactory(this.FACTORY);
+ SAXParserFactory parserFactory = SAXParserFactory.newInstance();
+ parser = parserFactory.newSAXParser();
+ handler = new MonitorHandler();
+ handler.setObjectFactory(this.FACTORY);
} catch (SAXException e) {
log.error("Failed to create the parser",e);
} catch (ParserConfigurationException e) {
log.error("Failed to create the parser",e);
}
+ PARSER = parser;
+ DOCHANDLER = handler;
}
/**
@@ -90,7 +93,20 @@ public abstract class ParserImpl impleme
* @return Status
*/
public Status parseString(String content) {
- return parseBytes(content.getBytes());
+ try {
+ InputSource is = new InputSource();
+ is.setCharacterStream(new StringReader(content));
+ PARSER.parse(is, DOCHANDLER);
+ return DOCHANDLER.getContents();
+ } catch (SAXException e) {
+ log.error("Failed to parse the String",e);
+ // let bad input fail silently
+ return DOCHANDLER.getContents();
+ } catch (IOException e) { // Should never happen
+ log.error("Failed to read the String",e);
+ // let bad input fail silently
+ return DOCHANDLER.getContents();
+ }
}
/**