You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by th...@apache.org on 2005/06/22 06:09:44 UTC
svn commit: r191761 - in
/webservices/axis/trunk/java/modules/xml/src/org/apache/axis/om:
OMText.java impl/llom/OMTextImpl.java
Author: thilina
Date: Tue Jun 21 21:09:42 2005
New Revision: 191761
URL: http://svn.apache.org/viewcvs?rev=191761&view=rev
Log:
Merging OMText && OMBlob
Modified:
webservices/axis/trunk/java/modules/xml/src/org/apache/axis/om/OMText.java
webservices/axis/trunk/java/modules/xml/src/org/apache/axis/om/impl/llom/OMTextImpl.java
Modified: webservices/axis/trunk/java/modules/xml/src/org/apache/axis/om/OMText.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/xml/src/org/apache/axis/om/OMText.java?rev=191761&r1=191760&r2=191761&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/xml/src/org/apache/axis/om/OMText.java (original)
+++ webservices/axis/trunk/java/modules/xml/src/org/apache/axis/om/OMText.java Tue Jun 21 21:09:42 2005
@@ -21,20 +21,20 @@
* Interface OMText
*/
public interface OMText extends OMNode {
- /**
- * Returns the text value of this node
- * @return
- */
- String getText();
+ /**
+ * Returns the text value of this node
+ * @return
+ */
+ String getText();
-
- DataHandler getDataHandler();
+ DataHandler getDataHandler();
- /**
- *
- * @return boolean flag saying whether the node contains
- * an optimized text or not
- */
- boolean isOptimised();
- public String getContentID();
-}
+ /**
+ *
+ * @return boolean flag saying whether the node contains
+ * an optimized text or not
+ */
+ boolean isOptimised();
+
+ public String getContentID();
+}
\ No newline at end of file
Modified: webservices/axis/trunk/java/modules/xml/src/org/apache/axis/om/impl/llom/OMTextImpl.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/xml/src/org/apache/axis/om/impl/llom/OMTextImpl.java?rev=191761&r1=191760&r2=191761&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/xml/src/org/apache/axis/om/impl/llom/OMTextImpl.java (original)
+++ webservices/axis/trunk/java/modules/xml/src/org/apache/axis/om/impl/llom/OMTextImpl.java Tue Jun 21 21:09:42 2005
@@ -42,404 +42,399 @@
* Class OMTextImpl
*/
/**
- * @author Thilina
- * @date Jun 20, 2005
- */
-/**
- * @author Thilina
- * @date Jun 20, 2005
+ * @author <a href="mailto:thilina@opensource.lk">Thilina Gunarathne </a>
*/
public class OMTextImpl extends OMNodeImpl implements OMText, OMConstants {
-
- protected String value = null;
-
- protected short textType = TEXT_NODE;
-
- protected String mimeType;
-
- protected boolean isBinary = false;
-
- /**
- * Field contentID for the mime part used when serialising Binary stuff as
- * MTOM optimised
- */
- private String contentID = null;
-
- /**
- * Field dataHandler
- */
- private DataHandler dataHandler = null;
-
- /**
- * Field nameSpace used when serialising Binary stuff as MTOM optimised
- */
- protected OMNamespace ns = new OMNamespaceImpl(
- "http://www.w3.org/2004/08/xop/Include", "xop");
-
- /**
- * Field localName used when serialising Binary stuff as MTOM optimised
- */
- protected String localName = "Include";
-
- /**
- * Field attributes used when serialising Binary stuff as MTOM optimised
- */
- protected OMAttribute attribute;
-
- /**
- * Constructor OMTextImpl
- *
- * @param s
- */
- public OMTextImpl(String s) {
- this.value = s;
- }
-
- /**
- * Constructor OMTextImpl
- *
- * @param parent
- * @param text
- */
- public OMTextImpl(OMElement parent, String text) {
- super(parent);
- this.value = text;
- done = true;
- }
-
- /**
- * @param s -
- * base64 encoded String representation of Binary
- * @param mimeType
- * of the Binary
- */
- public OMTextImpl(String s, String mimeType) {
- this(s);
- this.mimeType = mimeType;
- }
-
- /**
- * @param parent
- * @param s -
- * base64 encoded String representation of Binary
- * @param mimeType
- * of the Binary
- */
- public OMTextImpl(OMElement parent, String s, String mimeType) {
- this(parent, s);
- this.mimeType = mimeType;
- }
-
- /**
- * @param dataHandler
- * To send binary optimised content Created programatically
- */
- public OMTextImpl(DataHandler dataHandler) {
- this.dataHandler = dataHandler;
- if (this.contentID == null) {
- // We can use a UUID, taken using Apache commons id project.
- // TODO change to UUID
- this.contentID = String.valueOf(new Random(new Date().getTime())
- .nextLong());
- this.isBinary = true;
- }
- }
-
- /**
- * @param contentID
- * @param parent
- * @param builder
- * Used when the builder is encountered with a XOP:Include tag
- * Stores a reference to the builder and the content-id. Supports
- * deffered parsing of MIME messages
- */
- public OMTextImpl(String contentID, OMElement parent,OMXMLParserWrapper builder) {
- super(parent);
- this.contentID = contentID;
- this.isBinary = true;
- this.builder = builder;
- }
-
- /**
- * We use the OMText class to hold comments, text, characterData, CData,
- * etc., The codes are found in OMNode class
- *
- * @param type
- */
- public void setTextType(short type) {
- if ((type == TEXT_NODE) || (type == COMMENT_NODE)
- || (type == CDATA_SECTION_NODE)) {
- this.textType = type;
- } else {
- throw new UnsupportedOperationException("Attempt to set wrong type");
- }
- }
-
- public int getType() throws OMException {
- return textType;
- }
-
- /**
- * @param writer
- * @throws XMLStreamException
- */
- public void serializeWithCache(XMLStreamWriter writer)
- throws XMLStreamException {
- if (textType == TEXT_NODE) {
- writer.writeCharacters(this.value);
- } else if (textType == COMMENT_NODE) {
- writer.writeComment(this.value);
- } else if (textType == CDATA_SECTION_NODE) {
- writer.writeCData(this.value);
- }
- OMNode nextSibling = this.getNextSibling();
- if (nextSibling != null) {
- nextSibling.serializeWithCache(writer);
- }
- }
-
- /**
- * Returns the value
- *
- * @return
- */
- public String getText() throws OMException {
- if (!isBinary) {
- return this.value;
- } else {
- try {
- InputStream inStream;
- inStream = this.getInputStream();
- byte[] data;
- data = new byte[inStream.available()];
-
- IOUtils.readFully(inStream, data);
- return Base64.encode(data);
- } catch (Exception e) {
- throw new OMException(
- "Cannot read from Stream taken form the Data Handler"
- + e);
- }
- }
-
- }
-
- public boolean isOptimised() {
- return isBinary;
- }
-
- /**
- * @return
- * @throws org.apache.axis.om.OMException
- * @throws OMException
- */
- public DataHandler getDataHandler() {
-
- /*
- * this should return a DataHandler containing the binary data
- * reperesented by the Base64 strings stored in OMText
- */
- if (isBinary) {
- if (dataHandler == null) {
- dataHandler = ((MTOMStAXSOAPModelBuilder) builder)
- .getDataHandler(contentID);
- }
- return dataHandler;
- }
- if (value != null) {
- ByteArrayDataSource dataSource;
- byte[] data = Base64.decode(value);
- if (mimeType != null) {
- dataSource = new ByteArrayDataSource(data, mimeType);
- } else {
- // Assumes type as application/octet-stream
- dataSource = new ByteArrayDataSource(data);
- }
- DataHandler dataHandler = new DataHandler(dataSource);
- return dataHandler;
- }
- return null;
-
- }
-
-
- public String getLocalName() {
- return localName;
- }
-
- public java.io.InputStream getInputStream() throws OMException {
- if (dataHandler == null) {
- getDataHandler();
- }
- InputStream inStream;
- try {
- inStream = dataHandler.getDataSource().getInputStream();
- } catch (IOException e) {
- throw new OMException("Cannot get InoutStream from DataHandler."
- + e);
- }
- return inStream;
- }
-
- public String getContentID() {
- return this.contentID;
- }
-
- public boolean isComplete() {
- return true;
- }
-
- public void serialize(XMLStreamWriter writer) throws XMLStreamException {
- boolean firstElement = false;
-
- if (!this.isBinary) {
- serializeWithCache(writer);
- } else {
- if (writer instanceof MTOMXMLStreamWriter) {
- // send binary as MTOM optimised
- MTOMXMLStreamWriter mtomWriter = (MTOMXMLStreamWriter) writer;
- this.attribute = new OMAttributeImpl("href",
- new OMNamespaceImpl("", ""), "cid:"
- + this.contentID.trim());
-
- this.serializeStartpart(mtomWriter);
- mtomWriter.writeOptimised(this);
- mtomWriter.writeEndElement();
- } else {
-
- writer.writeCharacters(this.getText());
- }
-
- OMNode nextSibling = this.getNextSibling();
- if (nextSibling != null) {
- // serilize next sibling
- nextSibling.serialize(writer);
- } else {
- // TODO : See whether following part is really needed
- if (parent == null) {
- return;
- } else if (parent.isComplete()) {
- return;
- } else {
- // do the special serialization
- // Only the push serializer is left now
- builder.next();
- }
-
- }
- }
-
- }
-
- /*
- * Methods to copy from OMSerialize utils
- */
- private void serializeStartpart(XMLStreamWriter writer)
- throws XMLStreamException {
- String nameSpaceName = null;
- String writer_prefix = null;
- String prefix = null;
- if (this.ns != null) {
- nameSpaceName = this.ns.getName();
- writer_prefix = writer.getPrefix(nameSpaceName);
- prefix = this.ns.getPrefix();
- if (nameSpaceName != null) {
- if (writer_prefix != null) {
- writer
- .writeStartElement(nameSpaceName, this
- .getLocalName());
- } else {
- if (prefix != null) {
- writer.writeStartElement(prefix, this.getLocalName(),
- nameSpaceName);
- writer.writeNamespace(prefix, nameSpaceName);
- writer.setPrefix(prefix, nameSpaceName);
- } else {
- writer.writeStartElement(nameSpaceName, this
- .getLocalName());
- writer.writeDefaultNamespace(nameSpaceName);
- writer.setDefaultNamespace(nameSpaceName);
- }
- }
- } else {
- writer.writeStartElement(this.getLocalName());
-
- }
- } else {
- writer.writeStartElement(this.getLocalName());
-
- }
-
- // add the elements attribute "href"
- serializeAttribute(this.attribute, writer);
-
- // add the namespace
- serializeNamespace(this.ns, writer);
-
- }
-
- /**
- * Method serializeAttribute
- *
- * @param attr
- * @param writer
- * @throws XMLStreamException
- */
- static void serializeAttribute(OMAttribute attr, XMLStreamWriter writer)
- throws XMLStreamException {
-
- // first check whether the attribute is associated with a namespace
- OMNamespace ns = attr.getNamespace();
- String prefix = null;
- String namespaceName = null;
- if (ns != null) {
-
- // add the prefix if it's availble
- prefix = ns.getPrefix();
- namespaceName = ns.getName();
- if (prefix != null) {
- writer.writeAttribute(prefix, namespaceName, attr
- .getLocalName(), attr.getValue());
- } else {
- writer.writeAttribute(namespaceName, attr.getLocalName(), attr
- .getValue());
- }
- } else {
- writer.writeAttribute(attr.getLocalName(), attr.getValue());
- }
- }
-
- /**
- * Method serializeNamespace
- *
- * @param namespace
- * @param writer
- * @throws XMLStreamException
- */
- static void serializeNamespace(OMNamespace namespace, XMLStreamWriter writer)
- throws XMLStreamException {
- if (namespace != null) {
- String uri = namespace.getName();
- String prefix = writer.getPrefix(uri);
- String ns_prefix = namespace.getPrefix();
- if (prefix == null) {
- writer.writeNamespace(ns_prefix, namespace.getName());
- writer.setPrefix(ns_prefix, uri);
- }
- }
- }
-
- /**
- * Slightly different implementation of the discard method
- *
- * @throws OMException
- */
- public void discard() throws OMException {
- if (done) {
- this.detach();
- } else {
- builder.discard(this.parent);
- }
- }
-
+
+ protected String value = null;
+
+ protected short textType = TEXT_NODE;
+
+ protected String mimeType;
+
+ protected boolean isBinary = false;
+
+ /**
+ * Field contentID for the mime part used when serialising Binary stuff as
+ * MTOM optimised
+ */
+ private String contentID = null;
+
+ /**
+ * Field dataHandler
+ */
+ private DataHandler dataHandler = null;
+
+ /**
+ * Field nameSpace used when serialising Binary stuff as MTOM optimised
+ */
+ protected OMNamespace ns = new OMNamespaceImpl(
+ "http://www.w3.org/2004/08/xop/Include", "xop");
+
+ /**
+ * Field localName used when serialising Binary stuff as MTOM optimised
+ */
+ protected String localName = "Include";
+
+ /**
+ * Field attributes used when serialising Binary stuff as MTOM optimised
+ */
+ protected OMAttribute attribute;
+
+ /**
+ * Constructor OMTextImpl
+ *
+ * @param s
+ */
+ public OMTextImpl(String s) {
+ this.value = s;
+ }
+
+ /**
+ * Constructor OMTextImpl
+ *
+ * @param parent
+ * @param text
+ */
+ public OMTextImpl(OMElement parent, String text) {
+ super(parent);
+ this.value = text;
+ done = true;
+ }
+
+ /**
+ * @param s -
+ * base64 encoded String representation of Binary
+ * @param mimeType
+ * of the Binary
+ */
+ public OMTextImpl(String s, String mimeType) {
+ this(s);
+ this.mimeType = mimeType;
+ }
+
+ /**
+ * @param parent
+ * @param s -
+ * base64 encoded String representation of Binary
+ * @param mimeType
+ * of the Binary
+ */
+ public OMTextImpl(OMElement parent, String s, String mimeType) {
+ this(parent, s);
+ this.mimeType = mimeType;
+ }
+
+ /**
+ * @param dataHandler
+ * To send binary optimised content Created programatically
+ */
+ public OMTextImpl(DataHandler dataHandler) {
+ this.dataHandler = dataHandler;
+ if (this.contentID == null) {
+ // We can use a UUID, taken using Apache commons id project.
+ // TODO change to UUID
+ this.contentID = String.valueOf(new Random(new Date().getTime())
+ .nextLong());
+ this.isBinary = true;
+ }
+ }
+
+ /**
+ * @param contentID
+ * @param parent
+ * @param builder
+ * Used when the builder is encountered with a XOP:Include tag
+ * Stores a reference to the builder and the content-id. Supports
+ * deffered parsing of MIME messages
+ */
+ public OMTextImpl(String contentID, OMElement parent,
+ OMXMLParserWrapper builder) {
+ super(parent);
+ this.contentID = contentID;
+ this.isBinary = true;
+ this.builder = builder;
+ }
+
+ /**
+ * We use the OMText class to hold comments, text, characterData, CData,
+ * etc., The codes are found in OMNode class
+ *
+ * @param type
+ */
+ public void setTextType(short type) {
+ if ((type == TEXT_NODE) || (type == COMMENT_NODE)
+ || (type == CDATA_SECTION_NODE)) {
+ this.textType = type;
+ } else {
+ throw new UnsupportedOperationException("Attempt to set wrong type");
+ }
+ }
+
+ public int getType() throws OMException {
+ return textType;
+ }
+
+ /**
+ * @param writer
+ * @throws XMLStreamException
+ */
+ public void serializeWithCache(XMLStreamWriter writer)
+ throws XMLStreamException {
+ if (textType == TEXT_NODE) {
+ writer.writeCharacters(this.value);
+ } else if (textType == COMMENT_NODE) {
+ writer.writeComment(this.value);
+ } else if (textType == CDATA_SECTION_NODE) {
+ writer.writeCData(this.value);
+ }
+ OMNode nextSibling = this.getNextSibling();
+ if (nextSibling != null) {
+ nextSibling.serializeWithCache(writer);
+ }
+ }
+
+ /**
+ * Returns the value
+ *
+ * @return
+ */
+ public String getText() throws OMException {
+ if (!isBinary) {
+ return this.value;
+ } else {
+ try {
+ InputStream inStream;
+ inStream = this.getInputStream();
+ byte[] data;
+ data = new byte[inStream.available()];
+
+ IOUtils.readFully(inStream, data);
+ return Base64.encode(data);
+ } catch (Exception e) {
+ throw new OMException(
+ "Cannot read from Stream taken form the Data Handler"
+ + e);
+ }
+ }
+
+ }
+
+ public boolean isOptimised() {
+ return isBinary;
+ }
+
+ /**
+ * @return
+ * @throws org.apache.axis.om.OMException
+ * @throws OMException
+ */
+ public DataHandler getDataHandler() {
+
+ /*
+ * this should return a DataHandler containing the binary data
+ * reperesented by the Base64 strings stored in OMText
+ */
+ if (isBinary) {
+ if (dataHandler == null) {
+ dataHandler = ((MTOMStAXSOAPModelBuilder) builder)
+ .getDataHandler(contentID);
+ }
+ return dataHandler;
+ }
+ if (value != null) {
+ ByteArrayDataSource dataSource;
+ byte[] data = Base64.decode(value);
+ if (mimeType != null) {
+ dataSource = new ByteArrayDataSource(data, mimeType);
+ } else {
+ // Assumes type as application/octet-stream
+ dataSource = new ByteArrayDataSource(data);
+ }
+ DataHandler dataHandler = new DataHandler(dataSource);
+ return dataHandler;
+ }
+ return null;
+
+ }
+
+ public String getLocalName() {
+ return localName;
+ }
+
+ public java.io.InputStream getInputStream() throws OMException {
+ if (dataHandler == null) {
+ getDataHandler();
+ }
+ InputStream inStream;
+ try {
+ inStream = dataHandler.getDataSource().getInputStream();
+ } catch (IOException e) {
+ throw new OMException("Cannot get InputStream from DataHandler."
+ + e);
+ }
+ return inStream;
+ }
+
+ public String getContentID() {
+ return this.contentID;
+ }
+
+ public boolean isComplete() {
+ return true;
+ }
+
+ public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+ boolean firstElement = false;
+
+ if (!this.isBinary) {
+ serializeWithCache(writer);
+ } else {
+ if (writer instanceof MTOMXMLStreamWriter) {
+ // send binary as MTOM optimised
+ MTOMXMLStreamWriter mtomWriter = (MTOMXMLStreamWriter) writer;
+ this.attribute = new OMAttributeImpl("href",
+ new OMNamespaceImpl("", ""), "cid:"
+ + this.contentID.trim());
+
+ this.serializeStartpart(mtomWriter);
+ mtomWriter.writeOptimised(this);
+ mtomWriter.writeEndElement();
+ } else {
+
+ writer.writeCharacters(this.getText());
+ }
+
+ OMNode nextSibling = this.getNextSibling();
+ if (nextSibling != null) {
+ // serilize next sibling
+ nextSibling.serialize(writer);
+ } else {
+ // TODO : See whether following part is really needed
+ if (parent == null) {
+ return;
+ } else if (parent.isComplete()) {
+ return;
+ } else {
+ // do the special serialization
+ // Only the push serializer is left now
+ builder.next();
+ }
+
+ }
+ }
+
+ }
+
+ /*
+ * Methods to copy from OMSerialize utils
+ */
+ private void serializeStartpart(XMLStreamWriter writer)
+ throws XMLStreamException {
+ String nameSpaceName = null;
+ String writer_prefix = null;
+ String prefix = null;
+ if (this.ns != null) {
+ nameSpaceName = this.ns.getName();
+ writer_prefix = writer.getPrefix(nameSpaceName);
+ prefix = this.ns.getPrefix();
+ if (nameSpaceName != null) {
+ if (writer_prefix != null) {
+ writer
+ .writeStartElement(nameSpaceName, this
+ .getLocalName());
+ } else {
+ if (prefix != null) {
+ writer.writeStartElement(prefix, this.getLocalName(),
+ nameSpaceName);
+ writer.writeNamespace(prefix, nameSpaceName);
+ writer.setPrefix(prefix, nameSpaceName);
+ } else {
+ writer.writeStartElement(nameSpaceName, this
+ .getLocalName());
+ writer.writeDefaultNamespace(nameSpaceName);
+ writer.setDefaultNamespace(nameSpaceName);
+ }
+ }
+ } else {
+ writer.writeStartElement(this.getLocalName());
+
+ }
+ } else {
+ writer.writeStartElement(this.getLocalName());
+
+ }
+
+ // add the elements attribute "href"
+ serializeAttribute(this.attribute, writer);
+
+ // add the namespace
+ serializeNamespace(this.ns, writer);
+
+ }
+
+ /**
+ * Method serializeAttribute
+ *
+ * @param attr
+ * @param writer
+ * @throws XMLStreamException
+ */
+ static void serializeAttribute(OMAttribute attr, XMLStreamWriter writer)
+ throws XMLStreamException {
+
+ // first check whether the attribute is associated with a namespace
+ OMNamespace ns = attr.getNamespace();
+ String prefix = null;
+ String namespaceName = null;
+ if (ns != null) {
+
+ // add the prefix if it's availble
+ prefix = ns.getPrefix();
+ namespaceName = ns.getName();
+ if (prefix != null) {
+ writer.writeAttribute(prefix, namespaceName, attr
+ .getLocalName(), attr.getValue());
+ } else {
+ writer.writeAttribute(namespaceName, attr.getLocalName(), attr
+ .getValue());
+ }
+ } else {
+ writer.writeAttribute(attr.getLocalName(), attr.getValue());
+ }
+ }
+
+ /**
+ * Method serializeNamespace
+ *
+ * @param namespace
+ * @param writer
+ * @throws XMLStreamException
+ */
+ static void serializeNamespace(OMNamespace namespace, XMLStreamWriter writer)
+ throws XMLStreamException {
+ if (namespace != null) {
+ String uri = namespace.getName();
+ String prefix = writer.getPrefix(uri);
+ String ns_prefix = namespace.getPrefix();
+ if (prefix == null) {
+ writer.writeNamespace(ns_prefix, namespace.getName());
+ writer.setPrefix(ns_prefix, uri);
+ }
+ }
+ }
+
+ /**
+ * Slightly different implementation of the discard method
+ *
+ * @throws OMException
+ */
+ public void discard() throws OMException {
+ if (done) {
+ this.detach();
+ } else {
+ builder.discard(this.parent);
+ }
+ }
+
}