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);
+ }
}
/**