Author: chinthaka
Date: Wed Apr  5 22:04:17 2006
New Revision: 391900

URL: http://svn.apache.org/viewcvs?rev=391900&view=rev
Log:
- Moving constants of StaxBuilder to OMConstants
- Fixing StaxBuilder to turn on data handler usage more efficiently


Modified:
    
webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/OMConstants.java
    
webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/builder/StAXBuilder.java

Modified: 
webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/OMConstants.java
URL: 
http://svn.apache.org/viewcvs/webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/OMConstants.java?rev=391900&r1=391899&r2=391900&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/OMConstants.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/OMConstants.java
 Wed Apr  5 22:04:17 2006
@@ -72,4 +72,7 @@
     
     public static final String XMLNS_PREFIX =
         "xml";
+    String IS_BINARY = "Axiom.IsBinary";
+    String DATA_HANDLER = "Axiom.DataHandler";
+    String IS_DATA_HANDLERS_AWARE = "IsDatahandlersAwareParsing";
 }

Modified: 
webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/builder/StAXBuilder.java
URL: 
http://svn.apache.org/viewcvs/webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/builder/StAXBuilder.java?rev=391900&r1=391899&r2=391900&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/builder/StAXBuilder.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/builder/StAXBuilder.java
 Wed Apr  5 22:04:17 2006
@@ -26,6 +26,7 @@
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMXMLParserWrapper;
+import org.apache.axiom.om.OMText;
 import org.apache.axiom.om.impl.OMNodeEx;
 import org.apache.axiom.om.impl.util.OMSerializerUtil;
 
@@ -76,8 +77,8 @@
      */
     protected boolean parserAccessed = false;
     protected OMDocument document;
-    private static final String IS_BINARY = "Axiom.IsBinary";
-    private static final String DATA_HANDLER = "Axiom.DataHandler";
+
+    protected boolean isDataHandlerAware = false;
 
 
     /**
@@ -89,6 +90,18 @@
     protected StAXBuilder(OMFactory ombuilderFactory, XMLStreamReader parser) {
         this.parser = parser;
         omfactory = ombuilderFactory;
+
+        // check whether data handlers are treated seperately
+        try {
+            if (parser != null && (Boolean.TRUE == 
parser.getProperty(OMConstants.IS_DATA_HANDLERS_AWARE)))
+            {
+                isDataHandlerAware = true;
+            }
+        } catch (IllegalArgumentException e) {
+            // according to the parser api, get property will return 
IllegalArgumentException, when that
+            // property is not found.
+            isDataHandlerAware = false;
+        }
     }
 
     /**
@@ -185,19 +198,18 @@
      * @return omNode
      */
     private OMNode createOMText(OMElement omElement, int textType) {
-//        try {
-//            if (Boolean.TRUE == parser.getProperty(IS_BINARY)) {
-//                Object dataHandler = parser.getProperty(DATA_HANDLER);
-//                OMText text = omfactory.createText(dataHandler, true);
-//                omElement.addChild(text);
-//                return text;
-//            } else {
-        return omfactory.createText(omElement, parser.getText(), textType);
-
-//    }
-//        } catch (IllegalArgumentException e) {
-//           return omfactory.createText(omElement, parser.getText(), 
textType);
-//        }
+        try {
+            if (isDataHandlerAware && Boolean.TRUE == 
parser.getProperty(OMConstants.IS_BINARY)) {
+                Object dataHandler = 
parser.getProperty(OMConstants.DATA_HANDLER);
+                OMText text = omfactory.createText(dataHandler, true);
+                omElement.addChild(text);
+                return text;
+            } else {
+                return omfactory.createText(omElement, parser.getText(), 
textType);
+            }
+        } catch (IllegalArgumentException e) {
+            return omfactory.createText(omElement, parser.getText(), textType);
+        }
     }
 
     /**


Reply via email to