Author: veithen
Date: Sun Jul 11 14:36:42 2010
New Revision: 963081
URL: http://svn.apache.org/viewvc?rev=963081&view=rev
Log:
AXIS2-4768: Make sure that for a POJO, ADB produces an XMLStreamReader that
returns the same value for the IsDatahandlersAwareParsing property regardless
of the position in the stream. Axiom 1.2.9 checks the property only once (in
order to avoid repeated calls to XMLStreamReader#getProperty) and may therefore
fail to optimize binary data if the value of this property changes during the
lifecycle of the XMLStreamReader object.
Modified:
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java
axis/axis2/java/core/trunk/modules/adb/test/org/apache/axis2/databinding/utils/BeanUtilTest.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/util/StreamWrapper.java
Modified:
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java?rev=963081&r1=963080&r2=963081&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java
(original)
+++
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java
Sun Jul 11 14:36:42 2010
@@ -170,12 +170,8 @@ public class ADBXMLStreamReaderImpl impl
* @throws IllegalArgumentException
*/
public Object getProperty(String key) throws IllegalArgumentException {
- if (state == START_ELEMENT_STATE || state == END_ELEMENT_STATE) {
- if (OPTIMIZATION_ENABLED.equals(key)) {
- return Boolean.TRUE;
- } else {
- return null;
- }
+ if (OPTIMIZATION_ENABLED.equals(key)) {
+ return Boolean.TRUE;
} else if (state == TEXT_STATE) {
if (IS_BINARY.equals(key)) {
return Boolean.FALSE;
Modified:
axis/axis2/java/core/trunk/modules/adb/test/org/apache/axis2/databinding/utils/BeanUtilTest.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb/test/org/apache/axis2/databinding/utils/BeanUtilTest.java?rev=963081&r1=963080&r2=963081&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/adb/test/org/apache/axis2/databinding/utils/BeanUtilTest.java
(original)
+++
axis/axis2/java/core/trunk/modules/adb/test/org/apache/axis2/databinding/utils/BeanUtilTest.java
Sun Jul 11 14:36:42 2010
@@ -20,12 +20,14 @@
package org.apache.axis2.databinding.utils;
import org.apache.axiom.om.*;
+import org.apache.axis2.description.java2wsdl.TypeTable;
import org.apache.axis2.engine.DefaultObjectSupplier;
import org.apache.axis2.engine.ObjectSupplier;
import junit.framework.TestCase;
import javax.activation.DataHandler;
+import javax.mail.util.ByteArrayDataSource;
import javax.xml.namespace.QName;
import java.util.List;
@@ -131,4 +133,18 @@ public class BeanUtilTest extends TestCa
private OMAttribute createTypeAttribute(String value) {
return omFactory.createOMAttribute("type", xsiNamespace, value);
}
+
+ /**
+ * Test that for a {...@link DataHandler} object, {...@link BeanUtil}
creates sequence of
+ * events that allows Axiom to recognize the optimized binary.
+ */
+ public void testGetOMElementWithDataHandlerArg() {
+ DataHandler dh = new DataHandler(new ByteArrayDataSource(new
byte[4096],
+ "application/octet-stream"));
+ OMElement element = BeanUtil.getOMElement(new QName("urn:ns1", "myop"),
+ new Object[] { dh }, new QName("urn:ns1", "part"), true, new
TypeTable());
+ OMText text = (OMText)element.getFirstElement().getFirstOMChild();
+ assertTrue(text.isOptimized());
+ assertSame(dh, text.getDataHandler());
+ }
}
Modified:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/util/StreamWrapper.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/util/StreamWrapper.java?rev=963081&r1=963080&r2=963081&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/util/StreamWrapper.java
(original)
+++
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/util/StreamWrapper.java
Sun Jul 11 14:36:42 2010
@@ -308,11 +308,7 @@ public class StreamWrapper implements XM
}
public Object getProperty(String s) throws IllegalArgumentException {
- if (state != STATE_INIT) {
- return realReader.getProperty(s);
- } else {
- throw new IllegalArgumentException();
- }
+ return realReader.getProperty(s);
}
public String getText() {