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);
}
}