Index: examples/simple-webservice/src/main/java/org/superbiz/attachment/AttachmentImpl.java =================================================================== --- examples/simple-webservice/src/main/java/org/superbiz/attachment/AttachmentImpl.java (revision 0) +++ examples/simple-webservice/src/main/java/org/superbiz/attachment/AttachmentImpl.java (revision 0) @@ -0,0 +1,80 @@ +/** + * 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.superbiz.attachment; + +import java.io.IOException; +import java.io.InputStream; + +import javax.activation.DataHandler; +import javax.activation.DataSource; +import javax.ejb.Stateless; +import javax.jws.WebService; +import javax.xml.ws.BindingType; +import javax.xml.ws.soap.SOAPBinding; + +/** + * This is an EJB 3 style pojo stateless session bean + * Every stateless session bean implementation must be annotated + * using the annotation @Stateless + * This EJB has a single interface: {@link AttachmentWs} a webservice interface. + */ +@Stateless +@WebService( + portName = "AttachmentPort", + serviceName = "AttachmentWsService", + targetNamespace = "http://superbiz.org/wsdl", + endpointInterface = "org.superbiz.attachment.AttachmentWs") +@BindingType(value = SOAPBinding.SOAP12HTTP_MTOM_BINDING) +public class AttachmentImpl implements AttachmentWs { + + public String stringFromBytes(byte[] data) { + return new String(data); + + } + + public String stringFromDataSource(DataSource source) { + + try { + InputStream inStr = source.getInputStream(); + int size = inStr.available(); + byte[] data = new byte[size]; + inStr.read(data); + inStr.close(); + return new String(data); + + } catch (IOException e) { + e.printStackTrace(); + + } + return ""; + + } + + public String stringFromDataHandler(DataHandler handler) { + + try { + return (String) handler.getContent(); + + } catch (IOException e) { + e.printStackTrace(); + + } + return ""; + + } + +} Index: examples/simple-webservice/src/main/java/org/superbiz/attachment/AttachmentWs.java =================================================================== --- examples/simple-webservice/src/main/java/org/superbiz/attachment/AttachmentWs.java (revision 0) +++ examples/simple-webservice/src/main/java/org/superbiz/attachment/AttachmentWs.java (revision 0) @@ -0,0 +1,35 @@ +/** + * 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.superbiz.attachment; + +import javax.activation.DataHandler; +import javax.jws.WebService; + +/** + * This is an EJB 3 webservice interface to send attachments throughout SAOP. + */ +@WebService(targetNamespace="http://superbiz.org/wsdl" ) +public interface AttachmentWs { + + public String stringFromBytes(byte[] data); + + // Not working at the moment with SUN saaj provider and CXF + //public String stringFromDataSource(DataSource source); + + public String stringFromDataHandler(DataHandler handler); + +} Index: examples/simple-webservice/src/test/java/org/superbiz/calculator/AttachmentTest.java =================================================================== --- examples/simple-webservice/src/test/java/org/superbiz/calculator/AttachmentTest.java (revision 0) +++ examples/simple-webservice/src/test/java/org/superbiz/calculator/AttachmentTest.java (revision 0) @@ -0,0 +1,89 @@ +/** + * 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.superbiz.calculator; + +import java.net.URL; +import java.util.Properties; + +import javax.activation.DataHandler; +import javax.activation.DataSource; +import javax.mail.util.ByteArrayDataSource; +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.xml.namespace.QName; +import javax.xml.ws.BindingProvider; +import javax.xml.ws.Service; +import javax.xml.ws.soap.SOAPBinding; + +import junit.framework.TestCase; + +import org.superbiz.attachment.AttachmentWs; + +public class AttachmentTest extends TestCase { + + //START SNIPPET: setup + private InitialContext initialContext; + + protected void setUp() throws Exception { + + Properties properties = new Properties(); + properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory"); + properties.setProperty("openejb.embedded.remotable", "true"); + + initialContext = new InitialContext(properties); + } + //END SNIPPET: setup + + /** + * Create a webservice client using wsdl url + * + * @throws Exception + */ + //START SNIPPET: webservice + public void testAttachmentViaWsInterface() throws Exception { + Service service = Service.create( + new URL("http://127.0.0.1:4204/AttachmentImpl?wsdl"), + new QName("http://superbiz.org/wsdl", "AttachmentWsService")); + assertNotNull(service); + + AttachmentWs ws = service.getPort(AttachmentWs.class); + + // retrieve the SOAPBinding + SOAPBinding binding = (SOAPBinding)((BindingProvider)ws).getBinding(); + binding.setMTOMEnabled(true); + + String request = "tsztelak@gmail.com"; + + // Byte array + String response = ws.stringFromBytes(request.getBytes()); + assertEquals(request, response); + + // Data Source + DataSource source = new ByteArrayDataSource(request.getBytes(), "text/plain; charset=UTF-8"); + + // not yet supported ! +// response = ws.stringFromDataSource(source); +// assertEquals(request, response); + + // Data Handler + response = ws.stringFromDataHandler(new DataHandler(source)); + assertEquals(request, response); + + } + //END SNIPPET: webservice + +} Index: examples/simple-webservice/src/test/java/org/superbiz/calculator/CalculatorTest.java =================================================================== --- examples/simple-webservice/src/test/java/org/superbiz/calculator/CalculatorTest.java (revision 708520) +++ examples/simple-webservice/src/test/java/org/superbiz/calculator/CalculatorTest.java (working copy) @@ -20,6 +20,7 @@ import javax.naming.Context; import javax.naming.InitialContext; +import javax.xml.namespace.QName; import javax.xml.ws.Service; import java.net.URL; import java.util.Properties; @@ -45,7 +46,9 @@ */ //START SNIPPET: webservice public void testCalculatorViaWsInterface() throws Exception { - Service calcService = Service.create(new URL("http://127.0.0.1:4204/CalculatorImpl?wsdl"), null); + Service calcService = Service.create( + new URL("http://127.0.0.1:4204/CalculatorImpl?wsdl"), + new QName("http://superbiz.org/wsdl", "CalculatorWsService")); assertNotNull(calcService); CalculatorWs calc = calcService.getPort(CalculatorWs.class);