You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xmlrpc-auto@ws.apache.org by jo...@apache.org on 2007/03/23 05:53:19 UTC
svn commit: r521585 - in /webservices/xmlrpc/trunk:
common/src/main/java/org/apache/xmlrpc/parser/ src/changes/
tests/src/test/java/org/apache/xmlrpc/test/
Author: jochen
Date: Thu Mar 22 21:53:18 2007
New Revision: 521585
URL: http://svn.apache.org/viewvc?view=rev&rev=521585
Log:
An invalid dateTime value is now causing a more informative error message.
PR: XMLRPC-140
Modified:
webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/parser/CalendarParser.java
webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/parser/DateParser.java
webservices/xmlrpc/trunk/src/changes/changes.xml
webservices/xmlrpc/trunk/tests/src/test/java/org/apache/xmlrpc/test/ParserTest.java
Modified: webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/parser/CalendarParser.java
URL: http://svn.apache.org/viewvc/webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/parser/CalendarParser.java?view=diff&rev=521585&r1=521584&r2=521585
==============================================================================
--- webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/parser/CalendarParser.java (original)
+++ webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/parser/CalendarParser.java Thu Mar 22 21:53:18 2007
@@ -31,8 +31,15 @@
try {
super.setResult(format.parseObject(pResult.trim()));
} catch (ParseException e) {
- throw new SAXParseException("Failed to parse integer value: " + pResult,
- getDocumentLocator());
+ int offset = e.getErrorOffset();
+ final String msg;
+ if (offset == -1) {
+ msg = "Failed to parse dateTime value: " + pResult;
+ } else {
+ msg = "Failed to parse dateTime value " + pResult
+ + " at position " + e.getErrorOffset();
+ }
+ throw new SAXParseException(msg, getDocumentLocator(), e);
}
}
}
Modified: webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/parser/DateParser.java
URL: http://svn.apache.org/viewvc/webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/parser/DateParser.java?view=diff&rev=521585&r1=521584&r2=521585
==============================================================================
--- webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/parser/DateParser.java (original)
+++ webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/parser/DateParser.java Thu Mar 22 21:53:18 2007
@@ -41,8 +41,15 @@
try {
super.setResult(f.parseObject(s));
} catch (ParseException e) {
- throw new SAXParseException("Failed to parse integer value: " + pResult,
- getDocumentLocator());
+ final String msg;
+ int offset = e.getErrorOffset();
+ if (e.getErrorOffset() == -1) {
+ msg = "Failed to parse date value: " + pResult;
+ } else {
+ msg = "Failed to parse date value " + pResult
+ + " at position " + offset;
+ }
+ throw new SAXParseException(msg, getDocumentLocator(), e);
}
}
}
Modified: webservices/xmlrpc/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/webservices/xmlrpc/trunk/src/changes/changes.xml?view=diff&rev=521585&r1=521584&r2=521585
==============================================================================
--- webservices/xmlrpc/trunk/src/changes/changes.xml (original)
+++ webservices/xmlrpc/trunk/src/changes/changes.xml Thu Mar 22 21:53:18 2007
@@ -60,6 +60,10 @@
due-to="Mario Linke" due-to-email="linke.mario@web.de">
Fixed an invalid example in the "advanced" document.
</action>
+ <action dev="jochen" type="fix" issue="XMLRPC-140">
+ An invalid dateTime value is now causing a more informative
+ error message.
+ </action>
</release>
<release version="3.0.1-SNAPSHOT" date="Not yet released">
<action dev="jochen" type="fix">
Modified: webservices/xmlrpc/trunk/tests/src/test/java/org/apache/xmlrpc/test/ParserTest.java
URL: http://svn.apache.org/viewvc/webservices/xmlrpc/trunk/tests/src/test/java/org/apache/xmlrpc/test/ParserTest.java?view=diff&rev=521585&r1=521584&r2=521585
==============================================================================
--- webservices/xmlrpc/trunk/tests/src/test/java/org/apache/xmlrpc/test/ParserTest.java (original)
+++ webservices/xmlrpc/trunk/tests/src/test/java/org/apache/xmlrpc/test/ParserTest.java Thu Mar 22 21:53:18 2007
@@ -2,6 +2,9 @@
import java.io.IOException;
import java.io.StringReader;
+import java.lang.reflect.UndeclaredThrowableException;
+import java.text.ParseException;
+import java.util.TimeZone;
import junit.framework.TestCase;
@@ -11,11 +14,16 @@
import org.apache.xmlrpc.common.XmlRpcHttpRequestConfigImpl;
import org.apache.xmlrpc.common.XmlRpcStreamConfig;
import org.apache.xmlrpc.common.XmlRpcStreamRequestConfig;
+import org.apache.xmlrpc.parser.CalendarParser;
+import org.apache.xmlrpc.parser.DateParser;
import org.apache.xmlrpc.parser.XmlRpcRequestParser;
import org.apache.xmlrpc.parser.XmlRpcResponseParser;
import org.apache.xmlrpc.util.SAXParsers;
+import org.apache.xmlrpc.util.XmlRpcDateTimeDateFormat;
+import org.apache.xmlrpc.util.XmlRpcDateTimeFormat;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
import org.xml.sax.XMLReader;
@@ -112,5 +120,33 @@
assertEquals("bar", p4.getMethodName());
assertNotNull(p4.getParams());
assertTrue(p4.getParams().size() == 0);
+ }
+
+ /**
+ * Test for XMLRPC-140.
+ */
+ public void testXMLRPC140() throws Exception {
+ DateParser parser = new DateParser(new XmlRpcDateTimeFormat(){
+ private static final long serialVersionUID = 0L;
+ protected TimeZone getTimeZone() {
+ return TimeZone.getDefault();
+ }
+ }){
+ public void setResult(Object pObject){
+ try {
+ super.setResult((String) pObject);
+ } catch (SAXException e) {
+ throw new UndeclaredThrowableException(e);
+ }
+ }
+ };
+ try {
+ parser.setResult("20070316T162808Z");
+ fail("Expected exception");
+ } catch (UndeclaredThrowableException e) {
+ SAXParseException spe = (SAXParseException) e.getUndeclaredThrowable();
+ ParseException pe = (ParseException) spe.getException();
+ assertEquals(11, pe.getErrorOffset());
+ }
}
}