You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-dev@xml.apache.org by wc...@locus.apache.org on 2000/11/28 23:21:12 UTC

cvs commit: xml-soap/java/samples/mime DeploymentDescriptor.xml fields.gif foo.txt infile.txt MimeTest.java mimetestclient.cmd MimeTestClient.java

wcloeten    00/11/28 14:21:11

  Added:       java/samples/mime DeploymentDescriptor.xml fields.gif
                        foo.txt infile.txt MimeTest.java mimetestclient.cmd
                        MimeTestClient.java
  Log:
  
  
  Revision  Changes    Path
  1.1                  xml-soap/java/samples/mime/DeploymentDescriptor.xml
  
  Index: DeploymentDescriptor.xml
  ===================================================================
  <isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment"
               id="urn:mimetest">
    <isd:provider type="java"
                  scope="Request"
                  methods="sendFile loopFile getFileVector loopFileVector getFileArray loopFileArray">
      <isd:java class="samples.mime.MimeTest" static="false"/>
    </isd:provider>
  </isd:service>
  
  
  
  1.1                  xml-soap/java/samples/mime/fields.gif
  
  	<<Binary file>>
  
  
  1.1                  xml-soap/java/samples/mime/foo.txt
  
  Index: foo.txt
  ===================================================================
  bar!
  
  
  1.1                  xml-soap/java/samples/mime/infile.txt
  
  Index: infile.txt
  ===================================================================
  The quick brown fox jumps easily over the fat and lazy dog.
  Le loup vite sault facilement sur le chien gras.
  L'�l�ve va � l'�cole.
  De onderzee�r zinkt.
  �Que? ��ina, hasta ma�ana!
  
  �����������������������������������������������������
  
  
  1.1                  xml-soap/java/samples/mime/MimeTest.java
  
  Index: MimeTest.java
  ===================================================================
  package samples.mime;
  
  /**
   * NOTE!!! This service is a *huge* security hole and is provided for
   * demonstration purposes only.
   */
  
  import java.io.*;
  import java.util.*;
  import javax.activation.*;
  import org.apache.soap.util.mime.*;
  
  public class MimeTest
  {
      public MimeTest()
      {
      }
  
      public static String sendFile(DataHandler dh) throws IOException
      {
          StringBuffer sb = new StringBuffer("Received attachment:\n");
          sb.append("Content type: ").append(dh.getContentType());
          sb.append("\nName: ").append(dh.getName());
          Object o = dh.getContent();
          sb.append("\nContent class: ").append(o.getClass().getName());
          sb.append("\nContent: ").append(o.toString());
          return sb.toString();
      }
  
      public static DataHandler loopFile(DataHandler dh) throws IOException
      {
          return dh;
      }
  
      public static Vector getFileVector(String[] fname) throws IOException
      {
          Vector res = new Vector();
  
          for(int i = 0; i < fname.length; i++)
          {
              DataSource ds = new ByteArrayDataSource(new File(fname[i]), null);
              res.addElement(new DataHandler(ds));
          }
          return res;
      }
  
      public static Vector loopFileVector(Vector dhs)
      {
          return dhs;
      }
  
      public static DataHandler[] getFileArray(String[] fname) throws IOException
      {
          Vector v = getFileVector(fname);
          DataHandler[] dhs = new DataHandler[v.size()];
          for(int i = 0; i < dhs.length; i++)
              dhs[i] = (DataHandler)v.elementAt(i);
          return dhs;
      }
  
      public static Object[] loopFileArray(Object[] dhs)
      {
          return dhs;
      }
  }
  
  
  
  1.1                  xml-soap/java/samples/mime/mimetestclient.cmd
  
  Index: mimetestclient.cmd
  ===================================================================
  @echo off
  
  set URL=http://localhost:8080/soap/servlet/rpcrouter
  rem set URL=http://localhost:81/soap/servlet/rpcrouter
  
  set ACTION=sendFile
  rem set ACTION=loopFile
  rem set ACTION=getFileVector
  rem set ACTION=loopFileVector
  rem set ACTION=getFileArray
  rem set ACTION=loopFileArray
  
  set BASEDIR=/home/projects/xml-soap-mimekludge/java/samples/mime
  rem set BASEDIR=/home/zombie/mime
  set FILELIST=%BASEDIR%/foo.txt
  rem set FILELIST=%BASEDIR%/infile.txt
  rem set FILELIST=%BASEDIR%/fields.gif
  rem set FILELIST=%BASEDIR%/fields.gif %BASEDIR%/foo.txt
  
  java samples.mime.MimeTestClient %URL% %ACTION% %FILELIST%
  
  
  
  1.1                  xml-soap/java/samples/mime/MimeTestClient.java
  
  Index: MimeTestClient.java
  ===================================================================
  package samples.mime;
  
  import java.io.*;
  import java.util.*;
  import java.net.*;
  import org.w3c.dom.*;
  import org.apache.soap.util.xml.*;
  import org.apache.soap.util.mime.*;
  import org.apache.soap.*;
  import org.apache.soap.transport.*;
  import org.apache.soap.encoding.*;
  import org.apache.soap.encoding.soapenc.*;
  import org.apache.soap.rpc.*;
  import javax.mail.*;
  import javax.mail.internet.*;
  import javax.activation.*;
  
  public class MimeTestClient
  {
    public static void main(String[] args) throws Exception
    {
      String encodingStyleURI = Constants.NS_URI_SOAP_ENC;
      URL url = new URL(args[0]);
      SOAPMappingRegistry smr = new SOAPMappingRegistry();
      BeanSerializer beanSer = new BeanSerializer();
  
      try
      {
          // Build the call.
          Call call = new Call();
  
          call.setSOAPMappingRegistry(smr);
          call.setTargetObjectURI("urn:mimetest");
          call.setMethodName(args[1]);
          call.setEncodingStyleURI(encodingStyleURI);
  
          Vector params = new Vector();
          if(args[1].equals("sendFile") || args[1].equals("loopFile"))
              for(int i = 2; i < args.length; i++)
              {
                  DataSource ds = new ByteArrayDataSource(new File(args[i]), null);
                  DataHandler dh = new DataHandler(ds);
                  params.addElement(new Parameter("addedfile", javax.activation.DataHandler.class, dh, null));
              }
  	else if(args[1].equals("loopFileVector"))
  	{
  	    Vector v = new Vector();
              for(int i = 2; i < args.length; i++)
              {
                  DataSource ds = new ByteArrayDataSource(new File(args[i]), null);
                  DataHandler dh = new DataHandler(ds);
                  v.addElement(dh);
              }
              params.addElement(new Parameter("addedfiles", Vector.class, v, null));
  	}
  	else if(args[1].equals("loopFileArray"))
  	{
              DataHandler dhs[] = new DataHandler[args.length - 2];
              for(int i = 2; i < args.length; i++)
              {
                  DataSource ds = new ByteArrayDataSource(new File(args[i]), null);
                  dhs[i - 2] = new DataHandler(ds);
              }
              params.addElement(new Parameter("addedfiles", DataSource[].class, dhs, null));
  	}
          else
          {
              String s[] = new String[args.length - 2];
              for(int i = 2; i < args.length; i++)
              {
                  s[i - 2] = args[i];
              }
              params.addElement(new Parameter("filenames", String[].class, s, null));
          }
          call.setParams(params);
  
          // System.out.println("Call: " + call);
          // System.out.println("Context: " + SOAPContext.getSOAPContext());
  
          // Invoke the call.
          Response resp;
      
          try
          {
            resp = call.invoke(url, "");
          }
          catch (SOAPException e)
          {
            System.err.println("Caught SOAPException (" +
                               e.getFaultCode() + "): " +
                               e.getMessage());
            e.printStackTrace();
            return;
          }
      
          // Check the response.
          if (!resp.generatedFault())
          {
              Parameter ret = resp.getReturnValue();
              if(ret == null)
                  System.out.println("No response.");
              else
              {
                  // System.out.println("Response: " + resp);
  
                  printObject(ret.getValue());
              }
          }
          else
          {
            Fault fault = resp.getFault();
      
            System.err.println("Generated fault: ");
            System.err.println ("  Fault Code   = " + fault.getFaultCode());
            System.err.println ("  Fault String = " + fault.getFaultString());
          }
      }
      catch(Exception e)
      {
          e.printStackTrace();
      }
    }
  
    public static void printObject(Object obj)
    {
        if(obj instanceof DataHandler)
        {
            DataHandler dh = (DataHandler)obj;
            Object o;
            try
            {
                o = dh.getContent();
            }
            catch(IOException ioe)
            {
                o = ioe;
            }
            System.out.println("DataHandler, name=" + dh.getName()
                               + ", type=" + dh.getContentType()
                               + ", content: (" + o.getClass().getName()
                               + ")\n" + o);
            DataSource ds = dh.getDataSource();
            String fname = "" + System.currentTimeMillis() + ".out";
            System.out.println(" Writing to " + fname);
            try
            {
                ByteArrayDataSource bds = new ByteArrayDataSource(ds.getInputStream(), dh.getContentType());
                bds.writeTo(new FileOutputStream(fname));
            }
            catch(IOException ioe)
            {
                System.out.println(ioe);
                ioe.printStackTrace(System.err);
            }
        }
        else if(obj instanceof Vector)
        {
            for(Enumeration enum = ((Vector)obj).elements(); enum.hasMoreElements(); )
                printObject(enum.nextElement());
        }
        else if(obj instanceof Object[])
        {
            Object[] s = (Object[])obj;
            for(int i = 0; i < s.length; i++)
                printObject(s[i]);
        }
        else
            System.out.println(obj);
    }
  }