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 2006/09/30 22:22:37 UTC

svn commit: r451659 - in /xerces/java/branches/stax-dev/src/org/apache/xerces/stax: AsyncSAXParser.java SAXXMLStreamReaderImpl.java StAXSAXHandler.java

Author: mrglavas
Date: Sat Sep 30 13:22:37 2006
New Revision: 451659

URL: http://svn.apache.org/viewvc?view=rev&rev=451659
Log:
Various improvements to element name handling.

Modified:
    xerces/java/branches/stax-dev/src/org/apache/xerces/stax/AsyncSAXParser.java
    xerces/java/branches/stax-dev/src/org/apache/xerces/stax/SAXXMLStreamReaderImpl.java
    xerces/java/branches/stax-dev/src/org/apache/xerces/stax/StAXSAXHandler.java

Modified: xerces/java/branches/stax-dev/src/org/apache/xerces/stax/AsyncSAXParser.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/stax-dev/src/org/apache/xerces/stax/AsyncSAXParser.java?view=diff&rev=451659&r1=451658&r2=451659
==============================================================================
--- xerces/java/branches/stax-dev/src/org/apache/xerces/stax/AsyncSAXParser.java (original)
+++ xerces/java/branches/stax-dev/src/org/apache/xerces/stax/AsyncSAXParser.java Sat Sep 30 13:22:37 2006
@@ -17,6 +17,7 @@
 
 package org.apache.xerces.stax;
 
+import org.apache.xerces.xni.QName;
 import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;
 import org.xml.sax.XMLReader;
@@ -43,15 +44,13 @@
     private Attributes attrs;
     
     // The current element name
-    private String eleName;
-    private String uri;
+    private final QName elementName = new QName();
     
     Exception ex = null;
     
     public AsyncSAXParser(XMLReader xr, InputSource is) {
         this.xr = xr;
         this.is = is;
-        
         this.runningFlag = false;     
     }
     
@@ -135,21 +134,39 @@
     }
     
     /**
-     * Set the element name for startElement and endElement event
-     * 
-     * @param attrs
+     * Sets the element name for the current startElement/endElement event
      */
-    public void setElementName(String eleName) {
-        this.eleName = eleName;
+    public void setElementName(String uri, String localName, String qName) {
+        elementName.setValues(null, localName, qName, uri);
     }
     
     /**
-     * Get the element name for startElement and endElement event
-     * 
-     * @return
+     * Gets the QName for the current element.
+     */
+    public String getQName() {
+        return elementName.rawname;
+    }
+    
+    /**
+     * Gets the local name for the current element or
+     * the entity name if the current event is an entity reference.
+     */
+    public String getLocalName() {
+        return elementName.localpart;
+    }
+    
+    /**
+     * Gets the namespace for the current element.
+     */
+    public String getNamespaceURI() {
+        return elementName.uri;
+    }
+    
+    /**
+     * Sets the name of the current entity reference.
      */
-    public String getElementName() {
-        return eleName;
+    public void setEntityName(String name) {
+        elementName.localpart = name;
     }
     
     // Record the data and target of ProcessingInstruction
@@ -169,11 +186,4 @@
         return piTarget;
     }
     
-    public String getUri() {
-        return uri;
-    }
-    
-    public void setUri(String uri) {
-        this.uri = uri;
-    }
 }

Modified: xerces/java/branches/stax-dev/src/org/apache/xerces/stax/SAXXMLStreamReaderImpl.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/stax-dev/src/org/apache/xerces/stax/SAXXMLStreamReaderImpl.java?view=diff&rev=451659&r1=451658&r2=451659
==============================================================================
--- xerces/java/branches/stax-dev/src/org/apache/xerces/stax/SAXXMLStreamReaderImpl.java (original)
+++ xerces/java/branches/stax-dev/src/org/apache/xerces/stax/SAXXMLStreamReaderImpl.java Sat Sep 30 13:22:37 2006
@@ -920,9 +920,8 @@
     public QName getName() {
         if (curType == XMLStreamConstants.START_ELEMENT || curType == XMLStreamConstants.END_ELEMENT) {
             String prefix = getPrefix();
-            
             QName qname;
-            if(prefix == null) {
+            if (prefix == null) {
                 qname = new QName(getNamespaceURI(), getLocalName());
             }
             else {
@@ -930,8 +929,7 @@
             }
             return qname;
         }
-        throw new IllegalStateException(
-        "The current event is not START_ELEMENT or END_ELEMENT.");
+        throw new IllegalStateException("The current event is not START_ELEMENT or END_ELEMENT.");
     }
     
     /**
@@ -945,17 +943,22 @@
      * END_ELEMENT or ENTITY_REFERENCE
      */
     public String getLocalName() {
-        if(curType == XMLStreamConstants.START_ELEMENT || curType == XMLStreamConstants.END_ELEMENT
-                || curType == XMLStreamConstants.ENTITY_REFERENCE) { 
-            String local = asp.getElementName();
+        if (curType == XMLStreamConstants.START_ELEMENT || curType == XMLStreamConstants.END_ELEMENT) { 
+            String local = asp.getLocalName();
+            if (local != null && local.length() > 0) {
+                return local;
+            }
+            local = asp.getQName();
             int indexPre = local.indexOf(":");
             if (indexPre != -1){
                 local = local.substring(indexPre + 1);		
             }
             return local;
         }
-        else
-            throw new IllegalStateException("Current event is not START_ELEMENT, END_ELEMENT or ENTITY_REFERENCE");
+        else if (curType == XMLStreamConstants.ENTITY_REFERENCE) {
+            return asp.getLocalName();
+        }
+        throw new IllegalStateException("Current event is not START_ELEMENT, END_ELEMENT or ENTITY_REFERENCE");
     }
     
     /**
@@ -963,10 +966,8 @@
      * returns false otherwise
      */
     public boolean hasName() {
-        if(curType == XMLStreamConstants.START_ELEMENT || curType == XMLStreamConstants.END_ELEMENT)
-            return true;
-        else 
-            return false;
+        return (curType == XMLStreamConstants.START_ELEMENT || 
+                curType == XMLStreamConstants.END_ELEMENT);
     }
     
     /**
@@ -980,19 +981,18 @@
      *    or ATTRIBUTE
      */
     public String getNamespaceURI() {
-        if(curType == XMLStreamConstants.START_ELEMENT || curType == XMLStreamConstants.END_ELEMENT || curType == XMLStreamConstants.ATTRIBUTE) { 
-            String uri = asp.getUri();
-            if(uri == null || "".equals(uri)) {
+        if (curType == XMLStreamConstants.START_ELEMENT || curType == XMLStreamConstants.END_ELEMENT || curType == XMLStreamConstants.ATTRIBUTE) { 
+            String uri = asp.getNamespaceURI();
+            if (uri == null || "".equals(uri)) {
                 String prefix = getPrefix();
-                if(prefix == null) 
+                if (prefix == null) {
                     prefix = "";
+                }
                 uri = dc.getNamespaceURI(prefix);
             }
-            
             return uri;
         }
-        else
-            throw new IllegalStateException("Current event is not START_ELEMENT, END_ELEMENT");
+        throw new IllegalStateException("Current event is not START_ELEMENT, END_ELEMENT");
     }
     
     /**
@@ -1002,17 +1002,12 @@
      * @throws IllegalStateException if this is not a START_ELEMENT or END_ELEMENT
      */
     public String getPrefix() {
-        if(curType == XMLStreamConstants.START_ELEMENT || curType == XMLStreamConstants.END_ELEMENT) { 
-            String pre = null;
-            String name = asp.getElementName();
+        if (curType == XMLStreamConstants.START_ELEMENT || curType == XMLStreamConstants.END_ELEMENT) { 
+            String name = asp.getQName();
             int indexPre = name.indexOf(":");
-            if(indexPre != -1){
-                pre = name.substring(0, indexPre);		
-            }
-            return pre;
+            return (indexPre != -1 ? name.substring(0, indexPre) : null);
         }
-        else
-            throw new IllegalStateException("Current event is not START_ELEMENT, END_ELEMENT");
+        throw new IllegalStateException("Current event is not START_ELEMENT, END_ELEMENT");
     }
     
     /**

Modified: xerces/java/branches/stax-dev/src/org/apache/xerces/stax/StAXSAXHandler.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/stax-dev/src/org/apache/xerces/stax/StAXSAXHandler.java?view=diff&rev=451659&r1=451658&r2=451659
==============================================================================
--- xerces/java/branches/stax-dev/src/org/apache/xerces/stax/StAXSAXHandler.java (original)
+++ xerces/java/branches/stax-dev/src/org/apache/xerces/stax/StAXSAXHandler.java Sat Sep 30 13:22:37 2006
@@ -31,9 +31,9 @@
  */
 final class StAXSAXHandler extends DefaultHandler {
     
-    private AsyncSAXParser asp;
-    private SAXXMLStreamReaderImpl reader;
-    private SAXLocation loc;
+    private final AsyncSAXParser asp;
+    private final SAXXMLStreamReaderImpl reader;
+    private final SAXLocation loc;
     private StringBuffer buf;
     
     public StAXSAXHandler(AsyncSAXParser asp, SAXXMLStreamReaderImpl reader, SAXLocation loc) {
@@ -90,13 +90,7 @@
                 checkCoalescing();
                 
                 reader.setCurType(XMLStreamConstants.END_ELEMENT);
-                if (qName != null && !"".equals(qName)) {
-                    asp.setElementName(qName);
-                }
-                else {
-                    asp.setElementName(localName);
-                }
-                asp.setUri(uri);
+                asp.setElementName(uri, localName, (qName != null && qName.length() > 0) ? qName : localName);
                 
                 while (asp.getRunningFlag() == false) {
                     asp.notify();
@@ -199,13 +193,7 @@
                 
                 NamespaceContextImpl nci = (NamespaceContextImpl)reader.getNamespaceContext();
                 nci.onStartElement();
-                if (qName != null && !"".equals(qName)) {
-                    asp.setElementName(qName);
-                }
-                else {
-                    asp.setElementName(localName);
-                }
-                asp.setUri(uri);
+                asp.setElementName(uri, localName, (qName != null && qName.length() > 0) ? qName : localName);
                 
                 while (!asp.getRunningFlag()) {
                     asp.notify();
@@ -268,7 +256,7 @@
                 checkCoalescing();
                 
                 reader.setCurType(XMLStreamConstants.ENTITY_REFERENCE);
-                asp.setElementName(name);
+                asp.setEntityName(name);
                 asp.setCharacters(null, 0, 0);
                 while (!asp.getRunningFlag()) {
                     asp.notify();



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