Author: dims
Date: Wed Apr 5 00:43:46 2006
New Revision: 391557
URL: http://svn.apache.org/viewcvs?rev=391557&view=rev
Log:
- Prevent NPE's
- temporary fix for speeding up serialization (char[] serialization is faster
than String)
Modified:
webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/MTOMXMLStreamWriter.java
webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/llom/OMSerializerUtil.java
Modified:
webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/MTOMXMLStreamWriter.java
URL:
http://svn.apache.org/viewcvs/webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/MTOMXMLStreamWriter.java?rev=391557&r1=391556&r2=391557&view=diff
==============================================================================
---
webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/MTOMXMLStreamWriter.java
(original)
+++
webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/MTOMXMLStreamWriter.java
Wed Apr 5 00:43:46 2006
@@ -1,299 +1,300 @@
-/*
- * Copyright 2004,2005 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.axiom.om.impl;
-
-import org.apache.axiom.om.OMOutputFormat;
-import org.apache.axiom.om.OMText;
-import org.apache.axiom.soap.SOAP11Constants;
-import org.apache.axiom.soap.SOAP12Constants;
-
-import javax.xml.namespace.NamespaceContext;
-import javax.xml.stream.FactoryConfigurationError;
-import javax.xml.stream.XMLOutputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.StringWriter;
-import java.io.UnsupportedEncodingException;
-import java.util.LinkedList;
-
-
-/**
- * For the moment this assumes that transport takes the decision of whether
- * to optimize or not by looking at whether the MTOM optimize is enabled &
- * also looking at the OM tree whether it has any optimizable content.
- */
-public class MTOMXMLStreamWriter implements XMLStreamWriter {
- private static XMLOutputFactory outputFactory =
XMLOutputFactory.newInstance();
- private XMLStreamWriter xmlWriter;
- private OutputStream outStream;
- private LinkedList binaryNodeList = new LinkedList();
- private StringWriter bufferedSOAPBody;
- private OMOutputFormat format = new OMOutputFormat();
-
- public MTOMXMLStreamWriter(XMLStreamWriter xmlWriter) {
- this.xmlWriter = xmlWriter;
- }
-
- /**
- * Creates a new MTOMXMLStreamWriter with specified encoding.
- *
- * @param outStream
- * @param format
- * @throws XMLStreamException
- * @throws FactoryConfigurationError
- * @see OMOutputFormat#DEFAULT_CHAR_SET_ENCODING
- */
- public MTOMXMLStreamWriter(OutputStream outStream, OMOutputFormat format)
- throws XMLStreamException, FactoryConfigurationError {
- this.format = format;
- this.outStream = outStream;
-
- if (format.getCharSetEncoding() == null) //Default encoding is UTF-8
-
format.setCharSetEncoding(OMOutputFormat.DEFAULT_CHAR_SET_ENCODING);
-
- if (format.isOptimized()) {
- bufferedSOAPBody = new StringWriter();
- xmlWriter = outputFactory.createXMLStreamWriter(bufferedSOAPBody);
- } else {
- try {
- xmlWriter = outputFactory.createXMLStreamWriter(new
java.io.BufferedWriter(new OutputStreamWriter(outStream,
- format.getCharSetEncoding())));
- } catch (UnsupportedEncodingException e) {
- throw new XMLStreamException(e);
- }
- }
- }
-
- public void writeStartElement(String string) throws XMLStreamException {
- xmlWriter.writeStartElement(string);
- }
-
- public void writeStartElement(String string, String string1) throws
XMLStreamException {
- xmlWriter.writeStartElement(string, string1);
- }
-
- public void writeStartElement(String string, String string1, String
string2) throws XMLStreamException {
- xmlWriter.writeStartElement(string, string1, string2);
- }
-
- public void writeEmptyElement(String string, String string1) throws
XMLStreamException {
- xmlWriter.writeStartElement(string, string1);
- }
-
- public void writeEmptyElement(String string, String string1, String
string2) throws XMLStreamException {
- xmlWriter.writeStartElement(string, string1, string2);
- }
-
- public void writeEmptyElement(String string) throws XMLStreamException {
- xmlWriter.writeStartElement(string);
- }
-
- public void writeEndElement() throws XMLStreamException {
- xmlWriter.writeEndElement();
- }
-
- public void writeEndDocument() throws XMLStreamException {
- xmlWriter.writeEndDocument();
- }
-
- public void close() throws XMLStreamException {
- xmlWriter.close();
- }
-
- public void flush() throws XMLStreamException {
- xmlWriter.flush();
- String SOAPContentType;
- if (format.isOptimized()) {
- if (format.isSOAP11()) {
- SOAPContentType = SOAP11Constants.SOAP_11_CONTENT_TYPE;
- } else {
- SOAPContentType = SOAP12Constants.SOAP_12_CONTENT_TYPE;
- }
- MIMEOutputUtils.complete(
- outStream,
- bufferedSOAPBody,
- binaryNodeList,
- format.getMimeBoundary(),
- format.getRootContentId(),
- format.getCharSetEncoding(), SOAPContentType);
- }
- }
-
- public void writeAttribute(String string, String string1) throws
XMLStreamException {
- xmlWriter.writeAttribute(string, string1);
- }
-
- public void writeAttribute(String string, String string1, String string2,
String string3) throws XMLStreamException {
- xmlWriter.writeAttribute(string, string1, string2, string3);
- }
-
- public void writeAttribute(String string, String string1, String string2)
throws XMLStreamException {
- xmlWriter.writeAttribute(string, string1, string2);
- }
-
- public void writeNamespace(String string, String string1) throws
XMLStreamException {
- xmlWriter.writeNamespace(string, string1);
- }
-
- public void writeDefaultNamespace(String string) throws XMLStreamException
{
- xmlWriter.writeDefaultNamespace(string);
- }
-
- public void writeComment(String string) throws XMLStreamException {
- xmlWriter.writeComment(string);
- }
-
- public void writeProcessingInstruction(String string) throws
XMLStreamException {
- xmlWriter.writeProcessingInstruction(string);
- }
-
- public void writeProcessingInstruction(String string, String string1)
throws XMLStreamException {
- xmlWriter.writeProcessingInstruction(string, string1);
- }
-
- public void writeCData(String string) throws XMLStreamException {
- xmlWriter.writeCData(string);
- }
-
- public void writeDTD(String string) throws XMLStreamException {
- xmlWriter.writeDTD(string);
- }
-
- public void writeEntityRef(String string) throws XMLStreamException {
- xmlWriter.writeEntityRef(string);
- }
-
- public void writeStartDocument() throws XMLStreamException {
- xmlWriter.writeStartDocument();
- }
-
- public void writeStartDocument(String string) throws XMLStreamException {
- xmlWriter.writeStartDocument(string);
- }
-
- public void writeStartDocument(String string, String string1) throws
XMLStreamException {
- xmlWriter.writeStartDocument(string, string1);
- }
-
- public void writeCharacters(String string) throws XMLStreamException {
- xmlWriter.writeCharacters(string);
- }
-
- public void writeCharacters(char[] chars, int i, int i1) throws
XMLStreamException {
- xmlWriter.writeCharacters(chars, i, i1);
- }
-
- public String getPrefix(String string) throws XMLStreamException {
- return xmlWriter.getPrefix(string);
- }
-
- public void setPrefix(String string, String string1) throws
XMLStreamException {
- xmlWriter.setPrefix(string, string1);
- }
-
- public void setDefaultNamespace(String string) throws XMLStreamException {
- xmlWriter.setDefaultNamespace(string);
- }
-
- public void setNamespaceContext(NamespaceContext namespaceContext) throws
XMLStreamException {
- xmlWriter.setNamespaceContext(namespaceContext);
- }
-
- public NamespaceContext getNamespaceContext() {
- return xmlWriter.getNamespaceContext();
- }
-
- public Object getProperty(String string) throws IllegalArgumentException {
- return xmlWriter.getProperty(string);
- }
-
- public boolean isOptimized() {
- return format.isOptimized();
- }
-
- public String getContentType() {
- return format.getContentType();
- }
-
- public void writeOptimized(OMText node) {
- binaryNodeList.add(node);
- }
-
- public void setXmlStreamWriter(XMLStreamWriter xmlWriter) {
- this.xmlWriter = xmlWriter;
- }
-
- public XMLStreamWriter getXmlStreamWriter() {
- return xmlWriter;
- }
-
- public String getMimeBoundary() {
- return format.getMimeBoundary();
- }
-
- public String getRootContentId() {
- return format.getRootContentId();
- }
-
- public String getNextContentId() {
- return format.getNextContentId();
- }
-
- /**
- * Returns the character set encoding scheme. If the value of the
- * charSetEncoding is not set then the default will be returned.
- *
- * @return Returns encoding.
- */
- public String getCharSetEncoding() {
- return format.getCharSetEncoding();
- }
-
- public void setCharSetEncoding(String charSetEncoding) {
- format.setCharSetEncoding(charSetEncoding);
- }
-
- public String getXmlVersion() {
- return format.getXmlVersion();
- }
-
- public void setXmlVersion(String xmlVersion) {
- format.setXmlVersion(xmlVersion);
- }
-
- public void setSoap11(boolean b) {
- format.setSOAP11(b);
- }
-
- public boolean isIgnoreXMLDeclaration() {
- return format.isIgnoreXMLDeclaration();
- }
-
- public void setIgnoreXMLDeclaration(boolean ignoreXMLDeclaration) {
- format.setIgnoreXMLDeclaration(ignoreXMLDeclaration);
- }
-
- public void setDoOptimize(boolean b) {
- format.setDoOptimize(b);
- }
-
- public void setOutputFormat(OMOutputFormat format) {
- this.format = format;
- }
-}
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.axiom.om.impl;
+
+import org.apache.axiom.om.OMOutputFormat;
+import org.apache.axiom.om.OMText;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
+
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.stream.FactoryConfigurationError;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.StringWriter;
+import java.io.UnsupportedEncodingException;
+import java.util.LinkedList;
+
+
+/**
+ * For the moment this assumes that transport takes the decision of whether
+ * to optimize or not by looking at whether the MTOM optimize is enabled &
+ * also looking at the OM tree whether it has any optimizable content.
+ */
+public class MTOMXMLStreamWriter implements XMLStreamWriter {
+ private static XMLOutputFactory outputFactory =
XMLOutputFactory.newInstance();
+ private XMLStreamWriter xmlWriter;
+ private OutputStream outStream;
+ private LinkedList binaryNodeList = new LinkedList();
+ private StringWriter bufferedSOAPBody;
+ private OMOutputFormat format = new OMOutputFormat();
+
+ public MTOMXMLStreamWriter(XMLStreamWriter xmlWriter) {
+ this.xmlWriter = xmlWriter;
+ }
+
+ /**
+ * Creates a new MTOMXMLStreamWriter with specified encoding.
+ *
+ * @param outStream
+ * @param format
+ * @throws XMLStreamException
+ * @throws FactoryConfigurationError
+ * @see OMOutputFormat#DEFAULT_CHAR_SET_ENCODING
+ */
+ public MTOMXMLStreamWriter(OutputStream outStream, OMOutputFormat format)
+ throws XMLStreamException, FactoryConfigurationError {
+ this.format = format;
+ this.outStream = outStream;
+
+ if (format.getCharSetEncoding() == null) //Default encoding is UTF-8
+
format.setCharSetEncoding(OMOutputFormat.DEFAULT_CHAR_SET_ENCODING);
+
+ if (format.isOptimized()) {
+ bufferedSOAPBody = new StringWriter();
+ xmlWriter = outputFactory.createXMLStreamWriter(bufferedSOAPBody);
+ } else {
+ try {
+ xmlWriter = outputFactory.createXMLStreamWriter(new
java.io.BufferedWriter(new OutputStreamWriter(outStream,
+ format.getCharSetEncoding())));
+ } catch (UnsupportedEncodingException e) {
+ throw new XMLStreamException(e);
+ }
+ }
+ }
+
+ public void writeStartElement(String string) throws XMLStreamException {
+ xmlWriter.writeStartElement(string);
+ }
+
+ public void writeStartElement(String string, String string1) throws
XMLStreamException {
+ xmlWriter.writeStartElement(string, string1);
+ }
+
+ public void writeStartElement(String string, String string1, String
string2) throws XMLStreamException {
+ xmlWriter.writeStartElement(string, string1, string2);
+ }
+
+ public void writeEmptyElement(String string, String string1) throws
XMLStreamException {
+ xmlWriter.writeStartElement(string, string1);
+ }
+
+ public void writeEmptyElement(String string, String string1, String
string2) throws XMLStreamException {
+ xmlWriter.writeStartElement(string, string1, string2);
+ }
+
+ public void writeEmptyElement(String string) throws XMLStreamException {
+ xmlWriter.writeStartElement(string);
+ }
+
+ public void writeEndElement() throws XMLStreamException {
+ xmlWriter.writeEndElement();
+ }
+
+ public void writeEndDocument() throws XMLStreamException {
+ xmlWriter.writeEndDocument();
+ }
+
+ public void close() throws XMLStreamException {
+ xmlWriter.close();
+ }
+
+ public void flush() throws XMLStreamException {
+ xmlWriter.flush();
+ String SOAPContentType;
+ if (format.isOptimized()) {
+ if (format.isSOAP11()) {
+ SOAPContentType = SOAP11Constants.SOAP_11_CONTENT_TYPE;
+ } else {
+ SOAPContentType = SOAP12Constants.SOAP_12_CONTENT_TYPE;
+ }
+ MIMEOutputUtils.complete(
+ outStream,
+ bufferedSOAPBody,
+ binaryNodeList,
+ format.getMimeBoundary(),
+ format.getRootContentId(),
+ format.getCharSetEncoding(), SOAPContentType);
+ }
+ }
+
+ public void writeAttribute(String string, String string1) throws
XMLStreamException {
+ xmlWriter.writeAttribute(string, string1);
+ }
+
+ public void writeAttribute(String string, String string1, String string2,
String string3) throws XMLStreamException {
+ xmlWriter.writeAttribute(string, string1, string2, string3);
+ }
+
+ public void writeAttribute(String string, String string1, String string2)
throws XMLStreamException {
+ xmlWriter.writeAttribute(string, string1, string2);
+ }
+
+ public void writeNamespace(String string, String string1) throws
XMLStreamException {
+ xmlWriter.writeNamespace(string, string1);
+ }
+
+ public void writeDefaultNamespace(String string) throws XMLStreamException
{
+ xmlWriter.writeDefaultNamespace(string);
+ }
+
+ public void writeComment(String string) throws XMLStreamException {
+ xmlWriter.writeComment(string);
+ }
+
+ public void writeProcessingInstruction(String string) throws
XMLStreamException {
+ xmlWriter.writeProcessingInstruction(string);
+ }
+
+ public void writeProcessingInstruction(String string, String string1)
throws XMLStreamException {
+ xmlWriter.writeProcessingInstruction(string, string1);
+ }
+
+ public void writeCData(String string) throws XMLStreamException {
+ xmlWriter.writeCData(string);
+ }
+
+ public void writeDTD(String string) throws XMLStreamException {
+ xmlWriter.writeDTD(string);
+ }
+
+ public void writeEntityRef(String string) throws XMLStreamException {
+ xmlWriter.writeEntityRef(string);
+ }
+
+ public void writeStartDocument() throws XMLStreamException {
+ xmlWriter.writeStartDocument();
+ }
+
+ public void writeStartDocument(String string) throws XMLStreamException {
+ xmlWriter.writeStartDocument(string);
+ }
+
+ public void writeStartDocument(String string, String string1) throws
XMLStreamException {
+ xmlWriter.writeStartDocument(string, string1);
+ }
+
+ public void writeCharacters(String string) throws XMLStreamException {
+ char[] array = string.toCharArray();
+ xmlWriter.writeCharacters(array, 0, array.length);
+ }
+
+ public void writeCharacters(char[] chars, int i, int i1) throws
XMLStreamException {
+ xmlWriter.writeCharacters(chars, i, i1);
+ }
+
+ public String getPrefix(String string) throws XMLStreamException {
+ return xmlWriter.getPrefix(string);
+ }
+
+ public void setPrefix(String string, String string1) throws
XMLStreamException {
+ xmlWriter.setPrefix(string, string1);
+ }
+
+ public void setDefaultNamespace(String string) throws XMLStreamException {
+ xmlWriter.setDefaultNamespace(string);
+ }
+
+ public void setNamespaceContext(NamespaceContext namespaceContext) throws
XMLStreamException {
+ xmlWriter.setNamespaceContext(namespaceContext);
+ }
+
+ public NamespaceContext getNamespaceContext() {
+ return xmlWriter.getNamespaceContext();
+ }
+
+ public Object getProperty(String string) throws IllegalArgumentException {
+ return xmlWriter.getProperty(string);
+ }
+
+ public boolean isOptimized() {
+ return format.isOptimized();
+ }
+
+ public String getContentType() {
+ return format.getContentType();
+ }
+
+ public void writeOptimized(OMText node) {
+ binaryNodeList.add(node);
+ }
+
+ public void setXmlStreamWriter(XMLStreamWriter xmlWriter) {
+ this.xmlWriter = xmlWriter;
+ }
+
+ public XMLStreamWriter getXmlStreamWriter() {
+ return xmlWriter;
+ }
+
+ public String getMimeBoundary() {
+ return format.getMimeBoundary();
+ }
+
+ public String getRootContentId() {
+ return format.getRootContentId();
+ }
+
+ public String getNextContentId() {
+ return format.getNextContentId();
+ }
+
+ /**
+ * Returns the character set encoding scheme. If the value of the
+ * charSetEncoding is not set then the default will be returned.
+ *
+ * @return Returns encoding.
+ */
+ public String getCharSetEncoding() {
+ return format.getCharSetEncoding();
+ }
+
+ public void setCharSetEncoding(String charSetEncoding) {
+ format.setCharSetEncoding(charSetEncoding);
+ }
+
+ public String getXmlVersion() {
+ return format.getXmlVersion();
+ }
+
+ public void setXmlVersion(String xmlVersion) {
+ format.setXmlVersion(xmlVersion);
+ }
+
+ public void setSoap11(boolean b) {
+ format.setSOAP11(b);
+ }
+
+ public boolean isIgnoreXMLDeclaration() {
+ return format.isIgnoreXMLDeclaration();
+ }
+
+ public void setIgnoreXMLDeclaration(boolean ignoreXMLDeclaration) {
+ format.setIgnoreXMLDeclaration(ignoreXMLDeclaration);
+ }
+
+ public void setDoOptimize(boolean b) {
+ format.setDoOptimize(b);
+ }
+
+ public void setOutputFormat(OMOutputFormat format) {
+ this.format = format;
+ }
+}
Modified:
webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/llom/OMSerializerUtil.java
URL:
http://svn.apache.org/viewcvs/webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/llom/OMSerializerUtil.java?rev=391557&r1=391556&r2=391557&view=diff
==============================================================================
---
webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/llom/OMSerializerUtil.java
(original)
+++
webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/llom/OMSerializerUtil.java
Wed Apr 5 00:43:46 2006
@@ -92,9 +92,9 @@
String uri = namespace.getName();
String prefix = namespace.getPrefix();
- String prefixFromWriter = writer.getPrefix(uri);
-
if (uri != null && !"".equals(uri)) {
+ String prefixFromWriter = writer.getPrefix(uri);
+
// lets see whether we have default namespace now
if (prefix != null && "".equals(prefix) && prefixFromWriter ==
null) {
// this has not been declared earlier
@@ -124,9 +124,9 @@
String prefix;
if (element.getNamespace() != null) {
nameSpaceName = element.getNamespace().getName();
- writer_prefix = writer.getPrefix(nameSpaceName);
prefix = element.getNamespace().getPrefix();
if (nameSpaceName != null) {
+ writer_prefix = writer.getPrefix(nameSpaceName);
if (writer_prefix != null) {
writer.writeStartElement(nameSpaceName,
element.getLocalName());