CVS Update: xmlpull-api-v1/src/java/tests/org/xmlpull/v1/tests
Aleksander Andrzej Slominski <[email protected]>
| Newsgroups | gmane.text.xml.xmlpull.devel |
|---|---|
| Message-ID | <[email protected]> |
aslom 02/10/12 17:17:59
Modified: doc changes.html
src/java/api/org/xmlpull/v1 XmlPullParser.java
XmlSerializer.java
src/java/tests/org/xmlpull/v1/tests TestMisc.java
TestSerialize.java TestSerializeWithNs.java
Log:
added to XmlSerialzier three new utility methods:
getDepth(), getName(), and getNamespace()
to allows intelligent closing of serialized output for example
when writing error/fault information into serialized XML stream
from inside exception handler
Revision Changes Path
1.39 +6 -1 xmlpull-api-v1/doc/changes.html
Index: changes.html
===================================================================
RCS file: /l/extreme/cvspub/xmlpull-api-v1/doc/changes.html,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -b -t -w -r1.38 -r1.39
--- changes.html 2002/10/10 06:57:59 1.38
+++ changes.html 2002/10/12 22:17:58 1.39
@@ -17,7 +17,12 @@
<h3>IN PROGRESS INTERIM RELEASE: </h3>
<h3><a name="XMLPULL_1_1_2"></a>2002-09 (XMLPULL_1_1_2)</h3>
-<ul>
+<ul>added to XmlSerialzier three new utility methods:
+getDepth(), getName(), and getNamespace()
+to allows intelligent closing of serialized output for example
+when writing error/fault information into serialized XML stream
+from inside exception handler
+
<li><b>NOTE:</b> <b>potentially backward incompatible change to nextToken</b>():
XMLDecl (<?xml ... ?>) will no longer be reported as PROCESSING_INSTRUCTION
but instead content of XMLDecl is made available as set of properties
1.71 +0 -1 xmlpull-api-v1/src/java/api/org/xmlpull/v1/XmlPullParser.java
Index: XmlPullParser.java
===================================================================
RCS file: /l/extreme/cvspub/xmlpull-api-v1/src/java/api/org/xmlpull/v1/XmlPullParser.java,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -b -t -w -r1.70 -r1.71
--- XmlPullParser.java 2002/09/11 16:55:42 1.70
+++ XmlPullParser.java 2002/10/12 22:17:59 1.71
@@ -621,7 +621,6 @@
* </foobar> 2
* </root> 1
* <!-- outside --> 0
- * </pre>
* </pre>
*/
public int getDepth();
1.11 +31 -0 xmlpull-api-v1/src/java/api/org/xmlpull/v1/XmlSerializer.java
Index: XmlSerializer.java
===================================================================
RCS file: /l/extreme/cvspub/xmlpull-api-v1/src/java/api/org/xmlpull/v1/XmlSerializer.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -t -w -r1.10 -r1.11
--- XmlSerializer.java 2002/09/19 23:33:13 1.10
+++ XmlSerializer.java 2002/10/12 22:17:59 1.11
@@ -156,6 +156,37 @@
throws IllegalArgumentException;
/**
+ * Returns the current depth of the element.
+ * Outside the root element, the depth is 0. The
+ * depth is incremented by 1 when startTag() is called.
+ * The depth is decremented after the call to endTag()
+ * event was observed.
+ *
+ * <pre>
+ * <!-- outside --> 0
+ * <root> 1
+ * sometext 1
+ * <foobar> 2
+ * </foobar> 2
+ * </root> 1
+ * <!-- outside --> 0
+ * </pre>
+ */
+ public int getDepth();
+
+ /**
+ * Returns the namespace URI of the current element as set by startTag().
+ */
+ public String getNamespace ();
+
+ /**
+ * Returns the name of the current element as set by startTag().
+ * It can only be null before first call to startTag()
+ * or when last endTag() is called to close first startTag().
+ */
+ public String getName();
+
+ /**
* Writes a start tag with the given namespace and name.
* If there is no prefix defined for the given namespace,
* a prefix will be defined automatically.
1.15 +3 -1 xmlpull-api-v1/src/java/tests/org/xmlpull/v1/tests/TestMisc.java
Index: TestMisc.java
===================================================================
RCS file: /l/extreme/cvspub/xmlpull-api-v1/src/java/tests/org/xmlpull/v1/tests/TestMisc.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -t -w -r1.14 -r1.15
--- TestMisc.java 2002/10/10 06:58:00 1.14
+++ TestMisc.java 2002/10/12 22:17:59 1.15
@@ -371,7 +371,7 @@
public void testRoundtripNext() throws Exception {
// check that entiy reference is reported in start tag as unexpanded when roundtrip is enabled
final String SAMPLE_XML =
- "<foo attr=\"baz & bar\"/>";
+ "<foo attEol='a\r\nv\n\ra\n\r\r\nio\rn\nica' attr=\"baz & bar\"/>";
XmlPullParser pp = factory.newPullParser();
assertEquals(true, pp.getFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES));
@@ -388,6 +388,8 @@
pp.next();
String attrValue = pp.getAttributeValue(pp.NO_NAMESPACE, "attr");
assertEquals("baz & bar", attrValue);
+ String attEolValue = pp.getAttributeValue(pp.NO_NAMESPACE, "attEol");
+ assertEquals("a v a io n ica", attEolValue);
if(roundtripSupported) {
String text = pp.getText();
assertEquals(SAMPLE_XML, text);
1.4 +36 -0 xmlpull-api-v1/src/java/tests/org/xmlpull/v1/tests/TestSerialize.java
Index: TestSerialize.java
===================================================================
RCS file: /l/extreme/cvspub/xmlpull-api-v1/src/java/tests/org/xmlpull/v1/tests/TestSerialize.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -t -w -r1.3 -r1.4
--- TestSerialize.java 2002/08/28 04:32:57 1.3
+++ TestSerialize.java 2002/10/12 22:17:59 1.4
@@ -138,16 +138,52 @@
// one step further - it has an attribute and content ...
StringWriter sw = new StringWriter();
+
+ assertEquals(0, ser.getDepth());
ser.setOutput(sw);
+ assertEquals(0, ser.getDepth());
+
ser.startDocument(null, null);
+ assertEquals(0, ser.getDepth());
+ assertEquals(null, ser.getNamespace());
+ assertEquals(null, ser.getName());
+
ser.startTag(null, "foo");
+ assertEquals(1, ser.getDepth());
+ assertEquals(null, ser.getNamespace());
+ assertEquals("foo", ser.getName());
+
ser.attribute(null, "attrName", "attrVal");
+ assertEquals(1, ser.getDepth());
+ assertEquals(null, ser.getNamespace());
+ assertEquals("foo", ser.getName());
+
ser.text("bar");
+ assertEquals(1, ser.getDepth());
+ assertEquals(null, ser.getNamespace());
+ assertEquals("foo", ser.getName());
+
ser.startTag("", "p:t");
+ assertEquals(2, ser.getDepth());
+ assertEquals("", ser.getNamespace());
+ assertEquals("p:t", ser.getName());
+
ser.text("\n\t ");
+
ser.endTag("", "p:t");
+ assertEquals(1, ser.getDepth());
+ assertEquals(null, ser.getNamespace());
+ assertEquals("foo", ser.getName());
+
ser.endTag(null, "foo");
+ assertEquals(0, ser.getDepth());
+ assertEquals(null, ser.getNamespace());
+ assertEquals(null, ser.getName());
+
ser.endDocument();
+ assertEquals(0, ser.getDepth());
+ assertEquals(null, ser.getNamespace());
+ assertEquals(null, ser.getName());
//xpp.setInput(new StringReader("<foo attrName='attrVal'>bar<p:t>\r\n\t </p:t></foo>"));
String serialized = sw.toString();
1.12 +51 -3 xmlpull-api-v1/src/java/tests/org/xmlpull/v1/tests/TestSerializeWithNs.java
Index: TestSerializeWithNs.java
===================================================================
RCS file: /l/extreme/cvspub/xmlpull-api-v1/src/java/tests/org/xmlpull/v1/tests/TestSerializeWithNs.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -t -w -r1.11 -r1.12
--- TestSerializeWithNs.java 2002/10/10 06:58:00 1.11
+++ TestSerializeWithNs.java 2002/10/12 22:17:59 1.12
@@ -169,8 +169,17 @@
StringWriter sw = new StringWriter();
ser.setOutput(sw);
+ assertEquals(0, ser.getDepth());
+ assertEquals(null, ser.getNamespace());
+ assertEquals(null, ser.getName());
+
// all comments etc
ser.startDocument(null, Boolean.TRUE);
+ assertEquals(0, ser.getDepth());
+ assertEquals(null, ser.getNamespace());
+ assertEquals(null, ser.getName());
+
+
final String docdecl = " foo [\n"+
"<!ELEMENT foo (#PCDATA|bar)* >\n"+
"<!ELEMENT pbar (#PCDATA) >\n"
@@ -179,21 +188,60 @@
ser.processingInstruction("pi test");
final String iws = "\n\t";
ser.ignorableWhitespace(iws);
+
+ assertEquals(0, ser.getDepth());
+ assertEquals(null, ser.getNamespace());
+ assertEquals(null, ser.getName());
+
ser.startTag(null, "foo");
+ assertEquals(1, ser.getDepth());
+ assertEquals(null, ser.getNamespace());
+ assertEquals("foo", ser.getName());
+
+
//check escaping & < > " '
final String attrVal = "attrVal&<>\"''&";
//final String attrVal = "attrVal&;";
ser.attribute(null, "attrName", attrVal);
+
+ assertEquals(1, ser.getDepth());
+ assertEquals(null, ser.getNamespace());
+ assertEquals("foo", ser.getName());
+
ser.entityRef("amp");
final String cdsect = "hello<test>\"test";
ser.cdsect(cdsect);
+
+ ser.setPrefix("ns1", "usri2");
+
+ assertEquals(1, ser.getDepth());
+ assertEquals(null, ser.getNamespace());
+ assertEquals("foo", ser.getName());
+
ser.startTag("uri1", "bar");
+ assertEquals(2, ser.getDepth());
+ assertEquals("uri1", ser.getNamespace());
+ assertEquals("bar", ser.getName());
+
final String text = "test\n\ntest";
char[] buf = text.toCharArray();
ser.text(buf, 0, buf.length);
+
final String comment = "comment B- ";
ser.comment(comment);
+ assertEquals(2, ser.getDepth());
+ assertEquals("uri1", ser.getNamespace());
+ assertEquals("bar", ser.getName());
+
+ assertEquals(2, ser.getDepth());
+ assertEquals("uri1", ser.getNamespace());
+ assertEquals("bar", ser.getName());
+
+
ser.endDocument(); // should close unclosed foo and bar start tag
+ assertEquals(0, ser.getDepth());
+ assertEquals(null, ser.getNamespace());
+ assertEquals(null, ser.getName());
// -- now check that we get back what we serialized ...
@@ -232,16 +280,16 @@
assertEquals(false, xpp.isWhitespace());
xpp.nextToken();
- checkParserStateNs(xpp, 2, xpp.START_TAG, 1, "uri1", "bar", false, 0);
+ checkParserStateNs(xpp, 2, xpp.START_TAG, 2, "uri1", "bar", false, 0);
String gotText = nextTokenGathered(xpp, xpp.TEXT, false);
assertEquals(printable(text), printable(gotText));
//xpp.nextToken();
- checkParserStateNs(xpp, 2, xpp.COMMENT, null, 1, null, null, comment, false, -1);
+ checkParserStateNs(xpp, 2, xpp.COMMENT, null, 2, null, null, comment, false, -1);
xpp.nextToken();
- checkParserStateNs(xpp, 2, xpp.END_TAG, 1, "uri1", "bar", false, -1);
+ checkParserStateNs(xpp, 2, xpp.END_TAG, 2, "uri1", "bar", false, -1);
xpp.nextToken();
checkParserStateNs(xpp, 1, xpp.END_TAG, 0, "", "foo", false, -1);