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 he...@apache.org on 2005/07/04 15:32:45 UTC

svn commit: r209072 - in /webservices/axis/trunk/java/modules/samples: ./ src/sample/mtom/ src/sample/mtom/META-INF/ src/sample/mtom/client/

Author: hemapani
Date: Mon Jul  4 06:32:41 2005
New Revision: 209072

URL: http://svn.apache.org/viewcvs?rev=209072&view=rev
Log:
check in the mtom sample

Added:
    webservices/axis/trunk/java/modules/samples/src/sample/mtom/
    webservices/axis/trunk/java/modules/samples/src/sample/mtom/META-INF/
    webservices/axis/trunk/java/modules/samples/src/sample/mtom/META-INF/service.xml
    webservices/axis/trunk/java/modules/samples/src/sample/mtom/MTOMService.java
    webservices/axis/trunk/java/modules/samples/src/sample/mtom/client/
    webservices/axis/trunk/java/modules/samples/src/sample/mtom/client/EchoRawMTOMTest.java
    webservices/axis/trunk/java/modules/samples/src/sample/mtom/client/MTOMClient.java
    webservices/axis/trunk/java/modules/samples/src/sample/mtom/client/UserInterface.java
Modified:
    webservices/axis/trunk/java/modules/samples/maven.xml

Modified: webservices/axis/trunk/java/modules/samples/maven.xml
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/maven.xml?rev=209072&r1=209071&r2=209072&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/samples/maven.xml (original)
+++ webservices/axis/trunk/java/modules/samples/maven.xml Mon Jul  4 06:32:41 2005
@@ -54,6 +54,7 @@
         <attainGoal name="googleSearch"/>
         <attainGoal name="googleSpellcheck"/>
         <attainGoal name="version"/>
+        <attainGoal name="mtomSample"/>
     </goal>
 
   <!-- ================================================================ -->
@@ -208,6 +209,32 @@
         </jar>
     </goal>
     
+  <!-- ================================================================ -->
+  <!--- Google MTOM Sample -->
+  <!-- ================================================================ -->
+
+    <goal name="mtomSample">
+        <mkdir dir="${samples.dir}/mtom"/>
+        <mkdir dir="${samples.dir}/mtom/src"/>
+        <ant:copy todir="${samples.dir}/mtom/src">
+        	<ant:fileset dir="src">
+        		<ant:include name="sample/mtom/**"/>
+        	</ant:fileset> 
+	</ant:copy> 
+	 <jar destfile="${samples.dir}/mtom/mtomSample.aar">
+            <fileset dir="src/sample/mtom/">
+                <include name="META-INF/**"/>
+            </fileset>           
+            <fileset dir="target/classes">
+                <include name="sample/mtom/*.class"/>
+            </fileset>           
+        </jar>
+        <jar destfile="${samples.dir}/mtom/mtomClient.jar">
+            <fileset dir="target/classes">
+                <include name="sample/mtom/**"/>
+            </fileset>           
+        </jar>
+    </goal>
     
     <goal name="test-mtom">
     		<echo message="running MTOM tests"/>

Added: webservices/axis/trunk/java/modules/samples/src/sample/mtom/META-INF/service.xml
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/src/sample/mtom/META-INF/service.xml?rev=209072&view=auto
==============================================================================
--- webservices/axis/trunk/java/modules/samples/src/sample/mtom/META-INF/service.xml (added)
+++ webservices/axis/trunk/java/modules/samples/src/sample/mtom/META-INF/service.xml Mon Jul  4 06:32:41 2005
@@ -0,0 +1,12 @@
+<service name="MyService">
+    <description>
+        This is a sample Web Service with two operations,echo and ping.
+    </description>
+    <parameter name="ServiceClass" locked="xsd:false">userguide.example1.MyService</parameter>
+    <operation name="echo">
+        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    </operation>
+     <operation name="ping">
+        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
+    </operation>
+  </service>
\ No newline at end of file

Added: webservices/axis/trunk/java/modules/samples/src/sample/mtom/MTOMService.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/src/sample/mtom/MTOMService.java?rev=209072&view=auto
==============================================================================
--- webservices/axis/trunk/java/modules/samples/src/sample/mtom/MTOMService.java (added)
+++ webservices/axis/trunk/java/modules/samples/src/sample/mtom/MTOMService.java Mon Jul  4 06:32:41 2005
@@ -0,0 +1,42 @@
+package sample.mtom;
+
+import java.awt.Image;
+import java.io.FileOutputStream;
+
+import javax.activation.DataHandler;
+
+import org.apache.axis2.attachments.JDK13IO;
+import org.apache.axis2.om.OMAbstractFactory;
+import org.apache.axis2.om.OMElement;
+import org.apache.axis2.om.OMFactory;
+import org.apache.axis2.om.OMNamespace;
+import org.apache.axis2.om.OMText;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: Jaliya
+ * Date: Jun 2, 2005
+ * Time: 2:17:58 PM
+ */
+public class MTOMService {
+    public OMElement mtomSample(OMElement element) throws Exception {
+        //Praparing the OMElement so that it can be attached to another OM Tree.
+        //First the OMElement should be completely build in case it is not fully built and still
+        //some of the xml is in the stream.
+    	OMElement imageEle = element.getFirstElement();
+    	OMElement imageName = (OMElement)imageEle.getNextSibling();
+    	OMText binaryNode = (OMText) imageEle.getFirstChild();
+    	String nameNode = imageName.getText();
+    	DataHandler actualDH;
+		actualDH = binaryNode.getDataHandler();
+		Image actualObject = new JDK13IO().loadImage(actualDH.getDataSource()
+				.getInputStream());
+		FileOutputStream imageOutStream = new FileOutputStream(nameNode);
+		new JDK13IO().saveImage("image/jpeg", actualObject, imageOutStream);
+		OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace ns = fac.createOMNamespace("urn://fakenamespace","ns");
+		OMElement ele =  fac.createOMElement("response",ns);
+        ele.setText("Image Saved");
+        return ele;
+    }
+}

Added: webservices/axis/trunk/java/modules/samples/src/sample/mtom/client/EchoRawMTOMTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/src/sample/mtom/client/EchoRawMTOMTest.java?rev=209072&view=auto
==============================================================================
--- webservices/axis/trunk/java/modules/samples/src/sample/mtom/client/EchoRawMTOMTest.java (added)
+++ webservices/axis/trunk/java/modules/samples/src/sample/mtom/client/EchoRawMTOMTest.java Mon Jul  4 06:32:41 2005
@@ -0,0 +1,89 @@
+package sample.mtom.client;
+
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.attachments.ImageDataSource;
+import org.apache.axis2.attachments.JDK13IO;
+import org.apache.axis2.clientapi.Call;
+import org.apache.axis2.om.*;
+import org.apache.axis2.om.impl.llom.OMTextImpl;
+
+import javax.activation.DataHandler;
+import javax.xml.namespace.QName;
+import java.awt.*;
+import java.io.File;
+import java.io.FileInputStream;
+
+
+public class EchoRawMTOMTest {
+    private File inputFile = null;
+
+    private EndpointReference targetEPR = new EndpointReference(AddressingConstants.WSA_TO,
+            "http://127.0.0.1:8080/axis2/services/MyService");
+
+
+    private QName operationName = new QName("echoOMElement");
+
+
+    public EchoRawMTOMTest() {
+
+    }
+
+    private OMElement createEnvelope(String fileName) throws Exception {
+
+        DataHandler expectedDH;
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+
+        OMElement data = fac.createOMElement("mtomSample", omNs);
+        OMElement image = fac.createOMElement("image", omNs);
+        Image expectedImage;
+        expectedImage = new JDK13IO()
+                .loadImage(new FileInputStream(inputFile));
+
+        ImageDataSource dataSource = new ImageDataSource("test.jpg",
+                expectedImage);
+        expectedDH = new DataHandler(dataSource);
+        OMText textData = new OMTextImpl(expectedDH, true);
+        image.addChild(textData);
+
+        OMElement imageName = fac.createOMElement("fileName", omNs);
+        if (fileName != null) {
+            imageName.setText(fileName);
+        }
+        data.addChild(image);
+        data.addChild(imageName);
+
+        return data;
+
+    }
+
+    public OMElement testEchoXMLSync(String fileName) throws Exception {
+
+        OMElement payload = createEnvelope(fileName);
+
+        Call call = new Call();
+        call.setTo(targetEPR);
+        call.set(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
+        call.setTransportInfo(Constants.TRANSPORT_HTTP,
+                Constants.TRANSPORT_HTTP, false);
+
+        OMElement result = (OMElement) call.invokeBlocking(operationName
+                .getLocalPart(), payload);
+
+        return result;
+    }
+
+
+    public void setTargetEPR(String targetEPR) {
+        this.targetEPR = new EndpointReference(AddressingConstants.WSA_TO,
+                targetEPR);
+
+    }
+
+
+    public void setInputFile(File inputFile) {
+        this.inputFile = inputFile;
+    }
+}

Added: webservices/axis/trunk/java/modules/samples/src/sample/mtom/client/MTOMClient.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/src/sample/mtom/client/MTOMClient.java?rev=209072&view=auto
==============================================================================
--- webservices/axis/trunk/java/modules/samples/src/sample/mtom/client/MTOMClient.java (added)
+++ webservices/axis/trunk/java/modules/samples/src/sample/mtom/client/MTOMClient.java Mon Jul  4 06:32:41 2005
@@ -0,0 +1,30 @@
+package sample.mtom.client;
+
+import java.awt.Dimension;
+import java.awt.HeadlessException;
+import java.awt.Toolkit;
+import java.awt.event.ActionListener;
+
+import javax.swing.JFrame;
+import javax.swing.WindowConstants;
+
+public class MTOMClient extends JFrame{
+
+    public MTOMClient(String title) throws HeadlessException {
+        super(title);
+
+        this.getContentPane().add(new UserInterface(this));
+        this.show();
+
+    }
+
+    public static void main(String[] args) {
+        MTOMClient form = new MTOMClient("MTOM Sample Client");
+        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+        form.setLocation(screenSize.width / 4 - 20,
+                screenSize.height / 4);
+        form.setSize(screenSize.width / 2 - 80, screenSize.height / 2);
+        form.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
+        form.show();
+    }
+}

Added: webservices/axis/trunk/java/modules/samples/src/sample/mtom/client/UserInterface.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/src/sample/mtom/client/UserInterface.java?rev=209072&view=auto
==============================================================================
--- webservices/axis/trunk/java/modules/samples/src/sample/mtom/client/UserInterface.java (added)
+++ webservices/axis/trunk/java/modules/samples/src/sample/mtom/client/UserInterface.java Mon Jul  4 06:32:41 2005
@@ -0,0 +1,188 @@
+package sample.mtom.client;
+
+
+import org.apache.axis2.om.OMElement;
+
+import javax.swing.*;
+import javax.swing.filechooser.FileFilter;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+
+public class UserInterface extends JPanel implements ActionListener {
+
+
+    JButton browse;
+    JButton send;
+    JTextArea jTextArea;
+    JFileChooser jFileChooser;
+    File file = null;
+    JTextField EPR;
+    JTextField fileName;
+    JTextField fileFeild;
+    JLabel label;
+    JLabel savefile;
+    private String deriredFileName = null;
+    private String EPRName = null;
+    private MTOMClient swa;
+
+    public UserInterface(MTOMClient swa) {
+        this.swa = swa;
+        EPR = new JTextField();
+        fileFeild = new JTextField();
+        fileName = new JTextField();
+        label = new JLabel("END Point:");
+        savefile = new JLabel("Desired File Name:");
+        jTextArea = new JTextArea(5, 5);
+        jTextArea.setPreferredSize(new Dimension(200, 100));
+
+        jFileChooser = new JFileChooser();
+        jFileChooser.addChoosableFileFilter(new ImageFilter());
+        jFileChooser.setAcceptAllFileFilterUsed(false);
+        jFileChooser.setName("Image Chosser");
+        this.browse = new JButton("Browse");
+        this.send = new JButton("send The Image");
+        fileFeild.setBounds(20, 20, 270, 20);
+        browse.setBounds(300, 20, 120, 20);
+        savefile.setBounds(20, 60, 200, 20);
+        fileName.setBounds(150, 60, 270, 20);
+
+
+        label.setBounds(20, 90, 200, 20);
+        EPR.setBounds(150, 90, 270, 20);
+
+        EPR.setText("http://127.0.0.1:8080/axis2/services/MyService");
+
+        send.setBounds(140, 120, 150, 20);
+
+        jTextArea.setBounds(20, 150, 400, 180);
+
+        browse.addActionListener(this);
+        send.addActionListener(this);
+
+        Container pane = swa.getContentPane();
+        this.setLayout(null);
+
+
+        pane.add(browse);
+
+
+        pane.add(send);
+        pane.add(jTextArea);
+        pane.add(EPR);
+        pane.add(fileFeild);
+        pane.add(label);
+        pane.add(savefile);
+        pane.add(fileName);
+
+    }
+
+    public void actionPerformed(ActionEvent e) {
+
+        if (e.getSource() == browse) {
+
+            int returnVal = jFileChooser.showDialog(this, "OK");
+
+
+            if (returnVal == JFileChooser.APPROVE_OPTION) {
+                file = jFileChooser.getSelectedFile();
+                if (file.getAbsolutePath() != null) {
+                    fileFeild.setText(file.getAbsolutePath());
+                }
+            } else {
+
+            }
+
+
+            jFileChooser.setSelectedFile(null);
+
+
+        }
+        if (e.getSource() == send) {
+            if (fileName.getText() != null) {
+                deriredFileName = fileName.getText();
+            }
+            if (file == null) {
+                JOptionPane.showMessageDialog(swa,
+                        "Attachments should not be null.",
+                        " error",
+                        JOptionPane.ERROR_MESSAGE);
+
+            } else if (("").equals(EPR.getText())) {
+                JOptionPane.showMessageDialog(swa,
+                        "END Point null",
+                        " error",
+                        JOptionPane.ERROR_MESSAGE);
+
+            } else {
+                EPRName = EPR.getText();
+                this.send(deriredFileName);
+            }
+
+
+        }
+    }
+
+    public void send(String fileName) {
+
+        EchoRawMTOMTest mtomTest = new EchoRawMTOMTest();
+
+        try {
+            mtomTest.setInputFile(file);
+            mtomTest.setTargetEPR(EPRName);
+            OMElement result = (OMElement) mtomTest.testEchoXMLSync(fileName);
+            jTextArea.setText(result.toString());
+        } catch (Exception e) {
+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+        }
+
+    }
+
+
+    class ImageFilter extends FileFilter {
+
+        //Accept all directories and all gif, jpg, tiff, or png files.
+        public boolean accept(File f) {
+            if (f.isDirectory()) {
+                return true;
+            }
+
+            String extension = getExtension(f);
+            if (extension != null) {
+                if (
+                        extension.equals("jpg") ||
+                        extension.equals("JPEG"))
+                    return true;
+                else {
+                    return false;
+                }
+            }
+
+            return false;
+        }
+
+        public String getDescription() {
+            return null;  //To change body of implemented methods use File | Settings | File Templates.
+        }
+
+        private String getExtension(File f) {
+            String ext = null;
+            String s = f.getName();
+            int i = s.lastIndexOf('.');
+
+            if (i > 0 && i < s.length() - 1) {
+                ext = s.substring(i + 1).toLowerCase();
+            }
+            return ext;
+        }
+
+
+    }
+
+    //The description of this filter
+    public String getDescription() {
+        return "Just Images";
+    }
+
+}