import java.io.BufferedOutputStream;
import java.io.File;
import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import com.datapower.xml.xslt.xa.xaConnectionException;
import com.datapower.xml.xslt.xa.xaTransformerConfigurationException;
public class Test
{
public static int errorcount = 0;
private static final class Tranform implements Runnable
{
private final StreamResult result;
private final StreamSource xml;
private final TransformerFactory factory;
private Tranform(StreamResult result, TransformerFactory factory, StreamSource xml)
{
this.result = result;
this.factory = factory;
this.xml = xml;
}
public void run()
{
StreamSource xslt = new StreamSource(new File("./AddressTransform.xsl"));
try
{
Transformer t = factory.newTransformer(xslt);
t.transform(xml, result);
}
catch (xaConnectionException e)
{
errorcount++;
// retry, probably connection exhausted
e.printStackTrace();
}
catch (xaTransformerConfigurationException e)
{
errorcount++;
// retry, probably connection exhausted
e.printStackTrace();
}
catch (TransformerException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) throws Exception
{
final TransformerFactory factory = com.datapower.xml.xslt.xa.xaTransformerFactory.newInstance();
factory.setAttribute("XAIP", "10.0.0.1");
factory.setAttribute("XAPort", "7050");
factory.setAttribute("XADebug", "true");
factory.setAttribute("XAForceRefresh", "true");
factory.setAttribute("XAValidate", "true");
//factory.setAttribute("XAClientId", "none");
//factory.setAttribute("XAStylesheetTimeout", "5000");
factory.setAttribute("XAConnectionLimits", "5:40");
StringWriter writer = new StringWriter();
final StreamResult result = new StreamResult(writer);
int count = 10;
long start = System.currentTimeMillis();
Thread[] t = new Thread[count];
for (int i = 0; i < count; i++)
{
String s = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+
"<address:getAddressInfo xmlns:address=\"http://something\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://something AddressMsg.xsd\">"+
"<address:name>"+
"<address:title>Mr.</address:title>"+
"<address:firstName>Mary"+i+"</address:firstName>"+
"<address:lastName>Lou</address:lastName>"+
"</address:name>"+
"</address:getAddressInfo>";
//StreamSource xml = new StreamSource(new File("./AddressReq.xml"));
StreamSource xml = new StreamSource(new StringReader(s));
t[i] = new Thread(new Tranform(result, factory, xml));
}
for (int i = 0; i < count; i++)
{
t[i].start();
}
for (int i = 0; i < count; i++)
{
t[i].join();
}
System.out.println(writer.getBuffer().toString());
System.out.println("Execution time "+(System.currentTimeMillis()-start)+" ms. Number of errors "+errorcount);
System.out.flush();
}
}