You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xmlbeans-cvs@xml.apache.org by ce...@apache.org on 2003/10/15 20:13:28 UTC

cvs commit: xml-xmlbeans/v2/src/xmlstore/org/apache/xmlbeans/impl/store Cursor.java

cezar       2003/10/15 11:13:28

  Modified:    v2       build.xml
               v2/src/xmlstore/org/apache/xmlbeans/impl/store Cursor.java
  Log:
  First cut XPath implementation using Jaxen for the engine.
  
  Revision  Changes    Path
  1.6       +66 -1     xml-xmlbeans/v2/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/build.xml,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- build.xml	13 Oct 2003 23:23:56 -0000	1.5
  +++ build.xml	15 Oct 2003 18:13:28 -0000	1.6
  @@ -32,7 +32,7 @@
     <target name="jsr173.jar" depends="check.jsr173.jar, dirs" unless="jsr173.jar.exists">
       <get dest="build/lib/jsr173.jar"
            src="http://workshop.bea.com/xmlbeans/jsr173/jsr173.jar"
  -         verbose="true" usetimestamp="true" ignoreerrors="true"/> 
  +         verbose="true" usetimestamp="true" ignoreerrors="true"/>
     </target>
   
     <target name="check.jsr173_07_api.jar">
  @@ -49,6 +49,17 @@
       </unjar>
     </target>
   
  +  <target name="check.jaxen.jar">
  +    <condition property="jaxen.jar.exists">
  +        <available file="build/lib/jaxen.jar"/>
  +    </condition>
  +  </target>
  +
  +  <target name="jaxen.jar" depends="check.jaxen.jar, dirs" unless="jaxen.jar.exists">
  +    <get dest="build/lib/jaxen.jar"
  +         src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar"
  +         verbose="true" usetimestamp="true" ignoreerrors="true"/>
  +  </target>
   
     <target name="xbean" depends="xbean.jar">
       <copy file="build/lib/xbean.jar" tofile="build/ar/xbean.jar"/>
  @@ -881,4 +892,58 @@
           <javac srcdir="src/repackage" destdir="build/classes/repackage" source="1.4" debug="on"/>
       </target>
   
  +  <!-- xpath target ============================================= -->
  +
  +  <target name="xpath.classes" depends="dirs, xmlpublic.jar, jaxen.jar">
  +    <mkdir dir="build/private/classes/xpath"/>
  +    <javac
  +       srcdir="src/xpath"
  +       destdir="build/private/classes/xpath"
  +       classpathref="xpath.compile.path"
  +       source="1.4"
  +       debug="on">
  +      <classpath id="xpath.compile.path">
  +          <pathelement location="build/lib/xmlpublic.jar"/>
  +          <pathelement location="build/lib/jaxen.jar"/>
  +      </classpath>
  +    </javac>
  +  </target>
  +
  +  <target name="xbean_xpath.jar" depends="xpath.classes">
  +    <jar jarfile="build/private/lib/xbean_xpath.jar" basedir="build/private/classes/xpath"/>
  +  </target>
  +
  +  <!-- test xpath target ============================================= -->
  +
  +  <target name="test_xpath.classes" depends="dirs, xmlpublic.jar, jsr173_07_api.jar, jaxen.jar, xbean_xpath.jar">
  +    <mkdir dir="build/private/classes/testxpath"/>
  +    <javac
  +       srcdir="test/src/xpath"
  +       destdir="build/private/classes/testxpath"
  +       classpathref="testxpath.compile.path"
  +       source="1.4"
  +       debug="on">
  +      <classpath id="testxpath.compile.path">
  +          <pathelement location="build/lib/xmlpublic.jar"/>
  +          <pathelement location="build/lib/jsr173_07_api.jar"/>
  +          <pathelement location="build/lib/jaxen.jar"/>
  +          <pathelement location="build/private/lib/xbean_xpath.jar"/>
  +          <pathelement location="build/classes/xmlinputstream"/>
  +      </classpath>
  +    </javac>
  +  </target>
  +
  +  <target name="run_test_xpath" depends="test_xpath.classes, xbean">
  +    <java classname="org.apache.xmlbeans.impl.xpath.jaxen.XBeansDemo" fork="true" failonerror="true">
  +      <classpath>
  +          <pathelement location="build/lib/xbean.jar"/>
  +          <pathelement location="build/lib/jsr173_07_api.jar"/>
  +          <pathelement location="build/lib/jaxen.jar"/>
  +          <pathelement location="build/private/lib/xbean_xpath.jar"/>
  +          <pathelement location="build/private/classes/testxpath"/>
  +      </classpath>
  +      <jvmarg value="-ea"/>
  +      <arg line='test/cases/xpath/much_ado.xml "PLAY/ACT/SCENE/SPEECH/SPEAKER"'/>
  +    </java>
  +  </target>
   </project>
  
  
  
  1.4       +657 -657  xml-xmlbeans/v2/src/xmlstore/org/apache/xmlbeans/impl/store/Cursor.java
  
  Index: Cursor.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/src/xmlstore/org/apache/xmlbeans/impl/store/Cursor.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Cursor.java	7 Oct 2003 04:08:03 -0000	1.3
  +++ Cursor.java	15 Oct 2003 18:13:28 -0000	1.4
  @@ -2,7 +2,7 @@
   * The Apache Software License, Version 1.1
   *
   *
  -* Copyright (c) 2003 The Apache Software Foundation.  All rights 
  +* Copyright (c) 2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
  @@ -10,7 +10,7 @@
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
  -*    notice, this list of conditions and the following disclaimer. 
  +*    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
  @@ -18,19 +18,19 @@
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
  -*    if any, must include the following acknowledgment:  
  +*    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
  -* 4. The names "Apache" and "Apache Software Foundation" must 
  +* 4. The names "Apache" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
  -*    software without prior written permission. For written 
  +*    software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
  -* 5. Products derived from this software may not be called "Apache 
  -*    XMLBeans", nor may "Apache" appear in their name, without prior 
  +* 5. Products derived from this software may not be called "Apache
  +*    XMLBeans", nor may "Apache" appear in their name, without prior
   *    written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  @@ -49,7 +49,7 @@
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation and was
  -* originally based on software copyright (c) 2000-2003 BEA Systems 
  +* originally based on software copyright (c) 2000-2003 BEA Systems
   * Inc., <http://www.bea.com/>. For more information on the Apache Software
   * Foundation, please see <http://www.apache.org/>.
   */
  @@ -109,7 +109,7 @@
       protected void finalize ( )
       {
           Splay s = getSplay();
  -        
  +
           if (s != null)
           {
               dispose();
  @@ -129,7 +129,7 @@
   
       Splay getSplay ( ) { return _goober.getSplay(); }
       int   getPos   ( ) { return _goober.getPos(); }
  -    
  +
       void set ( Splay s, int p ) { _goober.set( s, p ); }
       void set ( Splay s        ) { _goober.set( s, 0 ); }
       void set ( int p          ) { _goober.set( p ); }
  @@ -143,14 +143,14 @@
               return 0;
   
           Splay s = getSplay();
  -        
  +
           int pa = s.getPosAfter();
   
           assert p >= pa || s.isLeaf();
  -        
  +
           return p >= pa ? s.getCchAfter() - p + pa : s.getPosLeafEnd() - p;
       }
  -    
  +
       int getPreCch ( )
       {
           // TODO - quick and dirty impl, improve
  @@ -164,18 +164,18 @@
   
           return n;
       }
  -    
  +
       private void checkDisposed ( )
       {
           checkDisposed( this );
       }
  -    
  +
       private static void checkDisposed ( Cursor c )
       {
           if (c.isDisposed())
               throw new IllegalStateException( "Cursor has been disposed" );
       }
  -    
  +
       boolean isDisposed ( )
       {
           return getSplay() == null;
  @@ -192,10 +192,10 @@
               if (!isDisposed())
               {
                   clearSelections();
  -    
  +
                   if (_stack != null)
                       _stack.dispose();
  -    
  +
                   set( (Splay) null );
               }
           }
  @@ -206,27 +206,27 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -            
  +
               Root r = getRoot();
  -            
  +
               if (getPos() > 0)
                   return null;
  -    
  +
               Splay s = getSplay();
  -    
  +
               if (!s.isTypeable())
                   return null;
  -    
  +
               Type t = s.getType( r );
  -    
  +
               assert t != null;
  -    
  +
               XmlObject result = t.getXmlObject();
               assert result != null;
               return result;
           }
       }
  -    
  +
       public boolean toCursor ( XmlCursor moveTo )
       {
           if (moveTo == null)
  @@ -252,7 +252,7 @@
                       {
                           GlobalLock.release();
                           acquired = false;
  -                        
  +
                           return toCursorImpl( moveTo );
                       }
                   }
  @@ -268,23 +268,23 @@
               }
           }
       }
  -    
  +
       private boolean toCursorImpl ( XmlCursor moveTo )
       {
           checkDisposed();
  -        
  +
           Cursor c = null;
  -        
  +
           if (moveTo instanceof Cursor)
           {
               c = (Cursor) moveTo;
   
               checkDisposed( c );
  -            
  +
               if (c.getRoot() != getRoot())
                   c = null;
           }
  -        
  +
           if (c == null)
               return false;
   
  @@ -292,68 +292,68 @@
   
           return true;
       }
  -    
  +
       public XmlDocumentProperties documentProperties ( )
       {
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               return getRoot().documentProperties();
           }
       }
  -    
  +
       public XmlCursor newCursor ( )
  -    {
  +    {   
           synchronized ( monitor() )
           {
               checkDisposed();
  -            
  +
               return new Cursor( getRoot(), getSplay(), getPos() );
           }
       }
  -    
  +
       public boolean toBookmark ( XmlBookmark bm )
       {
           synchronized ( monitor() )
           {
               checkDisposed();
  -            
  +
               if (bm == null)
                   return false;
  -    
  +
               if (!(bm._currentMark instanceof Annotation))
                   return false;
  -    
  +
               Annotation a = (Annotation) bm._currentMark;
  -    
  +
               if (a.getRoot() != getRoot())
                   return false;
  -    
  +
               assert a.getSplay() != null;
  -    
  +
               set( a );
  -    
  +
               return true;
           }
       }
  -    
  +
       public XmlBookmark toNextBookmark ( Object key )
       {
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               if (key == null)
                   return null;
  -    
  +
               Splay sOrig = getSplay();
               int   pOrig = getPos();
  -    
  +
               TokenType tt = currentTokenType();
  -    
  +
               // Advance the cursor past the current spot by the minimun amount
  -    
  +
               if (tt.isText())
               {
                   toNextChar( 1 );
  @@ -364,28 +364,28 @@
                   set( sOrig, pOrig );
                   return null;
               }
  -    
  +
               for ( ; ; )
               {
                   XmlBookmark bm = getBookmark( key );
  -    
  +
                   if (bm != null)
                       return bm;
  -    
  +
                   int postCch;
  -    
  +
                   if (tt.isText() && (postCch = getPostCch()) > 1)
                   {
                       Splay s = getSplay();
                       int   p = getPos();
                       int   d = postCch;
  -    
  +
                       for ( Goober g = s.firstGoober() ; g != null ;
                             g = s.nextGoober( g ) )
                       {
                           int dist;
                           XmlBookmark mark;
  -    
  +
                           if (g.isAnnotation() && (dist = g.getPos() - p) > 1 &&
                                   dist < d && (mark = g.getBookmark()) != null &&
                                       mark.getKey().equals( key ))
  @@ -394,14 +394,14 @@
                               d = dist;
                           }
                       }
  -    
  +
                       if (bm != null)
                       {
                           set( s, p + d );
                           return bm;
                       }
                   }
  -                
  +
                   if ((tt = toNextToken()).isNone())
                   {
                       set( sOrig, pOrig );
  @@ -416,17 +416,17 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               if (key == null)
                   return null;
  -    
  +
               Splay sOrig = getSplay();
               int   pOrig = getPos();
  -    
  +
               TokenType tt = prevTokenType();
  -    
  +
               // Retreat the cursor past the current spot by the minimun amount
  -    
  +
               if (tt.isText())
               {
                   toPrevChar( 1 );
  @@ -439,21 +439,21 @@
               }
               else
                   tt = prevTokenType();
  -    
  +
               for ( ; ; )
               {
                   XmlBookmark bm = getBookmark( key );
  -    
  +
                   if (bm != null)
                       return bm;
  -    
  +
                   int preCch;
  -    
  +
                   if (tt.isText() && (preCch = getPreCch()) > 1)
                   {
                       Splay s;
                       int   p;
  -    
  +
                       if (getPos() == 0)
                       {
                           s = getSplay().prevNonAttrSplay();
  @@ -464,15 +464,15 @@
                           s = getSplay();
                           p = getPos();
                       }
  -                    
  +
                       int d = preCch;
  -    
  +
                       for ( Goober g = s.firstGoober() ; g != null ;
                             g = s.nextGoober( g ) )
                       {
                           int dist;
                           XmlBookmark mark;
  -    
  +
                           if (g.isAnnotation() && (dist = p - g.getPos()) > 1 &&
                                   dist < d && (mark = g.getBookmark()) != null &&
                                       mark.getKey().equals( key ))
  @@ -481,14 +481,14 @@
                               d = dist;
                           }
                       }
  -    
  +
                       if (bm != null)
                       {
                           set( s, p - d );
                           return bm;
                       }
                   }
  -    
  +
                   if (tt.isText())
                   {
                       toPrevChar( -1 );
  @@ -504,17 +504,17 @@
               }
           }
       }
  -    
  +
       public TokenType currentTokenType ( )
       {
           synchronized ( monitor() )
           {
               checkDisposed();
  -            
  +
               return getSplay().getTokenType( getPos() );
           }
       }
  -    
  +
       public boolean isStartdoc  ( ) { return currentTokenType().isStartdoc(); }
       public boolean isEnddoc    ( ) { return currentTokenType().isEnddoc(); }
       public boolean isStart     ( ) { return currentTokenType().isStart(); }
  @@ -527,69 +527,69 @@
       public boolean isContainer ( ) { return currentTokenType().isContainer(); }
       public boolean isFinish    ( ) { return currentTokenType().isFinish(); }
       public boolean isAnyAttr   ( ) { return currentTokenType().isAnyAttr(); }
  -    
  +
       public TokenType prevTokenType ( )
       {
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               // TODO - quick and dirty implementation, improve
  -    
  +
               Splay sOrig = getSplay();
               int   pOrig = getPos();
  -    
  +
               TokenType tt;
  -    
  +
               if (toPrevChar( 1 ) == 1)
                   tt = TokenType.TEXT;
               else if (!(tt = toPrevToken()).isNone())
                   tt = currentTokenType();
  -    
  +
               set( sOrig, pOrig );
  -    
  +
               return tt;
           }
       }
  -    
  +
       public TokenType toNextToken ( )
       {
           synchronized ( monitor() )
           {
               checkDisposed();
  -            
  +
               Splay os = getSplay(); // Orignal splay
               Splay s = os;
               int   p = getPos();
  -    
  +
               if (p == 0)
               {
                   if (s.isRoot())
                       return TokenType.NONE;
  -    
  +
                   //
                   // Look see if there is an attr we should visit before visiting
                   // any following content in this container.
                   //
  -                
  +
                   if (s.isContainer())
                   {
                       Splay t = s.nextSplay();
  -    
  +
                       if (t.isAttr())
                       {
                           set( t, 0 );
                           return currentTokenType();
                       }
  -                        
  +
                       //
                       // Now we're going into the content of this container.  Flush
                       // out any cached type value.
                       //
  -    
  +
                       s.ensureContentValid();
                   }
  -    
  +
                   if (s.getMaxPos() > 0)
                       p = 1;
                   else
  @@ -602,7 +602,7 @@
               {
                   assert p > 0;
                   assert !s.isRoot();
  -                
  +
                   if (p >= s.getPosAfter() && s.getCchAfter() > 0)
                   {
                       s = s.nextSplay();
  @@ -612,7 +612,7 @@
                   {
                       assert s.isLeaf();
                       assert p < s.getPosAfter();
  -    
  +
                       if (p != s.getPosLeafEnd())
                           p = s.getPosLeafEnd();
                       else if (s.getCchAfter() > 0)
  @@ -624,7 +624,7 @@
                       }
                   }
               }
  -    
  +
               //
               // If we are transitioning from an attr to a non attr, see if there
               // is content in a DOC or BEGIN which needs to be visited after
  @@ -638,22 +638,22 @@
               // container, we need to visit any attributes before visiting the
               // interior content of the attr container.
               //
  -    
  +
               if (p == 0)
               {
                   if (!s.isAttr() && os.isAttr())
                   {
                       Splay t = os.prevNonAttrSplay();
  -    
  +
                       assert t.isContainer();
  -    
  +
                       //
                       // We're navigating to the content of a container.  Flush
                       // out any cached type value.
                       //
  -                    
  +
                       t.ensureContentValid();
  -    
  +
                       if (t.getMaxPos() > 0)
                       {
                           s = t;
  @@ -663,13 +663,13 @@
                   else if (s.isAttr() && !os.isAttr() && os.getMaxPos() > 0)
                   {
                       assert os.isContainer();
  -    
  +
                       s = s.nextNonAttrSplay();
                   }
               }
  -    
  +
               set( s, p );
  -    
  +
               return currentTokenType();
           }
       }
  @@ -679,97 +679,97 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -            
  +
       // TODO - This code is not as compact as it can be, there is some redundancy
       // -- rethink it later ...
  -    
  +
               Splay s = getSplay();
               int   p = getPos();
  -    
  +
               if (p == 1 && s.isInvalid())
               {
                   assert s.isLeaf();
                   p += s.ensureContentValid();
               }
  -    
  +
               if (p == 1 && s.isContainer())
               {
                   Splay t = s.nextSplay();
  -    
  +
                   if (t.isAttr())
                   {
                       s = t;
  -                    
  +
                       for ( t = t.nextSplay() ; t.isAttr() ; t = t.nextSplay() )
                           s = t;
  -    
  +
                       set( s, 0 );
  -                    
  +
                       return currentTokenType();
                   }
               }
  -    
  +
               if (p == 0 && !s.isAttr())
               {
                   if (s.isDoc())
                       return TokenType.NONE;
  -    
  +
                   Splay t = s.prevSplay();
  -    
  +
                   if (t.isAttr())
                   {
                       t = t.prevNonAttrSplay();
  -    
  +
                       assert t.isContainer();
  -    
  +
                       if (t.isDoc())
                           t.ensureContentValid();
  -    
  +
                       if (t.getMaxPos() > 0)
                       {
                           set(
                               t,
                               t.getCchAfter() > 0 ? t.getPosAfter() : t.getMaxPos() );
  -    
  +
                           return currentTokenType();
                       }
                   }
               }
  -    
  +
               if (s.isAttr())
               {
                   assert p == 0;
  -    
  +
                   Splay t = s.prevSplay();
  -    
  +
                   if (!t.isAttr())
                   {
                       assert t.isContainer();
  -    
  +
                       set( t, 0 );
                       return currentTokenType();
                   }
               }
  -    
  +
               if (p == 0)
               {
                   if (s.isDoc())
                       return TokenType.NONE;
  -    
  +
                   s = s.prevSplay();
  -    
  +
                   if (s.isDoc())
                       s.ensureContentValid();
  -    
  +
                   p = s.getCchAfter() > 0 ? s.getPosAfter() : s.getMaxPos();
               }
               else
               {
                   assert p > 0;
                   assert !s.isRoot();
  -    
  +
                   int posAfter = s.getPosAfter();
  -    
  +
                   if (p >= posAfter)
                   {
                       assert s.getCchAfter() > 0;
  @@ -779,13 +779,13 @@
                   {
                       assert s.isValid();
                       assert s.isLeaf();
  -                    
  +
                       p = p > 1 && p == posAfter - 1 ? 1 : 0;
                   }
               }
  -    
  +
               set( s, p );
  -    
  +
               return currentTokenType();
           }
       }
  @@ -795,24 +795,24 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -            
  +
               Splay s = getSplay();
               int   p = getPos();
  -            
  +
               if (p == 0)
               {
                   if (s.isDoc() || s.isAttr())
                       throw new IllegalStateException( "Invalid location for text" );
  -    
  +
                   s = s.prevNonAttrSplay();
                   p = s.getEndPos();
               }
  -    
  +
               if (text == null)
                   return;
  -    
  +
               int cch = text.length();
  -    
  +
               if (cch > 0)
                   s.insertChars( p, getRoot(), text, 0, cch );
           }
  @@ -822,7 +822,7 @@
       {
           if (name == null)
               throw new IllegalArgumentException( "QName is null" );
  -        
  +
           validateLocalName( name.getLocalPart() );
       }
   
  @@ -858,7 +858,7 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               insert( new Attr( name ), value );
           }
       }
  @@ -908,17 +908,17 @@
                   prefix = "";
               else if (prefix.length() > 0)
                   validatePrefix( prefix );
  -    
  +
               if (namespace == null)
                   namespace = "";
  -    
  +
               if (namespace.length() == 0 && prefix.length() > 0)
               {
                   throw
                       new IllegalArgumentException(
                           "Can't map a prefix to no namespace" );
               }
  -    
  +
               insert( new Xmlns( new QName( namespace, prefix ) ), null );
           }
       }
  @@ -928,7 +928,7 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               insert( new Comment(), value );
           }
       }
  @@ -936,11 +936,11 @@
       public void insertProcInst ( String target, String value )
       {
           validatePrefix( target ); // used becuase "<?xml...?> is disallowed
  -    
  +
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               insert( new Procinst( target ), value );
           }
       }
  @@ -959,24 +959,24 @@
       {
           insertElementWithText( name, uri, null );
       }
  -    
  +
       public void insertElement ( QName name )
       {
           insertElementWithText( name, null );
       }
  -    
  +
       public void beginElement ( QName name )
       {
           insertElement( name );
           toPrevToken();
       }
  -    
  +
       public void beginElement ( String name )
       {
           insertElement( name );
           toPrevToken();
       }
  -    
  +
       public void beginElement ( String name, String uri )
       {
           insertElement( name, uri );
  @@ -988,17 +988,17 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               validateLocalName( name.getLocalPart() );
  -    
  +
               Begin b = new Begin( name, null );
  -            
  +
               b.toggleIsLeaf();
  -            
  +
               insert( b, text );
           }
       }
  -    
  +
       public void insertElementWithText ( String name, String uri, String text )
       {
           insertElementWithText( new QName( uri, name ), text );
  @@ -1031,15 +1031,15 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               Splay s = getSplay();
  -    
  +
               if (getPos() > 0 || s.isFinish() || s.isXmlns())
               {
                   throw new IllegalStateException(
                       "Can't get text value, current token can have no text value" );
               }
  -    
  +
               return getSplay().getText( getRoot() );
           }
       }
  @@ -1049,20 +1049,20 @@
   //        synchronized ( monitor() )
   //        {
   //            checkDisposed();
  -//    
  +//
   //            Splay s = getSplay();
  -//    
  +//
   //            if (getPos() > 0 || s.isFinish() || s.isXmlns())
   //            {
   //                throw new IllegalStateException(
   //                    "Can't get text value, current token can have no text value" );
   //            }
  -//    
  +//
   //            return getSplay().getText( getRoot() );
   //        }
   
           // Hack impl for now
  -        
  +
           String s = getTextValue();
   
           int n = s.length();
  @@ -1077,23 +1077,23 @@
   
           return n;
       }
  -    
  +
       public void setTextValue ( String text )
       {
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               Splay s = getSplay();
               int   p = getPos();
  -    
  +
               if (p > 0 || s.isXmlns() || s.isFinish())
               {
                   throw new IllegalStateException(
                       "Can't set text value, current token can have no text value" );
               }
  -    
  -    
  +
  +
               s.setText( getRoot(), text, 0, text == null ? 0 : text.length() );
           }
       }
  @@ -1102,20 +1102,20 @@
       {
           setTextValue( String.copyValueOf( buf, off, len ) );
       }
  -    
  +
       public String getChars ( )
       {
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               int cch = -1;
  -    
  +
               int postCch = getPostCch();
  -    
  +
               if (cch < 0 || cch > postCch)
                   cch = postCch;
  -    
  +
               return
                   getRoot()._text.fetch(
                       getSplay().getCpForPos( getRoot(), getPos() ), cch );
  @@ -1127,21 +1127,21 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               int postCch = getPostCch();
  -    
  +
               if (cch < 0 || cch > postCch)
                   cch = postCch;
  -    
  +
               if (buf == null || off >= buf.length)
                   return 0;
  -    
  +
               if (buf.length - off < cch)
                   cch = buf.length - off;
  -    
  +
               getRoot()._text.fetch(
                   buf, off, getSplay().getCpForPos( getRoot(), getPos() ), cch );
  -    
  +
               return cch;
           }
       }
  @@ -1151,17 +1151,17 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               if (annotation == null)
                   return;
  -    
  +
               clearBookmark( annotation.getKey() );
  -    
  +
               Annotation a = new Annotation( getRoot(), annotation );
  -    
  +
               if (a._key == null)
                   throw new IllegalArgumentException( "Annotation key is null" );
  -    
  +
               a.set( _goober );
               annotation._currentMark = a;
           }
  @@ -1172,26 +1172,26 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               if (key == null)
                   return null;
  -    
  +
               Splay s = getSplay();
               int   p = getPos();
  -    
  +
               for ( Goober g = s.firstGoober() ; g != null ; g = s.nextGoober( g ) )
               {
                   if (g.getKind() == Splay.ANNOTATION && g.getPos() == p)
                   {
                       Annotation a = (Annotation) g;
  -    
  +
                       XmlBookmark xa = a.getXmlBookmark();
  -    
  +
                       if (xa != null && a._key.equals( key ))
                           return xa;
                   }
               }
  -    
  +
               return null;
           }
       }
  @@ -1201,21 +1201,21 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               if (key == null)
                   return;
  -    
  +
               Splay s = getSplay();
               int   p = getPos();
  -    
  +
               for ( Goober g = s.firstGoober() ; g != null ; g = s.nextGoober( g ) )
               {
                   if (g.getKind() == Splay.ANNOTATION && g.getPos() == p)
                   {
                       Annotation a = (Annotation) g;
  -    
  +
                       XmlBookmark xa = a.getXmlBookmark();
  -    
  +
                       if (xa != null && a._key.equals( key ))
                       {
                           g.set( null, 0 );
  @@ -1231,13 +1231,13 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               if (listToFill == null)
                   return;
  -    
  +
               Splay s = getSplay();
               int   p = getPos();
  -    
  +
               for ( Goober g = s.firstGoober() ; g != null ; g = s.nextGoober( g ) )
               {
                   if (g.getKind() == Splay.ANNOTATION && g.getPos() == p)
  @@ -1251,7 +1251,7 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               assert !getSplay().isRoot() || getPos() == 0;
               return !getSplay().isRoot();
           }
  @@ -1272,12 +1272,12 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               if (getPos() > 0)
                   return null;
  -    
  +
               Splay s = getSplay();
  -    
  +
               switch ( s.getKind() )
               {
               case Splay.BEGIN :
  @@ -1285,7 +1285,7 @@
               case Splay.PROCINST :
                   return s.getName();
               }
  -    
  +
               return null;
           }
       }
  @@ -1295,23 +1295,23 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               if (name == null)
                   throw new IllegalArgumentException( "Name is null" );
  -            
  +
               Splay s = getSplay();
  -            
  +
               if (getPos() > 0 || !(s.isBegin() || s.isAttr() || s.isProcinst()))
               {
                   throw
                       new IllegalStateException(
                           "Can't set name here: " + currentTokenType() );
               }
  -    
  +
               if (s.isProcinst())
               {
                   validatePrefix( name.getLocalPart() );
  -    
  +
                   if (name.getNamespaceURI().length() > 0)
                   {
                       throw
  @@ -1326,35 +1326,35 @@
               }
               else
                   validateLocalName( name.getLocalPart() );
  -    
  +
               s.setName( getRoot(), name );
           }
       }
  -    
  +
       public int toNextChar ( int cch )
       {
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               Splay s = getSplay();
               int   p = getPos();
  -    
  +
               int maxCch = getPostCch();
  -    
  +
               if (maxCch == 0 || cch == 0)
                   return 0;
  -    
  +
               if (cch < 0 || cch > maxCch)
                   cch = maxCch;
  -    
  +
               assert p + cch <= s.getEndPos();
  -    
  +
               if (p + cch == s.getEndPos())
                   toNextToken();
               else
                   set( p + cch );
  -    
  +
               return cch;
           }
       }
  @@ -1364,14 +1364,14 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               Splay s = getSplay();
               int   p = getPos();
  -    
  +
               Splay sText = s;  // The splay and pos where the text exists
               int   pText = p;
               int   maxCch = 0; // Max chars to move over
  -    
  +
               if (p == 0)
               {
                   if (!s.isDoc() && !s.isAttr())
  @@ -1390,17 +1390,17 @@
               }
               else
                   maxCch = p - s.getPosAfter();
  -    
  +
               assert pText <= sText.getEndPos();
  -    
  +
               if (maxCch == 0 || cch == 0)
                   return 0;
  -    
  +
               if (cch < 0 || cch > maxCch)
                   cch = maxCch;
  -    
  +
               set( sText, pText - cch );
  -    
  +
               return cch;
           }
       }
  @@ -1410,7 +1410,7 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               set( getRoot(), 0 );
           }
       }
  @@ -1420,7 +1420,7 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               set( getRoot()._doc, 0 );
           }
       }
  @@ -1430,19 +1430,19 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               Splay s = getSplay();
  -    
  +
               if (getPos() > 0 || !s.isContainer())
                   return TokenType.NONE;
  -    
  +
               s.ensureContentValid();
  -    
  +
               if (s.getCch() > 0 || s.isLeaf())
                   set( 1 );
               else
                   set( s.nextNonAttrSplay(), 0 );
  -    
  +
               return currentTokenType();
           }
       }
  @@ -1452,17 +1452,17 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               Splay s = getSplay();
  -    
  +
               if (getPos() > 0 || !s.isContainer())
                   return TokenType.NONE;
  -    
  +
               if (s.isLeaf())
                   set( s.getPosLeafEnd() );
               else
                   set( s.getFinishSplay() );
  -    
  +
               return currentTokenType();
           }
       }
  @@ -1472,15 +1472,15 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               Splay s = getSplay();
               int   p = getPos();
  -    
  +
               if (p == 0 && s.isDoc())
                   return false;
  -    
  +
               set( s.getContainer( p ), 0 );
  -    
  +
               return true;
           }
       }
  @@ -1490,15 +1490,15 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               Splay s = getSplay();
               int   p = getPos();
  -    
  +
               if (p == 0)
               {
                   if (s.isDoc())
                       return false;
  -    
  +
                   if (s.isBegin())
                       s = s.getFinishSplay().nextSplay();
               }
  @@ -1506,18 +1506,18 @@
               {
                   if (s.isLeaf() && p <= s.getPosLeafEnd())
                       return false;
  -    
  +
                   s = s.nextSplay();
               }
  -    
  +
               for ( ; !s.isBegin() ; s = s.nextSplay() )
               {
                   if (s.isFinish())
                       return false;
               }
  -    
  +
               set( s, 0 );
  -    
  +
               return true;
           }
       }
  @@ -1537,61 +1537,61 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -            
  +
               Splay sOriginal = getSplay();
               int   pOriginal = getPos();
  -            
  +
               for ( ; ; )
               {
                   if (!toNextSibling())
                       break;
  -    
  +
                   if (getName().equals( name ))
                       return true;
               }
  -            
  +
               set( sOriginal, pOriginal );
  -            
  +
               return false;
           }
       }
  -    
  +
       public boolean toPrevSibling ( )
       {
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               Splay s = getSplay();
               int   p = getPos();
  -    
  +
               if (p == 0)
               {
                   if (s.isDoc() || s.isAttr())
                       return false;
  -    
  +
                   s = s.prevSplay();
               }
               else
               {
                   assert p > 0;
  -    
  +
                   if (s.isContainer())
                   {
                       if (s.isLeaf())
                       {
                           if (p <= s.getPosLeafEnd())
                               return false;
  -    
  +
                           set( 0 );
  -    
  +
                           return true;
                       }
  -    
  +
                       return false;
                   }
               }
  -    
  +
               for ( ; ; )
               {
                   if (s.isEnd())
  @@ -1599,18 +1599,18 @@
                       s = s.getContainer();
                       break;
                   }
  -    
  +
                   if (s.isLeaf())
                       break;
  -    
  +
                   if (s.isContainer())
                       return false;
  -    
  +
                   s = s.prevSplay();
               }
  -    
  +
               set( s, 0 );
  -    
  +
               return true;
           }
       }
  @@ -1656,14 +1656,14 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               Splay s = getRoot().findNthBegin( getStart(), name, null, 0 );
  -    
  +
               if (s == null)
                   return false;
  -    
  +
               set( s, 0 );
  -    
  +
               return true;
           }
       }
  @@ -1678,14 +1678,14 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               Splay s = getRoot().findNthBegin( getStart(), name, null, n );
  -    
  +
               if (s == null)
                   return false;
  -    
  +
               set( s, 0 );
  -    
  +
               return true;
           }
       }
  @@ -1695,21 +1695,21 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               Splay sOriginal = getSplay();
               int   pOriginal = getPos();
  -            
  +
               if (!sOriginal.isContainer() || pOriginal != 0)
               {
                   if (!toNextSibling())
                       return false;
               }
  -    
  +
               if (!toEndToken().isNone() && toPrevSibling())
                   return true;
  -    
  +
               set( sOriginal, pOriginal );
  -            
  +
               return false;
           }
       }
  @@ -1719,13 +1719,13 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               Splay sOriginal = getSplay();
               int   pOriginal = getPos();
  -            
  +
               if (!sOriginal.isContainer() || pOriginal != 0)
                   return false;
  -    
  +
               for ( Splay s = sOriginal.nextSplay() ; s.isAttr() ; s = s.nextSplay() )
               {
                   if (s.isNormalAttr())
  @@ -1734,7 +1734,7 @@
                       return true;
                   }
               }
  -    
  +
               set( sOriginal, pOriginal );
               return false;
           }
  @@ -1745,27 +1745,27 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               Splay sOriginal = getSplay();
               int   pOriginal = getPos();
  -            
  +
               if (!sOriginal.isContainer() || pOriginal != 0)
                   return false;
  -    
  +
               Splay lastNormalAttr = null;
  -    
  +
               for ( Splay s = sOriginal.nextSplay() ; s.isAttr() ; s = s.nextSplay() )
               {
                   if (s.isNormalAttr())
                       lastNormalAttr = s;
               }
  -    
  +
               if (lastNormalAttr != null)
               {
                   set( lastNormalAttr, 0 );
                   return true;
               }
  -    
  +
               set( sOriginal, pOriginal );
               return false;
           }
  @@ -1776,12 +1776,12 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               Splay s = getSplay();
  -    
  +
               if (!s.isAttr())
                   return false;
  -    
  +
               for ( s = s.nextSplay() ; s.isAttr() ; s = s.nextSplay() )
               {
                   if (s.isNormalAttr())
  @@ -1790,7 +1790,7 @@
                       return true;
                   }
               }
  -    
  +
               return false;
           }
       }
  @@ -1800,12 +1800,12 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               Splay s = getSplay();
  -    
  +
               if (!s.isAttr())
                   return false;
  -    
  +
               for ( s = s.prevSplay() ; s.isAttr() ; s = s.prevSplay() )
               {
                   if (s.isNormalAttr())
  @@ -1814,7 +1814,7 @@
                       return true;
                   }
               }
  -    
  +
               return false;
           }
       }
  @@ -1824,15 +1824,15 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               if (attrName == null)
                   throw new IllegalArgumentException( "Attr name is null" );
  -    
  +
               if (getPos() > 0)
                   return null;
  -    
  +
               Splay s = getSplay().getAttr( attrName );
  -    
  +
               return s == null ? null : s.getText( getRoot() );
           }
       }
  @@ -1842,37 +1842,37 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               if (attrName == null)
                   throw new IllegalArgumentException( "Attr name is null" );
  -    
  +
               validateLocalName( attrName.getLocalPart() );
  -            
  +
               if (getPos() > 0)
                   return false;
  -    
  +
               Splay s = getSplay();
  -    
  +
               if (!s.isContainer())
                   return false;
  -    
  +
               if (value == null)
                   value = "";
  -    
  +
               s = getSplay().getAttr( attrName );
  -    
  +
               if (s == null)
               {
                   XmlCursor c = newCursor();
  -    
  +
                   try
                   {
                       // Insert the new attr at the end
  -                    
  +
                       do {
                           c.toNextToken();
                       } while ( c.isAnyAttr() );
  -                    
  +
                       c.insertAttributeWithValue( attrName, value );
                   }
                   finally
  @@ -1882,7 +1882,7 @@
               }
               else
                   s.setText( getRoot(), value, 0, value.length() );
  -    
  +
               return true;
           }
       }
  @@ -1892,27 +1892,27 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               if (attrName == null)
                   throw new IllegalArgumentException( "Attr name is null" );
  -    
  +
               if (getPos() > 0)
                   return false;
  -    
  +
               boolean removed = false;
  -            
  +
               for ( ; ; )
               {
                   Splay s = getSplay().getAttr( attrName );
  -    
  +
                   if (s == null)
                       break;
  -                
  +
                   s.remove( getRoot(), true );
  -    
  +
                   removed = true;
               }
  -    
  +
               return removed;
           }
       }
  @@ -1922,24 +1922,24 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               int postCch = getPostCch();
  -    
  +
               if (postCch == 0 || cch == 0)
                   return 0;
  -    
  +
               if (cch < 0 || cch > postCch)
                   cch = postCch;
  -    
  +
               return getSplay().removeChars( getRoot(), getPos(), cch );
           }
       }
  -    
  +
       public int moveChars ( int cch, XmlCursor dst )
       {
           if (dst == null)
               throw new IllegalArgumentException( "Destination is null" );
  -            
  +
           if (monitor() == dst.monitor())
           {
               synchronized ( monitor() )
  @@ -1960,7 +1960,7 @@
                       {
                           GlobalLock.release();
                           acquired = false;
  -                        
  +
                           return moveCharsImpl( cch, dst );
                       }
                   }
  @@ -1976,7 +1976,7 @@
               }
           }
       }
  -    
  +
       private int moveCharsImpl ( int cch, XmlCursor dst )
       {
           checkDisposed();
  @@ -2004,7 +2004,7 @@
       {
           if (dst == null)
               throw new IllegalArgumentException( "Destination is null" );
  -        
  +
           if (dst.monitor() == monitor())
           {
               synchronized ( monitor() )
  @@ -2025,7 +2025,7 @@
                       {
                           GlobalLock.release();
                           acquired = false;
  -                        
  +
                           return copyCharsImpl( cch, dst );
                       }
                   }
  @@ -2041,7 +2041,7 @@
               }
           }
       }
  -    
  +
       private int copyCharsImpl ( int cch, XmlCursor dst )
       {
           checkDisposed();
  @@ -2061,7 +2061,7 @@
           {
               if (sDst.isDoc() || sDst.isAttr())
                   throw new IllegalArgumentException( "Invalid destination" );
  -            
  +
               sDst = sDst.prevNonAttrSplay();
               pDst = sDst.getEndPos();
           }
  @@ -2075,12 +2075,12 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               Splay s = getSplay();
  -    
  +
               if (getPos() > 0 || !s.isContainer())
                   throw new IllegalStateException( "Not on a container" );
  -    
  +
               return s.namespaceForPrefix( prefix );
           }
       }
  @@ -2090,15 +2090,15 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               if (ns == null || ns.length() == 0)
                   throw new IllegalArgumentException( "Must specify a namespace" );
  -    
  +
               Splay s = getSplay();
  -    
  +
               if (getPos() > 0 || !s.isContainer())
                   throw new IllegalStateException( "Not on a container" );
  -    
  +
               String result = s.prefixForNamespace( getRoot(), ns, null, true);
   
               assert result != null;
  @@ -2112,54 +2112,54 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               Splay s = getSplay();
  -    
  +
               if (getPos() > 0 || !s.isContainer())
                   throw new IllegalStateException( "Not on a container" );
  -    
  +
               // Do this with cursor for now...
  -            
  +
               XmlCursor c = newCursor();
  -    
  +
               do
               {
                   assert c.isContainer();
  -    
  +
                   QName cName = c.getName();
  -                
  +
                   while ( !c.toNextToken().isNone() && c.isAnyAttr() )
                   {
                       if (c.isNamespace())
                       {
                           String prefix = c.getName().getLocalPart();
                           String uri    = c.getName().getNamespaceURI();
  -    
  +
                           // Here I check to see if there is a default namespace
                           // mapping which is not empty on a non root container which
                           // is in a namespace.  This this case, I do not want to add
                           // this mapping because it could not be persisted out this
                           // way.
  -                        
  +
                           if (prefix.length() == 0 && uri.length() > 0 &&
                                   cName != null && cName.getNamespaceURI().length()>0)
                           {
                               continue;
                           }
  -    
  +
                           if (!addToThis.containsKey( prefix ))
                               addToThis.put( prefix, uri );
                       }
                   }
  -    
  +
                   c.toParent();
               }
               while ( c.toParent() );
  -    
  +
               c.dispose();
           }
       }
  -    
  +
       /**
        * Returns:
        *
  @@ -2173,34 +2173,34 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -            
  +
               if (xthat == null || !(xthat instanceof Cursor))
                   throw new IllegalArgumentException( "Invalid that cursor" );
  -    
  +
               Cursor that = (Cursor) xthat;
  -            
  +
               Root r = getRoot();
  -    
  +
               if (r != that.getRoot())
                   throw new IllegalArgumentException( "Cursors not in same document" );
  -    
  +
               checkDisposed( that );
  -    
  +
               return
                   getSplay().compare( r, getPos(), that.getSplay(), that.getPos() );
           }
       }
  -    
  +
       public boolean isLeftOf ( XmlCursor that )
       {
           return comparePosition( that ) < 0;
       }
  -    
  +
       public boolean isAtSamePositionAs ( XmlCursor that )
       {
           return comparePosition( that ) == 0;
       }
  -    
  +
       public boolean isRightOf ( XmlCursor that )
       {
           return comparePosition( that ) > 0;
  @@ -2211,13 +2211,13 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -            
  +
               return
                   new Saver.InputStreamSaver(
                       getRoot(), getSplay(), getPos(), options );
           }
       }
  -    
  +
       public InputStream newInputStream ( )
       {
           return newInputStream( null );
  @@ -2227,38 +2227,38 @@
       {
           return newReader( null );
       }
  -    
  +
       public Reader newReader ( XmlOptions options )
       {
           synchronized ( monitor() )
           {
               checkDisposed();
  -            
  +
               return new Saver.TextReader( getRoot(), getSplay(), getPos(), options );
           }
       }
  -    
  +
       public XMLInputStream newXMLInputStream ( )
       {
           return newXMLInputStream( null );
       }
  -    
  +
       public XMLInputStream newXMLInputStream ( XmlOptions options )
       {
           synchronized ( monitor() )
           {
               checkDisposed();
  -            
  +
               return
                   new XmlInputStreamImpl( getRoot(), getSplay(), getPos(), options );
           }
       }
  -    
  +
       public XMLStreamReader newXMLStreamReader ( )
       {
           return newXMLStreamReader( null );
       }
  -    
  +
       public XMLStreamReader newXMLStreamReader ( XmlOptions options )
       {
           synchronized ( monitor() )
  @@ -2271,7 +2271,7 @@
               {
                   if (isNamespace())
                       return new XMLStreamReaderForString( newCursor(), getName().getNamespaceURI() );
  -                
  +
                   if (isAttr() || isComment() || isProcinst())
                       return new XMLStreamReaderForString( newCursor(), getTextValue() );
               }
  @@ -2281,13 +2281,13 @@
   
               if (isFinish())
                   return new XMLStreamReaderForString( newCursor(), "" );
  -            
  +
               assert !isText() && !isFinish();
               assert !inner || isContainer();
  -            
  +
               XmlCursor start = newCursor();
               XmlCursor last = newCursor();
  -            
  +
               if (inner)
               {
                   start.toNextToken();
  @@ -2303,11 +2303,11 @@
                   if (isContainer())
                       last.toEndToken();
               }
  -            
  +
               return new XMLStreamReaderImpl( start, last );
           }
       }
  -            
  +
       private static final XmlOptions _toStringOptions =
           buildPrettyOptions();
   
  @@ -2324,19 +2324,19 @@
       {
           return xmlText( _toStringOptions );
       }
  -    
  +
       public String xmlText (  )
       {
           return xmlText( null );
       }
  -    
  +
       public String xmlText ( XmlOptions options )
       {
           Saver.TextSaver saver;
           synchronized ( monitor() )
           {
               checkDisposed();
  -            
  +
               saver = new Saver.TextSaver(
                       getRoot(), getSplay(), getPos(), options, null );
           }
  @@ -2359,37 +2359,37 @@
           private final Root _root;
           private final long _versionStamp;
       }
  -    
  +
       public ChangeStamp getDocChangeStamp ( )
       {
           synchronized ( monitor() )
           {
               checkDisposed();
  -        
  +
               return new ChangeStampImpl( getRoot() );
           }
       }
  -    
  +
       public boolean removeXml ( )
       {
           synchronized ( monitor() )
           {
               checkDisposed();
  -            
  +
               Splay s = getSplay();
               int   p = getPos();
  -    
  +
               assert p < s.getEndPos();
  -    
  +
               if (p > 0)
               {
                   if (s.isLeaf() && p == s.getPosLeafEnd())
                       return false;
  -    
  +
                   int cchRemove = removeChars( getPostCch() );
  -    
  +
                   assert cchRemove > 0;
  -    
  +
                   return true;
               }
               else if (s.isDoc())
  @@ -2400,18 +2400,18 @@
               }
               else if (s.isFinish())
                   return false;
  -    
  +
               s.remove( getRoot(), true );
  -    
  +
               return true;
           }
       }
  -    
  +
       public boolean moveXml ( XmlCursor dst )
       {
           if (dst == null)
               throw new IllegalArgumentException( "Destination is null" );
  -        
  +
           if (dst.monitor() == monitor())
           {
               synchronized ( monitor() )
  @@ -2432,7 +2432,7 @@
                       {
                           GlobalLock.release();
                           acquired = false;
  -                        
  +
                           return moveXmlImpl ( dst );
                       }
                   }
  @@ -2448,60 +2448,60 @@
               }
           }
       }
  -    
  +
       private boolean moveXmlImpl  ( XmlCursor dst )
       {
           checkDisposed();
  -                    
  +
           if (dst == null || !(dst instanceof Cursor))
           {
               throw
                   new IllegalArgumentException(
                       "Can't move to a foreign document" );
           }
  -            
  +
           Cursor cDst = (Cursor) dst;
  -                    
  +
           checkDisposed( cDst );
  -                    
  +
           Root  rDst = cDst.getRoot();
           Splay sDst = cDst.getSplay();
           int   pDst = cDst.getPos();
  -            
  +
           Root  rSrc = getRoot();
           Splay sSrc = getSplay();
           int   pSrc = getPos();
  -            
  +
           if (sSrc.checkInsertionValidity( pSrc, sDst, pDst, true ))
           {
               return
                   sSrc.moveChars(
                       rSrc, pSrc, getPostCch(), rDst, sDst, pDst, false ) > 0;
           }
  -                    
  +
           assert pSrc == 0;
  -            
  +
           // Check for a movement of stuff into itself!  This case is basically
           // a no-op
  -            
  +
           if (rSrc == rDst && sDst.between( rDst, pDst, sSrc ))
           {
   // TODO - I might have to orphan types in the range here ....
               return false;
           }
  -            
  +
           assert pSrc == 0;
  -            
  +
           sSrc.move( rSrc, cDst.getRoot(), cDst.getSplay(), cDst.getPos(), true );
  -            
  +
           return true;
       }
  -    
  +
       public boolean copyXml ( XmlCursor dst )
       {
           if (dst == null)
               throw new IllegalArgumentException( "Destination is null" );
  -        
  +
           if (dst.monitor() == monitor())
           {
               synchronized ( monitor() )
  @@ -2522,7 +2522,7 @@
                       {
                           GlobalLock.release();
                           acquired = false;
  -                        
  +
                           return copyXmlImpl( dst );
                       }
                   }
  @@ -2538,38 +2538,38 @@
               }
           }
       }
  -    
  +
       private boolean copyXmlImpl ( XmlCursor dst )
       {
           checkDisposed();
  -                    
  +
           if (dst == null || !(dst instanceof Cursor))
           {
               throw
                   new IllegalArgumentException( "Can't copy to a foreign document" );
           }
  -            
  +
           Cursor cDst = (Cursor) dst;
  -                    
  +
           checkDisposed( cDst );
  -            
  +
           Splay sDst = cDst.getSplay();
           int   pDst = cDst.getPos();
  -                    
  +
           Splay s = getSplay();
           int   p = getPos();
  -            
  +
           if (s.checkInsertionValidity( p, sDst, pDst, true ))
               return copyCharsImpl( getPostCch(), dst ) > 0;
  -            
  +
           assert p == 0;
  -            
  +
           // Need to make a splay copy before getting the text because the copy
           // will validate invalid contents/values
  -                    
  +
           Root r = getRoot();
           Root rDst = cDst.getRoot();
  -                    
  +
           Splay copy = s.copySplay();
   
           Object txt = r._text;
  @@ -2579,12 +2579,12 @@
           //
           // Remove text after which might be between leaf value and first attr value
           //
  -        
  +
           if (s.isLeaf() && s.getCchAfter() > 0)
           {
               int cchValue = s.getCchValue();
               int cchAfter = s.getCchAfter();
  -            
  +
               if (cchValue == 0)
                   cp += cchAfter;
               else if (s.nextSplay().isAttr())
  @@ -2597,28 +2597,28 @@
                   cp = 0;
               }
           }
  -            
  +
           sDst.insert( rDst, pDst, copy, txt, cp, cch, true );
  -            
  +
           return true;
       }
  -    
  +
       public boolean removeXmlContents ( )
       {
           synchronized ( monitor() )
           {
               checkDisposed();
  -            
  +
               // TODO - should implement this with internals
  -            
  +
               if (!isContainer())
                   return false;
  -    
  +
               TokenType tt = toFirstContentToken();
               assert !tt.isNone();
  -    
  +
               boolean removed = !isFinish();
  -            
  +
               try
               {
                   while ( !isFinish() )
  @@ -2631,7 +2631,7 @@
               {
                   toParent();
               }
  -    
  +
               return removed;
           }
       }
  @@ -2659,12 +2659,12 @@
   
           return false;
       }
  -    
  +
       public boolean moveXmlContents ( XmlCursor dst )
       {
           if (dst == null)
               throw new IllegalArgumentException( "Destination is null" );
  -        
  +
           if (dst.monitor() == monitor())
           {
               synchronized ( monitor() )
  @@ -2685,7 +2685,7 @@
                       {
                           GlobalLock.release();
                           acquired = false;
  -                        
  +
                           return moveXmlContentsImpl( dst );
                       }
                   }
  @@ -2701,30 +2701,30 @@
               }
           }
       }
  -    
  +
       private boolean moveXmlContentsImpl ( XmlCursor dst )
       {
           checkDisposed();
  -                    
  +
           if (!isContainer())
               return false;
  -            
  +
           // Check to see if dst is in src!  In this case, there is nothing to
           // do.
  -                    
  +
           if (contains( dst ))
               return false;
  -            
  +
           TokenType tt = toFirstContentToken();
           assert !tt.isNone();
  -                    
  +
           boolean moved = !isFinish();
  -                    
  +
           try
           {
               if (!moveXmlImpl( dst ))
                   return false;
  -                        
  +
               while ( !isFinish() )
               {
                   boolean b = moveXmlImpl( dst );
  @@ -2735,7 +2735,7 @@
           {
               toParent();
           }
  -            
  +
           return moved;
       }
   
  @@ -2743,7 +2743,7 @@
       {
           if (dst == null)
               throw new IllegalArgumentException( "Destination is null" );
  -        
  +
           if (dst.monitor() == monitor())
           {
               synchronized ( monitor() )
  @@ -2764,7 +2764,7 @@
                       {
                           GlobalLock.release();
                           acquired = false;
  -                        
  +
                           return copyXmlContentsImpl( dst );
                       }
                   }
  @@ -2780,55 +2780,55 @@
               }
           }
       }
  -    
  +
       private boolean copyXmlContentsImpl ( XmlCursor dst )
       {
           checkDisposed();
  -                    
  +
           if (!isContainer())
               return false;
  -            
  +
           // Check to see if dst is in src!  In this case, copy the src to a new
           // document and then move the copied contents to the destination.
  -            
  +
           if (contains( dst ))
           {
               XmlCursor cTmp = XmlObject.Factory.newInstance().newCursor();
  -            
  +
               cTmp.toNextToken();
  -            
  +
               if (!copyXmlContentsImpl( cTmp ))
               {
                   cTmp.dispose();
                   return false;
               }
  -            
  +
               cTmp.toStartDoc();
               ((Cursor)cTmp).moveXmlContentsImpl( dst );
               cTmp.dispose();
               return true;
           }
  -            
  +
           TokenType tt = toFirstContentToken();
           assert !tt.isNone();
  -                    
  +
           boolean copied = !isFinish();
  -                    
  +
           try
           {
               if (!copyXmlImpl( dst ))
                   return false;
  -            
  +
               for ( ; ; )
               {
                   if (isStart())
                       toEndToken();
  -                            
  +
                   toNextToken();
  -                            
  +
                   if (isFinish())
                       break;
  -            
  +
                   boolean b = copyXmlImpl( dst );
                   assert b;
               }
  @@ -2837,7 +2837,7 @@
           {
               toParent();
           }
  -            
  +
           return copied;
       }
   
  @@ -2846,14 +2846,14 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               if (xthat == null || !(xthat instanceof Cursor))
                   return false;
  -    
  +
               Cursor that = (Cursor) xthat;
  -    
  +
               checkDisposed( that );
  -            
  +
               return getRoot() == that.getRoot();
           }
       }
  @@ -2863,12 +2863,12 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -            
  +
               if (_stack == null)
                   _stack = new Selections();
  -    
  +
               _stack.add( getRoot(), getSplay(), getPos() );
  -    
  +
               getRoot().registerForChange( this );
           }
       }
  @@ -2878,51 +2878,51 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -            
  +
               if (_stack == null || _stack.size() == 0)
                   return false;
  -    
  +
               _stack.setCursor( this, _stack.size() - 1 );
  -    
  +
               _stack.pop();
  -    
  +
               return true;
           }
       }
  -    
  +
       public int getSelectionCount ( )
       {
           synchronized ( monitor() )
           {
               checkDisposed();
  -            
  +
               return _selections == null ? 0 : _selections.size();
           }
       }
  -    
  +
       public boolean toSelection ( int i )
       {
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               if (_selections != null && i >= 0 && _selections.setCursor( this, i ))
               {
                   _currentSelection = i;
                   return true;
               }
  -    
  +
               return false;
           }
       }
  -    
  +
       public boolean hasNextSelection ( )
       {
           synchronized ( monitor() )
           {
               push();
               int currentSelection = _currentSelection;
  -    
  +
               try
               {
                   return toNextSelection();
  @@ -2934,26 +2934,26 @@
               }
           }
       }
  -    
  +
       public boolean toNextSelection ( )
       {
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               if (_selections == null || _currentSelection < -1)
                   return false;
  -    
  +
               int nextSelection = _currentSelection + 1;
  -    
  +
               if (!_selections.setCursor( this, nextSelection ))
               {
                   _currentSelection = -2;
                   return false;
               }
  -    
  +
               _currentSelection = nextSelection;
  -    
  +
               return true;
           }
       }
  @@ -2963,10 +2963,10 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -            
  +
               if (_selections != null)
                   _selections.dispose();
  -            
  +
               _currentSelection = -2;
           }
       }
  @@ -2976,19 +2976,19 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -            
  +
               if (_selections == null)
                   _selections = Path.newSelections();
  -    
  +
               // Force any selection engine to search all...
               _selections.size();
  -    
  +
               _selections.add( getRoot(), getSplay(), getPos() );
  -    
  +
               getRoot().registerForChange( this );
           }
       }
  -    
  +
       public void changeNotification ( )
       {
           if (_selections != null)
  @@ -3000,23 +3000,23 @@
           if (_stack != null)
               _stack.cursify( getRoot() );
       }
  -    
  +
       public void selectPath ( String path, XmlOptions options )
       {
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               if (_selections == null)
                   _selections = Path.newSelections();
               else
                   _selections.dispose();
  -    
  -            _selections.init( 
  +
  +            _selections.init(
                   Path.select( getRoot(), getSplay(), getPos(), path, options ) );
  -    
  +
               push();
  -    
  +
               if (_selections.setCursor( this, 0 ))
               {
                   getRoot().registerForChange( this );
  @@ -3024,26 +3024,26 @@
               }
               else
                   _currentSelection = -2;
  -    
  +
               pop();
           }
       }
  -    
  +
       public void selectPath ( String path )
       {
           selectPath( path, null );
       }
  -    
  +
       public XmlCursor execQuery ( String queryExpr, XmlOptions options )
       {
           synchronized ( monitor() )
           {
               checkDisposed();
  -    
  +
               return Path.query( this, queryExpr, options );
           }
       }
  -    
  +
       public XmlCursor execQuery ( String query )
       {
           return execQuery( query, null );
  @@ -3053,32 +3053,32 @@
       {
           return newDomNode( null );
       }
  -    
  +
       public Node newDomNode ( XmlOptions options )
       {
           try
           {
               Saver.DomSaver saver;
  -            
  +
               synchronized ( monitor() )
               {
                   checkDisposed();
  -                
  +
                   saver = new Saver.DomSaver(
                       getRoot(), getSplay(), getPos(), !isFragment(), options );
               }
  -            
  +
               return saver.exportDom();
           }
           catch ( Exception e )
           {
               if (e instanceof RuntimeException)
                   throw (RuntimeException) e;
  -            
  +
               throw new RuntimeException( e.getMessage(), e );
           }
       }
  -    
  +
       private boolean isFragment()
       {
           if (! isStartdoc())
  @@ -3147,12 +3147,12 @@
       {
           save( ch, lh, null );
       }
  -    
  +
       public void save ( File file ) throws IOException
       {
           save( file, null );
       }
  -    
  +
       public void save ( OutputStream os ) throws IOException
       {
           save( os, null );
  @@ -3174,11 +3174,11 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -            
  +
               new Saver.SaxSaver( getRoot(), getSplay(), getPos(), options, ch, lh );
           }
       }
  -    
  +
       public void save ( File file, XmlOptions options ) throws IOException
       {
           OutputStream os = new FileOutputStream( file );
  @@ -3192,7 +3192,7 @@
               os.close();
           }
       }
  -    
  +
       public void save ( OutputStream os, XmlOptions options ) throws IOException
       {
           // note that we do not hold the monitor for the duration of a save.
  @@ -3221,7 +3221,7 @@
               is.close();
           }
       }
  -    
  +
       public void save ( Writer w, XmlOptions options ) throws IOException
       {
           Reader r = newReader( options );
  @@ -3249,7 +3249,7 @@
       //
       //
       //
  -    
  +
       private boolean validate ( )
       {
           assert _goober.getRoot().validate();
  @@ -3269,30 +3269,30 @@
           void init ( PathEngine pathEngine )
           {
               dispose();
  -            
  +
               _pathEngine = pathEngine;
           }
  -        
  +
           void add ( Root r, Splay s )
           {
               add( r, s, 0 );
           }
  -        
  +
           void add ( Root r, Splay s, int p )
           {
               assert s.getRootSlow() == r;
  -            
  +
               if (_cursors != null)
               {
                   CursorGoober g = new CursorGoober( r );
   
                   g.set( s, p );
  -                
  +
                   _cursors.add( g );
   
                   return;
               }
  -            
  +
               if (_splays == null)
               {
                   assert _count == 0;
  @@ -3303,10 +3303,10 @@
               {
                   Splay[] newSplays = new Splay [ _count * 2 ];
                   int[]   newPositions = new int [ _count * 2 ];
  -                
  +
                   System.arraycopy( _splays, 0, newSplays, 0, _count );
                   System.arraycopy( _positions, 0, newPositions, 0, _count );
  -                
  +
                   _splays = newSplays;
                   _positions = newPositions;
               }
  @@ -3337,13 +3337,13 @@
                   return;
   
               _cursors = new ArrayList();
  -            
  +
               for ( int i = 0 ; i < _count ; i++ )
               {
                   CursorGoober g = new CursorGoober( r );
   
                   g.set( _splays[ i ], _positions[ i ] );
  -                
  +
                   _cursors.add( g );
               }
   
  @@ -3380,7 +3380,7 @@
   
               if (i >= currentSize())
                   return false;
  -            
  +
               if (_cursors != null)
               {
                   assert i < _cursors.size();
  @@ -3401,14 +3401,14 @@
               {
                   for ( int i = 0 ; i < _cursors.size() ; i++ )
                       ((CursorGoober) _cursors.get( i )).set( null, 0 );
  -                
  +
                   _cursors.clear();
  -                
  +
                   _cursors = null;
               }
  -            
  +
               _count = 0;
  -                
  +
               // TODO - cache unused Seleciton objects for later reuse
           }
   
  @@ -3420,7 +3420,7 @@
   
           private PathEngine _pathEngine;
       }
  -    
  +
       //
       // XMLStreamReader
       //
  @@ -3442,23 +3442,23 @@
           //
           // XMLStreamReader methods
           //
  -        
  +
           public void close ( )
           {
               checkChanged();
           }
  -        
  +
           public Location getLocation ( )
           {
               checkChanged();
  -            
  +
               XmlCursor c = getCursor();
   
               XmlLineNumber ln = (XmlLineNumber) c.getBookmark( XmlLineNumber.class );
   
  -            // BUGBUG - put source name here 
  +            // BUGBUG - put source name here
               _uri = null;
  -            
  +
               if (ln != null)
               {
                   _line = ln.getLine();
  @@ -3474,25 +3474,25 @@
   
               return this;
           }
  -        
  +
           public NamespaceContext getNamespaceContext ( )
           {
               checkChanged();
  -            
  +
               return this;
           }
   
           public Object getProperty ( String name )
           {
               checkChanged();
  -            
  +
               throw new RuntimeException( "Not implemented" );
           }
  -        
  +
           public String getCharacterEncodingScheme ( )
           {
               checkChanged();
  -            
  +
               XmlDocumentProperties props = getCursor().documentProperties();
   
               return props == null ? null : props.getEncoding();
  @@ -3501,30 +3501,30 @@
           public String getEncoding ( )
           {
               checkChanged();
  -            
  +
               return null;
           }
   
           public String getVersion ( )
           {
               checkChanged();
  -            
  +
               XmlDocumentProperties props = getCursor().documentProperties();
   
               return props == null ? null : props.getVersion();
           }
  -        
  +
           public boolean isStandalone ( )
           {
               checkChanged();
  -            
  +
               return false;
           }
  -        
  +
           public boolean standaloneSet ( )
           {
               checkChanged();
  -            
  +
               return false;
           }
   
  @@ -3532,17 +3532,17 @@
               throws XMLStreamException
           {
               checkChanged();
  -            
  +
               if (type != getEventType())
                   throw new XMLStreamException();
   
               if (namespaceURI != null && !getNamespaceURI().equals( namespaceURI ))
                   throw new XMLStreamException();
  -            
  +
               if (localName != null && !getLocalName().equals( localName ))
                   throw new XMLStreamException();
           }
  -        
  +
           //
           // Location and NamespaceContext methods
           //
  @@ -3551,11 +3551,11 @@
           public int    getColumnNumber    ( ) { return _column; }
           public int    getLineNumber      ( ) { return _line;   }
           public String getLocationURI     ( ) { return _uri;    }
  -        
  +
           public String getNamespaceURI ( String prefix )
           {
               checkChanged();
  -            
  +
               XmlCursor c = getCursor();
   
               boolean pop = false;
  @@ -3578,7 +3578,7 @@
           public String getPrefix ( String namespaceURI )
           {
               checkChanged();
  -            
  +
               XmlCursor c = getCursor();
   
               boolean pop = false;
  @@ -3605,9 +3605,9 @@
           public Iterator getPrefixes ( String namespaceURI )
           {
               checkChanged();
  -            
  +
               // BUGBUG - get only one for now ...
  -            
  +
               HashMap map = new HashMap();
   
               map.put( namespaceURI, getPrefix( namespaceURI ) );
  @@ -3629,16 +3629,16 @@
           String _uri;
           int _line, _column, _offset;
       }
  -        
  -    
  +
  +
       private static final class XMLStreamReaderForString extends XMLStreamReaderBase
       {
           XMLStreamReaderForString ( XmlCursor c, String s )
           {
               super( c );
  -            
  +
               _cursor = c;
  -            
  +
               _string = s == null ? "" : s;
           }
   
  @@ -3646,11 +3646,11 @@
           {
               return _cursor;
           }
  -        
  +
           //
           // Legal stream methods
           //
  -        
  +
           public int     getEventType      ( ) { checkChanged(); return CHARACTERS;            }
           public String  getText           ( ) { checkChanged(); return _string;               }
           public char[]  getTextCharacters ( ) { checkChanged(); return _string.toCharArray(); }
  @@ -3662,25 +3662,25 @@
           public boolean isCharacters      ( ) { checkChanged(); return true;                  }
           public boolean isEndElement      ( ) { checkChanged(); return false;                 }
           public boolean isStartElement    ( ) { checkChanged(); return false;                 }
  -        
  +
           public int getTextCharacters ( int sourceStart, char[] target, int targetStart, int length )
           {
               checkChanged();
  -            
  +
               int sourceEnd = sourceStart + length;
   
               if (sourceEnd >= _string.length())
                   sourceEnd = _string.length();
  -            
  +
               _string.getChars( sourceStart, sourceEnd, target, targetStart );
   
               return sourceEnd - sourceStart;
           }
  -        
  +
           public boolean isWhiteSpace ( )
           {
               checkChanged();
  -            
  +
               for ( int i = 0 ; i < _string.length() ; i++ )
               {
                   if (!Splay.isWhiteSpace( _string.charAt( i ) ))
  @@ -3689,11 +3689,11 @@
   
               return true;
           }
  -        
  +
           //
           // Illegal stream methods
           //
  -        
  +
           public int     getAttributeCount ( ) { throw new IllegalStateException(); }
           public String  getAttributeLocalName ( int index ) { throw new IllegalStateException(); }
           public QName   getAttributeName ( int index ) { throw new IllegalStateException(); }
  @@ -3715,11 +3715,11 @@
           public boolean isAttributeSpecified ( int index ) { throw new IllegalStateException(); }
           public int     next ( ) { throw new IllegalStateException(); }
           public int     nextTag ( ) { throw new IllegalStateException(); }
  -        
  +
           private XmlCursor _cursor;
           private String    _string;
       }
  -    
  +
       private static final class XMLStreamReaderImpl extends XMLStreamReaderBase
       {
           XMLStreamReaderImpl ( XmlCursor start, XmlCursor last )
  @@ -3737,22 +3737,22 @@
           {
               return _cursor;
           }
  -        
  +
           //
           //
           //
  -        
  +
           public boolean hasNext ( )
           {
               checkChanged();
  -            
  +
               return !_didLast;
           }
  -        
  +
           public int next ( )
           {
               checkChanged();
  -            
  +
               if (_didLast)
                   throw new IllegalStateException();
   
  @@ -3763,14 +3763,14 @@
   
               if (_cursor.isAtSamePositionAs( _last ))
                   _didLast = true;
  -            
  +
               return getEventType();
           }
  -        
  +
           public int getEventType ( )
           {
               checkChanged();
  -            
  +
               switch ( _cursor.currentTokenType().intValue() )
               {
               case TokenType.INT_STARTDOC  : return START_DOCUMENT;
  @@ -3782,17 +3782,17 @@
               case TokenType.INT_NAMESPACE : return NAMESPACE;
               case TokenType.INT_COMMENT   : return COMMENT;
               case TokenType.INT_PROCINST  : return PROCESSING_INSTRUCTION;
  -                                           
  +
               default                      : throw new IllegalStateException();
               }
           }
  -        
  +
           public int getAttributeCount ( )
           {
               checkChanged();
  -            
  +
               int count = 0;
  -            
  +
               if (_cursor.isAttr())
                   count = 1;
               else if (_cursor.isStart())
  @@ -3802,7 +3802,7 @@
                   for ( _cursor.toNextToken() ; _cursor.isAnyAttr() ; _cursor.toNextToken() )
                       if (_cursor.isAttr())
                           count++;
  -                
  +
                   _cursor.pop();
               }
               else
  @@ -3810,13 +3810,13 @@
   
               return count;
           }
  -        
  +
           public int getNamespaceCount ( )
           {
               checkChanged();
  -            
  +
               int count = 0;
  -            
  +
               if (_cursor.isNamespace())
                   count = 1;
               else if (_cursor.isStart())
  @@ -3826,7 +3826,7 @@
                   for ( _cursor.toNextToken() ; _cursor.isAnyAttr() ; _cursor.toNextToken() )
                       if (_cursor.isNamespace())
                           count++;
  -                
  +
                   _cursor.pop();
               }
               else
  @@ -3850,7 +3850,7 @@
                   for ( _cursor.toNextToken() ; _cursor.isAnyAttr() ; _cursor.toNextToken() )
                       if (_cursor.isAttr() && index-- == 0)
                           return;
  -                
  +
                   throw new IllegalArgumentException();
               }
               else
  @@ -3872,7 +3872,7 @@
                   for ( _cursor.toNextToken() ; _cursor.isAnyAttr() ; _cursor.toNextToken() )
                       if (_cursor.isNamespace() && index-- == 0)
                           return;
  -                
  +
                   throw new IllegalArgumentException();
               }
               else
  @@ -3905,11 +3905,11 @@
               else
                   throw new IllegalStateException();
           }
  -        
  +
           public String getAttributeLocalName ( int index )
           {
               checkChanged();
  -            
  +
               _cursor.push();
   
               try
  @@ -3923,11 +3923,11 @@
                   _cursor.pop();
               }
           }
  -        
  +
           public QName getAttributeName ( int index )
           {
               checkChanged();
  -            
  +
               _cursor.push();
   
               try
  @@ -3941,11 +3941,11 @@
                   _cursor.pop();
               }
           }
  -        
  +
           public String getAttributeNamespace ( int index )
           {
               checkChanged();
  -            
  +
               _cursor.push();
   
               try
  @@ -3959,11 +3959,11 @@
                   _cursor.pop();
               }
           }
  -        
  +
           public String getAttributePrefix ( int index )
           {
               checkChanged();
  -            
  +
               _cursor.push();
   
               try
  @@ -3977,11 +3977,11 @@
                   _cursor.pop();
               }
           }
  -        
  +
           public String getAttributeType ( int index )
           {
               checkChanged();
  -            
  +
               _cursor.push();
   
               try
  @@ -3995,11 +3995,11 @@
                   _cursor.pop();
               }
           }
  -        
  +
           public String getAttributeValue ( int index )
           {
               checkChanged();
  -            
  +
               _cursor.push();
   
               try
  @@ -4013,11 +4013,11 @@
                   _cursor.pop();
               }
           }
  -        
  +
           public String getAttributeValue ( String namespaceURI, String localName )
           {
               checkChanged();
  -            
  +
               _cursor.push();
   
               try
  @@ -4032,11 +4032,11 @@
                   _cursor.pop();
               }
           }
  -        
  +
           public String getNamespacePrefix ( int index )
           {
               checkChanged();
  -            
  +
               _cursor.push();
   
               try
  @@ -4050,11 +4050,11 @@
                   _cursor.pop();
               }
           }
  -        
  +
           public String getNamespaceURI ( int index )
           {
               checkChanged();
  -            
  +
               _cursor.push();
   
               try
  @@ -4068,11 +4068,11 @@
                   _cursor.pop();
               }
           }
  -        
  +
           public String getElementText ( ) throws XMLStreamException
           {
               checkChanged();
  -            
  +
               if (!isStartElement())
                   throw new IllegalStateException();
   
  @@ -4090,10 +4090,10 @@
                       depth--;
                       continue;
                   }
  -                
  +
                   if (e == START_ELEMENT)
                       depth++;
  -                
  +
                   if (e != CHARACTERS)
                       throw new XMLStreamException();
   
  @@ -4106,7 +4106,7 @@
           private QName getElemName ( )
           {
               _cursor.push();
  -            
  +
               try
               {
                   if (_cursor.isEnd())
  @@ -4121,59 +4121,59 @@
                   _cursor.pop();
               }
           }
  -        
  +
           public QName getName ( )
           {
               checkChanged();
  -            
  +
               return getElemName();
           }
  -        
  +
           public String getLocalName ( )
           {
               checkChanged();
  -            
  +
               return getElemName().getLocalPart();
           }
  -        
  +
           public String getNamespaceURI ( )
           {
               checkChanged();
  -            
  +
               return getElemName().getNamespaceURI();
           }
  -        
  +
           public String getPIData ( )
           {
               checkChanged();
  -            
  +
               if (!_cursor.isProcinst())
                   throw new IllegalStateException();
   
               return _cursor.getTextValue();
           }
  -        
  +
           public String getPITarget ( )
           {
               checkChanged();
  -            
  +
               if (!_cursor.isProcinst())
                   throw new IllegalStateException();
   
               return _cursor.getName().getLocalPart();
           }
  -        
  +
           public String getPrefix ( )
           {
               checkChanged();
  -            
  +
               return getPrefix( getNamespaceURI() );
           }
  -        
  +
           public String getText ( )
           {
               checkChanged();
  -            
  +
               if (_cursor.isComment())
                   return _cursor.getTextValue();
   
  @@ -4182,21 +4182,21 @@
   
               throw new IllegalStateException();
           }
  -        
  +
           public char[] getTextCharacters ( )
           {
               checkChanged();
  -            
  +
               return getText().toCharArray();
           }
  -        
  +
           public int getTextCharacters ( int sourceStart, char[] target, int targetStart, int length )
           {
               checkChanged();
  -            
  +
               if (length < 0)
                   throw new IllegalStateException();
  -            
  +
               char[] chars = getTextCharacters();
   
               if (length > chars.length)
  @@ -4206,29 +4206,29 @@
   
               return length;
           }
  -        
  +
           public int getTextLength ( )
           {
               checkChanged();
  -            
  +
               return getText().length();
           }
  -        
  +
           public int getTextStart ( )
           {
               checkChanged();
  -            
  +
               return 0;
           }
  -        
  +
           public boolean hasName ( )
           {
               checkChanged();
  -            
  +
               try
               {
                   getName();
  -                
  +
                   return true;
               }
               catch ( IllegalStateException e )
  @@ -4236,15 +4236,15 @@
                   return false;
               }
           }
  -        
  +
           public boolean hasText ( )
           {
               checkChanged();
  -            
  +
               try
               {
                   getText();
  -                
  +
                   return true;
               }
               catch ( IllegalStateException e )
  @@ -4252,39 +4252,39 @@
                   return false;
               }
           }
  -        
  +
           public boolean isAttributeSpecified ( int index )
           {
               checkChanged();
  -            
  +
               return false;
           }
  -        
  +
           public boolean isCharacters ( )
           {
               checkChanged();
  -            
  +
               return _cursor.isText();
           }
  -        
  +
           public boolean isEndElement ( )
           {
               checkChanged();
  -            
  +
               return _cursor.isEnd();
           }
  -        
  +
           public boolean isStartElement ( )
           {
               checkChanged();
  -            
  +
               return _cursor.isStart();
           }
  -        
  +
           public boolean isWhiteSpace ( )
           {
               checkChanged();
  -            
  +
               try
               {
                   String s = getText();
  @@ -4302,11 +4302,11 @@
                   return false;
               }
           }
  -        
  +
           public int nextTag ( ) throws XMLStreamException
           {
               checkChanged();
  -            
  +
               for ( ; ; )
               {
                   if (isStartElement() || isEndElement())
  @@ -4321,13 +4321,13 @@
                   next();
               }
           }
  -        
  +
           XmlCursor _cursor;
           XmlCursor _last;
  -        
  +
           boolean   _didLast;
       }
  -    
  +
       //
       //
       //
  @@ -4335,7 +4335,7 @@
       final CursorGoober _goober;
   
       private Selections _stack;
  -    
  +
       private Selections _selections;
       private int        _currentSelection;
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xmlbeans-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xmlbeans-cvs-help@xml.apache.org