CVS Update: xmlpull-api-v1/src/java/tests/org/xmlpull/v1/tests

Aleksander Andrzej Slominski <[email protected]> Mon, 19 May 2003 09:43:04 -0500 (EST)
Newsgroups gmane.text.xml.xmlpull.devel
Message-ID <[email protected]>
aslom       03/05/19 09:43:04

  Modified:    addons/java/wrapper/src/org/xmlpull/v1/wrapper/classic
                        StaticXmlSerializerWrapper.java
               addons/java/wrapper/tests/org/xmlpull/v1/wrapper/junit
                        TestXmlPullWrapper.java
               doc      addons.html
               src/java/samples Roundtrip.java
               src/java/tests/org/xmlpull/v1/tests TestSerializeWithNs.java
  Log:
  fixed XmlSerializerWrapper.event() to correctly print all namespace declarations
  updated tests to check for it and to check that setPrefix(null, ...) is supported and equivalent to setPrefix("", ...)
  
  Revision  Changes    Path
  1.6       +4 -2      xmlpull-api-v1/addons/java/wrapper/src/org/xmlpull/v1/wrapper/classic/StaticXmlSerializerWrapper.java
  
  Index: StaticXmlSerializerWrapper.java
  ===================================================================
  RCS file: /l/extreme/cvspub/xmlpull-api-v1/addons/java/wrapper/src/org/xmlpull/v1/wrapper/classic/StaticXmlSerializerWrapper.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -b -t -w -r1.5 -r1.6
  --- StaticXmlSerializerWrapper.java	18 May 2003 13:21:15 -0000	1.5
  +++ StaticXmlSerializerWrapper.java	19 May 2003 14:43:03 -0000	1.6
  @@ -254,9 +254,11 @@
       private void writeStartTag(XmlPullParser pp) throws XmlPullParserException, IOException {
           if (!pp.getFeature (XmlPullParser.FEATURE_REPORT_NAMESPACE_ATTRIBUTES)) {
               for (int i = pp.getNamespaceCount (pp.getDepth ()-1);
  -                 i < pp.getNamespaceCount (pp.getDepth ())-1; i++)
  +                 i < pp.getNamespaceCount (pp.getDepth ()); i++)
               {
  -                setPrefix(pp.getNamespacePrefix (i), pp.getNamespaceUri (i));
  +                String prefix = pp.getNamespacePrefix(i);
  +                String ns = pp.getNamespaceUri(i);
  +                setPrefix(prefix, ns);
               }
           }
           startTag(pp.getNamespace(), pp.getName());
  
  
  
  1.4       +45 -1     xmlpull-api-v1/addons/java/wrapper/tests/org/xmlpull/v1/wrapper/junit/TestXmlPullWrapper.java
  
  Index: TestXmlPullWrapper.java
  ===================================================================
  RCS file: /l/extreme/cvspub/xmlpull-api-v1/addons/java/wrapper/tests/org/xmlpull/v1/wrapper/junit/TestXmlPullWrapper.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -b -t -w -r1.3 -r1.4
  --- TestXmlPullWrapper.java	19 May 2003 03:28:27 -0000	1.3
  +++ TestXmlPullWrapper.java	19 May 2003 14:43:03 -0000	1.4
  @@ -60,7 +60,7 @@
           xs.endDocument();
   
           String s = sw.toString();
  -        System.out.println(getClass()+" s="+s);
  +        //System.out.println(getClass()+" s="+s);
           XmlPullParserWrapper pw = wrapperFactory.newPullParserWrapper();
           pw.setInput(new StringReader(s));
           pw.nextStartTag("test");
  @@ -71,6 +71,50 @@
           assertTrue(pw.matches(XmlPullParser.END_TAG, null, "hello"));
           pw.nextEndTag("test");
       }
  +
  +
  +
  +    public void testSerializeEvent() throws IOException, XmlPullParserException
  +    {
  +
  +        //final String XML ="<html xmlns=\"http://www.w3.org/1999/xhtml\"><body /></html>";
  +        final String NS = "http://exmaple.com/foofoo";
  +        final String XHTML_NS = "http://www.w3.org/1999/xhtml";
  +        final String XML = "<m:blog  xmlns:m='"+NS+"' xmlns='"+XHTML_NS+"'><html /></m:blog>";
  +
  +        XmlPullWrapperFactory wf = XmlPullWrapperFactory.newInstance();
  +        wf.setNamespaceAware(true);
  +
  +        XmlPullParserWrapper pp = wf.newPullParserWrapper();
  +        pp.setInput( new StringReader(XML) );
  +
  +        XmlSerializerWrapper ser = wf.newSerializerWrapper();
  +        StringWriter sw = new StringWriter();
  +        ser.setOutput(sw);
  +        //ser.setCurrentNamespaceForElements("http://www.w3.org/1999/xhtml");
  +        //ser.startTag("p").attribute("class", "abstract").text("Hello");
  +        //ser.endTag("p");
  +
  +        while (pp.nextToken() != XmlPullParser.END_DOCUMENT) {
  +            ser.event(pp);
  +        }
  +        //System.out.println(getClass()+" sw="+sw);
  +        String s = sw.toString();
  +        pp.setInput(new StringReader( s ));
  +        //assertEquals(
  +
  +        pp.nextStartTag(NS, "blog");
  +        int start = pp.getNamespaceCount(pp.getDepth() - 1);
  +        int end = pp.getNamespaceCount(pp.getDepth());
  +        assertEquals(2, end - start);
  +        assertEquals("m", pp.getNamespacePrefix(start));
  +        assertEquals(NS, pp.getNamespaceUri(start));
  +        assertEquals(null, pp.getNamespacePrefix(start+1));
  +        assertEquals(XHTML_NS, pp.getNamespaceUri(start+1));
  +        pp.nextStartTag(XHTML_NS, "html");
  +
  +    }
  +
   
       public void testPI() throws IOException, XmlPullParserException {
           final String PI_TARGET = "xml-stylesheet";
  
  
  
  1.7       +3 -3      xmlpull-api-v1/doc/addons.html
  
  Index: addons.html
  ===================================================================
  RCS file: /l/extreme/cvspub/xmlpull-api-v1/doc/addons.html,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -b -t -w -r1.6 -r1.7
  --- addons.html	18 May 2003 13:49:30 -0000	1.6
  +++ addons.html	19 May 2003 14:43:03 -0000	1.7
  @@ -33,9 +33,9 @@
   <p>Here is example usage:</p>
   <pre>import org.xmlpull.v1.wrapper.*;
   
  -XmlPullWrapperFactory wrapper = XmlPullWrapperFactory.newInstance();
  +XmlPullWrapperFactory wf = XmlPullWrapperFactory.newInstance();
   
  -XmlPullParserWrapper pw = wrapper.newPullWrapper();
  +XmlPullParserWrapper pw = wf.newPullParserWrapper();
   pw.setInput( ... );
   pw.require(XmlPullParser.START_TAG, ..., ...);
   pw.skipSubTree();
  @@ -265,7 +265,7 @@
   
   </p><hr>
   <font size="-1">
  -Last modified $Id: addons.html,v 1.6 2003/05/18 13:49:30 aslom Exp $
  +Last modified $Id: addons.html,v 1.7 2003/05/19 14:43:03 aslom Exp $
   </font>
   
   <!--extra space at bottom for hyperlinks #anchors to work -->
  
  
  
  1.11      +14 -15    xmlpull-api-v1/src/java/samples/Roundtrip.java
  
  Index: Roundtrip.java
  ===================================================================
  RCS file: /l/extreme/cvspub/xmlpull-api-v1/src/java/samples/Roundtrip.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -b -t -w -r1.10 -r1.11
  --- Roundtrip.java	18 Feb 2003 19:48:11 -0000	1.10
  +++ Roundtrip.java	19 May 2003 14:43:03 -0000	1.11
  @@ -20,26 +20,23 @@
   public class Roundtrip {
       //private static final String FEATURE_XML_ROUNDTRIP=
       //    "http://xmlpull.org/v1/doc/features.html#xml-roundtrip";
  -    protected final static String PROPERTY_XMLDECL_STANDALONE =
  +    private final static String PROPERTY_XMLDECL_STANDALONE =
           "http://xmlpull.org/v1/doc/features.html#xmldecl-standalone";
   
  -    XmlPullParser parser;
  -    XmlSerializer serializer;
  +    private XmlPullParser parser;
  +    private XmlSerializer serializer;
   
  -    public Roundtrip (XmlPullParser parser, XmlSerializer serializer) {
  +    private Roundtrip (XmlPullParser parser, XmlSerializer serializer) {
           this.parser = parser;
           this.serializer = serializer;
       }
   
  -    public void writeStartTag () throws XmlPullParserException, IOException {
  +    private void writeStartTag () throws XmlPullParserException, IOException {
           //check forcase when feature xml roundtrip is supported
           //if (parser.getFeature (FEATURE_XML_ROUNDTRIP)) {
  -        //TODO: how to do pass through string with actual start tag in getText()
  -        //return;
  -        //}
           if (!parser.getFeature (XmlPullParser.FEATURE_REPORT_NAMESPACE_ATTRIBUTES)) {
               for (int i = parser.getNamespaceCount (parser.getDepth ()-1);
  -                 i < parser.getNamespaceCount (parser.getDepth ())-1; i++) {
  +                 i <= parser.getNamespaceCount (parser.getDepth ())-1; i++) {
                   serializer.setPrefix
                       (parser.getNamespacePrefix (i),
                        parser.getNamespaceUri (i));
  @@ -57,7 +54,7 @@
       }
   
   
  -    public void writeToken (int eventType) throws XmlPullParserException, IOException {
  +    private void writeToken (int eventType) throws XmlPullParserException, IOException {
           switch (eventType) {
               case XmlPullParser.START_DOCUMENT:
                   //use Boolean.TRUE to make it standalone
  @@ -109,7 +106,7 @@
           }
       }
   
  -    public void roundTrip () throws XmlPullParserException, IOException {
  +    private void roundTrip() throws XmlPullParserException, IOException {
           parser.nextToken(); // read first token
           writeToken (XmlPullParser.START_DOCUMENT);  // write optional XMLDecl if present
           while (parser.getEventType () != XmlPullParser.END_DOCUMENT) {
  @@ -119,15 +116,17 @@
           writeToken (XmlPullParser.END_DOCUMENT);
       }
   
  +
       public static void main(String[] args) throws Exception {
           //for (int i = 0; i < args.length; i++)
  +        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
  +        factory.setNamespaceAware(true);
           for (int i = 0; i < 1; i++)
           {
  -            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
               XmlPullParser pp = factory.newPullParser();
  -            XmlSerializer serializer = factory.newSerializer();
  -
               pp.setInput(new java.net.URL(args[ i ]).openStream(), null);
  +
  +            XmlSerializer serializer = factory.newSerializer();
               serializer.setOutput( System.out, null);
   
               (new Roundtrip(pp, serializer)).roundTrip();
  
  
  
  1.17      +25 -1     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.16
  retrieving revision 1.17
  diff -u -b -t -w -r1.16 -r1.17
  --- TestSerializeWithNs.java	3 May 2003 06:37:45 -0000	1.16
  +++ TestSerializeWithNs.java	19 May 2003 14:43:04 -0000	1.17
  @@ -644,9 +644,33 @@
           return s;
       }
   
  -    //setPrefix check that prefix is not duplicated ...
  +    public void testSetPrefix(String prefix) throws Exception {
  +        XmlSerializer ser = factory.newSerializer();
  +        StringWriter sw = new StringWriter();
  +        ser.setOutput(sw);
  +        final String NS = "http://example.com/test";
  +        ser.setPrefix(prefix, NS);
  +        ser.startTag(NS, "foo");
  +        ser.endDocument();
  +
  +        String serialized = sw.toString();
  +        //System.out.println(getClass()+" sw="+sw);
  +        xpp.setInput(new StringReader(serialized));
  +
  +        checkParserStateNs(xpp, 0, xpp.START_DOCUMENT, null, 0, null, null, null, false, -1);
  +        xpp.next();
  +        String expectedPrefix = (prefix != null && prefix.length() == 0) ? null : prefix;
  +        checkParserStateNs(xpp, 1, xpp.START_TAG, expectedPrefix, 1, NS, "foo", null, xpp.isEmptyElementTag() /*empty*/, 0);
  +    }
   
       public void testSetPrefix() throws Exception {
  +        testSetPrefix("ns");
  +        testSetPrefix("");
  +        testSetPrefix(null);
  +    }
  +
  +    //setPrefix check that prefix is not duplicated ...
  +    public void testSetPrefixAdv() throws Exception {
           //TODO check redeclaring defult namespace
   
   
  
  
  


------------------------ Yahoo! Groups Sponsor ---------------------~-->
Get A Free Psychic Reading! Your Online Answer To Life's Important Questions.
http://us.click.yahoo.com/Lj3uPC/Me7FAA/uetFAA/2U_rlB/TM
---------------------------------------------------------------------~->

To unsubscribe from this group, send an email to:
[email protected]

 

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/