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 da...@apache.org on 2004/03/30 05:58:11 UTC

cvs commit: xml-xmlbeans/v1/src/xmlstore/org/apache/xmlbeans/impl/store CursorData.java Cursor.java Root.java Saver.java

daveremy    2004/03/29 19:58:10

  Modified:    v1       Tag: xmlbeans-1-0-1_branch build.xml
               v1/src/typeimpl/org/apache/xmlbeans/impl/schema Tag:
                        xmlbeans-1-0-1_branch SchemaTypeLoaderImpl.java
               v1/src/xmlstore/org/apache/xmlbeans/impl/store Tag:
                        xmlbeans-1-0-1_branch Cursor.java Root.java
                        Saver.java
  Added:       v1/src/xmlstore/org/apache/xmlbeans/impl/store Tag:
                        xmlbeans-1-0-1_branch CursorData.java
  Log:
  merging old fixes from main trunk to xmlbeans-1-0-1_branch
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.10.2.2  +0 -1      xml-xmlbeans/v1/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v1/build.xml,v
  retrieving revision 1.10.2.1
  retrieving revision 1.10.2.2
  diff -u -r1.10.2.1 -r1.10.2.2
  --- build.xml	23 Jan 2004 23:15:59 -0000	1.10.2.1
  +++ build.xml	30 Mar 2004 03:58:10 -0000	1.10.2.2
  @@ -500,7 +500,6 @@
         <fileset dir="build/classes/xmlstore"/>
         <fileset dir="build/classes/xmlinputstream"/>
         <fileset dir="build/classes/repackage"/>
  -      <fileset dir="src/license"/>
       </jar>
     </target>
   
  
  
  
  No                   revision
  No                   revision
  1.2.2.1   +10 -6     xml-xmlbeans/v1/src/typeimpl/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java
  
  Index: SchemaTypeLoaderImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v1/src/typeimpl/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java,v
  retrieving revision 1.2
  retrieving revision 1.2.2.1
  diff -u -r1.2 -r1.2.2.1
  --- SchemaTypeLoaderImpl.java	24 Sep 2003 23:31:07 -0000	1.2
  +++ SchemaTypeLoaderImpl.java	30 Mar 2004 03:58:10 -0000	1.2.2.1
  @@ -71,6 +71,7 @@
   import java.io.InputStream;
   import java.util.Map;
   import java.util.HashMap;
  +import java.util.WeakHashMap;
   import java.util.Collections;
   import java.util.ArrayList;
   import java.util.List;
  @@ -98,23 +99,26 @@
           return new SchemaTypeLoaderImpl(new SchemaTypeLoader[] { BuiltinSchemaTypeSystem.get() } , null, Thread.currentThread().getContextClassLoader());
       }
   
  -    private static ThreadLocal _threadTypeSystem =
  +    private static ThreadLocal _threadTypeSystems =
           new ThreadLocal()
           {
  -            protected Object initialValue() { return buildContextTypeLoader(); }
  +            protected Object initialValue() { return new WeakHashMap(); }
           };
   
       public static SchemaTypeLoaderImpl getContextTypeLoader()
       {
  -        SchemaTypeLoaderImpl candidate = (SchemaTypeLoaderImpl)_threadTypeSystem.get();
  -        if (candidate._classLoader != Thread.currentThread().getContextClassLoader())
  +        WeakHashMap candidates = (WeakHashMap) _threadTypeSystems.get();
  +        ClassLoader threadContextClassLoader = Thread.currentThread().getContextClassLoader();
  +        SchemaTypeLoaderImpl candidate = (SchemaTypeLoaderImpl) candidates.get( threadContextClassLoader );
  +
  +        if (candidate == null)
           {
               candidate = buildContextTypeLoader();
  -            _threadTypeSystem.set(candidate);
  +            candidates.put( threadContextClassLoader, candidate );
           }
           return candidate;
       }
  -
  +    
       public static SchemaTypeLoader build(SchemaTypeLoader[] searchPath, ResourceLoader resourceLoader, ClassLoader classLoader)
       {
           if (searchPath == null)
  
  
  
  No                   revision
  No                   revision
  1.3.2.1   +55 -75    xml-xmlbeans/v1/src/xmlstore/org/apache/xmlbeans/impl/store/Cursor.java
  
  Index: Cursor.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v1/src/xmlstore/org/apache/xmlbeans/impl/store/Cursor.java,v
  retrieving revision 1.3
  retrieving revision 1.3.2.1
  diff -u -r1.3 -r1.3.2.1
  --- Cursor.java	30 Sep 2003 23:18:15 -0000	1.3
  +++ Cursor.java	30 Mar 2004 03:58:10 -0000	1.3.2.1
  @@ -94,18 +94,8 @@
   
   public final class Cursor implements XmlCursor, ChangeListener
   {
  -    Cursor ( Root r, Splay s )        { assert s != null; _goober = new CursorGoober( r ); set( s ); }
  -    Cursor ( Root r, Splay s, int p ) { assert s != null; _goober = new CursorGoober( r ); set( s, p ); }
  -
  -    protected void finalize ( )
  -    {
  -        Splay s = getSplay();
  -        
  -        if (s != null)
  -        {
  -            dispose();
  -        }
  -    }
  +    Cursor ( Root r, Splay s )        { assert s != null; _data = CursorData.getOne( r ); set( s ); }
  +    Cursor ( Root r, Splay s, int p ) { assert s != null; _data = CursorData.getOne( r ); set( s, p ); }
   
       //
       //
  @@ -116,15 +106,15 @@
           return getRoot();
       }
   
  -    Root  getRoot ( ) { return _goober.getRoot(); }
  +    Root  getRoot ( ) { return _data._goober.getRoot(); }
   
  -    Splay getSplay ( ) { return _goober.getSplay(); }
  -    int   getPos   ( ) { return _goober.getPos(); }
  +    Splay getSplay ( ) { return _data._goober.getSplay(); }
  +    int   getPos   ( ) { return _data._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 ); }
  -    void set ( Goober g       ) { _goober.set( g ); }
  +    void set ( Splay s, int p ) { _data._goober.set( s, p ); }
  +    void set ( Splay s        ) { _data._goober.set( s, 0 ); }
  +    void set ( int p          ) { _data._goober.set( p ); }
  +    void set ( Goober g       ) { _data._goober.set( g ); }
   
       int getPostCch ( )
       {
  @@ -169,7 +159,7 @@
       
       boolean isDisposed ( )
       {
  -        return getSplay() == null;
  +        return _data == null;
       }
   
       //
  @@ -182,12 +172,8 @@
           {
               if (!isDisposed())
               {
  -                clearSelections();
  -    
  -                if (_stack != null)
  -                    _stack.dispose();
  -    
  -                set( (Splay) null );
  +                _data.release();
  +                _data = null;
               }
           }
       }
  @@ -279,7 +265,7 @@
           if (c == null)
               return false;
   
  -        set( c._goober );
  +        set( c._data._goober );
   
           return true;
       }
  @@ -925,7 +911,10 @@
   
       public void insertProcInst ( String target, String value )
       {
  -        validatePrefix( target ); // used becuase "<?xml...?> is disallowed
  +        validateLocalName( target ); // used becuase "<?xml...?> is disallowed
  +
  +        if (Splay.beginsWithXml( target ) && target.length() == 3)
  +            throw new IllegalArgumentException( "Target begins with 'xml'" );
       
           synchronized ( monitor() )
           {
  @@ -1152,7 +1141,7 @@
               if (a._key == null)
                   throw new IllegalArgumentException( "Annotation key is null" );
       
  -            a.set( _goober );
  +            a.set( _data._goober );
               annotation._currentMark = a;
           }
       }
  @@ -2800,10 +2789,10 @@
           {
               checkDisposed();
               
  -            if (_stack == null)
  -                _stack = new Selections();
  +            if (_data._stack == null)
  +                _data._stack = new Selections();
       
  -            _stack.add( getRoot(), getSplay(), getPos() );
  +            _data._stack.add( getRoot(), getSplay(), getPos() );
       
               getRoot().registerForChange( this );
           }
  @@ -2815,12 +2804,12 @@
           {
               checkDisposed();
               
  -            if (_stack == null || _stack.size() == 0)
  +            if (_data._stack == null || _data._stack.size() == 0)
                   return false;
       
  -            _stack.setCursor( this, _stack.size() - 1 );
  +            _data._stack.setCursor( this, _data._stack.size() - 1 );
       
  -            _stack.pop();
  +            _data._stack.pop();
       
               return true;
           }
  @@ -2832,7 +2821,7 @@
           {
               checkDisposed();
               
  -            return _selections == null ? 0 : _selections.size();
  +            return _data._selections == null ? 0 : _data._selections.size();
           }
       }
       
  @@ -2842,9 +2831,9 @@
           {
               checkDisposed();
       
  -            if (_selections != null && i >= 0 && _selections.setCursor( this, i ))
  +            if (_data._selections != null && i >= 0 && _data._selections.setCursor( this, i ))
               {
  -                _currentSelection = i;
  +                _data._currentSelection = i;
                   return true;
               }
       
  @@ -2857,7 +2846,7 @@
           synchronized ( monitor() )
           {
               push();
  -            int currentSelection = _currentSelection;
  +            int currentSelection = _data._currentSelection;
       
               try
               {
  @@ -2866,7 +2855,7 @@
               finally
               {
                   pop();
  -                _currentSelection = currentSelection;
  +                _data._currentSelection = currentSelection;
               }
           }
       }
  @@ -2877,18 +2866,18 @@
           {
               checkDisposed();
       
  -            if (_selections == null || _currentSelection < -1)
  +            if (_data._selections == null || _data._currentSelection < -1)
                   return false;
       
  -            int nextSelection = _currentSelection + 1;
  +            int nextSelection = _data._currentSelection + 1;
       
  -            if (!_selections.setCursor( this, nextSelection ))
  +            if (!_data._selections.setCursor( this, nextSelection ))
               {
  -                _currentSelection = -2;
  +                _data._currentSelection = -2;
                   return false;
               }
       
  -            _currentSelection = nextSelection;
  +            _data._currentSelection = nextSelection;
       
               return true;
           }
  @@ -2899,11 +2888,7 @@
           synchronized ( monitor() )
           {
               checkDisposed();
  -            
  -            if (_selections != null)
  -                _selections.dispose();
  -            
  -            _currentSelection = -2;
  +            _data.clearSelections();
           }
       }
   
  @@ -2913,13 +2898,13 @@
           {
               checkDisposed();
               
  -            if (_selections == null)
  -                _selections = Path.newSelections();
  +            if (_data._selections == null)
  +                _data._selections = Path.newSelections();
       
               // Force any selection engine to search all...
  -            _selections.size();
  +            _data._selections.size();
       
  -            _selections.add( getRoot(), getSplay(), getPos() );
  +            _data._selections.add( getRoot(), getSplay(), getPos() );
       
               getRoot().registerForChange( this );
           }
  @@ -2927,14 +2912,14 @@
       
       public void changeNotification ( )
       {
  -        if (_selections != null)
  +        if (_data._selections != null)
           {
  -            _selections.size();  // Force a full selection
  -            _selections.cursify( getRoot() );
  +            _data._selections.size();  // Force a full selection
  +            _data._selections.cursify( getRoot() );
           }
   
  -        if (_stack != null)
  -            _stack.cursify( getRoot() );
  +        if (_data._stack != null)
  +            _data._stack.cursify( getRoot() );
       }
       
       public void selectPath ( String path, XmlOptions options )
  @@ -2943,23 +2928,23 @@
           {
               checkDisposed();
       
  -            if (_selections == null)
  -                _selections = Path.newSelections();
  +            if (_data._selections == null)
  +                _data._selections = Path.newSelections();
               else
  -                _selections.dispose();
  +                _data._selections.dispose();
       
  -            _selections.init( 
  +            _data._selections.init( 
                   Path.select( getRoot(), getSplay(), getPos(), path, options ) );
       
               push();
       
  -            if (_selections.setCursor( this, 0 ))
  +            if (_data._selections.setCursor( this, 0 ))
               {
                   getRoot().registerForChange( this );
  -                _currentSelection = -1;
  +                _data._currentSelection = -1;
               }
               else
  -                _currentSelection = -2;
  +                _data._currentSelection = -2;
       
               pop();
           }
  @@ -3188,12 +3173,12 @@
       
       private boolean validate ( )
       {
  -        assert _goober.getRoot().validate();
  +        assert _data._goober.getRoot().validate();
           return true;
       }
   
  -    public void dump ( ) { _goober.getRoot().dump(); }
  -    public void dump ( boolean verbose ) { _goober.getRoot().dump( verbose ); }
  +    public void dump ( ) { _data._goober.getRoot().dump(); }
  +    public void dump ( boolean verbose ) { _data._goober.getRoot().dump( verbose ); }
   
       interface PathEngine
       {
  @@ -3361,10 +3346,5 @@
       //
       //
   
  -    final CursorGoober _goober;
  -
  -    private Selections _stack;
  -    
  -    private Selections _selections;
  -    private int        _currentSelection;
  +    CursorData _data;
   }
  
  
  
  1.6.2.1   +14 -2     xml-xmlbeans/v1/src/xmlstore/org/apache/xmlbeans/impl/store/Root.java
  
  Index: Root.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v1/src/xmlstore/org/apache/xmlbeans/impl/store/Root.java,v
  retrieving revision 1.6
  retrieving revision 1.6.2.1
  diff -u -r1.6 -r1.6.2.1
  --- Root.java	18 Nov 2003 19:19:04 -0000	1.6
  +++ Root.java	30 Mar 2004 03:58:10 -0000	1.6.2.1
  @@ -1397,7 +1397,7 @@
               // loading.  When finished loading, bump it.
   
               _root.invalidateVersion();
  -
  +            
               assert _root.isLeftOnly();
           }
   
  @@ -1485,7 +1485,19 @@
                   _docElemDiscarded = true;
   
                   if (_replaceDocElem == null)
  +                {
  +                    // Remove all content up to now because the
  +                    // document element is to be removed, and I dont
  +                    // want that content to mix with the real content.
  +                    
  +                    _root.ensureEmpty();
  +                    _lastNonAttr = _root._doc;
  +                    _lastSplay = _root._doc;
  +                    _lastPos = 0;
  +                    _frontier = _root._doc;
  +                    
                       return;
  +                }
   
                   name = _replaceDocElem;
               }
  @@ -2288,7 +2300,7 @@
               if (src instanceof Cursor)
               {
                   ps.println(
  -                    "  from cursor " + ((CursorGoober)((Cursor) src)._goober).getDebugId() );
  +                    "  from cursor " + ((CursorGoober)((Cursor) src)._data._goober).getDebugId() );
               }
               else if (src instanceof Splay)
                   ps.println( "  from splay " + ((Splay) src).getDebugId() );
  
  
  
  1.4.2.2   +19 -3     xml-xmlbeans/v1/src/xmlstore/org/apache/xmlbeans/impl/store/Saver.java
  
  Index: Saver.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v1/src/xmlstore/org/apache/xmlbeans/impl/store/Saver.java,v
  retrieving revision 1.4.2.1
  retrieving revision 1.4.2.2
  diff -u -r1.4.2.1 -r1.4.2.2
  --- Saver.java	23 Jan 2004 22:39:15 -0000	1.4.2.1
  +++ Saver.java	30 Mar 2004 03:58:10 -0000	1.4.2.2
  @@ -84,6 +84,8 @@
   import java.util.ConcurrentModificationException;
   import javax.xml.namespace.QName;
   import javax.xml.parsers.DocumentBuilderFactory;
  +import javax.xml.parsers.DocumentBuilder;
  +import javax.xml.parsers.ParserConfigurationException;
   import org.w3c.dom.Document;
   import org.w3c.dom.DocumentFragment;
   import org.w3c.dom.Element;
  @@ -4457,6 +4459,22 @@
       //
       //
   
  +    private static ThreadLocal _threadDocumentBuilderFactory =
  +        new ThreadLocal()
  +        {
  +            protected Object initialValue()
  +            {
  +                try
  +                {
  +                    return DocumentBuilderFactory.newInstance().newDocumentBuilder();
  +                }
  +                catch ( ParserConfigurationException e )
  +                {
  +                    throw new RuntimeException( e.getMessage(), e );
  +                }
  +            }
  +        };
  +    
       static final class DomSaver extends Saver
       {
           DomSaver ( Root r, Splay s, int p, boolean createDoc, XmlOptions options )
  @@ -4471,9 +4489,7 @@
               // TODO - add an options which specifies a Document with which
               // to create the fragment
   
  -            _doc =
  -                DocumentBuilderFactory.newInstance().
  -                    newDocumentBuilder().newDocument();
  +            _doc = ((DocumentBuilder) _threadDocumentBuilderFactory.get()).newDocument();
   
               Node result;
   
  
  
  
  No                   revision
  
  Index: Saver.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v1/src/xmlstore/org/apache/xmlbeans/impl/store/Saver.java,v
  retrieving revision 1.4.2.1
  retrieving revision 1.4.2.2
  diff -u -r1.4.2.1 -r1.4.2.2
  --- Saver.java	23 Jan 2004 22:39:15 -0000	1.4.2.1
  +++ Saver.java	30 Mar 2004 03:58:10 -0000	1.4.2.2
  @@ -84,6 +84,8 @@
   import java.util.ConcurrentModificationException;
   import javax.xml.namespace.QName;
   import javax.xml.parsers.DocumentBuilderFactory;
  +import javax.xml.parsers.DocumentBuilder;
  +import javax.xml.parsers.ParserConfigurationException;
   import org.w3c.dom.Document;
   import org.w3c.dom.DocumentFragment;
   import org.w3c.dom.Element;
  @@ -4457,6 +4459,22 @@
       //
       //
   
  +    private static ThreadLocal _threadDocumentBuilderFactory =
  +        new ThreadLocal()
  +        {
  +            protected Object initialValue()
  +            {
  +                try
  +                {
  +                    return DocumentBuilderFactory.newInstance().newDocumentBuilder();
  +                }
  +                catch ( ParserConfigurationException e )
  +                {
  +                    throw new RuntimeException( e.getMessage(), e );
  +                }
  +            }
  +        };
  +    
       static final class DomSaver extends Saver
       {
           DomSaver ( Root r, Splay s, int p, boolean createDoc, XmlOptions options )
  @@ -4471,9 +4489,7 @@
               // TODO - add an options which specifies a Document with which
               // to create the fragment
   
  -            _doc =
  -                DocumentBuilderFactory.newInstance().
  -                    newDocumentBuilder().newDocument();
  +            _doc = ((DocumentBuilder) _threadDocumentBuilderFactory.get()).newDocument();
   
               Node result;
   
  
  
  
  No                   revision
  
  Index: Saver.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v1/src/xmlstore/org/apache/xmlbeans/impl/store/Saver.java,v
  retrieving revision 1.4.2.1
  retrieving revision 1.4.2.2
  diff -u -r1.4.2.1 -r1.4.2.2
  --- Saver.java	23 Jan 2004 22:39:15 -0000	1.4.2.1
  +++ Saver.java	30 Mar 2004 03:58:10 -0000	1.4.2.2
  @@ -84,6 +84,8 @@
   import java.util.ConcurrentModificationException;
   import javax.xml.namespace.QName;
   import javax.xml.parsers.DocumentBuilderFactory;
  +import javax.xml.parsers.DocumentBuilder;
  +import javax.xml.parsers.ParserConfigurationException;
   import org.w3c.dom.Document;
   import org.w3c.dom.DocumentFragment;
   import org.w3c.dom.Element;
  @@ -4457,6 +4459,22 @@
       //
       //
   
  +    private static ThreadLocal _threadDocumentBuilderFactory =
  +        new ThreadLocal()
  +        {
  +            protected Object initialValue()
  +            {
  +                try
  +                {
  +                    return DocumentBuilderFactory.newInstance().newDocumentBuilder();
  +                }
  +                catch ( ParserConfigurationException e )
  +                {
  +                    throw new RuntimeException( e.getMessage(), e );
  +                }
  +            }
  +        };
  +    
       static final class DomSaver extends Saver
       {
           DomSaver ( Root r, Splay s, int p, boolean createDoc, XmlOptions options )
  @@ -4471,9 +4489,7 @@
               // TODO - add an options which specifies a Document with which
               // to create the fragment
   
  -            _doc =
  -                DocumentBuilderFactory.newInstance().
  -                    newDocumentBuilder().newDocument();
  +            _doc = ((DocumentBuilder) _threadDocumentBuilderFactory.get()).newDocument();
   
               Node result;
   
  
  
  
  1.1.2.1   +0 -0      xml-xmlbeans/v1/src/xmlstore/org/apache/xmlbeans/impl/store/CursorData.java
  
  Index: CursorData.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v1/src/xmlstore/org/apache/xmlbeans/impl/store/CursorData.java,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  
  
  

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