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();
+        }
     }
 
     /**