whitlock 2002/10/29 03:13:10 Modified: java/test/proposals/mime MimeTest.java DeploymentDescriptor.xml Mime.wsdl MimeImpl.java Mime.java WSIFOperation_ApacheAxis.java Added: java/test/proposals/mime WSIFFrame.java axis.jpg Log: Fixes for images Revision Changes Path 1.6 +47 -35 xml-axis-wsif/java/test/proposals/mime/MimeTest.java Index: MimeTest.java =================================================================== RCS file: /home/cvs/xml-axis-wsif/java/test/proposals/mime/MimeTest.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- MimeTest.java 23 Oct 2002 15:23:56 -0000 1.5 +++ MimeTest.java 29 Oct 2002 11:13:10 -0000 1.6 @@ -57,6 +57,9 @@ package proposals.mime; +import java.awt.Canvas; +import java.awt.Frame; +import java.awt.Graphics; import java.awt.Image; import java.io.BufferedInputStream; import java.io.File; @@ -69,6 +72,7 @@ import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.internet.MimeMultipart; +import javax.swing.ImageIcon; import javax.xml.namespace.QName; import javax.xml.transform.Source; import junit.framework.Test; @@ -100,13 +104,16 @@ public class MimeTest extends TestCase { String wsdlLocation = TestUtilities.getWsdlPath("java\\test\\proposals\\mime") + "Mime.wsdl"; + String imageLocation = + TestUtilities.getWsdlPath("java\\test\\proposals\\mime") + "axis.jpg"; + private final static String flatfileLocation = + TestUtilities.getWsdlPath("java\\test\\proposals\\mime") + "test.txt"; private final static String SEND_DH = "SEND-DH"; private final static String RECEIVE_DH = "RECEIVE-DH"; private final static String SEND_PLAINTEXT = "SEND-PLAINTEXT"; private final static String RECEIVE_PLAINTEXT = "RECEIVE-PLAINTEXT"; - private final static String SEND_IMAGE = "SEND-IMAGE"; - private final static String RECEIVE_IMAGE = "RECEIVE-IMAGE"; + private final static String BOUNCE_IMAGE = "BOUNCE-IMAGE"; private final static String SEND_SOURCE = "SEND-SOURCE"; private final static String RECEIVE_SOURCE = "RECEIVE-SOURCE"; private final static String SEND_MIMEMULTIPART = "SEND-MIMEMULTIPART"; @@ -116,11 +123,6 @@ { "The owl and the pussy cat went to sea in a beautiful pea-green boat,", "They took some honey and plenty of money wrapped up in a five pound note" }; - private final static String flatfilename = - TestUtilities.getWsdlPath("java\\test\\proposals\\mime") + "test.txt"; - private final static String imagefilename = - TestUtilities.getWsdlPath("java\\test\\proposals\\mime") + "test.img"; - private final boolean SYNC = true; private final boolean ASYNC = false; @@ -158,13 +160,9 @@ // doit("SOAPPort", RECEIVE_PLAINTEXT, SYNC); // } // -// public void testAxisSendImageSync() { -// doit("SOAPPort", SEND_IMAGE, SYNC); -// } -// -// public void testAxisReceiveImageSync() { -// doit("SOAPPort", RECEIVE_IMAGE, SYNC); -// } + public void testAxisBounceImageSync() { + doit("SOAPPort", BOUNCE_IMAGE, SYNC); + } // // public void testAxisSendSourceSync() { // doit("SOAPPort", SEND_SOURCE, SYNC); @@ -241,10 +239,8 @@ send_plaintext(service,stub); else if (cmd.equals(RECEIVE_PLAINTEXT)) receive_plaintext(service,stub); - else if (cmd.equals(SEND_IMAGE)) - send_image(service,stub); - else if (cmd.equals(RECEIVE_IMAGE)) - receive_image(service,stub); + else if (cmd.equals(BOUNCE_IMAGE)) + bounce_image(service,stub); else if (cmd.equals(SEND_SOURCE)) send_source(service,stub); else if (cmd.equals(RECEIVE_SOURCE)) @@ -265,14 +261,16 @@ WSIFPluggableProviders.overrideDefaultProvider( "http://schemas.xmlsoap.org/wsdl/soap/", null); + + WSIFFrame.close(); } } private void send_dh(WSIFService service, Mime stub) throws Exception { - DataHandler dh = new DataHandler(new FileDataSource(flatfilename)); + DataHandler dh = new DataHandler(new FileDataSource(flatfileLocation)); String buff = stub.dataHandlerToString(dh); - compareFiles(flatfilename, buff); + compareFiles(flatfileLocation, buff); } private void receive_dh(WSIFService service, Mime stub) throws Exception { @@ -280,29 +278,42 @@ compareFiles(dh,rhyme[0]); } - private void send_plaintext(WSIFService service, Mime stub) throws Exception { - service.mapType( - new QName("http://proposals.mime/", "plaintext"), - String.class); + private void send_plaintext(WSIFService service, Mime stub) + throws Exception { + service.mapType( + new QName("http://proposals.mime/", "plaintext"), + String.class); String buff = stub.plainTextToString(rhyme[0]); assertTrue(rhyme[0].equals(buff)); } - private void receive_plaintext(WSIFService service, Mime stub) throws Exception { - service.mapType( - new QName("http://proposals.mime/", "plaintext"), - String.class); + private void receive_plaintext(WSIFService service, Mime stub) + throws Exception { + service.mapType( + new QName("http://proposals.mime/", "plaintext"), + String.class); String buff = stub.stringToPlainText(rhyme[1]); assertTrue(rhyme[1].equals(buff)); } - private void send_image(WSIFService service, Mime stub) throws Exception { - service.mapType( - new QName("http://proposals.mime/", "image"), - Image.class); -// Image i = new Image(imagefilename); -// String buff = stub.imageToString(i); -// assertTrue(rhyme[0].equals(buff)); + private void bounce_image(WSIFService service, Mime stub) throws Exception { + service.mapType( + new QName("http://proposals.mime/", "image"), + Image.class); + + // This blocks until the image is loaded. + Image im1 = new ImageIcon(imageLocation).getImage(); + WSIFFrame.display(im1,"Original image"); + + // Could use Image image2 = Toolkit.getDefaultToolkit().getImage("image.gif"); + // which loads the image in the background. + + Image im2 = stub.bounceImage(im1); + WSIFFrame.display(im2,"Bounced image"); + + System.out.println("Sleeping"); + Thread.sleep(10000); + System.out.println("Woken up"); } private void receive_image(WSIFService service, Mime stub) throws Exception { @@ -394,4 +405,5 @@ return false; return true; } + } 1.4 +1 -1 xml-axis-wsif/java/test/proposals/mime/DeploymentDescriptor.xml Index: DeploymentDescriptor.xml =================================================================== RCS file: /home/cvs/xml-axis-wsif/java/test/proposals/mime/DeploymentDescriptor.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- DeploymentDescriptor.xml 23 Oct 2002 15:23:56 -0000 1.3 +++ DeploymentDescriptor.xml 29 Oct 2002 11:13:10 -0000 1.4 @@ -2,7 +2,7 @@ id="http://proposals.mime/"> <isd:provider type="java" scope="Application" - methods="dataHandlerToString stringToDataHandler plainTextToString stringToPlainText"> + methods="dataHandlerToString stringToDataHandler plainTextToString stringToPlainText bounceImage"> <isd:java class="proposals.mime.MimeImpl" static="false"/> </isd:provider> 1.4 +35 -0 xml-axis-wsif/java/test/proposals/mime/Mime.wsdl Index: Mime.wsdl =================================================================== RCS file: /home/cvs/xml-axis-wsif/java/test/proposals/mime/Mime.wsdl,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- Mime.wsdl 23 Oct 2002 15:23:56 -0000 1.3 +++ Mime.wsdl 29 Oct 2002 11:13:10 -0000 1.4 @@ -18,6 +18,14 @@ <part name="plaintext" type="tns:plaintext"/> </message> + <message name="Image1Message"> + <part name="image1" type="tns:image"/> + </message> + + <message name="Image2Message"> + <part name="image2" type="tns:image"/> + </message> + <message name="StringMessage"> <part name="buff" type="xsd:string"/> </message> @@ -40,6 +48,10 @@ <input message="tns:StringMessage"/> <output message="tns:PlainTextMessage"/> </operation> + <operation name="bounceImage"> + <input message="tns:Image1Message"/> + <output message="tns:Image2Message"/> + </operation> </portType> <!-- binding declns --> @@ -111,6 +123,29 @@ <mime:multipartRelated> <mime:part> <mime:content part="plaintext" type="text/plain"/> + <soap:body use="encoded" + namespace="http://proposals.mime/" + encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> + </mime:part> + </mime:multipartRelated> + </output> + </operation> + <operation name="bounceImage"> + <soap:operation soapAction=""/> + <input> + <mime:multipartRelated> + <mime:part> + <mime:content part="image1" type="image/jpeg"/> + <soap:body use="encoded" + namespace="http://proposals.mime/" + encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> + </mime:part> + </mime:multipartRelated> + </input> + <output> + <mime:multipartRelated> + <mime:part> + <mime:content part="image2" type="image/jpeg"/> <soap:body use="encoded" namespace="http://proposals.mime/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> 1.5 +24 -1 xml-axis-wsif/java/test/proposals/mime/MimeImpl.java Index: MimeImpl.java =================================================================== RCS file: /home/cvs/xml-axis-wsif/java/test/proposals/mime/MimeImpl.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- MimeImpl.java 23 Oct 2002 15:23:56 -0000 1.4 +++ MimeImpl.java 29 Oct 2002 11:13:10 -0000 1.5 @@ -57,13 +57,15 @@ package proposals.mime; +import java.awt.Image; +import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; import javax.activation.DataHandler; -import javax.activation.DataSource; import javax.activation.FileDataSource; +import javax.swing.ImageIcon; /** * Mime service used by MimeTest @@ -117,6 +119,27 @@ } catch (IOException ioe) { ioe.printStackTrace(); return null; + } + } + + public DataHandler bounceImage(DataHandler ds) { + try { + InputStream is = ds.getInputStream(); + byte[] bBuff = new byte[is.available()]; + is.read(bBuff); + + Image im = new ImageIcon(bBuff).getImage(); + WSIFFrame.display(im, "Backend image"); + Thread.sleep(10000); + + FileDataSource fds = getTempFile(); + fds.getOutputStream().write(bBuff); + return new DataHandler(fds); + } catch (Exception e) { + e.printStackTrace(); + return null; + } finally { + WSIFFrame.close(); } } 1.4 +4 -4 xml-axis-wsif/java/test/proposals/mime/Mime.java Index: Mime.java =================================================================== RCS file: /home/cvs/xml-axis-wsif/java/test/proposals/mime/Mime.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- Mime.java 23 Oct 2002 15:23:56 -0000 1.3 +++ Mime.java 29 Oct 2002 11:13:10 -0000 1.4 @@ -57,8 +57,9 @@ package proposals.mime; +import java.awt.Image; + import javax.activation.DataHandler; -import javax.activation.DataSource; public interface Mime { public String dataHandlerToString(DataHandler dh); @@ -67,9 +68,8 @@ public String plainTextToString(String s); public String stringToPlainText(String buff); -// public String dataSourceToString(DataSource ds); -// public DataSource stringToDataSource(String buff); -// + public Image bounceImage(Image im); + // public String dataSourceToString(DataSource ds); // public DataSource stringToDataSource(String buff); // 1.5 +59 -30 xml-axis-wsif/java/test/proposals/mime/WSIFOperation_ApacheAxis.java Index: WSIFOperation_ApacheAxis.java =================================================================== RCS file: /home/cvs/xml-axis-wsif/java/test/proposals/mime/WSIFOperation_ApacheAxis.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- WSIFOperation_ApacheAxis.java 23 Oct 2002 15:23:56 -0000 1.4 +++ WSIFOperation_ApacheAxis.java 29 Oct 2002 11:13:10 -0000 1.5 @@ -58,6 +58,8 @@ package proposals.mime; import java.awt.Image; +import java.io.IOException; +import java.io.InputStream; import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; @@ -67,9 +69,9 @@ import java.util.Vector; import javax.activation.DataHandler; -import javax.activation.DataSource; import javax.jms.TextMessage; import javax.mail.internet.MimeMultipart; +import javax.swing.ImageIcon; import javax.wsdl.Definition; import javax.wsdl.Input; import javax.wsdl.Operation; @@ -83,10 +85,6 @@ import org.apache.axis.AxisFault; import org.apache.axis.Message; import org.apache.axis.MessageContext; -import org.apache.axis.attachments.ImageDataSource; -import org.apache.axis.attachments.MimeMultipartDataSource; -import org.apache.axis.attachments.PlainTextDataSource; -import org.apache.axis.attachments.SourceDataSource; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.client.Transport; @@ -573,35 +571,66 @@ throws WSIFException { Trc.entry(null, msg, name, value, type); - if (DataHandler.class.equals(type) - && AttachmentPart.class.isAssignableFrom(value.getClass())) { - AttachmentPart ap = (AttachmentPart) value; - try { + try { + if (DataHandler.class.equals(type) + && AttachmentPart.class.isAssignableFrom(value.getClass())) { + AttachmentPart ap = (AttachmentPart) value; DataHandler dh = ap.getDataHandler(); msg.setObjectPart(name, dh); - } catch (SOAPException se) { - Trc.exception(se); + } else if ( + (String.class.equals(type) + || Image.class.equals(type) + || Source.class.equals(type) + || MimeMultipart.class.equals(type)) + && AttachmentPart.class.isAssignableFrom(value.getClass())) { + + AttachmentPart ap = (AttachmentPart) value; + InputStream is = ap.getDataHandler().getInputStream(); + byte[] bBuff = new byte[is.available()]; + is.read(bBuff); + + if (String.class.equals(type)) + msg.setObjectPart(name, new String(bBuff)); + else if (Image.class.equals(type)) + msg.setObjectPart( + name, + new ImageIcon(bBuff).getImage()); +// else if (Source.class.equals(type)) +// msg.setObjectPart(name, new Source(bBuff)); +// else if (MimeMultipart.class.equals(type)) +// msg.setObjectPart(name, new MimeMultipart(bBuff)); + } else if ( + type != null // will be null for async responses + && !type.isPrimitive() + && !(type.isAssignableFrom(value.getClass()))) { throw new WSIFException( - "WSIFOperation_ApacheAxis.setMessagePart messageName=" - + (msg.getName() == null ? "null" : msg.getName()) - + " partName=" - + name - + " caught " - + se); - } - } else if ( - type != null // will be null for async responses - && !type.isPrimitive() - && !(type.isAssignableFrom(value.getClass()))) { + "return value " + + value + + " has unexpected type " + + value.getClass() + + " instead of " + + type); + } else + msg.setObjectPart(name, value); + } catch (SOAPException se) { + Trc.exception(se); throw new WSIFException( - "return value " - + value - + " has unexpected type " - + value.getClass() - + " instead of " - + type); - } else - msg.setObjectPart(name, value); + "WSIFOperation_ApacheAxis.setMessagePart messageName=" + + (msg.getName() == null ? "null" : msg.getName()) + + " partName=" + + name + + " caught " + + se); + } catch (IOException ioe) { + Trc.exception(ioe); + throw new WSIFException( + "WSIFOperation_ApacheAxis.setMessagePart messageName=" + + (msg.getName() == null ? "null" : msg.getName()) + + " partName=" + + name + + " caught " + + ioe); + } Trc.exit(); } 1.1 xml-axis-wsif/java/test/proposals/mime/WSIFFrame.java Index: WSIFFrame.java =================================================================== package proposals.mime; import java.awt.Canvas; import java.awt.Frame; import java.awt.Graphics; import java.awt.Image; public class WSIFFrame extends Frame { private static Frame[] frames = new Frame[2]; private static int frameIndex = 0; private Image im = null; public static void display(Image im, String title) throws Exception { Frame f = new WSIFFrame(im,title); frames[frameIndex] = f; frameIndex++; f.pack(); f.show(); } public WSIFFrame(Image im, String title) { super(title); this.im = im; } public void paint(Graphics g) { g.drawImage(im, 0, 0, new Canvas()); } public static void close() { for (int i = 0; i < frameIndex; i++) { frames[i].dispose(); frames[i] = null; } frameIndex=0; } public void finalize() throws Throwable { for (int i = 0; i < frameIndex; i++) { frames[i].dispose(); frames[i] = null; } frameIndex=0; } } 1.1 xml-axis-wsif/java/test/proposals/mime/axis.jpg <<Binary file>>