Author: sagara
Date: Wed Sep 19 11:00:38 2012
New Revision: 1387522
URL: http://svn.apache.org/viewvc?rev=1387522&view=rev
Log:
AXIS2-5374 fixed .
* Introduced a new class called MessageProcessorSelector which encapsulate
logics and algorithms when selecting MessageBuilders, AttachmentsBuilders and
MessageFormatters, eventually related logics scattered in various places need
to be moved to here.
* REST support is now only depends on disableREST parameter.
Added:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/util/MessageProcessorSelector.java
(with props)
Modified:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/MIMEBuilder.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/context/externalize/MessageExternalizeUtils.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/transport/TransportUtils.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/transport/http/ApplicationXMLFormatter.java
axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java
axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportUtils.java
axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HTTPSenderImpl.java
axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java
Modified:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java?rev=1387522&r1=1387521&r2=1387522&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java
(original)
+++
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java
Wed Sep 19 11:00:38 2012
@@ -57,6 +57,7 @@ import org.apache.axis2.engine.AxisConfi
import org.apache.axis2.java.security.AccessController;
import org.apache.axis2.transport.http.HTTPConstants;
import org.apache.axis2.util.JavaUtils;
+import org.apache.axis2.util.MessageProcessorSelector;
import org.apache.axis2.util.MultipleEntryHashMap;
import org.apache.axis2.wsdl.WSDLConstants;
import org.apache.commons.logging.Log;
@@ -454,37 +455,8 @@ public class BuilderUtil {
String soapEnvelopeNamespaceURI =
getEnvelopeNamespace(contentTypeString);
- if (isSOAP) {
- if (attachments.getAttachmentSpecType().equals(
- MTOMConstants.MTOM_TYPE)) {
- //Creates the MTOM specific MTOMStAXSOAPModelBuilder
- builder = new MTOMStAXSOAPModelBuilder(streamReader,
- attachments,
soapEnvelopeNamespaceURI);
- msgContext.setDoingMTOM(true);
- } else if (attachments.getAttachmentSpecType().equals(
- MTOMConstants.SWA_TYPE)) {
- builder = new StAXSOAPModelBuilder(streamReader,
- soapEnvelopeNamespaceURI);
- } else if (attachments.getAttachmentSpecType().equals(
- MTOMConstants.SWA_TYPE_12)) {
- builder = new StAXSOAPModelBuilder(streamReader,
- soapEnvelopeNamespaceURI);
- }
-
- }
- // To handle REST XOP case
- else {
- if
(attachments.getAttachmentSpecType().equals(MTOMConstants.MTOM_TYPE)) {
- builder = new XOPAwareStAXOMBuilder(streamReader, attachments);
-
- } else if
(attachments.getAttachmentSpecType().equals(MTOMConstants.SWA_TYPE)) {
- builder = new StAXOMBuilder(streamReader);
- } else if
(attachments.getAttachmentSpecType().equals(MTOMConstants.SWA_TYPE_12)) {
- builder = new StAXOMBuilder(streamReader);
- }
- }
+ return MessageProcessorSelector.getAttachmentBuilder(msgContext,
attachments, streamReader, soapEnvelopeNamespaceURI, isSOAP);
- return builder;
}
protected static Attachments createAttachmentsMap(MessageContext
msgContext,
Modified:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/MIMEBuilder.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/MIMEBuilder.java?rev=1387522&r1=1387521&r2=1387522&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/MIMEBuilder.java
(original)
+++
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/MIMEBuilder.java
Wed Sep 19 11:00:38 2012
@@ -25,6 +25,7 @@ import org.apache.axiom.om.OMException;
import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.util.MessageProcessorSelector;
import javax.mail.internet.ContentType;
import javax.mail.internet.ParseException;
@@ -48,7 +49,7 @@ public class MIMEBuilder implements Buil
String type = ct.getParameter("type");
Builder builder =
- BuilderUtil.getBuilderFromSelector(type, msgContext);
+ MessageProcessorSelector.getMessageBuilder(type, msgContext);
if (builder instanceof MIMEAwareBuilder) {
return ((MIMEAwareBuilder)builder).processMIMEMessage(attachments,
type, msgContext);
Modified:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/context/externalize/MessageExternalizeUtils.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/context/externalize/MessageExternalizeUtils.java?rev=1387522&r1=1387521&r2=1387522&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/context/externalize/MessageExternalizeUtils.java
(original)
+++
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/context/externalize/MessageExternalizeUtils.java
Wed Sep 19 11:00:38 2012
@@ -27,7 +27,7 @@ import org.apache.axis2.AxisFault;
import org.apache.axis2.builder.BuilderUtil;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.transport.MessageFormatter;
-import org.apache.axis2.transport.TransportUtils;
+import org.apache.axis2.util.MessageProcessorSelector;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -145,7 +145,7 @@ public class MessageExternalizeUtils im
try {
// Write out the message using the same logic as the
// transport layer.
- MessageFormatter msgFormatter =
TransportUtils.getMessageFormatter(mc);
+ MessageFormatter msgFormatter =
MessageProcessorSelector.getMessageFormatter(mc);
msgFormatter.writeTo(mc, outputFormat, bos,
true); // Preserve the original message
Modified:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/transport/TransportUtils.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/transport/TransportUtils.java?rev=1387522&r1=1387521&r2=1387522&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/transport/TransportUtils.java
(original)
+++
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/transport/TransportUtils.java
Wed Sep 19 11:00:38 2012
@@ -43,11 +43,9 @@ import org.apache.axis2.context.Operatio
import org.apache.axis2.deployment.DeploymentConstants;
import org.apache.axis2.description.Parameter;
import org.apache.axis2.i18n.Messages;
-import org.apache.axis2.transport.http.ApplicationXMLFormatter;
import org.apache.axis2.transport.http.HTTPConstants;
-import org.apache.axis2.transport.http.SOAPMessageFormatter;
-import org.apache.axis2.transport.http.XFormURLEncodedFormatter;
import org.apache.axis2.util.JavaUtils;
+import org.apache.axis2.util.MessageProcessorSelector;
import org.apache.axis2.wsdl.WSDLConstants;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -196,7 +194,7 @@ public class TransportUtils {
String type = null;
if (contentType != null) {
type = getContentType(contentType, msgContext);
- Builder builder = BuilderUtil.getBuilderFromSelector(type,
msgContext);
+ Builder builder = MessageProcessorSelector.getMessageBuilder(type,
msgContext);
if (builder != null) {
if (log.isDebugEnabled()) {
log.debug("createSOAPEnvelope using Builder (" +
@@ -271,7 +269,8 @@ public class TransportUtils {
if (msgContext.isDoingREST() &&
HTTPConstants.MEDIA_TYPE_TEXT_XML.equals(type)) {
if (msgContext.isServerSide()) {
if (msgContext.getSoapAction() == null) {
- type = HTTPConstants.MEDIA_TYPE_APPLICATION_XML;
+ // TODO - remove this logic.
+ //type = HTTPConstants.MEDIA_TYPE_APPLICATION_XML;
}
} else if
(!msgContext.isPropertyTrue(Constants.Configuration.SOAP_RESPONSE_MEP)) {
type = HTTPConstants.MEDIA_TYPE_APPLICATION_XML;
@@ -356,50 +355,7 @@ public class TransportUtils {
}
}
- /**
- * Initial work for a builder selector which selects the builder for a
given message format based on the the content type of the recieved message.
- * content-type to builder mapping can be specified through the Axis2.xml.
- *
- * @param msgContext
- * @return the builder registered against the given content-type
- * @throws AxisFault
- */
- public static MessageFormatter getMessageFormatter(MessageContext
msgContext)
- throws AxisFault {
- MessageFormatter messageFormatter = null;
- String messageFormatString = getMessageFormatterProperty(msgContext);
- if (messageFormatString != null) {
- messageFormatter = msgContext.getConfigurationContext()
-
.getAxisConfiguration().getMessageFormatter(messageFormatString);
- if (log.isDebugEnabled()) {
- log.debug("Message format is: " + messageFormatString
- + "; message formatter returned by AxisConfiguration:
" + messageFormatter);
- }
- }
- 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()) {
- String httpMethod = (String)
msgContext.getProperty(Constants.Configuration.HTTP_METHOD);
- if (Constants.Configuration.HTTP_METHOD_GET.equals(httpMethod)
||
-
Constants.Configuration.HTTP_METHOD_DELETE.equals(httpMethod)) {
- return new XFormURLEncodedFormatter();
- }
- return new ApplicationXMLFormatter();
- } else {
- // Lets default to SOAP formatter
- //TODO need to improve this to use the stateless nature
- messageFormatter = new SOAPMessageFormatter();
- }
- }
- return messageFormatter;
- }
/**
@@ -483,22 +439,7 @@ public class TransportUtils {
}
- private static String getMessageFormatterProperty(MessageContext
msgContext) {
- String messageFormatterProperty = null;
- Object property = msgContext
- .getProperty(Constants.Configuration.MESSAGE_TYPE);
- if (property != null) {
- messageFormatterProperty = (String) property;
- }
- if (messageFormatterProperty == null) {
- Parameter parameter = msgContext
- .getParameter(Constants.Configuration.MESSAGE_TYPE);
- if (parameter != null) {
- messageFormatterProperty = (String) parameter.getValue();
- }
- }
- return messageFormatterProperty;
- }
+
/**
Modified:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/transport/http/ApplicationXMLFormatter.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/transport/http/ApplicationXMLFormatter.java?rev=1387522&r1=1387521&r2=1387522&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/transport/http/ApplicationXMLFormatter.java
(original)
+++
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/transport/http/ApplicationXMLFormatter.java
Wed Sep 19 11:00:38 2012
@@ -21,7 +21,6 @@ package org.apache.axis2.transport.http;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMOutputFormat;
-import org.apache.axiom.soap.SOAP11Constants;
import org.apache.axiom.soap.SOAP12Constants;
import org.apache.axiom.soap.SOAPFault;
import org.apache.axiom.soap.SOAPFaultDetail;
@@ -211,11 +210,13 @@ public class ApplicationXMLFormatter imp
if (JavaUtils.indexOfIgnoreCase(contentType,
SOAP12Constants.SOAP_12_CONTENT_TYPE) > -1) {
return true;
}
+ // 'text/xml' can be a POX (REST) content type too
+ // TODO - Remove
// search for "type=text/xml"
- else if (JavaUtils.indexOfIgnoreCase(contentType,
+ /*else if (JavaUtils.indexOfIgnoreCase(contentType,
SOAP11Constants.SOAP_11_CONTENT_TYPE) > -1) {
return true;
- }
+ } */
return false;
}
}
Added:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/util/MessageProcessorSelector.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/util/MessageProcessorSelector.java?rev=1387522&view=auto
==============================================================================
---
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/util/MessageProcessorSelector.java
(added)
+++
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/util/MessageProcessorSelector.java
Wed Sep 19 11:00:38 2012
@@ -0,0 +1,256 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.axis2.util;
+
+import org.apache.axiom.attachments.Attachments;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.impl.MTOMConstants;
+import org.apache.axiom.om.impl.builder.StAXBuilder;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.impl.builder.XOPAwareStAXOMBuilder;
+import org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder;
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.builder.Builder;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.transport.MessageFormatter;
+import org.apache.axis2.transport.http.ApplicationXMLFormatter;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.transport.http.SOAPMessageFormatter;
+import org.apache.axis2.transport.http.XFormURLEncodedFormatter;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.parsers.FactoryConfigurationError;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import java.util.Map;
+
+/**
+ * MessageProcessorSelector is utility class which encapsulate MessageBuilder
and
+ * MessageFormatter selection logic.
+ *
+ * @since 1.7.0
+ */
+public class MessageProcessorSelector {
+
+ private static final Log log =
LogFactory.getLog(MessageProcessorSelector.class);
+
+ /**
+ * Initial work for a builder selector which selects the builder for a
given message format
+ * based on the the content type of the recieved message. content-type to
builder mapping can be
+ * specified through the Axis2.xml.
+ *
+ * @param type content-type
+ * @param msgContext the active MessageContext
+ * @return the builder registered against the given content-type
+ * @throws org.apache.axis2.AxisFault
+ */
+ public static Builder getMessageBuilder(String type, MessageContext
msgContext)
+ throws AxisFault {
+ boolean useFallbackBuilder = false;
+ AxisConfiguration configuration =
+ msgContext.getConfigurationContext().getAxisConfiguration();
+ Parameter useFallbackParameter =
configuration.getParameter(Constants.Configuration.USE_DEFAULT_FALLBACK_BUILDER);
+ if (useFallbackParameter != null) {
+ useFallbackBuilder =
JavaUtils.isTrueExplicitly(useFallbackParameter.getValue(), useFallbackBuilder);
+ }
+
+ String cType = getContentTypeForBuilderSelection(type, msgContext);
+ Builder builder = configuration.getMessageBuilder(cType,
useFallbackBuilder);
+ if (builder != null) {
+ // Check whether the request has a Accept header if so use that as
the response
+ // message type.
+ // If thats not present,
+ // Setting the received content-type as the messageType to make
+ // sure that we respond using the received message serialization
format.
+
+ Object contentNegotiation = configuration
+
.getParameterValue(Constants.Configuration.ENABLE_HTTP_CONTENT_NEGOTIATION);
+ if (JavaUtils.isTrueExplicitly(contentNegotiation)) {
+ Map transportHeaders =
+ (Map)
msgContext.getProperty(MessageContext.TRANSPORT_HEADERS);
+ if (transportHeaders != null) {
+ String acceptHeader = (String)
transportHeaders.get(HTTPConstants.HEADER_ACCEPT);
+ if (acceptHeader != null) {
+ int index = acceptHeader.indexOf(";");
+ if (index > 0) {
+ acceptHeader = acceptHeader.substring(0, index);
+ }
+ String[] strings = acceptHeader.split(",");
+ for (String string : strings) {
+ String accept = string.trim();
+ // We dont want dynamic content negotoatin to work
on text.xml as its
+ // ambiguos as to whether the user requests SOAP
1.1 or POX response
+ if
(!HTTPConstants.MEDIA_TYPE_TEXT_XML.equals(accept) &&
+ configuration.getMessageFormatter(accept)
!= null) {
+ type = string;
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ msgContext.setProperty(Constants.Configuration.MESSAGE_TYPE, type);
+ }
+ return builder;
+ }
+
+ /**
+ * Initial work for a builder selector which selects the builder for a
given message format based on the the content type of the recieved message.
+ * content-type to builder mapping can be specified through the Axis2.xml.
+ *
+ * @param msgContext
+ * @return the builder registered against the given content-type
+ * @throws AxisFault
+ */
+ public static MessageFormatter getMessageFormatter(MessageContext
msgContext)
+ throws AxisFault {
+ MessageFormatter messageFormatter = null;
+ String messageFormatString = getMessageFormatterProperty(msgContext);
+ messageFormatString =
getContentTypeForFormatterSelection(messageFormatString, msgContext);
+ if (messageFormatString != null) {
+ messageFormatter = msgContext.getConfigurationContext()
+
.getAxisConfiguration().getMessageFormatter(messageFormatString);
+ if (log.isDebugEnabled()) {
+ log.debug("Message format is: " + messageFormatString
+ + "; message formatter returned by AxisConfiguration:
" + messageFormatter);
+ }
+ }
+ 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()) {
+ String httpMethod = (String)
msgContext.getProperty(Constants.Configuration.HTTP_METHOD);
+ if (Constants.Configuration.HTTP_METHOD_GET.equals(httpMethod)
||
+
Constants.Configuration.HTTP_METHOD_DELETE.equals(httpMethod)) {
+ return new XFormURLEncodedFormatter();
+ }
+ return new ApplicationXMLFormatter();
+ } else {
+ // Lets default to SOAP formatter
+ //TODO need to improve this to use the stateless nature
+ messageFormatter = new SOAPMessageFormatter();
+ }
+ }
+ return messageFormatter;
+ }
+
+ public static StAXBuilder getAttachmentBuilder(MessageContext msgContext,
+ Attachments attachments,
XMLStreamReader streamReader,
+ String
soapEnvelopeNamespaceURI,
+ boolean isSOAP)
+ throws OMException, XMLStreamException, FactoryConfigurationError {
+
+ StAXBuilder builder = null;
+
+ if (isSOAP) {
+ if (attachments.getAttachmentSpecType().equals(
+ MTOMConstants.MTOM_TYPE)) {
+ //Creates the MTOM specific MTOMStAXSOAPModelBuilder
+ builder = new MTOMStAXSOAPModelBuilder(streamReader,
+ attachments, soapEnvelopeNamespaceURI);
+ msgContext.setDoingMTOM(true);
+ } else if (attachments.getAttachmentSpecType().equals(
+ MTOMConstants.SWA_TYPE)) {
+ builder = new StAXSOAPModelBuilder(streamReader,
+ soapEnvelopeNamespaceURI);
+ } else if (attachments.getAttachmentSpecType().equals(
+ MTOMConstants.SWA_TYPE_12)) {
+ builder = new StAXSOAPModelBuilder(streamReader,
+ soapEnvelopeNamespaceURI);
+ }
+
+ }
+ // To handle REST XOP case
+ else {
+ if
(attachments.getAttachmentSpecType().equals(MTOMConstants.MTOM_TYPE)) {
+ builder = new XOPAwareStAXOMBuilder(streamReader, attachments);
+
+ } else if
(attachments.getAttachmentSpecType().equals(MTOMConstants.SWA_TYPE)) {
+ builder = new StAXOMBuilder(streamReader);
+ } else if
(attachments.getAttachmentSpecType().equals(MTOMConstants.SWA_TYPE_12)) {
+ builder = new StAXOMBuilder(streamReader);
+ }
+ }
+
+ return builder;
+ }
+
+ private static String getMessageFormatterProperty(MessageContext
msgContext) {
+ String messageFormatterProperty = null;
+ Object property = msgContext
+ .getProperty(Constants.Configuration.MESSAGE_TYPE);
+ if (property != null) {
+ messageFormatterProperty = (String) property;
+ }
+ if (messageFormatterProperty == null) {
+ Parameter parameter = msgContext
+ .getParameter(Constants.Configuration.MESSAGE_TYPE);
+ if (parameter != null) {
+ messageFormatterProperty = (String) parameter.getValue();
+ }
+ }
+ return messageFormatterProperty;
+ }
+
+ private static String getContentTypeForBuilderSelection(String type,
MessageContext msgContext) {
+ /**
+ * Handle special case where content-type : text/xml and SOAPAction =
null consider as
+ * POX (REST) message not SOAP 1.1.
+ *
+ * it's required use the Builder associate with "application/xml" here
but should not
+ * change content type of current message.
+ *
+ */
+ String cType = type;
+ if (msgContext.getSoapAction() == null &&
HTTPConstants.MEDIA_TYPE_TEXT_XML.equals(type) && msgContext.isDoingREST()) {
+ cType = HTTPConstants.MEDIA_TYPE_APPLICATION_XML;
+ }
+ return cType;
+ }
+
+ private static String getContentTypeForFormatterSelection(String type,
MessageContext msgContext) {
+ /**
+ * Handle special case where content-type : text/xml and SOAPAction =
null consider as
+ * POX (REST) message not SOAP 1.1.
+ *
+ * 1.) it's required use the Builder associate with "application/xml"
here but should not
+ * change content type of current message.
+ */
+ String cType = type;
+ if (msgContext.isDoingREST() &&
HTTPConstants.MEDIA_TYPE_TEXT_XML.equals(type)) {
+ cType = HTTPConstants.MEDIA_TYPE_APPLICATION_XML;
+ msgContext.setProperty(Constants.Configuration.CONTENT_TYPE,
HTTPConstants.MEDIA_TYPE_TEXT_XML);
+ }
+ return cType;
+ }
+
+}
\ No newline at end of file
Propchange:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/util/MessageProcessorSelector.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java?rev=1387522&r1=1387521&r2=1387522&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java
(original)
+++
axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java
Wed Sep 19 11:00:38 2012
@@ -35,6 +35,7 @@ import org.apache.axis2.transport.Transp
import org.apache.axis2.transport.http.impl.httpclient3.HTTPSenderImpl;
import org.apache.axis2.transport.http.server.AxisHttpResponse;
import org.apache.axis2.util.JavaUtils;
+import org.apache.axis2.util.MessageProcessorSelector;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -336,7 +337,7 @@ public class CommonsHTTPTransportSender
}
}
- MessageFormatter messageFormatter =
TransportUtils.getMessageFormatter(msgContext);
+ MessageFormatter messageFormatter =
MessageProcessorSelector.getMessageFormatter(msgContext);
if (messageFormatter == null) throw new AxisFault("No MessageFormatter
in MessageContext");
// Once we get to this point, exceptions should NOT be turned into
faults and sent,
Modified:
axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportUtils.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportUtils.java?rev=1387522&r1=1387521&r2=1387522&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportUtils.java
(original)
+++
axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportUtils.java
Wed Sep 19 11:00:38 2012
@@ -273,10 +273,10 @@ public class HTTPTransportUtils {
if (soapVersion == VERSION_SOAP11) {
// TODO Keith : Do we need this anymore
// Deployment configuration parameter
- Parameter enableREST = msgContext
- .getParameter(Constants.Configuration.ENABLE_REST);
- if ((soapActionHeader == null) && (enableREST != null)) {
- if (Constants.VALUE_TRUE.equals(enableREST.getValue())) {
+ Parameter disableREST = msgContext
+ .getParameter(Constants.Configuration.DISABLE_REST);
+ if (soapActionHeader == null && disableREST != null) {
+ if (Constants.VALUE_FALSE.equals(disableREST.getValue())) {
// If the content Type is text/xml (BTW which is the
// SOAP 1.1 Content type ) and the SOAP Action is
// absent it is rest !!
Modified:
axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HTTPSenderImpl.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HTTPSenderImpl.java?rev=1387522&r1=1387521&r2=1387522&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HTTPSenderImpl.java
(original)
+++
axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HTTPSenderImpl.java
Wed Sep 19 11:00:38 2012
@@ -42,11 +42,11 @@ import org.apache.axis2.context.NamedVal
import org.apache.axis2.context.OperationContext;
import org.apache.axis2.i18n.Messages;
import org.apache.axis2.transport.MessageFormatter;
-import org.apache.axis2.transport.TransportUtils;
import org.apache.axis2.transport.http.HTTPAuthenticator;
import org.apache.axis2.transport.http.HTTPConstants;
import org.apache.axis2.transport.http.HTTPSender;
import org.apache.axis2.transport.http.HTTPTransportConstants;
+import org.apache.axis2.util.MessageProcessorSelector;
import org.apache.axis2.wsdl.WSDLConstants;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
@@ -666,7 +666,8 @@ public class HTTPSenderImpl extends HTTP
httpMethod.setDoAuthentication(true);
}
- MessageFormatter messageFormatter =
TransportUtils.getMessageFormatter(msgContext);
+ MessageFormatter messageFormatter = MessageProcessorSelector
+ .getMessageFormatter(msgContext);
url = messageFormatter.getTargetAddress(msgContext, format, url);
Modified:
axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java?rev=1387522&r1=1387521&r2=1387522&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java
(original)
+++
axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java
Wed Sep 19 11:00:38 2012
@@ -30,11 +30,11 @@ import org.apache.axis2.context.NamedVal
import org.apache.axis2.context.OperationContext;
import org.apache.axis2.i18n.Messages;
import org.apache.axis2.transport.MessageFormatter;
-import org.apache.axis2.transport.TransportUtils;
import org.apache.axis2.transport.http.HTTPAuthenticator;
import org.apache.axis2.transport.http.HTTPConstants;
import org.apache.axis2.transport.http.HTTPSender;
import org.apache.axis2.transport.http.HTTPTransportConstants;
+import org.apache.axis2.util.MessageProcessorSelector;
import org.apache.axis2.wsdl.WSDLConstants;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -656,7 +656,7 @@ public class HTTPSenderImpl extends HTTP
httpMethod.getParams().setBooleanParameter(ClientPNames.HANDLE_AUTHENTICATION,
true);
}
- MessageFormatter messageFormatter =
TransportUtils.getMessageFormatter(msgContext);
+ MessageFormatter messageFormatter =
MessageProcessorSelector.getMessageFormatter(msgContext);
url = messageFormatter.getTargetAddress(msgContext, format, url);