You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2011/11/02 00:40:05 UTC
svn commit: r1196397 - in /webservices/commons/trunk/modules/axiom/modules:
axiom-api/src/main/java/org/apache/axiom/om/
axiom-api/src/main/java/org/apache/axiom/om/impl/builder/
axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/factory/ ...
Author: veithen
Date: Tue Nov 1 23:40:05 2011
New Revision: 1196397
URL: http://svn.apache.org/viewvc?rev=1196397&view=rev
Log:
AXIOM-353: Added methods to create XOP aware builders.
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMMetaFactory.java
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMXMLBuilderFactory.java
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/XOPAwareStAXOMBuilder.java
webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/factory/AbstractOMMetaFactory.java
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/attachments/AttachmentsTest.java
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMMetaFactory.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMMetaFactory.java?rev=1196397&r1=1196396&r2=1196397&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMMetaFactory.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMMetaFactory.java Tue Nov 1 23:40:05 2011
@@ -117,6 +117,23 @@ public interface OMMetaFactory {
OMXMLParserWrapper createOMBuilder(OMFactory omFactory, Source source);
/**
+ * Create an XOP aware object model builder.
+ *
+ * @param configuration
+ * the parser configuration to use
+ * @param omFactory
+ * The object model factory to use. This factory must be obtained from the same
+ * {@link OMMetaFactory} instance as the one used to invoke this method.
+ * @param rootPart
+ * the source of the root part of the XOP message
+ * @param mimePartProvider
+ * the provider from which MIME parts referenced in the root part will be retrieved
+ * @return the builder
+ */
+ OMXMLParserWrapper createOMBuilder(StAXParserConfiguration configuration,
+ OMFactory omFactory, InputSource rootPart, MimePartProvider mimePartProvider);
+
+ /**
* Create an object model builder for SOAP that pulls events from a StAX stream reader. The
* implementation will select the appropriate {@link SOAPFactory} based on the namespace URI of
* the SOAP envelope.
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMXMLBuilderFactory.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMXMLBuilderFactory.java?rev=1196397&r1=1196396&r2=1196397&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMXMLBuilderFactory.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMXMLBuilderFactory.java Tue Nov 1 23:40:05 2011
@@ -289,6 +289,52 @@ public class OMXMLBuilderFactory {
}
/**
+ * Create an XOP aware model builder from the provided {@link Attachments} object and with a
+ * given parser configuration.
+ *
+ * @param configuration
+ * the parser configuration to use
+ * @param attachments
+ * an {@link Attachments} object that must have been created from an input stream
+ * @return the builder
+ * @throws OMException
+ * if an error occurs while processing the content type information from the
+ * {@link Attachments} object
+ */
+ public static OMXMLParserWrapper createOMBuilder(StAXParserConfiguration configuration, Attachments attachments) {
+ return createOMBuilder(OMAbstractFactory.getMetaFactory().getOMFactory(), configuration, attachments);
+ }
+
+ /**
+ * Create an XOP aware model builder from the provided {@link Attachments} object using a
+ * specified object model factory and with a given parser configuration.
+ *
+ * @param omFactory
+ * the object model factory to use
+ * @param configuration
+ * the parser configuration to use
+ * @param attachments
+ * an {@link Attachments} object that must have been created from an input stream
+ * @return the builder
+ * @throws OMException
+ * if an error occurs while processing the content type information from the
+ * {@link Attachments} object
+ */
+ public static OMXMLParserWrapper createOMBuilder(OMFactory omFactory,
+ StAXParserConfiguration configuration, Attachments attachments) {
+ ContentType contentType;
+ try {
+ contentType = new ContentType(attachments.getRootPartContentType());
+ } catch (ParseException ex) {
+ throw new OMException(ex);
+ }
+ InputSource rootPart = new InputSource(attachments.getRootPartInputStream());
+ rootPart.setEncoding(contentType.getParameter("charset"));
+ return omFactory.getMetaFactory().createOMBuilder(configuration, omFactory,
+ rootPart, new OMAttachmentAccessorMimePartProvider(attachments));
+ }
+
+ /**
* Create an object model builder for SOAP that pulls events from a StAX stream reader.
* The method will select the appropriate {@link SOAPFactory}
* based on the namespace URI of the SOAP envelope.
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/XOPAwareStAXOMBuilder.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/XOPAwareStAXOMBuilder.java?rev=1196397&r1=1196396&r2=1196397&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/XOPAwareStAXOMBuilder.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/XOPAwareStAXOMBuilder.java Tue Nov 1 23:40:05 2011
@@ -24,6 +24,7 @@ import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMException;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.util.stax.xop.MimePartProvider;
import org.apache.axiom.util.stax.xop.XOPDecodingStreamReader;
import javax.activation.DataHandler;
@@ -102,6 +103,12 @@ public class XOPAwareStAXOMBuilder
this.attachments = attachments;
}
+ public XOPAwareStAXOMBuilder(OMFactory omFactory, XMLStreamReader reader,
+ MimePartProvider mimePartProvider) {
+ super(omFactory, new XOPDecodingStreamReader(reader, mimePartProvider));
+ attachments = null;
+ }
+
public DataHandler getDataHandler(String blobContentID) throws OMException {
return attachments.getDataHandler(blobContentID);
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/factory/AbstractOMMetaFactory.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/factory/AbstractOMMetaFactory.java?rev=1196397&r1=1196396&r2=1196397&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/factory/AbstractOMMetaFactory.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/factory/AbstractOMMetaFactory.java Tue Nov 1 23:40:05 2011
@@ -29,6 +29,7 @@ import org.apache.axiom.om.OMMetaFactory
import org.apache.axiom.om.OMXMLParserWrapper;
import org.apache.axiom.om.impl.builder.SAXOMXMLParserWrapper;
import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.impl.builder.XOPAwareStAXOMBuilder;
import org.apache.axiom.om.util.StAXParserConfiguration;
import org.apache.axiom.om.util.StAXUtils;
import org.apache.axiom.soap.SOAPFactory;
@@ -88,6 +89,14 @@ public abstract class AbstractOMMetaFact
}
}
+ public OMXMLParserWrapper createOMBuilder(StAXParserConfiguration configuration,
+ OMFactory omFactory, InputSource rootPart, MimePartProvider mimePartProvider) {
+ XOPAwareStAXOMBuilder builder = new XOPAwareStAXOMBuilder(omFactory, createXMLStreamReader(
+ configuration, rootPart), mimePartProvider);
+ builder.releaseParserOnClose(true);
+ return builder;
+ }
+
public SOAPModelBuilder createStAXSOAPModelBuilder(XMLStreamReader parser) {
StAXSOAPModelBuilder builder = new StAXSOAPModelBuilder(this, parser);
builder.releaseParserOnClose(true);
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/attachments/AttachmentsTest.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/attachments/AttachmentsTest.java?rev=1196397&r1=1196396&r2=1196397&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/attachments/AttachmentsTest.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/attachments/AttachmentsTest.java Tue Nov 1 23:40:05 2011
@@ -24,10 +24,11 @@ import org.apache.axiom.om.MIMEResource;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMOutputFormat;
import org.apache.axiom.om.OMXMLBuilderFactory;
+import org.apache.axiom.om.OMXMLParserWrapper;
import org.apache.axiom.om.TestConstants;
import org.apache.axiom.om.impl.MIMEOutputUtils;
import org.apache.axiom.om.impl.MTOMXMLStreamWriter;
-import org.apache.axiom.om.impl.builder.XOPAwareStAXOMBuilder;
+import org.apache.axiom.om.util.StAXParserConfiguration;
import org.apache.axiom.soap.SOAPModelBuilder;
import java.io.ByteArrayInputStream;
@@ -66,9 +67,8 @@ public class AttachmentsTest extends Abs
ByteArrayOutputStream baos = new ByteArrayOutputStream();
MTOMXMLStreamWriter writer = new MTOMXMLStreamWriter(baos, oof);
- XOPAwareStAXOMBuilder builder =
- new XOPAwareStAXOMBuilder(attachments.getRootPartInputStream(),
- attachments);
+ OMXMLParserWrapper builder =
+ OMXMLBuilderFactory.createOMBuilder(StAXParserConfiguration.DEFAULT, attachments);
OMElement om = builder.getDocumentElement();
om.serialize(writer);
om.close(false);
@@ -83,8 +83,7 @@ public class AttachmentsTest extends Abs
Boolean.TRUE);
writer = new MTOMXMLStreamWriter(baos, oof);
builder =
- new XOPAwareStAXOMBuilder(attachments.getRootPartInputStream(),
- attachments);
+ OMXMLBuilderFactory.createOMBuilder(StAXParserConfiguration.DEFAULT, attachments);
om = builder.getDocumentElement();
om.serialize(writer);
om.close(false);
@@ -106,8 +105,7 @@ public class AttachmentsTest extends Abs
Boolean.FALSE);
writer = new MTOMXMLStreamWriter(baos, oof);
builder =
- new XOPAwareStAXOMBuilder(attachments2.getRootPartInputStream(),
- attachments2);
+ OMXMLBuilderFactory.createOMBuilder(StAXParserConfiguration.DEFAULT, attachments2);
om = builder.getDocumentElement();
om.serialize(writer);
om.close(false);
@@ -122,8 +120,7 @@ public class AttachmentsTest extends Abs
Boolean.TRUE);
writer = new MTOMXMLStreamWriter(baos, oof);
builder =
- new XOPAwareStAXOMBuilder(attachments2.getRootPartInputStream(),
- attachments2);
+ OMXMLBuilderFactory.createOMBuilder(StAXParserConfiguration.DEFAULT, attachments2);
om = builder.getDocumentElement();
om.serialize(writer);
om.close(false);