You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by di...@apache.org on 2008/05/28 17:46:03 UTC
svn commit: r660986 - in
/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2:
Constants.java builder/BuilderUtil.java builder/DataSourceBuilder.java
engine/AxisConfiguration.java transport/TransportUtils.java
Author: dims
Date: Wed May 28 08:46:03 2008
New Revision: 660986
URL: http://svn.apache.org/viewvc?rev=660986&view=rev
Log:
part of fix for AXIS2-3805 - Provider<DataSource> does not work. ability to plugin a message formatter programatically, ability to specify a regexp for content-type key when looking up a builder. a new DataSourceBuilder that just wraps a DataSource inside an OMElement
Added:
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/builder/DataSourceBuilder.java
Modified:
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/TransportUtils.java
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java?rev=660986&r1=660985&r2=660986&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java Wed May 28 08:46:03 2008
@@ -378,6 +378,8 @@
*/
public static final String MESSAGE_TYPE = "messageType";
+ public static final String MESSAGE_FORMATTER = "messageFormatter";
+
public static final String SOAP_RESPONSE_MEP = "soapResponseMEP";
/**
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java?rev=660986&r1=660985&r2=660986&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java Wed May 28 08:46:03 2008
@@ -711,9 +711,6 @@
msgContext.getConfigurationContext().getAxisConfiguration();
Builder builder = configuration
.getMessageBuilder(type);
- if (builder == null) {
- builder = configuration.getMessageBuilder(type.toLowerCase());
- }
if (builder != null) {
// Check whether the request has a Accept header if so use that as the response
// message type.
Added: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/builder/DataSourceBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/builder/DataSourceBuilder.java?rev=660986&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/builder/DataSourceBuilder.java (added)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/builder/DataSourceBuilder.java Wed May 28 08:46:03 2008
@@ -0,0 +1,74 @@
+package org.apache.axis2.builder;
+
+import org.apache.axiom.attachments.utils.IOUtils;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMDataSource;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.OMOutputFormat;
+import org.apache.axiom.om.impl.OMNamespaceImpl;
+import org.apache.axiom.om.impl.llom.OMSourcedElementImpl;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Writer;
+
+public class DataSourceBuilder implements Builder {
+
+ public OMElement processDocument(InputStream inputStream, String contentType,
+ MessageContext msgContext)
+ throws AxisFault {
+ msgContext.setDoingREST(true);
+ OMNamespace ns = new OMNamespaceImpl("", "");
+ OMFactory factory = OMAbstractFactory.getOMFactory();
+ byte[] bytes;
+ try {
+ bytes = IOUtils.getStreamAsByteArray(inputStream);
+ } catch (IOException e) {
+ throw AxisFault.makeFault(e);
+ }
+ ByteArrayDataSourceEx ds = new ByteArrayDataSourceEx(bytes, contentType);
+ return new OMSourcedElementImpl("dummy", ns, factory, ds);
+ }
+
+ public class ByteArrayDataSourceEx extends javax.mail.util.ByteArrayDataSource implements OMDataSource {
+ private byte[] bytes;
+
+ public ByteArrayDataSourceEx(byte[] bytes, String s) {
+ super(bytes, s);
+ this.bytes = bytes;
+ }
+
+ public void serialize(OutputStream output, OMOutputFormat format) throws XMLStreamException {
+ try {
+ output.write(bytes);
+ } catch (IOException e) {
+ throw new XMLStreamException(e);
+ }
+ }
+
+ public java.lang.String getContentType() {
+ return super.getContentType();
+ }
+
+ public void serialize(Writer writer, OMOutputFormat format) throws XMLStreamException {
+ throw new UnsupportedOperationException("FIXME");
+ }
+
+ public void serialize(XMLStreamWriter xmlWriter) throws XMLStreamException {
+ throw new UnsupportedOperationException("FIXME");
+ }
+
+ public XMLStreamReader getReader() throws XMLStreamException {
+ throw new UnsupportedOperationException("FIXME");
+ }
+ }
+
+}
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration.java?rev=660986&r1=660985&r2=660986&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration.java Wed May 28 08:46:03 2008
@@ -628,7 +628,24 @@
* the given content type.
*/
public Builder getMessageBuilder(String contentType) {
- return (Builder) messageBuilders.get(contentType);
+ if(messageBuilders.isEmpty()){
+ return null;
+ }
+ Builder builder = (Builder) messageBuilders.get(contentType);
+ if (builder == null) {
+ builder = (Builder) messageBuilders.get(contentType.toLowerCase());
+ }
+ if (builder == null) {
+ Iterator iterator = messageBuilders.entrySet().iterator();
+ while (iterator.hasNext() && builder == null) {
+ Map.Entry entry = (Map.Entry) iterator.next();
+ String key = (String) entry.getKey();
+ if (contentType.matches(key)) {
+ builder = (Builder) entry.getValue();
+ }
+ }
+ }
+ return builder;
}
/**
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/TransportUtils.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/TransportUtils.java?rev=660986&r1=660985&r2=660986&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/TransportUtils.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/TransportUtils.java Wed May 28 08:46:03 2008
@@ -280,6 +280,12 @@
}
if (messageFormatter == null) {
+ messageFormatter = (MessageFormatter) msgContext.getProperty(Constants.Configuration.MESSAGE_FORMATTER);
+ if(messageFormatter != null) {
+ return messageFormatter;
+ }
+ }
+ if (messageFormatter == null) {
// If we are doing rest better default to Application/xml formatter
if (msgContext.isDoingREST()) {