Author: nagy
Date: Tue Nov 17 13:58:30 2009
New Revision: 881293
URL: http://svn.apache.org/viewvc?rev=881293&view=rev
Log:
Revised patch for fixing potential NPE during serialization if an encoding has
not been set for the OMOutputFormat.
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMOutputFormat.java
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/ds/ByteArrayDataSource.java
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/OMSourcedElementTest.java
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMOutputFormat.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMOutputFormat.java?rev=881293&r1=881292&r2=881293&view=diff
==============================================================================
---
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMOutputFormat.java
(original)
+++
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMOutputFormat.java
Tue Nov 17 13:58:30 2009
@@ -208,10 +208,9 @@
}
/**
- * Returns the character set encoding scheme. If the value of the
charSetEncoding is not set
- * then the default will be returned.
+ * Returns the character set encoding scheme.
*
- * @return Returns encoding string.
+ * @return Returns encoding string or null if it has not been set.
*/
public String getCharSetEncoding() {
return this.charSetEncoding;
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/ds/ByteArrayDataSource.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/ds/ByteArrayDataSource.java?rev=881293&r1=881292&r2=881293&view=diff
==============================================================================
---
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/ds/ByteArrayDataSource.java
(original)
+++
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/ds/ByteArrayDataSource.java
Tue Nov 17 13:58:30 2009
@@ -19,6 +19,7 @@
package org.apache.axiom.om.ds;
import org.apache.axiom.om.OMDataSourceExt;
+import org.apache.axiom.om.OMOutputFormat;
import org.apache.axiom.om.util.StAXUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -77,9 +78,15 @@
}
public byte[] getXMLBytes(String encoding) throws
UnsupportedEncodingException {
+ if (encoding == null)
+ {
+ encoding = OMOutputFormat.DEFAULT_CHAR_SET_ENCODING;
+ }
+
if (DEBUG_ENABLED) {
log.debug("getXMLBytes encoding="+encoding);
}
+
// Return the byte array directly if it is the same encoding
// Otherwise convert the bytes to the proper encoding
if (!byteArray.encoding.equalsIgnoreCase(encoding)) {
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/OMSourcedElementTest.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/OMSourcedElementTest.java?rev=881293&r1=881292&r2=881293&view=diff
==============================================================================
---
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/OMSourcedElementTest.java
(original)
+++
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/OMSourcedElementTest.java
Tue Nov 17 13:58:30 2009
@@ -140,6 +140,15 @@
assertTrue("The obtained bytes did not match the payload",
payload1.equals(payload));
+
+ // Test getting the raw bytes with the default encoding
+ OMOutputFormat outputFormat = new OMOutputFormat();
+ baos = new ByteArrayOutputStream();
+ ds.serialize(baos, outputFormat);
+ output = baos.toString(OMOutputFormat.DEFAULT_CHAR_SET_ENCODING);
+ System.out.println(output);
+ assertTrue("The obtained bytes did not match the payload",
+ payload1.equals(output));
}
/**