You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by mr...@apache.org on 2008/12/31 07:15:43 UTC

svn commit: r730318 - in /xerces/java/branches/stax-dev/src/org/apache/xerces/stax: ./ events/

Author: mrglavas
Date: Tue Dec 30 22:15:42 2008
New Revision: 730318

URL: http://svn.apache.org/viewvc?rev=730318&view=rev
Log:
Lots of work on the StAX events, including an implementation of XMLEventFactory.

Added:
    xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/ElementImpl.java   (with props)
Modified:
    xerces/java/branches/stax-dev/src/org/apache/xerces/stax/DefaultEventAllocator.java
    xerces/java/branches/stax-dev/src/org/apache/xerces/stax/XMLEventFactoryImpl.java
    xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/CharactersImpl.java
    xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/DTDImpl.java
    xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/EndDocumentImpl.java
    xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/EndElementImpl.java
    xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/EntityReferenceImpl.java
    xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/StartElementImpl.java
    xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/XMLEventImpl.java

Modified: xerces/java/branches/stax-dev/src/org/apache/xerces/stax/DefaultEventAllocator.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/stax-dev/src/org/apache/xerces/stax/DefaultEventAllocator.java?rev=730318&r1=730317&r2=730318&view=diff
==============================================================================
--- xerces/java/branches/stax-dev/src/org/apache/xerces/stax/DefaultEventAllocator.java (original)
+++ xerces/java/branches/stax-dev/src/org/apache/xerces/stax/DefaultEventAllocator.java Tue Dec 30 22:15:42 2008
@@ -73,9 +73,9 @@
                 //in turn at index 0. 
                 return makeAttribute(0, reader);
             case XMLStreamConstants.CDATA:
-                 return new CharactersImpl(reader.getText(), false, true, false, location);
+                 return new CharactersImpl(reader.getText(), XMLStreamConstants.CDATA, location);
             case XMLStreamConstants.CHARACTERS:
-                return new CharactersImpl(reader.getText(), false, false, false, location);
+                return new CharactersImpl(reader.getText(), XMLStreamConstants.CHARACTERS, location);
             case XMLStreamConstants.COMMENT:
                 return new CommentImpl(reader.getText(), location);
             case XMLStreamConstants.DTD:
@@ -97,7 +97,7 @@
                 return new ProcessingInstructionImpl(reader.getPITarget(), reader.getPIData(), location);
             case XMLStreamConstants.SPACE:
                 //TODO: Ignorable Whitespace
-                return new CharactersImpl(reader.getText(), true, false, false, location);
+                return new CharactersImpl(reader.getText(), XMLStreamConstants.SPACE, location);
             case XMLStreamConstants.START_DOCUMENT:
                 return new StartDocumentImpl(reader.getEncoding(), reader.getCharacterEncodingScheme() != null, reader.isStandalone(), reader.standaloneSet(), reader.getVersion(), location);
             case XMLStreamConstants.START_ELEMENT:

Modified: xerces/java/branches/stax-dev/src/org/apache/xerces/stax/XMLEventFactoryImpl.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/stax-dev/src/org/apache/xerces/stax/XMLEventFactoryImpl.java?rev=730318&r1=730317&r2=730318&view=diff
==============================================================================
--- xerces/java/branches/stax-dev/src/org/apache/xerces/stax/XMLEventFactoryImpl.java (original)
+++ xerces/java/branches/stax-dev/src/org/apache/xerces/stax/XMLEventFactoryImpl.java Tue Dec 30 22:15:42 2008
@@ -19,10 +19,12 @@
 
 import java.util.Iterator;
 
+import javax.xml.XMLConstants;
 import javax.xml.namespace.NamespaceContext;
 import javax.xml.namespace.QName;
 import javax.xml.stream.Location;
 import javax.xml.stream.XMLEventFactory;
+import javax.xml.stream.XMLStreamConstants;
 import javax.xml.stream.events.Attribute;
 import javax.xml.stream.events.Characters;
 import javax.xml.stream.events.Comment;
@@ -36,127 +38,165 @@
 import javax.xml.stream.events.StartDocument;
 import javax.xml.stream.events.StartElement;
 
+import org.apache.xerces.stax.events.AttributeImpl;
+import org.apache.xerces.stax.events.CharactersImpl;
+import org.apache.xerces.stax.events.CommentImpl;
+import org.apache.xerces.stax.events.DTDImpl;
+import org.apache.xerces.stax.events.EndDocumentImpl;
+import org.apache.xerces.stax.events.EndElementImpl;
+import org.apache.xerces.stax.events.EntityReferenceImpl;
+import org.apache.xerces.stax.events.NamespaceImpl;
+import org.apache.xerces.stax.events.ProcessingInstructionImpl;
+import org.apache.xerces.stax.events.StartDocumentImpl;
+import org.apache.xerces.stax.events.StartElementImpl;
+
 /**
- * @xerces.internal
- * 
  * <p>Implementation of XMLEventFactory.</p>
  * 
+ * @xerces.internal
+ * 
  * @version $Id$
  */
 public final class XMLEventFactoryImpl extends XMLEventFactory {
+    
+    private Location fLocation;
 
     public XMLEventFactoryImpl() {}
     
-    public void setLocation(Location location) {}
+    public void setLocation(Location location) {
+        fLocation = location;
+    }
     
     public Attribute createAttribute(String prefix, String namespaceURI,
             String localName, String value) {
-        return null;
+        return createAttribute(new QName(namespaceURI, localName, prefix), value);
     }
 
     public Attribute createAttribute(String localName, String value) {
-        return null;
+        return createAttribute(new QName(localName), value);
     }
 
     public Attribute createAttribute(QName name, String value) {
-        return null;
+        return new AttributeImpl(name, value, "CDATA", true, fLocation);
     }
     
     public Namespace createNamespace(String namespaceURI) {
-        return null;
+        return createNamespace(XMLConstants.DEFAULT_NS_PREFIX, namespaceURI);
     }
 
     public Namespace createNamespace(String prefix, String namespaceUri) {
-        return null;
+        return new NamespaceImpl(prefix, namespaceUri, fLocation);
     }
     
     public StartElement createStartElement(QName name, Iterator attributes,
             Iterator namespaces) {
-        return null;
+        return createStartElement(name, attributes, namespaces, null);
     }
     
     public StartElement createStartElement(String prefix, String namespaceUri,
             String localName) {
-        return null;
+        return createStartElement(new QName(namespaceUri, localName, prefix), null, null);
     }
   
     public StartElement createStartElement(String prefix, String namespaceUri,
             String localName, Iterator attributes, Iterator namespaces) {
-        return null;
+        return createStartElement(new QName(namespaceUri, localName, prefix), attributes, namespaces);
     }
     
     public StartElement createStartElement(String prefix, String namespaceUri,
             String localName, Iterator attributes, Iterator namespaces,
             NamespaceContext context) {
-        return null;
+        return createStartElement(new QName(namespaceUri, localName, prefix), attributes, namespaces, context);
+    }
+    
+    private StartElement createStartElement(QName name, Iterator attributes,
+            Iterator namespaces, NamespaceContext context) {
+        StartElementImpl start = new StartElementImpl(name, context, fLocation);
+        if (attributes != null) {
+            while (attributes.hasNext()) {
+                start.addAttribute((Attribute) attributes.next());
+            }
+        }
+        if (namespaces != null) {
+            while (namespaces.hasNext()) {
+                start.addNamespace((Namespace) namespaces.next());
+            }
+        }
+        return start;
     }
 
     public EndElement createEndElement(QName name, Iterator namespaces) {
-        return null;
+        EndElementImpl end = new EndElementImpl(name, fLocation);
+        if (namespaces != null) {
+            while (namespaces.hasNext()) {
+                end.addNamespace((Namespace) namespaces.next());
+            }
+        }
+        return end;
     }
 
     public EndElement createEndElement(String prefix, String namespaceUri,
             String localName) {
-        return null;
+        return createEndElement(new QName(namespaceUri, localName, prefix), null);
     }
     
     public EndElement createEndElement(String prefix, String namespaceUri,
             String localName, Iterator namespaces) {
-        return null;
+        return createEndElement(new QName(namespaceUri, localName, prefix), namespaces);
     }
     
     public Characters createCharacters(String content) {
-        return null;
+        return new CharactersImpl(content, XMLStreamConstants.CHARACTERS, fLocation);
     }
 
     public Characters createCData(String content) {
-        return null;
+        return new CharactersImpl(content, XMLStreamConstants.CDATA, fLocation);
     }
 
     public Characters createSpace(String content) {
-        return null;
+        return createCharacters(content);
     }
 
     public Characters createIgnorableSpace(String content) {
-        return null;
+        return new CharactersImpl(content, XMLStreamConstants.SPACE, fLocation);
     }
     
     public StartDocument createStartDocument() {
-        return null;
+        return createStartDocument(null, null);
     }
     
     public StartDocument createStartDocument(String encoding, String version,
             boolean standalone) {
-        return null;
+        return new StartDocumentImpl(encoding, encoding != null, standalone, true, version, fLocation);
     }
     
     public StartDocument createStartDocument(String encoding, String version) {
-        return null;
+        return new StartDocumentImpl(encoding, encoding != null, false, false, version, fLocation);
     }
 
     public StartDocument createStartDocument(String encoding) {
-        return null;
+        return createStartDocument(encoding, null);
     }
     
     public EndDocument createEndDocument() {
-        return null;
+        return new EndDocumentImpl(fLocation);
     }
     
     public EntityReference createEntityReference(String name,
             EntityDeclaration declaration) {
-        return null;
+        return new EntityReferenceImpl(name, declaration, fLocation);
     }
     
     public Comment createComment(String text) {
-        return null;
+        return new CommentImpl(text, fLocation);
     }
     
     public ProcessingInstruction createProcessingInstruction(String target,
             String data) {
-        return null;
+        return new ProcessingInstructionImpl(target, data, fLocation);
     }
     
     public DTD createDTD(String dtd) {
-        return null;
+        return new DTDImpl(dtd, fLocation);
     }
 }

Modified: xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/CharactersImpl.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/CharactersImpl.java?rev=730318&r1=730317&r2=730318&view=diff
==============================================================================
--- xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/CharactersImpl.java (original)
+++ xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/CharactersImpl.java Tue Dec 30 22:15:42 2008
@@ -20,6 +20,8 @@
 import javax.xml.stream.Location;
 import javax.xml.stream.events.Characters;
 
+import org.apache.xerces.util.XMLChar;
+
 /**
  * @xerces.internal
  * 
@@ -30,9 +32,6 @@
 public final class CharactersImpl extends XMLEventImpl implements Characters {
 
     private final String fData;
-    private final boolean fIsWS;
-    private final boolean fIsCData;
-    private final boolean fIsIgnorableWS;
 
     /**
      * Standard constructor.
@@ -40,12 +39,9 @@
      * @param location
      * @param schemaType
      */
-    public CharactersImpl(final String data, final boolean isWS, final boolean isCData, final boolean isIgnorableWS, final Location location) {
-        super(CHARACTERS, location);
+    public CharactersImpl(final String data, final int eventType, final Location location) {
+        super(eventType, location);
         fData = data;
-        fIsWS = isWS;
-        fIsCData = isCData;
-        fIsIgnorableWS = isIgnorableWS;
     }
 
     /**
@@ -59,22 +55,30 @@
      * @see javax.xml.stream.events.Characters#isWhiteSpace()
      */
     public boolean isWhiteSpace() {
-        return fIsWS;
+        final int length = fData != null ? fData.length() : 0;
+        if (length == 0) {
+            return false;
+        }
+        for (int i = 0; i < length; ++i) {
+            if (!XMLChar.isSpace(fData.charAt(i))) {
+                return false;
+            }
+        }
+        return true; 
     }
 
     /**
      * @see javax.xml.stream.events.Characters#isCData()
      */
     public boolean isCData() {
-        return fIsCData;
+        return CDATA == getEventType();
     }
 
     /**
      * @see javax.xml.stream.events.Characters#isIgnorableWhiteSpace()
      */
     public boolean isIgnorableWhiteSpace() {
-        return fIsIgnorableWS;
+        return SPACE == getEventType();
     }
-
     
 }

Modified: xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/DTDImpl.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/DTDImpl.java?rev=730318&r1=730317&r2=730318&view=diff
==============================================================================
--- xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/DTDImpl.java (original)
+++ xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/DTDImpl.java Tue Dec 30 22:15:42 2008
@@ -17,10 +17,10 @@
 
 package org.apache.xerces.stax.events;
 
+import java.util.Collections;
 import java.util.List;
 
 import javax.xml.stream.Location;
-import javax.xml.stream.XMLStreamConstants;
 import javax.xml.stream.events.DTD;
 
 /**
@@ -32,29 +32,27 @@
  */
 public final class DTDImpl extends XMLEventImpl implements DTD {
 
-    private final String fDtd;
+    private final String fDTD;
     
     /**
      * Constructor.
      */
     public DTDImpl(final String dtd, final Location location) {
-        super(XMLStreamConstants.DTD, location);
-        fDtd = dtd;
+        super(DTD, location);
+        fDTD = dtd;
     }
     
     /**
      * @see javax.xml.stream.events.DTD#getDocumentTypeDeclaration()
      */
     public String getDocumentTypeDeclaration() {
-        // TODO Auto-generated method stub
-        return null;
+        return fDTD;
     }
 
     /**
      * @see javax.xml.stream.events.DTD#getProcessedDTD()
      */
     public Object getProcessedDTD() {
-        // TODO Auto-generated method stub
         return null;
     }
 
@@ -62,16 +60,13 @@
      * @see javax.xml.stream.events.DTD#getNotations()
      */
     public List getNotations() {
-        // TODO Auto-generated method stub
-        return null;
+        return Collections.EMPTY_LIST;
     }
 
     /**
      * @see javax.xml.stream.events.DTD#getEntities()
      */
     public List getEntities() {
-        // TODO Auto-generated method stub
-        return null;
+        return Collections.EMPTY_LIST;
     }
-
 }

Added: xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/ElementImpl.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/ElementImpl.java?rev=730318&view=auto
==============================================================================
--- xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/ElementImpl.java (added)
+++ xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/ElementImpl.java Tue Dec 30 22:15:42 2008
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.xerces.stax.events;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.Location;
+import javax.xml.stream.events.Namespace;
+
+/**
+ * @xerces.internal
+ * 
+ * @author Lucian Holland
+ * @author Michael Glavassevich, IBM
+ * 
+ * @version $Id$
+ */
+public abstract class ElementImpl extends XMLEventImpl {
+    
+    /**
+     * The qualified name of the element that is being closed.
+     */
+    private final QName fName;
+    
+    /**
+     * Namespaces declared in the current scope.
+     */
+    private final List fNamespaces = new ArrayList();
+    
+    /**
+     * Constructor.
+     */
+    ElementImpl(final QName name, final boolean isStartElement, final Location location) {
+        super(isStartElement ? START_ELEMENT : END_ELEMENT, location);
+        fName = name;
+    }
+    
+    /**
+     * @see javax.xml.stream.events.StartElement#getName()
+     * @see javax.xml.stream.events.EndElement#getName()
+     */
+    public final QName getName() {
+        return fName;
+    }
+    
+    /**
+     * @see javax.xml.stream.events.StartElement#getNamespaces()
+     * @see javax.xml.stream.events.EndElement#getNamespaces()
+     */
+    public final Iterator getNamespaces() {
+        return createImmutableIterator(fNamespaces.iterator());
+    }
+    
+    public final void addNamespace(final Namespace namespace) {
+        fNamespaces.add(namespace);
+    }
+    
+    static Iterator createImmutableIterator(Iterator iter) {
+        return new NoRemoveIterator(iter);
+    }
+    
+    private static final class NoRemoveIterator implements Iterator {
+        
+        private final Iterator fWrapped;
+        
+        public NoRemoveIterator(Iterator wrapped) {
+            fWrapped = wrapped;
+        }
+        
+        /**
+         * @see java.util.Iterator#hasNext()
+         */
+        public boolean hasNext() {
+            return fWrapped.hasNext();
+        }
+
+        /**
+         * @see java.util.Iterator#next()
+         */
+        public Object next() {
+            return fWrapped.next();
+        }
+
+        /**
+         * @see java.util.Iterator#remove()
+         */
+        public void remove() {
+            throw new UnsupportedOperationException("Attributes iterator is read-only.");
+        }
+    }
+}

Propchange: xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/ElementImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/ElementImpl.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/EndDocumentImpl.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/EndDocumentImpl.java?rev=730318&r1=730317&r2=730318&view=diff
==============================================================================
--- xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/EndDocumentImpl.java (original)
+++ xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/EndDocumentImpl.java Tue Dec 30 22:15:42 2008
@@ -18,7 +18,6 @@
 package org.apache.xerces.stax.events;
 
 import javax.xml.stream.Location;
-import javax.xml.stream.XMLStreamConstants;
 import javax.xml.stream.events.EndDocument;
 
 /**
@@ -35,7 +34,7 @@
      * @param location Location object for this event. 
      */
     public EndDocumentImpl(Location location) {
-        super(XMLStreamConstants.END_DOCUMENT, location);
+        super(END_DOCUMENT, location);
     }
 
 }

Modified: xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/EndElementImpl.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/EndElementImpl.java?rev=730318&r1=730317&r2=730318&view=diff
==============================================================================
--- xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/EndElementImpl.java (original)
+++ xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/EndElementImpl.java Tue Dec 30 22:15:42 2008
@@ -17,11 +17,8 @@
 
 package org.apache.xerces.stax.events;
 
-import java.util.Iterator;
-
 import javax.xml.namespace.QName;
 import javax.xml.stream.Location;
-import javax.xml.stream.XMLStreamConstants;
 import javax.xml.stream.events.EndElement;
 
 /**
@@ -31,34 +28,13 @@
  *
  * @version $Id$
  */
-public final class EndElementImpl extends XMLEventImpl implements EndElement {
-
-    /**
-     * The qualified name of the element that is being closed.
-     */
-    private final QName fName;
+public final class EndElementImpl extends ElementImpl implements EndElement {
 
     /**
      * @param location The location object for this event.
      */
     public EndElementImpl(final QName name, final Location location) {
-        super(XMLStreamConstants.END_ELEMENT, location);
-        fName = name;
-    }
-
-    /**
-     * @see javax.xml.stream.events.EndElement#getName()
-     */
-    public QName getName() {
-        return fName;
-    }
-
-    /**
-     * @see javax.xml.stream.events.EndElement#getNamespaces()
-     */
-    public Iterator getNamespaces() {
-        // TODO Auto-generated method stub
-        return null;
+        super(name, false, location);
     }
     
 }

Modified: xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/EntityReferenceImpl.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/EntityReferenceImpl.java?rev=730318&r1=730317&r2=730318&view=diff
==============================================================================
--- xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/EntityReferenceImpl.java (original)
+++ xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/EntityReferenceImpl.java Tue Dec 30 22:15:42 2008
@@ -30,19 +30,36 @@
  */
 public final class EntityReferenceImpl extends XMLEventImpl implements
         EntityReference {
+    
+    /**
+     * The name of the entity.
+     */
+    private final String fName;
 
     /**
      * The entity declaration for this entity reference.
      */
     private final EntityDeclaration fDecl;
-
+    
     /**
      * Constructor.
+     * @param decl
      * @param location
      */
     public EntityReferenceImpl(final EntityDeclaration decl, final Location location) {
+        this(decl != null ? decl.getName() : null, decl, location);
+    }
+    
+    /**
+     * Constructor.
+     * @param name
+     * @param decl
+     * @param location
+     */
+    public EntityReferenceImpl(final String name, final EntityDeclaration decl, final Location location) {
         super(ENTITY_REFERENCE, location);
-        fDecl = decl;;
+        fName = name;
+        fDecl = decl;
     }
 
     /**
@@ -56,9 +73,7 @@
      * @see javax.xml.stream.events.EntityReference#getName()
      */
     public String getName() {
-        //TODO: Is this actually correct? Not sure how an entity ref can have a different
-        //name to the entity decl, but needs checking just in case.
-        return fDecl.getName();
+        return fName;
     }
 
 }

Modified: xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/StartElementImpl.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/StartElementImpl.java?rev=730318&r1=730317&r2=730318&view=diff
==============================================================================
--- xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/StartElementImpl.java (original)
+++ xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/StartElementImpl.java Tue Dec 30 22:15:42 2008
@@ -17,10 +17,8 @@
 
 package org.apache.xerces.stax.events;
 
-import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.Iterator;
-import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
 
@@ -28,7 +26,6 @@
 import javax.xml.namespace.QName;
 import javax.xml.stream.Location;
 import javax.xml.stream.events.Attribute;
-import javax.xml.stream.events.Namespace;
 import javax.xml.stream.events.StartElement;
 
 /**
@@ -38,7 +35,7 @@
  *
  * @version $Id$
  */
-public final class StartElementImpl extends XMLEventImpl implements StartElement {
+public final class StartElementImpl extends ElementImpl implements StartElement {
 
     private final Map fAttributes = new TreeMap(new Comparator(){
         public int compare(Object o1, Object o2) {
@@ -49,8 +46,6 @@
             QName name2 = (QName)o2;
             return name1.toString().compareTo(name2.toString());
         }});
-    private final List fNamespaces = new ArrayList();
-    private final QName fName;
     private final NamespaceContext fNamespaceContext;
 
     /**
@@ -58,30 +53,15 @@
      * @param schemaType
      */
     public StartElementImpl(final QName name, final NamespaceContext namespaceContext, final Location location) {
-        super(START_ELEMENT, location);
-        fName = name;
+        super(name, true, location);
         fNamespaceContext = namespaceContext;
     }
 
     /**
-     * @see javax.xml.stream.events.StartElement#getName()
-     */
-    public QName getName() {
-        return fName;
-    }
-
-    /**
      * @see javax.xml.stream.events.StartElement#getAttributes()
      */
     public Iterator getAttributes() {
-        return new NoRemoveIterator(fAttributes.values().iterator());
-    }
-
-    /**
-     * @see javax.xml.stream.events.StartElement#getNamespaces()
-     */
-    public Iterator getNamespaces() {
-        return new NoRemoveIterator(fNamespaces.iterator());
+        return createImmutableIterator(fAttributes.values().iterator());
     }
 
     /**
@@ -108,41 +88,5 @@
     public void addAttribute(final Attribute attribute) {
         fAttributes.put(attribute.getName(), attribute);
     }
-    
-    public void addNamespace(final Namespace namespace) {
-        fNamespaces.add(namespace);
-    }
-    
-    
-    private final class NoRemoveIterator implements Iterator {
-        
-        private final Iterator fWrapped;
-        
-        public NoRemoveIterator(Iterator wrapped) {
-            fWrapped = wrapped;
-        }
-        
-        /**
-         * @see java.util.Iterator#hasNext()
-         */
-        public boolean hasNext() {
-            return fWrapped.hasNext();
-        }
-
-        /**
-         * @see java.util.Iterator#next()
-         */
-        public Object next() {
-            return fWrapped.next();
-        }
-
-        /**
-         * @see java.util.Iterator#remove()
-         */
-        public void remove() {
-            throw new UnsupportedOperationException("Attributes iterator is read-only.");
-        }
-        
-    }
         
 }

Modified: xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/XMLEventImpl.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/XMLEventImpl.java?rev=730318&r1=730317&r2=730318&view=diff
==============================================================================
--- xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/XMLEventImpl.java (original)
+++ xerces/java/branches/stax-dev/src/org/apache/xerces/stax/events/XMLEventImpl.java Tue Dec 30 22:15:42 2008
@@ -21,7 +21,6 @@
 
 import javax.xml.namespace.QName;
 import javax.xml.stream.Location;
-import javax.xml.stream.XMLStreamConstants;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.events.Characters;
 import javax.xml.stream.events.EndElement;
@@ -51,7 +50,7 @@
     /**
      * Constructor.
      */
-    public XMLEventImpl(final int eventType, final Location location) {
+    XMLEventImpl(final int eventType, final Location location) {
         fEventType = eventType;
         fLocation = location;
     }
@@ -74,63 +73,65 @@
      * @see javax.xml.stream.events.XMLEvent#isStartElement()
      */
     public final boolean isStartElement() {
-        return XMLStreamConstants.START_ELEMENT == fEventType;
+        return START_ELEMENT == fEventType;
     }
 
     /**
      * @see javax.xml.stream.events.XMLEvent#isAttribute()
      */
     public final boolean isAttribute() {
-        return XMLStreamConstants.ATTRIBUTE == fEventType;
+        return ATTRIBUTE == fEventType;
     }
 
     /**
      * @see javax.xml.stream.events.XMLEvent#isNamespace()
      */
     public final boolean isNamespace() {
-        return XMLStreamConstants.NAMESPACE == fEventType;
+        return NAMESPACE == fEventType;
     }
 
     /**
      * @see javax.xml.stream.events.XMLEvent#isEndElement()
      */
     public final boolean isEndElement() {
-        return XMLStreamConstants.END_ELEMENT == fEventType;
+        return END_ELEMENT == fEventType;
     }
 
     /**
      * @see javax.xml.stream.events.XMLEvent#isEntityReference()
      */
     public final boolean isEntityReference() {
-        return XMLStreamConstants.ENTITY_REFERENCE == fEventType;
+        return ENTITY_REFERENCE == fEventType;
     }
 
     /**
      * @see javax.xml.stream.events.XMLEvent#isProcessingInstruction()
      */
     public final boolean isProcessingInstruction() {
-        return XMLStreamConstants.PROCESSING_INSTRUCTION == fEventType;
+        return PROCESSING_INSTRUCTION == fEventType;
     }
 
     /**
      * @see javax.xml.stream.events.XMLEvent#isCharacters()
      */
     public final boolean isCharacters() {
-        return XMLStreamConstants.CHARACTERS == fEventType;
+        return CHARACTERS == fEventType ||
+            CDATA == fEventType ||
+            SPACE == fEventType;
     }
 
     /**
      * @see javax.xml.stream.events.XMLEvent#isStartDocument()
      */
     public final boolean isStartDocument() {
-        return XMLStreamConstants.START_DOCUMENT == fEventType;
+        return START_DOCUMENT == fEventType;
     }
 
     /**
      * @see javax.xml.stream.events.XMLEvent#isEndDocument()
      */
     public final boolean isEndDocument() {
-        return XMLStreamConstants.END_DOCUMENT == fEventType;
+        return END_DOCUMENT == fEventType;
     }
 
     /**



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org