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 sc...@apache.org on 2008/03/27 17:54:58 UTC
svn commit: r641889 - in /webservices/axis2/trunk/java/modules:
jaxws-integration/test/org/apache/axis2/jaxws/sample/
jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/
jaxws/src/org/apache/axis2/datasource/jaxb/
jaxws/src/org/apache/axis2/jaxw...
Author: scheu
Date: Thu Mar 27 09:54:49 2008
New Revision: 641889
URL: http://svn.apache.org/viewvc?rev=641889&view=rev
Log:
AXIS2-3671
Contributor:Rich Scheuerle
The mtom setting is based on both the @MTOM annotation and the @BindingType annotation.
If present, the @MTOM annotation takes precedence.
Adding tests and code.
Added:
webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleMTOMDefaultService.java
webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleMTOMDisable2Service.java
webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleMTOMDisableService.java
webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleMTOMEnableService.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/datasource/jaxb/JAXBAttachmentUnmarshallerMonitor.java
Modified:
webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/MtomSampleTests.java
webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSample.java
webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleService.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/datasource/jaxb/JAXBAttachmentUnmarshaller.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/attachments/JAXBAttachmentUnmarshaller.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/ProviderDispatcher.java
webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/EndpointDescription.java
webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointDescriptionImpl.java
Modified: webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/MtomSampleTests.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/MtomSampleTests.java?rev=641889&r1=641888&r2=641889&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/MtomSampleTests.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/MtomSampleTests.java Thu Mar 27 09:54:49 2008
@@ -22,6 +22,8 @@
import junit.framework.Test;
import junit.framework.TestSuite;
+
+import org.apache.axis2.datasource.jaxb.JAXBAttachmentUnmarshallerMonitor;
import org.apache.axis2.jaxws.TestLogger;
import org.apache.axis2.jaxws.framework.AbstractTestCase;
import org.apache.axis2.jaxws.provider.DataSourceImpl;
@@ -46,14 +48,26 @@
import javax.xml.ws.soap.SOAPBinding;
import javax.xml.ws.soap.SOAPFaultException;
-import java.awt.*;
+import java.awt.Image;
import java.io.File;
+import java.util.List;
public class MtomSampleTests extends AbstractTestCase {
private static final QName QNAME_SERVICE = new QName("urn://mtom.test.org", "MtomSampleService");
private static final QName QNAME_PORT = new QName("urn://mtom.test.org", "MtomSample");
private static final String URL_ENDPOINT = "http://localhost:6060/axis2/services/MtomSampleService.MtomSampleServicePort";
+
+ private static final String URL_ENDPOINT_MTOMDISABLE =
+ "http://localhost:6060/axis2/services/MtomSampleService.MtomSampleMTOMDisableServicePort";
+ private static final String URL_ENDPOINT_MTOMDISABLE2 =
+ "http://localhost:6060/axis2/services/MtomSampleService.MtomSampleMTOMDisable2ServicePort";
+ private static final String URL_ENDPOINT_MTOMENABLE =
+ "http://localhost:6060/axis2/services/MtomSampleService.MtomSampleMTOMEnableServicePort";
+ private static final String URL_ENDPOINT_MTOMDEFAULT =
+ "http://localhost:6060/axis2/services/MtomSampleService.MtomSampleMTOMDefaultServicePort";
+
+
private static final String IMAGE_DIR = System.getProperty("basedir",".")+"/"+"test-resources"+File.separator+"image";
private static boolean CHECK_VERSIONMISMATCH = true;
@@ -143,12 +157,257 @@
service.addPort(QNAME_PORT, SOAPBinding.SOAP11HTTP_BINDING, URL_ENDPOINT);
Dispatch<Object> dispatch = service.createDispatch(QNAME_PORT, jbc, Mode.PAYLOAD, mtom21);
+ List cids = null;
+ SendImageResponse response = null;
+ try {
+ JAXBAttachmentUnmarshallerMonitor.setMonitoring(true);
+ response = (SendImageResponse) dispatch.invoke(request);
+
+ // The cids are collected in the monitor. We will check
+ // this to make sure the response mtom is not inlined
+ cids = JAXBAttachmentUnmarshallerMonitor.getBlobCIDs();
+ } finally {
+ JAXBAttachmentUnmarshallerMonitor.setMonitoring(false);
+ }
- SendImageResponse response = (SendImageResponse) dispatch.invoke(request);
assertNotNull(response);
assertNotNull(response.getOutput().getImageData());
+
+
+ int numCIDs = (cids == null) ? 0 : cids.size();
+ assertTrue("Expected one attachment but there were:" + numCIDs, numCIDs == 1);
+ }
+
+ /*
+ * Enable attachment Optimization but call an endpoint with @MTOM(enable=false)
+ */
+ public void testSendImage_MTOMDisable() throws Exception {
+ TestLogger.logger.debug("----------------------------------");
+ TestLogger.logger.debug("test: " + getName());
+
+ String imageResourceDir = IMAGE_DIR;
+
+ //Create a DataSource from an image
+ File file = new File(imageResourceDir+File.separator+"test.jpg");
+ ImageInputStream fiis = new FileImageInputStream(file);
+ Image image = ImageIO.read(fiis);
+ DataSource imageDS = new DataSourceImpl("image/jpeg","test.jpg",image);
+
+ //Create a DataHandler with the String DataSource object
+ DataHandler dataHandler = new DataHandler(imageDS);
+
+ //Store the data handler in ImageDepot bean
+ ImageDepot imageDepot = new ObjectFactory().createImageDepot();
+ imageDepot.setImageData(dataHandler);
+
+ SendImage request = new ObjectFactory().createSendImage();
+ request.setInput(imageDepot);
+
+ //Create the necessary JAXBContext
+ JAXBContext jbc = JAXBContext.newInstance("org.test.mtom");
+
+ MTOMFeature mtom21 = new MTOMFeature();
+
+ // Create the JAX-WS client needed to send the request
+ Service service = Service.create(QNAME_SERVICE);
+ service.addPort(QNAME_PORT, SOAPBinding.SOAP11HTTP_BINDING, URL_ENDPOINT_MTOMDISABLE);
+ Dispatch<Object> dispatch = service.createDispatch(QNAME_PORT, jbc, Mode.PAYLOAD, mtom21);
+
+ List cids = null;
+ SendImageResponse response = null;
+ try {
+ JAXBAttachmentUnmarshallerMonitor.setMonitoring(true);
+ response = (SendImageResponse) dispatch.invoke(request);
+
+ // The cids are collected in the monitor. We will check
+ // this to make sure the response mtom is not inlined
+ cids = JAXBAttachmentUnmarshallerMonitor.getBlobCIDs();
+ } finally {
+ JAXBAttachmentUnmarshallerMonitor.setMonitoring(false);
+ }
+
+
+ assertNotNull(response);
+ assertNotNull(response.getOutput().getImageData());
+
+
+ int numCIDs = (cids == null) ? 0 : cids.size();
+ assertTrue("Expected zero attachments but there were:" + numCIDs, numCIDs == 0);
+ }
+
+ /*
+ * Enable attachment Optimization but call an endpoint with @MTOM(enable=false)
+ * which should override the MTOM BindingType
+ */
+ public void testSendImage_MTOMDisable2() throws Exception {
+ TestLogger.logger.debug("----------------------------------");
+ TestLogger.logger.debug("test: " + getName());
+
+ String imageResourceDir = IMAGE_DIR;
+
+ //Create a DataSource from an image
+ File file = new File(imageResourceDir+File.separator+"test.jpg");
+ ImageInputStream fiis = new FileImageInputStream(file);
+ Image image = ImageIO.read(fiis);
+ DataSource imageDS = new DataSourceImpl("image/jpeg","test.jpg",image);
+
+ //Create a DataHandler with the String DataSource object
+ DataHandler dataHandler = new DataHandler(imageDS);
+
+ //Store the data handler in ImageDepot bean
+ ImageDepot imageDepot = new ObjectFactory().createImageDepot();
+ imageDepot.setImageData(dataHandler);
+
+ SendImage request = new ObjectFactory().createSendImage();
+ request.setInput(imageDepot);
+
+ //Create the necessary JAXBContext
+ JAXBContext jbc = JAXBContext.newInstance("org.test.mtom");
+
+ MTOMFeature mtom21 = new MTOMFeature();
+
+ // Create the JAX-WS client needed to send the request
+ Service service = Service.create(QNAME_SERVICE);
+ service.addPort(QNAME_PORT, SOAPBinding.SOAP11HTTP_BINDING, URL_ENDPOINT_MTOMDISABLE2);
+ Dispatch<Object> dispatch = service.createDispatch(QNAME_PORT, jbc, Mode.PAYLOAD, mtom21);
+
+ List cids = null;
+ SendImageResponse response = null;
+ try {
+ JAXBAttachmentUnmarshallerMonitor.setMonitoring(true);
+ response = (SendImageResponse) dispatch.invoke(request);
+
+ // The cids are collected in the monitor. We will check
+ // this to make sure the response mtom is not inlined
+ cids = JAXBAttachmentUnmarshallerMonitor.getBlobCIDs();
+ } finally {
+ JAXBAttachmentUnmarshallerMonitor.setMonitoring(false);
+ }
+
+
+ assertNotNull(response);
+ assertNotNull(response.getOutput().getImageData());
+
+
+ int numCIDs = (cids == null) ? 0 : cids.size();
+ assertTrue("Expected zero attachments but there were:" + numCIDs, numCIDs == 0);
+ }
+
+ /*
+ * Enable attachment Optimization but call an endpoint with @MTOM(enable=true)
+ */
+ public void testSendImage_MTOMEnable() throws Exception {
+ TestLogger.logger.debug("----------------------------------");
+ TestLogger.logger.debug("test: " + getName());
+
+ String imageResourceDir = IMAGE_DIR;
+
+ //Create a DataSource from an image
+ File file = new File(imageResourceDir+File.separator+"test.jpg");
+ ImageInputStream fiis = new FileImageInputStream(file);
+ Image image = ImageIO.read(fiis);
+ DataSource imageDS = new DataSourceImpl("image/jpeg","test.jpg",image);
+
+ //Create a DataHandler with the String DataSource object
+ DataHandler dataHandler = new DataHandler(imageDS);
+
+ //Store the data handler in ImageDepot bean
+ ImageDepot imageDepot = new ObjectFactory().createImageDepot();
+ imageDepot.setImageData(dataHandler);
+
+ SendImage request = new ObjectFactory().createSendImage();
+ request.setInput(imageDepot);
+
+ //Create the necessary JAXBContext
+ JAXBContext jbc = JAXBContext.newInstance("org.test.mtom");
+
+ MTOMFeature mtom21 = new MTOMFeature();
+
+ // Create the JAX-WS client needed to send the request
+ Service service = Service.create(QNAME_SERVICE);
+ service.addPort(QNAME_PORT, SOAPBinding.SOAP11HTTP_BINDING, URL_ENDPOINT_MTOMENABLE);
+ Dispatch<Object> dispatch = service.createDispatch(QNAME_PORT, jbc, Mode.PAYLOAD, mtom21);
+
+ List cids = null;
+ SendImageResponse response = null;
+ try {
+ JAXBAttachmentUnmarshallerMonitor.setMonitoring(true);
+ response = (SendImageResponse) dispatch.invoke(request);
+
+ // The cids are collected in the monitor. We will check
+ // this to make sure the response mtom is not inlined
+ cids = JAXBAttachmentUnmarshallerMonitor.getBlobCIDs();
+ } finally {
+ JAXBAttachmentUnmarshallerMonitor.setMonitoring(false);
+ }
+
+
+ assertNotNull(response);
+ assertNotNull(response.getOutput().getImageData());
+
+
+ int numCIDs = (cids == null) ? 0 : cids.size();
+ assertTrue("Expected one attachment but there were:" + numCIDs, numCIDs == 1);
+ }
+
+ /*
+ * Enable attachment Optimization but call an endpoint with @MTOM
+ */
+ public void testSendImage_MTOMDefault() throws Exception {
+ TestLogger.logger.debug("----------------------------------");
+ TestLogger.logger.debug("test: " + getName());
+
+ String imageResourceDir = IMAGE_DIR;
+
+ //Create a DataSource from an image
+ File file = new File(imageResourceDir+File.separator+"test.jpg");
+ ImageInputStream fiis = new FileImageInputStream(file);
+ Image image = ImageIO.read(fiis);
+ DataSource imageDS = new DataSourceImpl("image/jpeg","test.jpg",image);
+
+ //Create a DataHandler with the String DataSource object
+ DataHandler dataHandler = new DataHandler(imageDS);
+
+ //Store the data handler in ImageDepot bean
+ ImageDepot imageDepot = new ObjectFactory().createImageDepot();
+ imageDepot.setImageData(dataHandler);
+
+ SendImage request = new ObjectFactory().createSendImage();
+ request.setInput(imageDepot);
+
+ //Create the necessary JAXBContext
+ JAXBContext jbc = JAXBContext.newInstance("org.test.mtom");
+
+ MTOMFeature mtom21 = new MTOMFeature();
+
+ // Create the JAX-WS client needed to send the request
+ Service service = Service.create(QNAME_SERVICE);
+ service.addPort(QNAME_PORT, SOAPBinding.SOAP11HTTP_BINDING, URL_ENDPOINT_MTOMDEFAULT);
+ Dispatch<Object> dispatch = service.createDispatch(QNAME_PORT, jbc, Mode.PAYLOAD, mtom21);
+
+ List cids = null;
+ SendImageResponse response = null;
+ try {
+ JAXBAttachmentUnmarshallerMonitor.setMonitoring(true);
+ response = (SendImageResponse) dispatch.invoke(request);
+
+ // The cids are collected in the monitor. We will check
+ // this to make sure the response mtom is not inlined
+ cids = JAXBAttachmentUnmarshallerMonitor.getBlobCIDs();
+ } finally {
+ JAXBAttachmentUnmarshallerMonitor.setMonitoring(false);
+ }
+
+
+ assertNotNull(response);
+ assertNotNull(response.getOutput().getImageData());
+
+
+ int numCIDs = (cids == null) ? 0 : cids.size();
+ assertTrue("Expected one attachment but there were:" + numCIDs, numCIDs == 1);
}
+
/*
* Enable attachment optimization using the SOAP11 binding
* property for MTOM.
Modified: webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSample.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSample.java?rev=641889&r1=641888&r2=641889&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSample.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSample.java Thu Mar 27 09:54:49 2008
@@ -29,7 +29,7 @@
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;
-@WebService(name = "MtomSample",
+@WebService(name = "MtomSample",
targetNamespace = "http://org/apache/axis2/jaxws/sample/mtom",
wsdlLocation = "META-INF/ImageDepot.wsdl")
public interface MtomSample {
Added: webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleMTOMDefaultService.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleMTOMDefaultService.java?rev=641889&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleMTOMDefaultService.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleMTOMDefaultService.java Thu Mar 27 09:54:49 2008
@@ -0,0 +1,87 @@
+/*
+ * 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.jaxws.sample.mtom;
+
+
+import org.apache.axis2.datasource.jaxb.JAXBAttachmentUnmarshallerMonitor;
+import org.apache.axis2.jaxws.TestLogger;
+import org.apache.axis2.jaxws.provider.DataSourceImpl;
+import org.test.mtom.ImageDepot;
+import org.test.mtom.ObjectFactory;
+
+import javax.activation.DataHandler;
+import javax.activation.DataSource;
+import javax.imageio.ImageIO;
+import javax.jws.WebService;
+import javax.xml.ws.BindingType;
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.soap.MTOM;
+import javax.xml.ws.soap.SOAPBinding;
+import java.awt.*;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+
+/**
+ * Endpoint with default MTOM annotation
+ */
+@WebService(serviceName="MtomSampleService",
+ endpointInterface="org.apache.axis2.jaxws.sample.mtom.MtomSample")
+//@BindingType(SOAPBinding.SOAP11HTTP_MTOM_BINDING)
+@MTOM
+public class MtomSampleMTOMDefaultService implements MtomSample {
+
+ public ImageDepot sendImage(ImageDepot input) {
+ TestLogger.logger.debug("MtomSampleMTOMDefaultService [new sendImage request received]");
+ DataHandler data = input.getImageData();
+
+ TestLogger.logger.debug("[contentType] " + data.getContentType());
+ ImageDepot output = (new ObjectFactory()).createImageDepot();
+ Image image = null;
+
+ resetAttachmentUnmarshallingMonitor();
+ try {
+ InputStream stream = (InputStream) data.getContent();
+ image = ImageIO.read(stream);
+
+ DataSource imageDS = new DataSourceImpl("image/jpeg", "test.jpg", image);
+ DataHandler handler = new DataHandler(imageDS);
+ output.setImageData(handler);
+ }
+ catch (Exception e) {
+ throw new WebServiceException(e);
+ }
+ return output;
+ }
+
+ public ImageDepot sendText(byte[] input) {
+ TestLogger.logger.debug("[new sendText request received]");
+ return null;
+ }
+
+ /**
+ * Reset the monitor so that we can determine if an
+ * attachment is unmarshalled on the response.
+ */
+ private void resetAttachmentUnmarshallingMonitor() {
+ if (JAXBAttachmentUnmarshallerMonitor.isMonitoring()) {
+ JAXBAttachmentUnmarshallerMonitor.clear();
+ }
+ }
+}
Added: webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleMTOMDisable2Service.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleMTOMDisable2Service.java?rev=641889&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleMTOMDisable2Service.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleMTOMDisable2Service.java Thu Mar 27 09:54:49 2008
@@ -0,0 +1,88 @@
+/*
+ * 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.jaxws.sample.mtom;
+
+
+import org.apache.axis2.datasource.jaxb.JAXBAttachmentUnmarshallerMonitor;
+import org.apache.axis2.jaxws.TestLogger;
+import org.apache.axis2.jaxws.provider.DataSourceImpl;
+import org.test.mtom.ImageDepot;
+import org.test.mtom.ObjectFactory;
+
+import javax.activation.DataHandler;
+import javax.activation.DataSource;
+import javax.imageio.ImageIO;
+import javax.jws.WebService;
+import javax.xml.ws.BindingType;
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.soap.MTOM;
+import javax.xml.ws.soap.SOAPBinding;
+import java.awt.*;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+
+/**
+ * The binding indicates MTOM, but @MTOM indicates enabled=false
+ * Thus no MTOM.
+ */
+@WebService(serviceName="MtomSampleService",
+ endpointInterface="org.apache.axis2.jaxws.sample.mtom.MtomSample")
+@BindingType(SOAPBinding.SOAP11HTTP_MTOM_BINDING)
+@MTOM(enabled=false)
+public class MtomSampleMTOMDisable2Service implements MtomSample {
+
+ public ImageDepot sendImage(ImageDepot input) {
+ TestLogger.logger.debug("MtomSampleMTOMDisable2Service [new sendImage request received]");
+ DataHandler data = input.getImageData();
+
+ TestLogger.logger.debug("[contentType] " + data.getContentType());
+ ImageDepot output = (new ObjectFactory()).createImageDepot();
+ Image image = null;
+
+ resetAttachmentUnmarshallingMonitor();
+ try {
+ InputStream stream = (InputStream) data.getContent();
+ image = ImageIO.read(stream);
+
+ DataSource imageDS = new DataSourceImpl("image/jpeg", "test.jpg", image);
+ DataHandler handler = new DataHandler(imageDS);
+ output.setImageData(handler);
+ }
+ catch (Exception e) {
+ throw new WebServiceException(e);
+ }
+ return output;
+ }
+
+ public ImageDepot sendText(byte[] input) {
+ TestLogger.logger.debug("[new sendText request received]");
+ return null;
+ }
+
+ /**
+ * Reset the monitor so that we can determine if an
+ * attachment is unmarshalled on the response.
+ */
+ private void resetAttachmentUnmarshallingMonitor() {
+ if (JAXBAttachmentUnmarshallerMonitor.isMonitoring()) {
+ JAXBAttachmentUnmarshallerMonitor.clear();
+ }
+ }
+}
Added: webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleMTOMDisableService.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleMTOMDisableService.java?rev=641889&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleMTOMDisableService.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleMTOMDisableService.java Thu Mar 27 09:54:49 2008
@@ -0,0 +1,88 @@
+/*
+ * 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.jaxws.sample.mtom;
+
+
+import org.apache.axis2.datasource.jaxb.JAXBAttachmentUnmarshallerMonitor;
+import org.apache.axis2.jaxws.TestLogger;
+import org.apache.axis2.jaxws.provider.DataSourceImpl;
+import org.test.mtom.ImageDepot;
+import org.test.mtom.ObjectFactory;
+
+import javax.activation.DataHandler;
+import javax.activation.DataSource;
+import javax.imageio.ImageIO;
+import javax.jws.WebService;
+import javax.xml.ws.BindingType;
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.soap.MTOM;
+import javax.xml.ws.soap.SOAPBinding;
+import java.awt.*;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+
+
+/**
+ * Endpoint with MTOM disabled
+ */
+@WebService(serviceName="MtomSampleService",
+ endpointInterface="org.apache.axis2.jaxws.sample.mtom.MtomSample")
+//@BindingType(SOAPBinding.SOAP11HTTP_MTOM_BINDING)
+@MTOM(enabled=false)
+public class MtomSampleMTOMDisableService implements MtomSample {
+
+ public ImageDepot sendImage(ImageDepot input) {
+ TestLogger.logger.debug("MtomSampleMTOMDisableService [new sendImage request received]");
+ DataHandler data = input.getImageData();
+
+ TestLogger.logger.debug("[contentType] " + data.getContentType());
+ ImageDepot output = (new ObjectFactory()).createImageDepot();
+ Image image = null;
+
+ resetAttachmentUnmarshallingMonitor();
+ try {
+ InputStream stream = (InputStream) data.getContent();
+ image = ImageIO.read(stream);
+
+ DataSource imageDS = new DataSourceImpl("image/jpeg", "test.jpg", image);
+ DataHandler handler = new DataHandler(imageDS);
+ output.setImageData(handler);
+ }
+ catch (Exception e) {
+ throw new WebServiceException(e);
+ }
+ return output;
+ }
+
+ public ImageDepot sendText(byte[] input) {
+ TestLogger.logger.debug("[new sendText request received]");
+ return null;
+ }
+
+ /**
+ * Reset the monitor so that we can determine if an
+ * attachment is unmarshalled on the response.
+ */
+ private void resetAttachmentUnmarshallingMonitor() {
+ if (JAXBAttachmentUnmarshallerMonitor.isMonitoring()) {
+ JAXBAttachmentUnmarshallerMonitor.clear();
+ }
+ }
+}
Added: webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleMTOMEnableService.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleMTOMEnableService.java?rev=641889&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleMTOMEnableService.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleMTOMEnableService.java Thu Mar 27 09:54:49 2008
@@ -0,0 +1,87 @@
+/*
+ * 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.jaxws.sample.mtom;
+
+
+import org.apache.axis2.datasource.jaxb.JAXBAttachmentUnmarshallerMonitor;
+import org.apache.axis2.jaxws.TestLogger;
+import org.apache.axis2.jaxws.provider.DataSourceImpl;
+import org.test.mtom.ImageDepot;
+import org.test.mtom.ObjectFactory;
+
+import javax.activation.DataHandler;
+import javax.activation.DataSource;
+import javax.imageio.ImageIO;
+import javax.jws.WebService;
+import javax.xml.ws.BindingType;
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.soap.MTOM;
+import javax.xml.ws.soap.SOAPBinding;
+import java.awt.*;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+
+/**
+ * Endpoint with MTOM enabled
+ */
+@WebService(serviceName="MtomSampleService",
+ endpointInterface="org.apache.axis2.jaxws.sample.mtom.MtomSample")
+//@BindingType(SOAPBinding.SOAP11HTTP_MTOM_BINDING)
+@MTOM(enabled=true)
+public class MtomSampleMTOMEnableService implements MtomSample {
+
+ public ImageDepot sendImage(ImageDepot input) {
+ TestLogger.logger.debug("MtomSampleMTOMEnableService [new sendImage request received]");
+ DataHandler data = input.getImageData();
+
+ TestLogger.logger.debug("[contentType] " + data.getContentType());
+ ImageDepot output = (new ObjectFactory()).createImageDepot();
+ Image image = null;
+
+ resetAttachmentUnmarshallingMonitor();
+ try {
+ InputStream stream = (InputStream) data.getContent();
+ image = ImageIO.read(stream);
+
+ DataSource imageDS = new DataSourceImpl("image/jpeg", "test.jpg", image);
+ DataHandler handler = new DataHandler(imageDS);
+ output.setImageData(handler);
+ }
+ catch (Exception e) {
+ throw new WebServiceException(e);
+ }
+ return output;
+ }
+
+ public ImageDepot sendText(byte[] input) {
+ TestLogger.logger.debug("[new sendText request received]");
+ return null;
+ }
+
+ /**
+ * Reset the monitor so that we can determine if an
+ * attachment is unmarshalled on the response.
+ */
+ private void resetAttachmentUnmarshallingMonitor() {
+ if (JAXBAttachmentUnmarshallerMonitor.isMonitoring()) {
+ JAXBAttachmentUnmarshallerMonitor.clear();
+ }
+ }
+}
Modified: webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleService.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleService.java?rev=641889&r1=641888&r2=641889&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleService.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleService.java Thu Mar 27 09:54:49 2008
@@ -20,6 +20,7 @@
package org.apache.axis2.jaxws.sample.mtom;
+import org.apache.axis2.datasource.jaxb.JAXBAttachmentUnmarshallerMonitor;
import org.apache.axis2.jaxws.TestLogger;
import org.apache.axis2.jaxws.provider.DataSourceImpl;
import org.test.mtom.ImageDepot;
@@ -31,23 +32,26 @@
import javax.jws.WebService;
import javax.xml.ws.BindingType;
import javax.xml.ws.WebServiceException;
+import javax.xml.ws.soap.MTOM;
import javax.xml.ws.soap.SOAPBinding;
import java.awt.*;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
@WebService(serviceName="MtomSampleService",
- endpointInterface="org.apache.axis2.jaxws.sample.mtom.MtomSample")
+ endpointInterface="org.apache.axis2.jaxws.sample.mtom.MtomSample")
@BindingType(SOAPBinding.SOAP11HTTP_MTOM_BINDING)
public class MtomSampleService implements MtomSample {
public ImageDepot sendImage(ImageDepot input) {
- TestLogger.logger.debug("[new sendImage request received]");
+ TestLogger.logger.debug("MtomSampleService [new sendImage request received]");
DataHandler data = input.getImageData();
TestLogger.logger.debug("[contentType] " + data.getContentType());
ImageDepot output = (new ObjectFactory()).createImageDepot();
Image image = null;
+
+ resetAttachmentUnmarshallingMonitor();
try {
InputStream stream = (InputStream) data.getContent();
image = ImageIO.read(stream);
@@ -67,4 +71,13 @@
return null;
}
+ /**
+ * Reset the monitor so that we can determine if an
+ * attachment is unmarshalled on the response.
+ */
+ private void resetAttachmentUnmarshallingMonitor() {
+ if (JAXBAttachmentUnmarshallerMonitor.isMonitoring()) {
+ JAXBAttachmentUnmarshallerMonitor.clear();
+ }
+ }
}
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/datasource/jaxb/JAXBAttachmentUnmarshaller.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/datasource/jaxb/JAXBAttachmentUnmarshaller.java?rev=641889&r1=641888&r2=641889&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/datasource/jaxb/JAXBAttachmentUnmarshaller.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/datasource/jaxb/JAXBAttachmentUnmarshaller.java Thu Mar 27 09:54:49 2008
@@ -156,7 +156,11 @@
}
// Get the attachment from the messagecontext using the blob cid
if (msgContext != null) {
- return msgContext.getAttachment(blobcid);
+ DataHandler dh = msgContext.getAttachment(blobcid);
+ if (dh != null) {
+ JAXBAttachmentUnmarshallerMonitor.addBlobCID(blobcid);
+ }
+ return dh;
}
return null;
}
Added: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/datasource/jaxb/JAXBAttachmentUnmarshallerMonitor.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/datasource/jaxb/JAXBAttachmentUnmarshallerMonitor.java?rev=641889&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/datasource/jaxb/JAXBAttachmentUnmarshallerMonitor.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/datasource/jaxb/JAXBAttachmentUnmarshallerMonitor.java Thu Mar 27 09:54:49 2008
@@ -0,0 +1,101 @@
+/*
+ * 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.datasource.jaxb;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * The monitor is used by the tests to ensure
+ * that the JAXBAttachmentUnmarshaller is used and is functioning correctly.
+ * In normal usage, monitoring is off.
+ */
+public class JAXBAttachmentUnmarshallerMonitor {
+
+ private static final Log log = LogFactory.getLog(JAXBAttachmentUnmarshallerMonitor.class);
+ private static boolean monitoring = false;
+ private static ArrayList blobCIDs = new ArrayList();
+ private static String semifore = "JAXBAttachmentUnmarshallerMonitor";
+
+ /**
+ * Intentionally private. All methods are static.
+ */
+ private JAXBAttachmentUnmarshallerMonitor() {
+
+ }
+
+ /**
+ * @return true if monitoring
+ */
+ public static boolean isMonitoring() {
+ return monitoring;
+ }
+
+ /**
+ * Set monitoring
+ * @param monitoring boolean
+ */
+ public static void setMonitoring(boolean monitoring) {
+ JAXBAttachmentUnmarshallerMonitor.monitoring = monitoring;
+ }
+
+ /**
+ * Clear the number of creates and failed creates
+ */
+ public static void clear() {
+ synchronized(semifore) {
+ blobCIDs.clear();
+ }
+ }
+
+ /**
+ * @return number of JAXBCustomBuilders created
+ */
+ public static List getBlobCIDs() {
+ synchronized(semifore) {
+ if (log.isDebugEnabled()) {
+ log.debug("NUM BLOB CIDS =" + blobCIDs.size());
+ }
+ return new ArrayList(blobCIDs);
+ }
+
+ }
+
+ /**
+ * Increase number of total builders
+ */
+ public static void addBlobCID(String blobCID) {
+ if (log.isDebugEnabled()) {
+ log.debug("call ADD BLOB CID =" + blobCID);
+ }
+ if (isMonitoring()) {
+ synchronized(semifore) {
+ if (log.isDebugEnabled()) {
+ log.debug("ADD BLOB CID =" + blobCID);
+ }
+ blobCIDs.add(blobCID);
+ }
+ }
+ }
+
+}
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/attachments/JAXBAttachmentUnmarshaller.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/attachments/JAXBAttachmentUnmarshaller.java?rev=641889&r1=641888&r2=641889&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/attachments/JAXBAttachmentUnmarshaller.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/attachments/JAXBAttachmentUnmarshaller.java Thu Mar 27 09:54:49 2008
@@ -19,6 +19,7 @@
package org.apache.axis2.jaxws.message.attachments;
+import org.apache.axis2.datasource.jaxb.JAXBAttachmentUnmarshallerMonitor;
import org.apache.axis2.jaxws.message.Message;
import javax.activation.DataHandler;
@@ -42,7 +43,11 @@
// Get the attachment from the message using the cid
if (message != null) {
- return message.getDataHandler(cid);
+ DataHandler dh = message.getDataHandler(cid);
+ if (dh != null) {
+ JAXBAttachmentUnmarshallerMonitor.addBlobCID(cid);
+ }
+ return dh;
}
return null;
}
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java?rev=641889&r1=641888&r2=641889&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java Thu Mar 27 09:54:49 2008
@@ -216,12 +216,10 @@
mc.setOperationName(mc.getAxisMessageContext().getAxisOperation().getName());
mc.setOperationDescription(Utils.getOperationDescription(mc));
endpointDesc = mc.getEndpointDescription();
- String bindingType = endpointDesc.getBindingType();
- if (bindingType != null) {
- if (BindingUtils.isMTOMBinding(bindingType)) {
- mc.getMessage().setMTOMEnabled(true);
- }
+ if (endpointDesc.isMTOMEnabled()) {
+ mc.getMessage().setMTOMEnabled(true);
}
+
//Set SOAP Operation Related properties in SOAPMessageContext.
ContextUtils.addWSDLProperties(mc);
@@ -309,19 +307,22 @@
// Enable MTOM for the response if necessary.
// (MTOM is not enabled it this operation has SWA parameters
-
- if (m.isDoingSWA()) {
- EndpointDescription epDesc = request.getEndpointDescription();
-
- String bindingType = epDesc.getBindingType();
- if (bindingType != null) {
- if (BindingUtils.isMTOMBinding(bindingType)) {
- if (log.isDebugEnabled()) {
- log.debug("MTOM enabled for the response message.");
- }
- m.setMTOMEnabled(true);
- }
+
+ EndpointDescription epDesc = request.getEndpointDescription();
+ String bindingType = epDesc.getBindingType();
+ boolean isMTOMBinding = epDesc.isMTOMEnabled();
+ boolean isDoingSWA = m.isDoingSWA();
+ if (log.isDebugEnabled()) {
+ log.debug("EndpointDescription = " + epDesc.toString());
+ log.debug("BindingType = " + bindingType);
+ log.debug("isMTOMBinding = " + isMTOMBinding);
+ log.debug("isDoingSWA = " + isDoingSWA);
+ }
+ if (!m.isDoingSWA() && isMTOMBinding) {
+ if (log.isDebugEnabled()) {
+ log.debug("MTOM enabled for the response message.");
}
+ m.setMTOMEnabled(true);
}
return response;
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/ProviderDispatcher.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/ProviderDispatcher.java?rev=641889&r1=641888&r2=641889&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/ProviderDispatcher.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/ProviderDispatcher.java Thu Mar 27 09:54:49 2008
@@ -259,12 +259,9 @@
Message message = request.getMessage();
if (message != null) {
- // Enable MTOM if indicated by the binding
- String bindingType = endpointDesc.getBindingType();
- if (bindingType != null) {
- if (BindingUtils.isMTOMBinding(bindingType)) {
- message.setMTOMEnabled(true);
- }
+ // Enable MTOM if indicated
+ if (endpointDesc.isMTOMEnabled()) {
+ message.setMTOMEnabled(true);
}
// Save off the protocol info so we can use it when creating the response message.
@@ -340,13 +337,11 @@
MessageContext response = null;
try {
- // Enable MTOM if indicated by the binding
- String bindingType = endpointDesc.getBindingType();
- if (bindingType != null) {
- if (BindingUtils.isMTOMBinding(bindingType)) {
- m.setMTOMEnabled(true);
- }
+ // Enable MTOM if indicated
+ if (endpointDesc.isMTOMEnabled()) {
+ m.setMTOMEnabled(true);
}
+
response = MessageContextUtils.createResponseMessageContext(request);
response.setMessage(m);
@@ -619,12 +614,8 @@
mc.setOperationName(mc.getAxisMessageContext().getAxisOperation().getName());
endpointDesc = mc.getEndpointDescription();
- String bindingType = endpointDesc.getBindingType();
-
- if (bindingType != null) {
- if (BindingUtils.isMTOMBinding(bindingType)) {
- mc.getMessage().setMTOMEnabled(true);
- }
+ if (endpointDesc.isMTOMEnabled()) {
+ mc.getMessage().setMTOMEnabled(true);
}
//Set SOAP Operation Related properties in SOAPMessageContext.
Modified: webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/EndpointDescription.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/EndpointDescription.java?rev=641889&r1=641888&r2=641889&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/EndpointDescription.java (original)
+++ webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/EndpointDescription.java Thu Mar 27 09:54:49 2008
@@ -160,6 +160,10 @@
* Signals whether or not MTOM has been turned on for the endpoint
* based on the annotation configuration.
*
+ * Both the @MTOM and @BindingType are inspected. The @MTOM
+ * annotation is inspected first. If the @MTOM
+ * annotation is not present, then the @BindingType is inspected.
+ *
* @return a boolean value
*/
public boolean isMTOMEnabled();
Modified: webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointDescriptionImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointDescriptionImpl.java?rev=641889&r1=641888&r2=641889&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointDescriptionImpl.java (original)
+++ webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointDescriptionImpl.java Thu Mar 27 09:54:49 2008
@@ -70,6 +70,8 @@
import javax.xml.ws.ServiceMode;
import javax.xml.ws.WebServiceProvider;
import javax.xml.ws.handler.PortInfo;
+import javax.xml.ws.soap.MTOM;
+import javax.xml.ws.soap.MTOMFeature;
import javax.xml.ws.soap.SOAPBinding;
import java.io.InputStream;
import java.lang.annotation.Annotation;
@@ -183,6 +185,9 @@
private ServerFramework framework = new ServerFramework();
private Map<String, Object> properties;
+
+ // Remembers if this endpoint description is MTOMEnabled
+ private Boolean isMTOMEnabledCache = null;
/**
@@ -1503,15 +1508,34 @@
* @see org.apache.axis2.jaxws.description.EndpointDescription#isMTOMEnabled()
*/
public boolean isMTOMEnabled() {
- if (axisService != null) {
- // We should cache this call here so we don't have to make
- // it on every pass through.
- Parameter enableMTOM = axisService.getParameter(Configuration.ENABLE_MTOM);
- if (enableMTOM != null) {
- return (Boolean) enableMTOM.getValue();
- }
+ if (isMTOMEnabledCache != null) {
+ return isMTOMEnabledCache.booleanValue();
+ }
+
+ // isMTOMEnabled is a combination of the @BindingType and the @MTOM setting.
+ MTOM mtomAnnotation =
+ (MTOM) getAnnoFeature(MTOMFeature.ID);
+
+ // If the @MTOM annotation is set, it wins
+ if (mtomAnnotation != null) {
+ isMTOMEnabledCache = Boolean.valueOf(mtomAnnotation.enabled());
+ return isMTOMEnabledCache.booleanValue();
}
+ // Else look at the bindingType
+ String bindingType = getBindingType();
+ isMTOMEnabledCache = Boolean.valueOf(isMTOMBinding(bindingType));
+ return isMTOMEnabledCache.booleanValue();
+ }
+
+ private static boolean isMTOMBinding(String url) {
+ if (url != null &&
+ (url.equals(SOAPBinding.SOAP11HTTP_MTOM_BINDING) ||
+ url.equals(SOAPBinding.SOAP12HTTP_MTOM_BINDING) ||
+ url.equals(MDQConstants.SOAP11JMS_MTOM_BINDING) ||
+ url.equals(MDQConstants.SOAP12JMS_MTOM_BINDING))) {
+ return true;
+ }
return false;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org