Author: veithen
Date: Tue Mar 10 21:02:42 2009
New Revision: 752264

URL: http://svn.apache.org/viewvc?rev=752264&view=rev
Log:
Merged changes in r724004 (WSCOMMONS-393: Fixed the getText* methods) from 
OMStAXWrapper to DOMStAXWrapper.

Modified:
    
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DOMStAXWrapper.java

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DOMStAXWrapper.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DOMStAXWrapper.java?rev=752264&r1=752263&r2=752264&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DOMStAXWrapper.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DOMStAXWrapper.java
 Tue Mar 10 21:02:42 2009
@@ -288,8 +288,8 @@
         if (parser != null) {
             return parser.getTextLength();
         } else {
-            OMText textNode = (OMText) lastNode;
-            return textNode.getText().length();
+            String text = getTextFromNode();
+            return text == null ? 0 : text.length();
         }
     }
 
@@ -318,19 +318,22 @@
      */
     public int getTextCharacters(int sourceStart, char[] target, int 
targetStart, int length)
             throws XMLStreamException {
-        int returnLength = 0;
-        if (hasText()) {
-            if (parser != null) {
-                try {
-                    returnLength = parser.getTextCharacters(sourceStart, 
target, targetStart, length);
-                } catch (XMLStreamException e) {
-                    throw new OMStreamingException(e);
-                }
+        if (parser != null) {
+            try {
+                return parser.getTextCharacters(sourceStart, target, 
targetStart, length);
+            } catch (XMLStreamException e) {
+                throw new OMStreamingException(e);
+            }
+        } else {
+            String text = getTextFromNode();
+            if (text != null) {
+                int copied = Math.min(length, text.length()-sourceStart);
+                text.getChars(sourceStart, sourceStart + copied, target, 
targetStart);
+                return copied;
+            } else {
+                return 0;
             }
-
-            // Note - this has no relevant method in the OM
         }
-        return returnLength;
     }
 
     /**
@@ -341,13 +344,8 @@
         if (parser != null) {
             return parser.getTextCharacters();
         } else {
-            if (hasText()) {
-                OMText textNode = (OMText) lastNode;
-                String str = textNode.getText();
-                return str.toCharArray();
-            } else {
-                return null;
-            }
+            String text = getTextFromNode();
+            return text == null ? null : text.toCharArray();
         }
     }
 
@@ -359,12 +357,17 @@
         if (parser != null) {
             return parser.getText();
         } else {
-            if (hasText()) {
-                if (lastNode instanceof OMText) {
-                    return ((OMText) lastNode).getText();
-                } else if (lastNode instanceof OMComment) {
-                    return ((OMComment) lastNode).getValue();
-                }
+            return getTextFromNode();
+        }
+    }
+    
+    private String getTextFromNode() {
+        if (hasText()) {
+            OMNode node = lastNode;
+            if (node instanceof OMText) {
+                return ((OMText)node).getText();
+            } else if (node instanceof OMComment) {
+                return ((OMComment)node).getValue();
             }
         }
         return null;


Reply via email to