Author: alessio.soldano(a)jboss.com
Date: 2009-01-14 14:00:47 -0500 (Wed, 14 Jan 2009)
New Revision: 9038
Modified:
stack/native/branches/jaxws21/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientFeatureProcessor.java
stack/native/branches/jaxws21/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/EndpointFeatureProcessor.java
Log:
[JBWS-2448] MTOMFeature & @MTOM
Modified:
stack/native/branches/jaxws21/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientFeatureProcessor.java
===================================================================
---
stack/native/branches/jaxws21/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientFeatureProcessor.java 2009-01-14
17:36:22 UTC (rev 9037)
+++
stack/native/branches/jaxws21/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientFeatureProcessor.java 2009-01-14
19:00:47 UTC (rev 9038)
@@ -27,6 +27,8 @@
import javax.xml.ws.WebServiceFeature;
import javax.xml.ws.handler.Handler;
import javax.xml.ws.soap.AddressingFeature;
+import javax.xml.ws.soap.MTOMFeature;
+import javax.xml.ws.soap.SOAPBinding;
import org.jboss.ws.core.jaxws.binding.BindingExt;
import org.jboss.ws.extensions.addressing.jaxws.WSAddressingClientHandler;
@@ -45,11 +47,12 @@
public static <T> void processFeature(WebServiceFeature feature,
EndpointMetaData epMetaData, T stub)
{
epMetaData.addFeature(feature);
- processWSAddressingFeature(feature, epMetaData, stub);
+ processAddressingFeature(feature, epMetaData, stub);
+ processMTOMFeature(feature, epMetaData, stub);
}
@SuppressWarnings("unchecked")
- private static <T> void processWSAddressingFeature(WebServiceFeature feature,
EndpointMetaData epMetaData, T stub)
+ private static <T> void processAddressingFeature(WebServiceFeature feature,
EndpointMetaData epMetaData, T stub)
{
if (feature instanceof AddressingFeature && feature.isEnabled())
{
@@ -59,5 +62,14 @@
bindingExt.setHandlerChain(handlers, HandlerType.POST);
}
}
+
+ private static <T> void processMTOMFeature(WebServiceFeature feature,
EndpointMetaData epMetaData, T stub)
+ {
+ if (feature instanceof MTOMFeature)
+ {
+ SOAPBinding binding = (SOAPBinding)((BindingProvider)stub).getBinding();
+ binding.setMTOMEnabled(feature.isEnabled());
+ }
+ }
}
Modified:
stack/native/branches/jaxws21/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/EndpointFeatureProcessor.java
===================================================================
---
stack/native/branches/jaxws21/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/EndpointFeatureProcessor.java 2009-01-14
17:36:22 UTC (rev 9037)
+++
stack/native/branches/jaxws21/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/EndpointFeatureProcessor.java 2009-01-14
19:00:47 UTC (rev 9038)
@@ -27,7 +27,11 @@
import javax.xml.ws.soap.Addressing;
import javax.xml.ws.soap.AddressingFeature;
+import javax.xml.ws.soap.MTOM;
+import javax.xml.ws.soap.MTOMFeature;
+import javax.xml.ws.soap.SOAPBinding;
+import org.jboss.logging.Logger;
import org.jboss.ws.WSException;
import org.jboss.ws.annotation.FastInfoset;
import org.jboss.ws.annotation.JsonEncoding;
@@ -51,6 +55,8 @@
*/
public class EndpointFeatureProcessor
{
+ private static final Logger log = Logger.getLogger(EndpointFeatureProcessor.class);
+
protected void processEndpointFeatures(Deployment dep, ServerEndpointMetaData
sepMetaData, Class<?> sepClass)
{
for (Annotation an : sepClass.getAnnotations())
@@ -61,6 +67,12 @@
AddressingFeature feature = new AddressingFeature(anFeature.enabled(),
anFeature.required());
sepMetaData.addFeature(feature);
}
+ else if (an.annotationType() == MTOM.class)
+ {
+ MTOM anFeature = sepClass.getAnnotation(MTOM.class);
+ MTOMFeature feature = new MTOMFeature(anFeature.enabled(),
anFeature.threshold());
+ sepMetaData.addFeature(feature);
+ }
else if (an.annotationType() == SchemaValidation.class)
{
processSchemaValidation(dep, sepMetaData, sepClass);
@@ -83,6 +95,7 @@
protected void setupEndpointFeatures(ServerEndpointMetaData sepMetaData)
{
setupAddressingFeature(sepMetaData);
+ setupMTOMFeature(sepMetaData);
}
private static void setupAddressingFeature(ServerEndpointMetaData sepMetaData)
@@ -90,6 +103,7 @@
AddressingFeature addressingFeature =
sepMetaData.getFeature(AddressingFeature.class);
if (addressingFeature != null && addressingFeature.isEnabled())
{
+ log.debug("AddressingFeature found, installing WS-Addressing
post-handler");
HandlerMetaDataJAXWS hmd = new HandlerMetaDataJAXWS(HandlerType.POST);
hmd.setEndpointMetaData(sepMetaData);
hmd.setHandlerClassName(WSAddressingServerHandler.class.getName());
@@ -98,6 +112,25 @@
sepMetaData.addHandler(hmd);
}
}
+
+ private static void setupMTOMFeature(ServerEndpointMetaData sepMetaData)
+ {
+ MTOMFeature mtomFeature = sepMetaData.getFeature(MTOMFeature.class);
+ if (mtomFeature != null && mtomFeature.isEnabled())
+ {
+ String bindingId = sepMetaData.getBindingId();
+ if (SOAPBinding.SOAP11HTTP_BINDING.equals(bindingId))
+ {
+ log.debug("MTOMFeature found, setting binding to " +
SOAPBinding.SOAP11HTTP_MTOM_BINDING);
+ sepMetaData.setBindingId(SOAPBinding.SOAP11HTTP_MTOM_BINDING);
+ }
+ else if (SOAPBinding.SOAP12HTTP_BINDING.equals(bindingId))
+ {
+ log.debug("MTOMFeature found, setting binding to " +
SOAPBinding.SOAP12HTTP_MTOM_BINDING);
+ sepMetaData.setBindingId(SOAPBinding.SOAP12HTTP_MTOM_BINDING);
+ }
+ }
+ }
private void processSchemaValidation(Deployment dep, ServerEndpointMetaData
sepMetaData, Class<?> sepClass)
{