use of nl.nn.adapterframework.jms.JmsSender in project iaf by ibissource.
the class SendJmsMessage method jmsBuilder.
private JmsSender jmsBuilder(String realm, String destination, boolean persistent, String type) {
JmsSender qms = new JmsSender();
qms.setName("SendJmsMessageAction");
qms.setJmsRealm(realm);
qms.setDestinationName(destination);
qms.setPersistent(persistent);
qms.setDestinationType(type);
return qms;
}
use of nl.nn.adapterframework.jms.JmsSender in project iaf by ibissource.
the class SendJmsMessage method putJmsMessage.
@POST
@RolesAllowed({ "IbisDataAdmin", "IbisAdmin", "IbisTester" })
@Path("jms/message")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response putJmsMessage(MultipartFormDataInput input) throws ApiException {
initBase(servletConfig);
String jmsRealm = null, destinationName = null, destinationType = null, replyTo = null, message = null, fileName = null;
InputStream file = null;
boolean persistent = false;
Map<String, List<InputPart>> inputDataMap = input.getFormDataMap();
if (inputDataMap == null) {
throw new ApiException("Missing post parameters");
}
try {
if (inputDataMap.get("realm") != null)
jmsRealm = inputDataMap.get("realm").get(0).getBodyAsString();
else
throw new ApiException("JMS realm not defined", 400);
if (inputDataMap.get("destination") != null)
destinationName = inputDataMap.get("destination").get(0).getBodyAsString();
else
throw new ApiException("Destination name not defined", 400);
if (inputDataMap.get("type") != null)
destinationType = inputDataMap.get("type").get(0).getBodyAsString();
else
throw new ApiException("Destination type not defined", 400);
if (inputDataMap.get("replyTo") != null)
replyTo = inputDataMap.get("replyTo").get(0).getBodyAsString();
else
throw new ApiException("ReplyTo not defined", 400);
if (inputDataMap.get("message") != null)
message = inputDataMap.get("message").get(0).getBodyAsString();
if (inputDataMap.get("persistent") != null)
persistent = inputDataMap.get("persistent").get(0).getBody(boolean.class, null);
if (inputDataMap.get("file") != null)
file = inputDataMap.get("file").get(0).getBody(InputStream.class, null);
} catch (IOException e) {
throw new ApiException("Failed to parse one or more parameters!");
}
try {
if (file != null) {
MultivaluedMap<String, String> headers = inputDataMap.get("file").get(0).getHeaders();
String[] contentDispositionHeader = headers.getFirst("Content-Disposition").split(";");
for (String name : contentDispositionHeader) {
if ((name.trim().startsWith("filename"))) {
String[] tmp = name.split("=");
fileName = tmp[1].trim().replaceAll("\"", "");
}
}
if (StringUtils.endsWithIgnoreCase(fileName, ".zip")) {
processZipFile(file, jmsBuilder(jmsRealm, destinationName, persistent, destinationType), replyTo);
message = null;
} else {
message = XmlUtils.readXml(Misc.streamToBytes(file), Misc.DEFAULT_INPUT_STREAM_ENCODING, false);
}
} else {
message = new String(message.getBytes(), Misc.DEFAULT_INPUT_STREAM_ENCODING);
}
} catch (Exception e) {
throw new ApiException("Failed to read message: " + e.getMessage());
}
if (message != null && message.length() > 0) {
JmsSender qms = jmsBuilder(jmsRealm, destinationName, persistent, destinationType);
if ((replyTo != null) && (replyTo.length() > 0))
qms.setReplyToName(replyTo);
processMessage(qms, "testmsg_" + Misc.createUUID(), message);
return Response.status(Response.Status.OK).build();
} else {
return Response.status(Response.Status.BAD_REQUEST).build();
}
}
use of nl.nn.adapterframework.jms.JmsSender in project iaf by ibissource.
the class SendJmsMessageExecute method executeSub.
public ActionForward executeSub(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
// Initialize action
initAction(request);
// -------------------------------
if (isCancelled(request)) {
log.debug("sendJmsMessage was cancelled");
removeFormBean(mapping, request);
return (mapping.findForward("success"));
}
// Retrieve form content
// ---------------------
DynaActionForm sendJmsMessageForm = (DynaActionForm) form;
String form_jmsRealm = (String) sendJmsMessageForm.get("jmsRealm");
String form_destinationName = (String) sendJmsMessageForm.get("destinationName");
String form_destinationType = (String) sendJmsMessageForm.get("destinationType");
boolean form_persistent = false;
if (null != sendJmsMessageForm.get("persistent")) {
form_persistent = ((Boolean) sendJmsMessageForm.get("persistent")).booleanValue();
}
String form_message = (String) sendJmsMessageForm.get("message");
FormFile form_file = (FormFile) sendJmsMessageForm.get("file");
String form_replyToName = (String) sendJmsMessageForm.get("replyToName");
// if upload is choosen, it prevails over the message
if ((form_file != null) && (form_file.getFileSize() > 0)) {
log.debug("Upload of file [" + form_file.getFileName() + "] ContentType[" + form_file.getContentType() + "]");
if (FileUtils.extensionEqualsIgnoreCase(form_file.getFileName(), "zip")) {
ZipInputStream archive = new ZipInputStream(new ByteArrayInputStream(form_file.getFileData()));
for (ZipEntry entry = archive.getNextEntry(); entry != null; entry = archive.getNextEntry()) {
String name = entry.getName();
int size = (int) entry.getSize();
if (size > 0) {
byte[] b = new byte[size];
int rb = 0;
int chunk = 0;
while (((int) size - rb) > 0) {
chunk = archive.read(b, rb, (int) size - rb);
if (chunk == -1) {
break;
}
rb += chunk;
}
String currentMessage = XmlUtils.readXml(b, 0, rb, request.getCharacterEncoding(), false);
// initiate MessageSender
JmsSender qms = new JmsSender();
qms.setName("SendJmsMessageAction");
qms.setJmsRealm(form_jmsRealm);
qms.setDestinationName(form_destinationName);
qms.setPersistent(form_persistent);
qms.setDestinationType(form_destinationType);
if ((form_replyToName != null) && (form_replyToName.length() > 0))
qms.setReplyToName(form_replyToName);
processMessage(qms, name + "_" + Misc.createSimpleUUID(), currentMessage);
}
archive.closeEntry();
}
archive.close();
form_message = null;
} else {
form_message = XmlUtils.readXml(form_file.getFileData(), request.getCharacterEncoding(), false);
}
} else {
form_message = new String(form_message.getBytes(), Misc.DEFAULT_INPUT_STREAM_ENCODING);
}
if (form_message != null && form_message.length() > 0) {
// initiate MessageSender
JmsSender qms = new JmsSender();
qms.setName("SendJmsMessageAction");
qms.setJmsRealm(form_jmsRealm);
qms.setDestinationName(form_destinationName);
qms.setPersistent(form_persistent);
qms.setDestinationType(form_destinationType);
if ((form_replyToName != null) && (form_replyToName.length() > 0))
qms.setReplyToName(form_replyToName);
processMessage(qms, "testmsg_" + Misc.createUUID(), form_message);
}
StoreFormData(sendJmsMessageForm);
// Report any errors we have discovered back to the original form
if (!errors.isEmpty()) {
saveErrors(request, errors);
return (new ActionForward(mapping.getInput()));
}
// Successfull: store cookie
String cookieValue = "";
cookieValue += "jmsRealm=\"" + form_jmsRealm + "\"";
// separator
cookieValue += " ";
cookieValue += "destinationName=\"" + form_destinationName + "\"";
// separator
cookieValue += " ";
cookieValue += "destinationType=\"" + form_destinationType + "\"";
Cookie sendJmsCookie = new Cookie(AppConstants.getInstance().getProperty("WEB_JMSCOOKIE_NAME"), cookieValue);
sendJmsCookie.setMaxAge(Integer.MAX_VALUE);
log.debug("Store cookie for " + request.getServletPath() + " cookieName[" + AppConstants.getInstance().getProperty("WEB_JMSCOOKIE_NAME") + "] " + " cookieValue[" + new StringTagger(cookieValue).toString() + "]");
try {
response.addCookie(sendJmsCookie);
} catch (Throwable e) {
log.warn("unable to add cookie to request. cookie value [" + sendJmsCookie.getValue() + "]");
}
// Forward control to the specified success URI
log.debug("forward to success");
return (mapping.findForward("success"));
}
use of nl.nn.adapterframework.jms.JmsSender in project iaf by ibissource.
the class TestTool method executeJmsSenderWrite.
private static int executeJmsSenderWrite(String stepDisplayName, Map queues, Map writers, String queueName, String fileContent) {
int result = RESULT_ERROR;
Map jmsSenderInfo = (Map) queues.get(queueName);
JmsSender jmsSender = (JmsSender) jmsSenderInfo.get("jmsSender");
try {
String correlationId = null;
String useCorrelationIdFrom = (String) jmsSenderInfo.get("useCorrelationIdFrom");
if (useCorrelationIdFrom != null) {
Map listenerInfo = (Map) queues.get(useCorrelationIdFrom);
if (listenerInfo == null) {
errorMessage("Could not find listener '" + useCorrelationIdFrom + "' to use correlation id from", writers);
} else {
correlationId = (String) listenerInfo.get("correlationId");
if (correlationId == null) {
errorMessage("Could not find correlation id from listener '" + useCorrelationIdFrom + "'", writers);
}
}
}
if (correlationId == null) {
correlationId = (String) jmsSenderInfo.get("jmsCorrelationId");
}
if (correlationId == null) {
correlationId = TESTTOOL_CORRELATIONID;
}
jmsSender.sendMessage(correlationId, fileContent);
debugPipelineMessage(stepDisplayName, "Successfully written to '" + queueName + "':", fileContent, writers);
result = RESULT_OK;
} catch (TimeOutException e) {
errorMessage("Time out sending jms message to '" + queueName + "': " + e.getMessage(), e, writers);
} catch (SenderException e) {
errorMessage("Could not send jms message to '" + queueName + "': " + e.getMessage(), e, writers);
}
return result;
}
use of nl.nn.adapterframework.jms.JmsSender in project iaf by ibissource.
the class TestTool method openQueues.
public static Map openQueues(String scenarioDirectory, List steps, Properties properties, IbisContext ibisContext, Map writers) {
Map queues = new HashMap();
debugMessage("Get all queue names", writers);
List jmsSenders = new ArrayList();
List jmsListeners = new ArrayList();
List jdbcFixedQuerySenders = new ArrayList();
List ibisWebServiceSenders = new ArrayList();
List webServiceSenders = new ArrayList();
List webServiceListeners = new ArrayList();
List httpSenders = new ArrayList();
List ibisJavaSenders = new ArrayList();
List delaySenders = new ArrayList();
List javaListeners = new ArrayList();
List fileSenders = new ArrayList();
List fileListeners = new ArrayList();
List xsltProviderListeners = new ArrayList();
Iterator iterator = properties.keySet().iterator();
while (iterator.hasNext()) {
String key = (String) iterator.next();
int i = key.indexOf('.');
if (i != -1) {
int j = key.indexOf('.', i + 1);
if (j != -1) {
String queueName = key.substring(0, j);
debugMessage("queuename openqueue: " + queueName, writers);
if ("nl.nn.adapterframework.jms.JmsSender".equals(properties.get(queueName + ".className")) && !jmsSenders.contains(queueName)) {
debugMessage("Adding jmsSender queue: " + queueName, writers);
jmsSenders.add(queueName);
} else if ("nl.nn.adapterframework.jms.JmsListener".equals(properties.get(queueName + ".className")) && !jmsListeners.contains(queueName)) {
debugMessage("Adding jmsListener queue: " + queueName, writers);
jmsListeners.add(queueName);
} else if ("nl.nn.adapterframework.jdbc.FixedQuerySender".equals(properties.get(queueName + ".className")) && !jdbcFixedQuerySenders.contains(queueName)) {
debugMessage("Adding jdbcFixedQuerySender queue: " + queueName, writers);
jdbcFixedQuerySenders.add(queueName);
} else if ("nl.nn.adapterframework.http.IbisWebServiceSender".equals(properties.get(queueName + ".className")) && !ibisWebServiceSenders.contains(queueName)) {
debugMessage("Adding ibisWebServiceSender queue: " + queueName, writers);
ibisWebServiceSenders.add(queueName);
} else if ("nl.nn.adapterframework.http.WebServiceSender".equals(properties.get(queueName + ".className")) && !webServiceSenders.contains(queueName)) {
debugMessage("Adding webServiceSender queue: " + queueName, writers);
webServiceSenders.add(queueName);
} else if ("nl.nn.adapterframework.http.WebServiceListener".equals(properties.get(queueName + ".className")) && !webServiceListeners.contains(queueName)) {
debugMessage("Adding webServiceListener queue: " + queueName, writers);
webServiceListeners.add(queueName);
} else if ("nl.nn.adapterframework.http.HttpSender".equals(properties.get(queueName + ".className")) && !httpSenders.contains(queueName)) {
debugMessage("Adding httpSender queue: " + queueName, writers);
httpSenders.add(queueName);
} else if ("nl.nn.adapterframework.senders.IbisJavaSender".equals(properties.get(queueName + ".className")) && !ibisJavaSenders.contains(queueName)) {
debugMessage("Adding ibisJavaSender queue: " + queueName, writers);
ibisJavaSenders.add(queueName);
} else if ("nl.nn.adapterframework.senders.DelaySender".equals(properties.get(queueName + ".className")) && !delaySenders.contains(queueName)) {
debugMessage("Adding delaySender queue: " + queueName, writers);
delaySenders.add(queueName);
} else if ("nl.nn.adapterframework.receivers.JavaListener".equals(properties.get(queueName + ".className")) && !javaListeners.contains(queueName)) {
debugMessage("Adding javaListener queue: " + queueName, writers);
javaListeners.add(queueName);
} else if ("nl.nn.adapterframework.testtool.FileSender".equals(properties.get(queueName + ".className")) && !fileSenders.contains(queueName)) {
debugMessage("Adding fileSender queue: " + queueName, writers);
fileSenders.add(queueName);
} else if ("nl.nn.adapterframework.testtool.FileListener".equals(properties.get(queueName + ".className")) && !fileListeners.contains(queueName)) {
debugMessage("Adding fileListener queue: " + queueName, writers);
fileListeners.add(queueName);
} else if ("nl.nn.adapterframework.testtool.XsltProviderListener".equals(properties.get(queueName + ".className")) && !xsltProviderListeners.contains(queueName)) {
debugMessage("Adding xsltProviderListeners queue: " + queueName, writers);
xsltProviderListeners.add(queueName);
}
}
}
}
debugMessage("Initialize jms senders", writers);
iterator = jmsSenders.iterator();
while (queues != null && iterator.hasNext()) {
String queueName = (String) iterator.next();
String queue = (String) properties.get(queueName + ".queue");
if (queue == null) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not find property '" + queueName + ".queue'", writers);
} else {
JmsSender jmsSender = (JmsSender) ibisContext.createBeanAutowireByName(JmsSender.class);
jmsSender.setName("Test Tool JmsSender");
jmsSender.setDestinationName(queue);
jmsSender.setDestinationType("QUEUE");
jmsSender.setAcknowledgeMode("auto");
String jmsRealm = (String) properties.get(queueName + ".jmsRealm");
if (jmsRealm != null) {
jmsSender.setJmsRealm(jmsRealm);
} else {
jmsSender.setJmsRealm("default");
}
String deliveryMode = properties.getProperty(queueName + ".deliveryMode");
debugMessage("Property '" + queueName + ".deliveryMode': " + deliveryMode, writers);
String persistent = properties.getProperty(queueName + ".persistent");
debugMessage("Property '" + queueName + ".persistent': " + persistent, writers);
String useCorrelationIdFrom = properties.getProperty(queueName + ".useCorrelationIdFrom");
debugMessage("Property '" + queueName + ".useCorrelationIdFrom': " + useCorrelationIdFrom, writers);
String replyToName = properties.getProperty(queueName + ".replyToName");
debugMessage("Property '" + queueName + ".replyToName': " + replyToName, writers);
if (deliveryMode != null) {
debugMessage("Set deliveryMode to " + deliveryMode, writers);
jmsSender.setDeliveryMode(deliveryMode);
}
if ("true".equals(persistent)) {
debugMessage("Set persistent to true", writers);
jmsSender.setPersistent(true);
} else {
debugMessage("Set persistent to false", writers);
jmsSender.setPersistent(false);
}
if (replyToName != null) {
debugMessage("Set replyToName to " + replyToName, writers);
jmsSender.setReplyToName(replyToName);
}
Map jmsSenderInfo = new HashMap();
jmsSenderInfo.put("jmsSender", jmsSender);
jmsSenderInfo.put("useCorrelationIdFrom", useCorrelationIdFrom);
String correlationId = properties.getProperty(queueName + ".jmsCorrelationId");
if (correlationId != null) {
jmsSenderInfo.put("jmsCorrelationId", correlationId);
debugMessage("Property '" + queueName + ".jmsCorrelationId': " + correlationId, writers);
}
queues.put(queueName, jmsSenderInfo);
debugMessage("Opened jms sender '" + queueName + "'", writers);
}
}
debugMessage("Initialize jms listeners", writers);
iterator = jmsListeners.iterator();
while (queues != null && iterator.hasNext()) {
String queueName = (String) iterator.next();
String queue = (String) properties.get(queueName + ".queue");
String timeout = (String) properties.get(queueName + ".timeout");
int nTimeout = DEFAULT_TIMEOUT;
if (timeout != null && timeout.length() > 0) {
nTimeout = Integer.parseInt(timeout);
debugMessage("Overriding default timeout setting of " + DEFAULT_TIMEOUT + " with " + nTimeout, writers);
}
if (queue == null) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not find property '" + queueName + ".queue'", writers);
} else {
PullingJmsListener pullingJmsListener = (PullingJmsListener) ibisContext.createBeanAutowireByName(PullingJmsListener.class);
pullingJmsListener.setName("Test Tool JmsListener");
pullingJmsListener.setDestinationName(queue);
pullingJmsListener.setDestinationType("QUEUE");
pullingJmsListener.setAcknowledgeMode("auto");
String jmsRealm = (String) properties.get(queueName + ".jmsRealm");
if (jmsRealm != null) {
pullingJmsListener.setJmsRealm(jmsRealm);
} else {
pullingJmsListener.setJmsRealm("default");
}
// Call setJmsRealm twice as a workaround for a strange bug
// where we get a java.lang.NullPointerException in a class of
// the commons-beanutils.jar on the first call to setJmsRealm
// after starting the Test Tool ear:
// at org.apache.commons.beanutils.MappedPropertyDescriptor.internalFindMethod(MappedPropertyDescriptor.java(Compiled Code))
// at org.apache.commons.beanutils.MappedPropertyDescriptor.internalFindMethod(MappedPropertyDescriptor.java:413)
// ...
// Looks like some sort of classloader problem where
// internalFindMethod on another class is called (last line in
// stacktrace has "Compiled Code" while other lines have
// linenumbers).
// Can be reproduced with for example:
// - WebSphere Studio Application Developer (Windows) Version: 5.1.2
// - Ibis4Juice build 20051104-1351
// - y01\rr\getAgent1003\scenario01.properties
pullingJmsListener.setTimeOut(nTimeout);
String setForceMessageIdAsCorrelationId = (String) properties.get(queueName + ".setForceMessageIdAsCorrelationId");
if ("true".equals(setForceMessageIdAsCorrelationId)) {
pullingJmsListener.setForceMessageIdAsCorrelationId(true);
}
Map jmsListenerInfo = new HashMap();
jmsListenerInfo.put("jmsListener", pullingJmsListener);
queues.put(queueName, jmsListenerInfo);
debugMessage("Opened jms listener '" + queueName + "'", writers);
if (jmsCleanUp(queueName, pullingJmsListener, writers)) {
errorMessage("Found one or more old messages on queue '" + queueName + "', you might want to run your tests with a higher 'wait before clean up' value", writers);
}
}
}
debugMessage("Initialize jdbc fixed query senders", writers);
iterator = jdbcFixedQuerySenders.iterator();
while (queues != null && iterator.hasNext()) {
String name = (String) iterator.next();
String datasourceName = (String) properties.get(name + ".datasourceName");
String username = (String) properties.get(name + ".username");
String password = (String) properties.get(name + ".password");
boolean allFound = false;
String preDelete = "";
int preDeleteIndex = 1;
String queryType = (String) properties.get(name + ".queryType");
String getBlobSmartString = (String) properties.get(name + ".getBlobSmart");
boolean getBlobSmart = false;
if (getBlobSmartString != null) {
getBlobSmart = Boolean.valueOf(getBlobSmartString).booleanValue();
}
if (datasourceName == null) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not find datasourceName property for " + name, writers);
} else {
Map querySendersInfo = new HashMap();
while (!allFound && queues != null) {
preDelete = (String) properties.get(name + ".preDel" + preDeleteIndex);
if (preDelete != null) {
FixedQuerySender deleteQuerySender = (FixedQuerySender) ibisContext.createBeanAutowireByName(FixedQuerySender.class);
deleteQuerySender.setName("Test Tool pre delete query sender");
deleteQuerySender.setDatasourceName(AppConstants.getInstance().getResolvedProperty("jndiContextPrefix") + datasourceName);
deleteQuerySender.setQueryType("delete");
deleteQuerySender.setQuery("delete from " + preDelete);
try {
deleteQuerySender.configure();
deleteQuerySender.open();
deleteQuerySender.sendMessage(TESTTOOL_CORRELATIONID, TESTTOOL_DUMMY_MESSAGE);
deleteQuerySender.close();
} catch (ConfigurationException e) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not configure '" + name + "': " + e.getMessage(), e, writers);
} catch (TimeOutException e) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Time out on execute pre delete query for '" + name + "': " + e.getMessage(), e, writers);
} catch (SenderException e) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not execute pre delete query for '" + name + "': " + e.getMessage(), e, writers);
}
preDeleteIndex++;
} else {
allFound = true;
}
}
if (queues != null) {
String prePostQuery = (String) properties.get(name + ".prePostQuery");
if (prePostQuery != null) {
FixedQuerySender prePostFixedQuerySender = (FixedQuerySender) ibisContext.createBeanAutowireByName(FixedQuerySender.class);
prePostFixedQuerySender.setName("Test Tool query sender");
prePostFixedQuerySender.setDatasourceName(AppConstants.getInstance().getResolvedProperty("jndiContextPrefix") + datasourceName);
// prePostFixedQuerySender.setUsername(username);
// prePostFixedQuerySender.setPassword(password);
prePostFixedQuerySender.setQueryType("select");
prePostFixedQuerySender.setQuery(prePostQuery);
try {
prePostFixedQuerySender.configure();
} catch (ConfigurationException e) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not configure '" + name + "': " + e.getMessage(), e, writers);
}
if (queues != null) {
try {
prePostFixedQuerySender.open();
} catch (SenderException e) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not open (pre/post) '" + name + "': " + e.getMessage(), e, writers);
}
}
if (queues != null) {
try {
String result = prePostFixedQuerySender.sendMessage(TESTTOOL_CORRELATIONID, TESTTOOL_DUMMY_MESSAGE);
querySendersInfo.put("prePostQueryFixedQuerySender", prePostFixedQuerySender);
querySendersInfo.put("prePostQueryResult", result);
} catch (TimeOutException e) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Time out on execute query for '" + name + "': " + e.getMessage(), e, writers);
} catch (SenderException e) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not execute query for '" + name + "': " + e.getMessage(), e, writers);
}
}
}
}
if (queues != null) {
String readQuery = (String) properties.get(name + ".readQuery");
if (readQuery != null) {
FixedQuerySender readQueryFixedQuerySender = (FixedQuerySender) ibisContext.createBeanAutowireByName(FixedQuerySender.class);
readQueryFixedQuerySender.setName("Test Tool query sender");
readQueryFixedQuerySender.setDatasourceName(AppConstants.getInstance().getResolvedProperty("jndiContextPrefix") + datasourceName);
if ((queryType != null) && (!queryType.equals(""))) {
readQueryFixedQuerySender.setQueryType(queryType);
} else {
readQueryFixedQuerySender.setQueryType("select");
}
readQueryFixedQuerySender.setQuery(readQuery);
readQueryFixedQuerySender.setBlobSmartGet(getBlobSmart);
try {
readQueryFixedQuerySender.configure();
} catch (ConfigurationException e) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not configure '" + name + "': " + e.getMessage(), e, writers);
}
if (queues != null) {
try {
readQueryFixedQuerySender.open();
querySendersInfo.put("readQueryQueryFixedQuerySender", readQueryFixedQuerySender);
} catch (SenderException e) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not open '" + name + "': " + e.getMessage(), e, writers);
}
}
}
}
if (queues != null) {
String waitBeforeRead = (String) properties.get(name + ".waitBeforeRead");
if (waitBeforeRead != null) {
try {
querySendersInfo.put("readQueryWaitBeforeRead", new Integer(waitBeforeRead));
} catch (NumberFormatException e) {
errorMessage("Value of '" + name + ".waitBeforeRead' not a number: " + e.getMessage(), e, writers);
}
}
queues.put(name, querySendersInfo);
debugMessage("Opened jdbc connection '" + name + "'", writers);
}
}
}
debugMessage("Initialize ibis web service senders", writers);
iterator = ibisWebServiceSenders.iterator();
while (queues != null && iterator.hasNext()) {
String name = (String) iterator.next();
String ibisHost = (String) properties.get(name + ".ibisHost");
String ibisInstance = (String) properties.get(name + ".ibisInstance");
String serviceName = (String) properties.get(name + ".serviceName");
Boolean convertExceptionToMessage = new Boolean((String) properties.get(name + ".convertExceptionToMessage"));
if (ibisHost == null) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not find ibisHost property for " + name, writers);
} else if (ibisInstance == null) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not find ibisInstance property for " + name, writers);
} else if (serviceName == null) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not find serviceName property for " + name, writers);
} else {
IbisWebServiceSender ibisWebServiceSender = new IbisWebServiceSender();
ibisWebServiceSender.setName("Test Tool IbisWebServiceSender");
ibisWebServiceSender.setIbisHost(ibisHost);
ibisWebServiceSender.setIbisInstance(ibisInstance);
ibisWebServiceSender.setServiceName(serviceName);
try {
ibisWebServiceSender.configure();
} catch (ConfigurationException e) {
errorMessage("Could not configure '" + name + "': " + e.getMessage(), e, writers);
closeQueues(queues, properties, writers);
queues = null;
}
try {
ibisWebServiceSender.open();
} catch (SenderException e) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not open '" + name + "': " + e.getMessage(), e, writers);
}
if (queues != null) {
Map ibisWebServiceSenderInfo = new HashMap();
ibisWebServiceSenderInfo.put("ibisWebServiceSender", ibisWebServiceSender);
ibisWebServiceSenderInfo.put("convertExceptionToMessage", convertExceptionToMessage);
queues.put(name, ibisWebServiceSenderInfo);
debugMessage("Opened ibis web service sender '" + name + "'", writers);
}
}
}
debugMessage("Initialize web service senders", writers);
iterator = webServiceSenders.iterator();
while (queues != null && iterator.hasNext()) {
String name = (String) iterator.next();
Boolean convertExceptionToMessage = new Boolean((String) properties.get(name + ".convertExceptionToMessage"));
String url = (String) properties.get(name + ".url");
String userName = (String) properties.get(name + ".userName");
String password = (String) properties.get(name + ".password");
String soap = (String) properties.get(name + ".soap");
String allowSelfSignedCertificates = (String) properties.get(name + ".allowSelfSignedCertificates");
if (url == null) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not find url property for " + name, writers);
} else {
WebServiceSender webServiceSender = new WebServiceSender();
webServiceSender.setName("Test Tool WebServiceSender");
webServiceSender.setUrl(url);
webServiceSender.setUserName(userName);
webServiceSender.setPassword(password);
if (soap != null) {
webServiceSender.setSoap(new Boolean(soap));
}
if (allowSelfSignedCertificates != null) {
webServiceSender.setAllowSelfSignedCertificates(new Boolean(allowSelfSignedCertificates));
}
String serviceNamespaceURI = (String) properties.get(name + ".serviceNamespaceURI");
if (serviceNamespaceURI != null) {
webServiceSender.setServiceNamespaceURI(serviceNamespaceURI);
}
String serviceNamespace = (String) properties.get(name + ".serviceNamespace");
if (serviceNamespace != null) {
webServiceSender.setServiceNamespace(serviceNamespace);
}
try {
webServiceSender.configure();
} catch (ConfigurationException e) {
errorMessage("Could not configure '" + name + "': " + e.getMessage(), e, writers);
closeQueues(queues, properties, writers);
queues = null;
}
if (queues != null) {
try {
webServiceSender.open();
} catch (SenderException e) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not open '" + name + "': " + e.getMessage(), e, writers);
}
if (queues != null) {
Map webServiceSenderInfo = new HashMap();
webServiceSenderInfo.put("webServiceSender", webServiceSender);
webServiceSenderInfo.put("convertExceptionToMessage", convertExceptionToMessage);
queues.put(name, webServiceSenderInfo);
debugMessage("Opened web service sender '" + name + "'", writers);
}
}
}
}
debugMessage("Initialize web service listeners", writers);
iterator = webServiceListeners.iterator();
while (queues != null && iterator.hasNext()) {
String name = (String) iterator.next();
String serviceNamespaceURI = (String) properties.get(name + ".serviceNamespaceURI");
if (serviceNamespaceURI == null) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not find property '" + name + ".serviceNamespaceURI'", writers);
} else {
ListenerMessageHandler listenerMessageHandler = new ListenerMessageHandler();
try {
long requestTimeOut = Long.parseLong((String) properties.get(name + ".requestTimeOut"));
listenerMessageHandler.setRequestTimeOut(requestTimeOut);
debugMessage("Request time out set to '" + requestTimeOut + "'", writers);
} catch (Exception e) {
}
try {
long responseTimeOut = Long.parseLong((String) properties.get(name + ".responseTimeOut"));
listenerMessageHandler.setResponseTimeOut(responseTimeOut);
debugMessage("Response time out set to '" + responseTimeOut + "'", writers);
} catch (Exception e) {
}
WebServiceListener webServiceListener = new WebServiceListener();
webServiceListener.setName("Test Tool WebServiceListener");
webServiceListener.setServiceNamespaceURI(serviceNamespaceURI);
webServiceListener.setHandler(listenerMessageHandler);
try {
webServiceListener.open();
} catch (ListenerException e) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not open web service listener '" + name + "': " + e.getMessage(), e, writers);
}
Map webServiceListenerInfo = new HashMap();
webServiceListenerInfo.put("webServiceListener", webServiceListener);
webServiceListenerInfo.put("listenerMessageHandler", listenerMessageHandler);
queues.put(name, webServiceListenerInfo);
ServiceDispatcher serviceDispatcher = ServiceDispatcher.getInstance();
try {
serviceDispatcher.registerServiceClient(serviceNamespaceURI, webServiceListener);
debugMessage("Opened web service listener '" + name + "'", writers);
} catch (ListenerException e) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not open web service listener '" + name + "': " + e.getMessage(), e, writers);
}
}
}
debugMessage("Initialize http senders", writers);
iterator = httpSenders.iterator();
while (queues != null && iterator.hasNext()) {
String name = (String) iterator.next();
Boolean convertExceptionToMessage = new Boolean((String) properties.get(name + ".convertExceptionToMessage"));
String url = (String) properties.get(name + ".url");
String userName = (String) properties.get(name + ".userName");
String password = (String) properties.get(name + ".password");
String headerParams = (String) properties.get(name + ".headersParams");
String xhtmlString = (String) properties.get(name + ".xhtml");
String methodtype = (String) properties.get(name + ".methodType");
String paramsInUrlString = (String) properties.get(name + ".paramsInUrl");
String inputMessageParam = (String) properties.get(name + ".inputMessageParam");
String multipartString = (String) properties.get(name + ".multipart");
String styleSheetName = (String) properties.get(name + ".styleSheetName");
if (url == null) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not find url property for " + name, writers);
} else {
HttpSender httpSender = null;
ParameterResolutionContext parameterResolutionContext = null;
ClassLoader originalClassLoader = Thread.currentThread().getContextClassLoader();
try {
// Use directoryClassLoader to make it possible to specify
// styleSheetName relative to the scenarioDirectory.
DirectoryClassLoader directoryClassLoader = new DirectoryClassLoader(scenarioDirectory);
Thread.currentThread().setContextClassLoader(directoryClassLoader);
httpSender = new HttpSender();
httpSender.setName("Test Tool HttpSender");
httpSender.setUrl(url);
httpSender.setUserName(userName);
httpSender.setPassword(password);
httpSender.setHeadersParams(headerParams);
if (StringUtils.isNotEmpty(xhtmlString)) {
httpSender.setXhtml(Boolean.valueOf(xhtmlString).booleanValue());
}
if (StringUtils.isNotEmpty(methodtype)) {
httpSender.setMethodType(methodtype);
}
if (StringUtils.isNotEmpty(paramsInUrlString)) {
httpSender.setParamsInUrl(Boolean.valueOf(paramsInUrlString).booleanValue());
}
if (StringUtils.isNotEmpty(inputMessageParam)) {
httpSender.setInputMessageParam(inputMessageParam);
}
if (StringUtils.isNotEmpty(multipartString)) {
httpSender.setMultipart(Boolean.valueOf(multipartString).booleanValue());
}
if (StringUtils.isNotEmpty(styleSheetName)) {
httpSender.setStyleSheetName(styleSheetName);
}
parameterResolutionContext = new ParameterResolutionContext();
parameterResolutionContext.setSession(new PipeLineSessionBase());
Map paramPropertiesMap = createParametersMapFromParamProperties(properties, name, writers, true, parameterResolutionContext);
Iterator parameterNameIterator = paramPropertiesMap.keySet().iterator();
while (parameterNameIterator.hasNext()) {
String parameterName = (String) parameterNameIterator.next();
Parameter parameter = (Parameter) paramPropertiesMap.get(parameterName);
httpSender.addParameter(parameter);
}
httpSender.configure();
} catch (ConfigurationException e) {
errorMessage("Could not configure '" + name + "': " + e.getMessage(), e, writers);
closeQueues(queues, properties, writers);
queues = null;
} finally {
if (originalClassLoader != null) {
Thread.currentThread().setContextClassLoader(originalClassLoader);
}
}
if (queues != null) {
try {
httpSender.open();
} catch (SenderException e) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not open '" + name + "': " + e.getMessage(), e, writers);
}
if (queues != null) {
Map httpSenderInfo = new HashMap();
httpSenderInfo.put("httpSender", httpSender);
httpSenderInfo.put("parameterResolutionContext", parameterResolutionContext);
httpSenderInfo.put("convertExceptionToMessage", convertExceptionToMessage);
queues.put(name, httpSenderInfo);
debugMessage("Opened http sender '" + name + "'", writers);
}
}
}
}
debugMessage("Initialize ibis java senders", writers);
iterator = ibisJavaSenders.iterator();
while (queues != null && iterator.hasNext()) {
String name = (String) iterator.next();
String serviceName = (String) properties.get(name + ".serviceName");
Boolean convertExceptionToMessage = new Boolean((String) properties.get(name + ".convertExceptionToMessage"));
if (serviceName == null) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not find serviceName property for " + name, writers);
} else {
IbisJavaSender ibisJavaSender = new IbisJavaSender();
ibisJavaSender.setName("Test Tool IbisJavaSender");
ibisJavaSender.setServiceName(serviceName);
ParameterResolutionContext parameterResolutionContext = new ParameterResolutionContext();
parameterResolutionContext.setSession(new PipeLineSessionBase());
Map paramPropertiesMap = createParametersMapFromParamProperties(properties, name, writers, true, parameterResolutionContext);
Iterator parameterNameIterator = paramPropertiesMap.keySet().iterator();
while (parameterNameIterator.hasNext()) {
String parameterName = (String) parameterNameIterator.next();
Parameter parameter = (Parameter) paramPropertiesMap.get(parameterName);
ibisJavaSender.addParameter(parameter);
}
try {
ibisJavaSender.configure();
} catch (ConfigurationException e) {
errorMessage("Could not configure '" + name + "': " + e.getMessage(), e, writers);
closeQueues(queues, properties, writers);
queues = null;
}
if (queues != null) {
try {
ibisJavaSender.open();
} catch (SenderException e) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not open '" + name + "': " + e.getMessage(), e, writers);
}
if (queues != null) {
Map ibisJavaSenderInfo = new HashMap();
ibisJavaSenderInfo.put("ibisJavaSender", ibisJavaSender);
ibisJavaSenderInfo.put("parameterResolutionContext", parameterResolutionContext);
ibisJavaSenderInfo.put("convertExceptionToMessage", convertExceptionToMessage);
queues.put(name, ibisJavaSenderInfo);
debugMessage("Opened ibis java sender '" + name + "'", writers);
}
}
}
}
debugMessage("Initialize delay senders", writers);
iterator = delaySenders.iterator();
while (queues != null && iterator.hasNext()) {
String name = (String) iterator.next();
Boolean convertExceptionToMessage = new Boolean((String) properties.get(name + ".convertExceptionToMessage"));
String delayTime = (String) properties.get(name + ".delayTime");
DelaySender delaySender = new DelaySender();
if (delayTime != null) {
delaySender.setDelayTime(Long.parseLong(delayTime));
}
delaySender.setName("Test Tool DelaySender");
Map delaySenderInfo = new HashMap();
delaySenderInfo.put("delaySender", delaySender);
delaySenderInfo.put("convertExceptionToMessage", convertExceptionToMessage);
queues.put(name, delaySenderInfo);
debugMessage("Opened delay sender '" + name + "'", writers);
}
debugMessage("Initialize java listeners", writers);
iterator = javaListeners.iterator();
while (queues != null && iterator.hasNext()) {
String name = (String) iterator.next();
String serviceName = (String) properties.get(name + ".serviceName");
if (serviceName == null) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not find property '" + name + ".serviceName'", writers);
} else {
ListenerMessageHandler listenerMessageHandler = new ListenerMessageHandler();
try {
long requestTimeOut = Long.parseLong((String) properties.get(name + ".requestTimeOut"));
listenerMessageHandler.setRequestTimeOut(requestTimeOut);
debugMessage("Request time out set to '" + requestTimeOut + "'", writers);
} catch (Exception e) {
}
try {
long responseTimeOut = Long.parseLong((String) properties.get(name + ".responseTimeOut"));
listenerMessageHandler.setResponseTimeOut(responseTimeOut);
debugMessage("Response time out set to '" + responseTimeOut + "'", writers);
} catch (Exception e) {
}
JavaListener javaListener = new JavaListener();
javaListener.setName("Test Tool JavaListener");
javaListener.setServiceName(serviceName);
javaListener.setHandler(listenerMessageHandler);
try {
javaListener.open();
Map javaListenerInfo = new HashMap();
javaListenerInfo.put("javaListener", javaListener);
javaListenerInfo.put("listenerMessageHandler", listenerMessageHandler);
queues.put(name, javaListenerInfo);
debugMessage("Opened java listener '" + name + "'", writers);
} catch (ListenerException e) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not open java listener '" + name + "': " + e.getMessage(), e, writers);
}
}
}
debugMessage("Initialize file senders", writers);
iterator = fileSenders.iterator();
while (queues != null && iterator.hasNext()) {
String queueName = (String) iterator.next();
String filename = (String) properties.get(queueName + ".filename");
if (filename == null) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not find filename property for " + queueName, writers);
} else {
FileSender fileSender = new FileSender();
String filenameAbsolutePath = (String) properties.get(queueName + ".filename.absolutepath");
fileSender.setFilename(filenameAbsolutePath);
String encoding = (String) properties.get(queueName + ".encoding");
if (encoding != null) {
fileSender.setEncoding(encoding);
debugMessage("Encoding set to '" + encoding + "'", writers);
}
String deletePathString = (String) properties.get(queueName + ".deletePath");
if (deletePathString != null) {
boolean deletePath = Boolean.valueOf(deletePathString).booleanValue();
fileSender.setDeletePath(deletePath);
debugMessage("Delete path set to '" + deletePath + "'", writers);
}
String createPathString = (String) properties.get(queueName + ".createPath");
if (createPathString != null) {
boolean createPath = Boolean.valueOf(createPathString).booleanValue();
fileSender.setCreatePath(createPath);
debugMessage("Create path set to '" + createPath + "'", writers);
}
try {
String checkDeleteString = (String) properties.get(queueName + ".checkDelete");
if (checkDeleteString != null) {
boolean checkDelete = Boolean.valueOf(checkDeleteString).booleanValue();
fileSender.setCheckDelete(checkDelete);
debugMessage("Check delete set to '" + checkDelete + "'", writers);
}
} catch (Exception e) {
}
try {
String runAntString = (String) properties.get(queueName + ".runAnt");
if (runAntString != null) {
boolean runAnt = Boolean.valueOf(runAntString).booleanValue();
fileSender.setRunAnt(runAnt);
debugMessage("Run ant set to '" + runAnt + "'", writers);
}
} catch (Exception e) {
}
try {
long timeOut = Long.parseLong((String) properties.get(queueName + ".timeOut"));
fileSender.setTimeOut(timeOut);
debugMessage("Time out set to '" + timeOut + "'", writers);
} catch (Exception e) {
}
try {
long interval = Long.parseLong((String) properties.get(queueName + ".interval"));
fileSender.setInterval(interval);
debugMessage("Interval set to '" + interval + "'", writers);
} catch (Exception e) {
}
try {
String overwriteString = (String) properties.get(queueName + ".overwrite");
if (overwriteString != null) {
debugMessage("OverwriteString = " + overwriteString, writers);
boolean overwrite = Boolean.valueOf(overwriteString).booleanValue();
fileSender.setOverwrite(overwrite);
debugMessage("Overwrite set to '" + overwrite + "'", writers);
}
} catch (Exception e) {
}
Map fileSenderInfo = new HashMap();
fileSenderInfo.put("fileSender", fileSender);
queues.put(queueName, fileSenderInfo);
debugMessage("Opened file sender '" + queueName + "'", writers);
}
}
debugMessage("Initialize file listeners", writers);
iterator = fileListeners.iterator();
while (queues != null && iterator.hasNext()) {
String queueName = (String) iterator.next();
String filename = (String) properties.get(queueName + ".filename");
String filename2 = (String) properties.get(queueName + ".filename2");
String directory = null;
String wildcard = null;
if (filename == null) {
directory = (String) properties.get(queueName + ".directory");
wildcard = (String) properties.get(queueName + ".wildcard");
}
if (filename == null && directory == null) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not find filename or directory property for " + queueName, writers);
} else if (directory != null && wildcard == null) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not find wildcard property for " + queueName, writers);
} else {
FileListener fileListener = new FileListener();
if (filename == null) {
String directoryAbsolutePath = (String) properties.get(queueName + ".directory.absolutepath");
;
fileListener.setDirectory(directoryAbsolutePath);
fileListener.setWildcard(wildcard);
} else {
String filenameAbsolutePath = (String) properties.get(queueName + ".filename.absolutepath");
;
fileListener.setFilename(filenameAbsolutePath);
}
try {
long waitBeforeRead = Long.parseLong((String) properties.get(queueName + ".waitBeforeRead"));
fileListener.setWaitBeforeRead(waitBeforeRead);
debugMessage("Wait before read set to '" + waitBeforeRead + "'", writers);
} catch (Exception e) {
}
try {
long timeOut = Long.parseLong((String) properties.get(queueName + ".timeOut"));
fileListener.setTimeOut(timeOut);
debugMessage("Time out set to '" + timeOut + "'", writers);
} catch (Exception e) {
}
try {
long interval = Long.parseLong((String) properties.get(queueName + ".interval"));
fileListener.setInterval(interval);
debugMessage("Interval set to '" + interval + "'", writers);
} catch (Exception e) {
}
if (filename2 != null) {
fileListener.setFilename2(filename2);
}
Map fileListenerInfo = new HashMap();
fileListenerInfo.put("fileListener", fileListener);
queues.put(queueName, fileListenerInfo);
debugMessage("Opened file listener '" + queueName + "'", writers);
if (fileListenerCleanUp(queueName, fileListener, writers)) {
errorMessage("Found old messages on '" + queueName + "'", writers);
}
}
}
debugMessage("Initialize xslt provider listeners", writers);
iterator = xsltProviderListeners.iterator();
while (queues != null && iterator.hasNext()) {
String queueName = (String) iterator.next();
String filename = (String) properties.get(queueName + ".filename");
if (filename == null) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not find filename property for " + queueName, writers);
} else {
Boolean fromClasspath = new Boolean((String) properties.get(queueName + ".fromClasspath"));
if (!fromClasspath) {
filename = (String) properties.get(queueName + ".filename.absolutepath");
}
XsltProviderListener xsltProviderListener = new XsltProviderListener();
xsltProviderListener.setFromClasspath(fromClasspath);
xsltProviderListener.setFilename(filename);
String xslt2String = (String) properties.get(queueName + ".xslt2");
if (xslt2String != null) {
try {
boolean xslt2 = Boolean.valueOf(xslt2String).booleanValue();
xsltProviderListener.setXslt2(xslt2);
debugMessage("Xslt2 set to '" + xslt2 + "'", writers);
} catch (Exception e) {
}
}
String namespaceAwareString = (String) properties.get(queueName + ".namespaceAware");
if (namespaceAwareString != null) {
try {
boolean namespaceAware = Boolean.valueOf(namespaceAwareString).booleanValue();
xsltProviderListener.setNamespaceAware(namespaceAware);
debugMessage("Namespace aware set to '" + namespaceAware + "'", writers);
} catch (Exception e) {
}
}
try {
xsltProviderListener.init();
Map xsltProviderListenerInfo = new HashMap();
xsltProviderListenerInfo.put("xsltProviderListener", xsltProviderListener);
queues.put(queueName, xsltProviderListenerInfo);
debugMessage("Opened xslt provider listener '" + queueName + "'", writers);
} catch (ListenerException e) {
closeQueues(queues, properties, writers);
queues = null;
errorMessage("Could not create xslt provider listener for '" + queueName + "': " + e.getMessage(), e, writers);
}
}
}
return queues;
}
Aggregations