You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2016/03/05 11:28:50 UTC

svn commit: r1733697 - /webservices/axiom/branches/stax-stream/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/stax/StAXPivot.java

Author: veithen
Date: Sat Mar  5 10:28:50 2016
New Revision: 1733697

URL: http://svn.apache.org/viewvc?rev=1733697&view=rev
Log:
Make the getElementText and nextTag tests pass.

Modified:
    webservices/axiom/branches/stax-stream/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/stax/StAXPivot.java

Modified: webservices/axiom/branches/stax-stream/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/stax/StAXPivot.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/stax-stream/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/stax/StAXPivot.java?rev=1733697&r1=1733696&r2=1733697&view=diff
==============================================================================
--- webservices/axiom/branches/stax-stream/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/stax/StAXPivot.java (original)
+++ webservices/axiom/branches/stax-stream/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/stax/StAXPivot.java Sat Mar  5 10:28:50 2016
@@ -154,10 +154,16 @@ public final class StAXPivot implements
      */
     private static final int STATE_SKIP_CONTENT = 4;
     
+    /**
+     * Indicates that an error has occurred an that the instance is no longer usable.
+     */
+    private static final int STATE_ERROR = 5;
+    
     private final XMLStreamReaderExtensionFactory extensionFactory;
     private XmlReader reader;
     private Map<String,Object> extensions;
     private int state = STATE_DEFAULT;
+    private int previousState = -1;
     private int eventType = -1;
     private int depth;
     private String[] elementStack = new String[24];
@@ -334,27 +340,65 @@ public final class StAXPivot implements
 
     @Override
     public void startProcessingInstruction(String target) throws StreamException {
-        checkState();
-        eventType = PROCESSING_INSTRUCTION;
-        name = target;
-        startCollectingText();
+        switch (state) {
+            case STATE_DEFAULT:
+                eventType = PROCESSING_INSTRUCTION;
+                name = target;
+                startCollectingText();
+                break;
+            case STATE_COLLECT_TEXT:
+            case STATE_NEXT_TAG:
+                previousState = state;
+                state = STATE_SKIP_CONTENT;
+                break;
+            default:
+                throw new IllegalStateException();
+        }
     }
 
     @Override
     public void endProcessingInstruction() throws StreamException {
-        text = stopCollectingText();
+        switch (state) {
+            case STATE_COLLECT_TEXT:
+                text = stopCollectingText();
+                break;
+            case STATE_SKIP_CONTENT:
+                state = previousState;
+                break;
+            default:
+                throw new IllegalStateException();
+        }
     }
 
     @Override
     public void startComment() throws StreamException {
-        checkState();
-        eventType = COMMENT;
-        startCollectingText();
+        switch (state) {
+            case STATE_DEFAULT:
+                eventType = COMMENT;
+                startCollectingText();
+                break;
+            case STATE_COLLECT_TEXT:
+            case STATE_NEXT_TAG:
+                previousState = state;
+                state = STATE_SKIP_CONTENT;
+                break;
+            default:
+                throw new IllegalStateException();
+        }
     }
 
     @Override
     public void endComment() throws StreamException {
-        text = stopCollectingText();
+        switch (state) {
+            case STATE_COLLECT_TEXT:
+                text = stopCollectingText();
+                break;
+            case STATE_SKIP_CONTENT:
+                state = previousState;
+                break;
+            default:
+                throw new IllegalStateException();
+        }
     }
 
     @Override
@@ -409,6 +453,13 @@ public final class StAXPivot implements
     @Override
     public int next() throws XMLStreamException {
         try {
+            switch (state) {
+                case STATE_EVENT_COMPLETE:
+                    state = STATE_DEFAULT;
+                    break;
+                case STATE_ERROR:
+                    throw new IllegalStateException();
+            }
             switch (eventType) {
                 case CHARACTERS:
                 case SPACE:
@@ -427,13 +478,19 @@ public final class StAXPivot implements
                 case END_DOCUMENT:
                     throw new NoSuchElementException();
             }
-            state = STATE_DEFAULT;
             while (state != STATE_EVENT_COMPLETE) {
                 reader.proceed();
             }
             return eventType;
         } catch (StreamException ex) {
+            state = STATE_ERROR;
             throw StAXExceptionUtil.toXMLStreamException(ex);
+        } catch (RuntimeException ex) {
+            state = STATE_ERROR;
+            throw ex;
+        } catch (Error ex) {
+            state = STATE_ERROR;
+            throw ex;
         }
     }
 
@@ -481,8 +538,9 @@ public final class StAXPivot implements
 
     @Override
     public String getElementText() throws XMLStreamException {
-        // TODO Auto-generated method stub
-        return null;
+        startCollectingText();
+        next();
+        return stopCollectingText();
     }
 
     @Override