Author: sebb
Date: Sun Jul  6 13:29:22 2008
New Revision: 674343

URL: http://svn.apache.org/viewvc?rev=674343&view=rev
Log:
Detab

Modified:
    
jakarta/jmeter/trunk/src/components/org/apache/jmeter/assertions/XMLSchemaAssertion.java
    
jakarta/jmeter/trunk/src/components/org/apache/jmeter/assertions/XPathAssertion.java

Modified: 
jakarta/jmeter/trunk/src/components/org/apache/jmeter/assertions/XMLSchemaAssertion.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/components/org/apache/jmeter/assertions/XMLSchemaAssertion.java?rev=674343&r1=674342&r2=674343&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/components/org/apache/jmeter/assertions/XMLSchemaAssertion.java
 (original)
+++ 
jakarta/jmeter/trunk/src/components/org/apache/jmeter/assertions/XMLSchemaAssertion.java
 Sun Jul  6 13:29:22 2008
@@ -44,181 +44,181 @@
  * 
  */
 public class XMLSchemaAssertion extends AbstractTestElement implements 
Serializable, Assertion {
-       public static final String FILE_NAME_IS_REQUIRED = "FileName is 
required";
+    public static final String FILE_NAME_IS_REQUIRED = "FileName is required";
 
-       public static final String JAXP_SCHEMA_LANGUAGE = 
"http://java.sun.com/xml/jaxp/properties/schemaLanguage";;
+    public static final String JAXP_SCHEMA_LANGUAGE = 
"http://java.sun.com/xml/jaxp/properties/schemaLanguage";;
 
-       public static final String W3C_XML_SCHEMA = 
"http://www.w3.org/2001/XMLSchema";;
+    public static final String W3C_XML_SCHEMA = 
"http://www.w3.org/2001/XMLSchema";;
 
-       public static final String JAXP_SCHEMA_SOURCE = 
"http://java.sun.com/xml/jaxp/properties/schemaSource";;
+    public static final String JAXP_SCHEMA_SOURCE = 
"http://java.sun.com/xml/jaxp/properties/schemaSource";;
 
-       private static final Logger log = LoggingManager.getLoggerForClass();
-
-       public static final String XSD_FILENAME_KEY = 
"xmlschema_assertion_filename";
-
-       // private StringBuffer failureMessage = new StringBuffer();
-
-       /**
-        * getResult
-        * 
-        */
-       public AssertionResult getResult(SampleResult response) {
-               AssertionResult result = new AssertionResult(getName());
-               // Note: initialised with error = failure = false
-
-               byte data[] = response.getResponseData();
-               if (data.length == 0) {
-                       return result.setResultForNull();
-               }
-               String resultData = new String(getResultBody(data));
-
-               String xsdFileName = getXsdFileName();
-               if (log.isDebugEnabled()) {
-                       log.debug("xmlString: " + resultData);
-                       log.debug("xsdFileName: " + xsdFileName);
-               }
-               if (xsdFileName == null || xsdFileName.length() == 0) {
-                       result.setResultForFailure(FILE_NAME_IS_REQUIRED);
-               } else {
-                       setSchemaResult(result, resultData, xsdFileName);
-               }
-               return result;
-       }
-
-       /*
-        * TODO move to SampleResult class? Return the body of the http return.
-        */
-       private byte[] getResultBody(byte[] resultData) {
-               for (int i = 0; i < (resultData.length - 1); i++) {
-                       if (resultData[i] == '\n' && resultData[i + 1] == '\n') 
{
-                               return 
JOrphanUtils.getByteArraySlice(resultData, (i + 2), resultData.length - 1);
-                       }
-               }
-               return resultData;
-       }
-
-       public void setXsdFileName(String xmlSchemaFileName) throws 
IllegalArgumentException {
-               setProperty(XSD_FILENAME_KEY, xmlSchemaFileName);
-       }
-
-       public String getXsdFileName() {
-               return getPropertyAsString(XSD_FILENAME_KEY);
-       }
-
-       /**
-        * set Schema result
-        * 
-        * @param result
-        * @param xmlStr
-        * @param xsdFileName
-        */
-       private void setSchemaResult(AssertionResult result, String xmlStr, 
String xsdFileName) {
-               try {
-                       // boolean toReturn = true;
-
-                       // Document doc = null;
-                       DocumentBuilderFactory parserFactory = 
DocumentBuilderFactory.newInstance();
-                       parserFactory.setValidating(true);
-                       parserFactory.setNamespaceAware(true);
-                       parserFactory.setAttribute(JAXP_SCHEMA_LANGUAGE, 
W3C_XML_SCHEMA);
-                       parserFactory.setAttribute(JAXP_SCHEMA_SOURCE, 
xsdFileName);
-
-                       // create a parser:
-                       DocumentBuilder parser = 
parserFactory.newDocumentBuilder();
-                       parser.setErrorHandler(new SAXErrorHandler(result));
-
-                       // doc =
-                       parser.parse(new InputSource(new StringReader(xmlStr)));
-                       // if everything went fine then xml schema validation 
is valid
-               } catch (SAXParseException e) {
-
-                       // Only set message if error not yet flagged
-                       if (!result.isError() && !result.isFailure()) {
-                               result.setError(true);
-                               result.setFailureMessage(errorDetails(e));
-                       }
-
-               } catch (SAXException e) {
-
-                       log.warn(e.toString());
-                       result.setResultForFailure(e.getMessage());
-
-               } catch (IOException e) {
-
-                       log.warn("IO error", e);
-                       result.setResultForFailure(e.getMessage());
-
-               } catch (ParserConfigurationException e) {
-
-                       log.warn("Problem with Parser Config", e);
-                       result.setResultForFailure(e.getMessage());
-
-               }
-
-       }
-
-       // Helper method to construct SAX error details
-       private static String errorDetails(SAXParseException spe) {
-               StringBuffer str = new StringBuffer(80);
-               int i;
-               i = spe.getLineNumber();
-               if (i != -1) {
-                       str.append("line=");
-                       str.append(i);
-                       str.append(" col=");
-                       str.append(spe.getColumnNumber());
-                       str.append(" ");
-               }
-               str.append(spe.getLocalizedMessage());
-               return str.toString();
-       }
-
-       /**
-        * SAXErrorHandler class
-        */
-       private static class SAXErrorHandler implements ErrorHandler {
-               private AssertionResult result;
-
-               public SAXErrorHandler(AssertionResult result) {
-                       this.result = result;
-               }
-
-               /*
-                * Can be caused by: - failure to read XSD file - xml does not 
match XSD
-                */
-               public void error(SAXParseException exception) throws 
SAXParseException {
-
-                       String msg = "error: " + errorDetails(exception);
-                       log.debug(msg);
-                       result.setFailureMessage(msg);
-                       result.setError(true);
-                       throw exception;
-               }
-
-               /*
-                * Can be caused by: - premature end of file - non-whitespace 
content
-                * after trailer
-                */
-               public void fatalError(SAXParseException exception) throws 
SAXParseException {
-
-                       String msg = "fatal: " + errorDetails(exception);
-                       log.debug(msg);
-                       result.setFailureMessage(msg);
-                       result.setError(true);
-                       throw exception;
-               }
-
-               /*
-                * Not clear what can cause this ? conflicting versions perhaps
-                */
-               public void warning(SAXParseException exception) throws 
SAXParseException {
-
-                       String msg = "warning: " + errorDetails(exception);
-                       log.debug(msg);
-                       result.setFailureMessage(msg);
-                       // result.setError(true); // TODO is this the correct 
strategy?
-                       // throw exception; // allow assertion to pass
-
-               }
-       }
-}
\ No newline at end of file
+    private static final Logger log = LoggingManager.getLoggerForClass();
+
+    public static final String XSD_FILENAME_KEY = 
"xmlschema_assertion_filename";
+
+    // private StringBuffer failureMessage = new StringBuffer();
+
+    /**
+     * getResult
+     * 
+     */
+    public AssertionResult getResult(SampleResult response) {
+        AssertionResult result = new AssertionResult(getName());
+        // Note: initialised with error = failure = false
+
+        byte data[] = response.getResponseData();
+        if (data.length == 0) {
+            return result.setResultForNull();
+        }
+        String resultData = new String(getResultBody(data));
+
+        String xsdFileName = getXsdFileName();
+        if (log.isDebugEnabled()) {
+            log.debug("xmlString: " + resultData);
+            log.debug("xsdFileName: " + xsdFileName);
+        }
+        if (xsdFileName == null || xsdFileName.length() == 0) {
+            result.setResultForFailure(FILE_NAME_IS_REQUIRED);
+        } else {
+            setSchemaResult(result, resultData, xsdFileName);
+        }
+        return result;
+    }
+
+    /*
+     * TODO move to SampleResult class? Return the body of the http return.
+     */
+    private byte[] getResultBody(byte[] resultData) {
+        for (int i = 0; i < (resultData.length - 1); i++) {
+            if (resultData[i] == '\n' && resultData[i + 1] == '\n') {
+                return JOrphanUtils.getByteArraySlice(resultData, (i + 2), 
resultData.length - 1);
+            }
+        }
+        return resultData;
+    }
+
+    public void setXsdFileName(String xmlSchemaFileName) throws 
IllegalArgumentException {
+        setProperty(XSD_FILENAME_KEY, xmlSchemaFileName);
+    }
+
+    public String getXsdFileName() {
+        return getPropertyAsString(XSD_FILENAME_KEY);
+    }
+
+    /**
+     * set Schema result
+     * 
+     * @param result
+     * @param xmlStr
+     * @param xsdFileName
+     */
+    private void setSchemaResult(AssertionResult result, String xmlStr, String 
xsdFileName) {
+        try {
+            // boolean toReturn = true;
+
+            // Document doc = null;
+            DocumentBuilderFactory parserFactory = 
DocumentBuilderFactory.newInstance();
+            parserFactory.setValidating(true);
+            parserFactory.setNamespaceAware(true);
+            parserFactory.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
+            parserFactory.setAttribute(JAXP_SCHEMA_SOURCE, xsdFileName);
+
+            // create a parser:
+            DocumentBuilder parser = parserFactory.newDocumentBuilder();
+            parser.setErrorHandler(new SAXErrorHandler(result));
+
+            // doc =
+            parser.parse(new InputSource(new StringReader(xmlStr)));
+            // if everything went fine then xml schema validation is valid
+        } catch (SAXParseException e) {
+
+            // Only set message if error not yet flagged
+            if (!result.isError() && !result.isFailure()) {
+                result.setError(true);
+                result.setFailureMessage(errorDetails(e));
+            }
+
+        } catch (SAXException e) {
+
+            log.warn(e.toString());
+            result.setResultForFailure(e.getMessage());
+
+        } catch (IOException e) {
+
+            log.warn("IO error", e);
+            result.setResultForFailure(e.getMessage());
+
+        } catch (ParserConfigurationException e) {
+
+            log.warn("Problem with Parser Config", e);
+            result.setResultForFailure(e.getMessage());
+
+        }
+
+    }
+
+    // Helper method to construct SAX error details
+    private static String errorDetails(SAXParseException spe) {
+        StringBuffer str = new StringBuffer(80);
+        int i;
+        i = spe.getLineNumber();
+        if (i != -1) {
+            str.append("line=");
+            str.append(i);
+            str.append(" col=");
+            str.append(spe.getColumnNumber());
+            str.append(" ");
+        }
+        str.append(spe.getLocalizedMessage());
+        return str.toString();
+    }
+
+    /**
+     * SAXErrorHandler class
+     */
+    private static class SAXErrorHandler implements ErrorHandler {
+        private AssertionResult result;
+
+        public SAXErrorHandler(AssertionResult result) {
+            this.result = result;
+        }
+
+        /*
+         * Can be caused by: - failure to read XSD file - xml does not match 
XSD
+         */
+        public void error(SAXParseException exception) throws 
SAXParseException {
+
+            String msg = "error: " + errorDetails(exception);
+            log.debug(msg);
+            result.setFailureMessage(msg);
+            result.setError(true);
+            throw exception;
+        }
+
+        /*
+         * Can be caused by: - premature end of file - non-whitespace content
+         * after trailer
+         */
+        public void fatalError(SAXParseException exception) throws 
SAXParseException {
+
+            String msg = "fatal: " + errorDetails(exception);
+            log.debug(msg);
+            result.setFailureMessage(msg);
+            result.setError(true);
+            throw exception;
+        }
+
+        /*
+         * Not clear what can cause this ? conflicting versions perhaps
+         */
+        public void warning(SAXParseException exception) throws 
SAXParseException {
+
+            String msg = "warning: " + errorDetails(exception);
+            log.debug(msg);
+            result.setFailureMessage(msg);
+            // result.setError(true); // TODO is this the correct strategy?
+            // throw exception; // allow assertion to pass
+
+        }
+    }
+}

Modified: 
jakarta/jmeter/trunk/src/components/org/apache/jmeter/assertions/XPathAssertion.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/components/org/apache/jmeter/assertions/XPathAssertion.java?rev=674343&r1=674342&r2=674343&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/components/org/apache/jmeter/assertions/XPathAssertion.java
 (original)
+++ 
jakarta/jmeter/trunk/src/components/org/apache/jmeter/assertions/XPathAssertion.java
 Sun Jul  6 13:29:22 2008
@@ -46,256 +46,256 @@
  * 
  */
 public class XPathAssertion extends AbstractTestElement implements 
Serializable, Assertion {
-       private static final Logger log = LoggingManager.getLoggerForClass();
+    private static final Logger log = LoggingManager.getLoggerForClass();
 
-       // private static XPathAPI xpath = null;
+    // private static XPathAPI xpath = null;
 
-       //+ JMX file attributes
-       private static final String XPATH_KEY         = "XPath.xpath"; // 
$NON-NLS-1$
-       private static final String WHITESPACE_KEY    = "XPath.whitespace"; // 
$NON-NLS-1$
-       private static final String VALIDATE_KEY      = "XPath.validate"; // 
$NON-NLS-1$
-       private static final String TOLERANT_KEY      = "XPath.tolerant"; // 
$NON-NLS-1$
-       private static final String NEGATE_KEY        = "XPath.negate"; // 
$NON-NLS-1$
-       private static final String NAMESPACE_KEY     = "XPath.namespace"; // 
$NON-NLS-1$
-       private static final String QUIET_KEY         = "XPath.quiet"; // 
$NON-NLS-1$
-       private static final String REPORT_ERRORS_KEY = "XPath.report_errors"; 
// $NON-NLS-1$
-       private static final String SHOW_WARNINGS_KEY = "XPath.show_warnings"; 
// $NON-NLS-1$
-       //- JMX file attributes
-
-       public static final String DEFAULT_XPATH = "/";
-
-       /**
-        * Returns the result of the Assertion. Checks if the result is 
well-formed
-        * XML, and that the XPath expression is matched (or not, as the case 
may
-        * be)
-        */
-       public AssertionResult getResult(SampleResult response) {
-               // no error as default
-               AssertionResult result = new AssertionResult(getName());
-               byte[] responseData = response.getResponseData();
-               if (responseData.length == 0) {
-                       return result.setResultForNull();
-               }
-               result.setFailure(false);
-               result.setFailureMessage("");
-
-               if (log.isDebugEnabled()) {
-                       log.debug(new StringBuffer("Validation is set to 
").append(isValidating()).toString());
-                       log.debug(new StringBuffer("Whitespace is set to 
").append(isWhitespace()).toString());
-                       log.debug(new StringBuffer("Tolerant is set to 
").append(isTolerant()).toString());
-               }
+    //+ JMX file attributes
+    private static final String XPATH_KEY         = "XPath.xpath"; // 
$NON-NLS-1$
+    private static final String WHITESPACE_KEY    = "XPath.whitespace"; // 
$NON-NLS-1$
+    private static final String VALIDATE_KEY      = "XPath.validate"; // 
$NON-NLS-1$
+    private static final String TOLERANT_KEY      = "XPath.tolerant"; // 
$NON-NLS-1$
+    private static final String NEGATE_KEY        = "XPath.negate"; // 
$NON-NLS-1$
+    private static final String NAMESPACE_KEY     = "XPath.namespace"; // 
$NON-NLS-1$
+    private static final String QUIET_KEY         = "XPath.quiet"; // 
$NON-NLS-1$
+    private static final String REPORT_ERRORS_KEY = "XPath.report_errors"; // 
$NON-NLS-1$
+    private static final String SHOW_WARNINGS_KEY = "XPath.show_warnings"; // 
$NON-NLS-1$
+    //- JMX file attributes
+
+    public static final String DEFAULT_XPATH = "/";
+
+    /**
+     * Returns the result of the Assertion. Checks if the result is well-formed
+     * XML, and that the XPath expression is matched (or not, as the case may
+     * be)
+     */
+    public AssertionResult getResult(SampleResult response) {
+        // no error as default
+        AssertionResult result = new AssertionResult(getName());
+        byte[] responseData = response.getResponseData();
+        if (responseData.length == 0) {
+            return result.setResultForNull();
+        }
+        result.setFailure(false);
+        result.setFailureMessage("");
+
+        if (log.isDebugEnabled()) {
+            log.debug(new StringBuffer("Validation is set to 
").append(isValidating()).toString());
+            log.debug(new StringBuffer("Whitespace is set to 
").append(isWhitespace()).toString());
+            log.debug(new StringBuffer("Tolerant is set to 
").append(isTolerant()).toString());
+        }
 
-               Document doc = null;
+        Document doc = null;
 
         boolean isXML = JOrphanUtils.isXML(responseData);
-               
+        
         try {
-                       doc = XPathUtil.makeDocument(new 
ByteArrayInputStream(responseData), isValidating(),
-                                       isWhitespace(), isNamespace(), 
isTolerant(), isQuiet(), showWarnings() , reportErrors(), isXML);
-               } catch (SAXException e) {
-                       log.debug("Caught sax exception: " + e);
-                       result.setError(true);
-                       result.setFailureMessage(new 
StringBuffer("SAXException: ").append(e.getMessage()).toString());
-                       return result;
-               } catch (IOException e) {
-                       log.warn("Cannot parse result content", e);
-                       result.setError(true);
-                       result.setFailureMessage(new StringBuffer("IOException: 
").append(e.getMessage()).toString());
-                       return result;
-               } catch (ParserConfigurationException e) {
-                       log.warn("Cannot parse result content", e);
-                       result.setError(true);
-                       result.setFailureMessage(new 
StringBuffer("ParserConfigurationException: ").append(e.getMessage())
-                                       .toString());
-                       return result;
-               } catch (TidyException e) {                                     
        
-                       result.setError(true);
-                       result.setFailureMessage(e.getMessage());
-                       return result;
-               }
-
-               if (doc == null || doc.getDocumentElement() == null) {
-                       result.setError(true);
-                       result.setFailureMessage("Document is null, probably 
not parsable");
-                       return result;
-               }
-
-               NodeList nodeList = null;
-
-               final String pathString = getXPathString();
-               try {
-                       XObject xObject = XPathAPI.eval(doc, pathString);
-                       switch (xObject.getType()) {
-                               case XObject.CLASS_NODESET:
-                                       nodeList = xObject.nodelist();
-                                       break;
-                               case XObject.CLASS_BOOLEAN:
-                                       if (!xObject.bool()){
-                                               result.setFailure(!isNegated());
-                                               result.setFailureMessage("No 
Nodes Matched " + pathString);
-                                       }
-                                       return result;
-                               default:
-                                       result.setFailure(true);
-                                   result.setFailureMessage("Cannot 
understand: " + pathString);
-                                   return result;
-                       }
-               } catch (TransformerException e) {
-                       result.setError(true);
-                       result.setFailureMessage(
-                                       new StringBuffer("TransformerException: 
")
-                                       .append(e.getMessage())
-                                       .append(" for:")
-                                       .append(pathString)
-                                       .toString());
-                       return result;
-               }
-
-               if (nodeList == null || nodeList.getLength() == 0) {
-                       log.debug(new StringBuffer("nodeList null no match  
").append(pathString).toString());
-                       result.setFailure(!isNegated());
-                       result.setFailureMessage("No Nodes Matched " + 
pathString);
-                       return result;
-               }
-               log.debug("nodeList length " + nodeList.getLength());
-               if (log.isDebugEnabled() & !isNegated()) {
-                       for (int i = 0; i < nodeList.getLength(); i++){
-                           log.debug(new 
StringBuffer("nodeList[").append(i).append("] 
").append(nodeList.item(i)).toString());
-                       }
-               }
-               result.setFailure(isNegated());
-               if (isNegated()) {
-                   result.setFailureMessage("Specified XPath was found... Turn 
off negate if this is not desired");
-               }
-               return result;
-       }
-
-       /**
-        * Get The XPath String that will be used in matching the document
-        * 
-        * @return String xpath String
-        */
-       public String getXPathString() {
-               return getPropertyAsString(XPATH_KEY, DEFAULT_XPATH);
-       }
-
-       /**
-        * Set the XPath String this will be used as an xpath
-        * 
-        * @param xpath
-        *            String
-        */
-       public void setXPathString(String xpath) {
-               setProperty(new StringProperty(XPATH_KEY, xpath));
-       }
-
-       /**
-        * Set whether to ignore element whitespace
-        * 
-        * @param whitespace
-        */
-       public void setWhitespace(boolean whitespace) {
-               setProperty(new BooleanProperty(WHITESPACE_KEY, whitespace));
-       }
-
-       /**
-        * Set use validation
-        * 
-        * @param validate
-        */
-       public void setValidating(boolean validate) {
-               setProperty(new BooleanProperty(VALIDATE_KEY, validate));
-       }
-
-       /**
-        * Set whether this is namespace aware
-        * 
-        * @param namespace
-        */
-       public void setNamespace(boolean namespace) {
-               setProperty(new BooleanProperty(NAMESPACE_KEY, namespace));
-       }
-
-       /**
-        * Set tolerant mode if required
-        * 
-        * @param tolerant
-        *            true/false
-        */
-       public void setTolerant(boolean tolerant) {
-               setProperty(new BooleanProperty(TOLERANT_KEY, tolerant));
-       }
-
-       public void setNegated(boolean negate) {
-               setProperty(new BooleanProperty(NEGATE_KEY, negate));
-       }
-
-       /**
-        * Is this whitepsace ignored.
-        * 
-        * @return boolean
-        */
-       public boolean isWhitespace() {
-               return getPropertyAsBoolean(WHITESPACE_KEY, false);
-       }
-
-       /**
-        * Is this validating
-        * 
-        * @return boolean
-        */
-       public boolean isValidating() {
-               return getPropertyAsBoolean(VALIDATE_KEY, false);
-       }
-
-       /**
-        * Is this namespace aware?
-        * 
-        * @return boolean
-        */
-       public boolean isNamespace() {
-               return getPropertyAsBoolean(NAMESPACE_KEY, false);
-       }
-
-       /**
-        * Is this using tolerant mode?
-        * 
-        * @return boolean
-        */
-       public boolean isTolerant() {
-               return getPropertyAsBoolean(TOLERANT_KEY, false);
-       }
-
-       /**
-        * Negate the XPath test, that is return true if something is not found.
-        * 
-        * @return boolean negated
-        */
-       public boolean isNegated() {
-               return getPropertyAsBoolean(NEGATE_KEY, false);
-       }
-
-       public void setReportErrors(boolean val) {
-           setProperty(REPORT_ERRORS_KEY, val, false);
-       }
-       
-       public boolean reportErrors() {
-               return getPropertyAsBoolean(REPORT_ERRORS_KEY, false);
-       }
-       
-       public void setShowWarnings(boolean val) {
-           setProperty(SHOW_WARNINGS_KEY, val, false);
-       }
-       
-       public boolean showWarnings() {
-               return getPropertyAsBoolean(SHOW_WARNINGS_KEY, false);
-       }
-       
-       public void setQuiet(boolean val) {
-           setProperty(QUIET_KEY, val, true);
-       }
-       
-       public boolean isQuiet() {
-               return getPropertyAsBoolean(QUIET_KEY, true);
-       }
-}
\ No newline at end of file
+            doc = XPathUtil.makeDocument(new 
ByteArrayInputStream(responseData), isValidating(),
+                    isWhitespace(), isNamespace(), isTolerant(), isQuiet(), 
showWarnings() , reportErrors(), isXML);
+        } catch (SAXException e) {
+            log.debug("Caught sax exception: " + e);
+            result.setError(true);
+            result.setFailureMessage(new StringBuffer("SAXException: 
").append(e.getMessage()).toString());
+            return result;
+        } catch (IOException e) {
+            log.warn("Cannot parse result content", e);
+            result.setError(true);
+            result.setFailureMessage(new StringBuffer("IOException: 
").append(e.getMessage()).toString());
+            return result;
+        } catch (ParserConfigurationException e) {
+            log.warn("Cannot parse result content", e);
+            result.setError(true);
+            result.setFailureMessage(new 
StringBuffer("ParserConfigurationException: ").append(e.getMessage())
+                    .toString());
+            return result;
+        } catch (TidyException e) {                     
+            result.setError(true);
+            result.setFailureMessage(e.getMessage());
+            return result;
+        }
+
+        if (doc == null || doc.getDocumentElement() == null) {
+            result.setError(true);
+            result.setFailureMessage("Document is null, probably not 
parsable");
+            return result;
+        }
+
+        NodeList nodeList = null;
+
+        final String pathString = getXPathString();
+        try {
+            XObject xObject = XPathAPI.eval(doc, pathString);
+            switch (xObject.getType()) {
+                case XObject.CLASS_NODESET:
+                    nodeList = xObject.nodelist();
+                    break;
+                case XObject.CLASS_BOOLEAN:
+                    if (!xObject.bool()){
+                        result.setFailure(!isNegated());
+                        result.setFailureMessage("No Nodes Matched " + 
pathString);
+                    }
+                    return result;
+                default:
+                    result.setFailure(true);
+                    result.setFailureMessage("Cannot understand: " + 
pathString);
+                    return result;
+            }
+        } catch (TransformerException e) {
+            result.setError(true);
+            result.setFailureMessage(
+                    new StringBuffer("TransformerException: ")
+                    .append(e.getMessage())
+                    .append(" for:")
+                    .append(pathString)
+                    .toString());
+            return result;
+        }
+
+        if (nodeList == null || nodeList.getLength() == 0) {
+            log.debug(new StringBuffer("nodeList null no match  
").append(pathString).toString());
+            result.setFailure(!isNegated());
+            result.setFailureMessage("No Nodes Matched " + pathString);
+            return result;
+        }
+        log.debug("nodeList length " + nodeList.getLength());
+        if (log.isDebugEnabled() & !isNegated()) {
+            for (int i = 0; i < nodeList.getLength(); i++){
+                log.debug(new StringBuffer("nodeList[").append(i).append("] 
").append(nodeList.item(i)).toString());
+            }
+        }
+        result.setFailure(isNegated());
+        if (isNegated()) {
+            result.setFailureMessage("Specified XPath was found... Turn off 
negate if this is not desired");
+        }
+        return result;
+    }
+
+    /**
+     * Get The XPath String that will be used in matching the document
+     * 
+     * @return String xpath String
+     */
+    public String getXPathString() {
+        return getPropertyAsString(XPATH_KEY, DEFAULT_XPATH);
+    }
+
+    /**
+     * Set the XPath String this will be used as an xpath
+     * 
+     * @param xpath
+     *            String
+     */
+    public void setXPathString(String xpath) {
+        setProperty(new StringProperty(XPATH_KEY, xpath));
+    }
+
+    /**
+     * Set whether to ignore element whitespace
+     * 
+     * @param whitespace
+     */
+    public void setWhitespace(boolean whitespace) {
+        setProperty(new BooleanProperty(WHITESPACE_KEY, whitespace));
+    }
+
+    /**
+     * Set use validation
+     * 
+     * @param validate
+     */
+    public void setValidating(boolean validate) {
+        setProperty(new BooleanProperty(VALIDATE_KEY, validate));
+    }
+
+    /**
+     * Set whether this is namespace aware
+     * 
+     * @param namespace
+     */
+    public void setNamespace(boolean namespace) {
+        setProperty(new BooleanProperty(NAMESPACE_KEY, namespace));
+    }
+
+    /**
+     * Set tolerant mode if required
+     * 
+     * @param tolerant
+     *            true/false
+     */
+    public void setTolerant(boolean tolerant) {
+        setProperty(new BooleanProperty(TOLERANT_KEY, tolerant));
+    }
+
+    public void setNegated(boolean negate) {
+        setProperty(new BooleanProperty(NEGATE_KEY, negate));
+    }
+
+    /**
+     * Is this whitepsace ignored.
+     * 
+     * @return boolean
+     */
+    public boolean isWhitespace() {
+        return getPropertyAsBoolean(WHITESPACE_KEY, false);
+    }
+
+    /**
+     * Is this validating
+     * 
+     * @return boolean
+     */
+    public boolean isValidating() {
+        return getPropertyAsBoolean(VALIDATE_KEY, false);
+    }
+
+    /**
+     * Is this namespace aware?
+     * 
+     * @return boolean
+     */
+    public boolean isNamespace() {
+        return getPropertyAsBoolean(NAMESPACE_KEY, false);
+    }
+
+    /**
+     * Is this using tolerant mode?
+     * 
+     * @return boolean
+     */
+    public boolean isTolerant() {
+        return getPropertyAsBoolean(TOLERANT_KEY, false);
+    }
+
+    /**
+     * Negate the XPath test, that is return true if something is not found.
+     * 
+     * @return boolean negated
+     */
+    public boolean isNegated() {
+        return getPropertyAsBoolean(NEGATE_KEY, false);
+    }
+
+    public void setReportErrors(boolean val) {
+        setProperty(REPORT_ERRORS_KEY, val, false);
+    }
+    
+    public boolean reportErrors() {
+        return getPropertyAsBoolean(REPORT_ERRORS_KEY, false);
+    }
+    
+    public void setShowWarnings(boolean val) {
+        setProperty(SHOW_WARNINGS_KEY, val, false);
+    }
+    
+    public boolean showWarnings() {
+        return getPropertyAsBoolean(SHOW_WARNINGS_KEY, false);
+    }
+    
+    public void setQuiet(boolean val) {
+        setProperty(QUIET_KEY, val, true);
+    }
+    
+    public boolean isQuiet() {
+        return getPropertyAsBoolean(QUIET_KEY, true);
+    }
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to