Implementation outlines for an example sender

The following code and pseudocode outline example implementations for senders.

Example sender

This section contains an outline of a sender handler implementation. You should add protocol-specific code.

public class CustomJMSSender implements SenderInterface {

SenderResult result = new SenderResult(); 
Config deliveryConfig;

public CustomJMSSender() {
... 
} 

public void init(Context context, Config deliveryConfig) 
throws BCGSenderException {

// initialization code
// deliveryConfig gives the gateway configuration
this.deiveryConfig = deliveryConfig;

// initialize sender using gateway configuration.
... 
} 

public SenderResult send(BusinessDocumentInterface document) {
try {
// Obtain configuration information from gateway configuration.
// from the configuration and document, determine destination details
// for sending like queue names, JMS connection details, retries, 
// business protocol specific transport headers and so forth.
...

// get the document to send
File documentFile = document.getDocument(); 

// read the file contents. 
// establish transport connection. construct transport message.
// send the transport message. perform retries if error.
...

// check if response is desired
String syncResp = document.getAttribute(
BCGDocumentConstants.BCG_GET_SYNC_RESPONSE);

if (syncResp.compareToIgnoreCase("true")){
// read the response from the response queue
...

// create response file
File responseFile = document.createFile();

// store the response on to file system
...

// set the response in the result
result.setResponse(responseFile); 
}

// close transport connection
...

// set the send status
result.setSendStatus(BCGDocumentConstants.BCG_SENT_STATUS_SUCCESS);
} catch(Exception ex) {
//create an event and add to the sender result
String[] params = new String[1];
params[0] = "CustomJMSSender.send failure: " + ex.getMessage(); 
EventInfo eventInfo = EventInfo("BCG250008", document, params); 
result.addEvent(eventInfo); 
result.setSendStatus(BCGDocumentConstants.BCG_SENT_STATUS_FAILED);
} 
return result; 
}

public SenderResult cancel(){
// if currently sending a document, cancel the sending.
// update the send status appropriately.
...

return result;
}
}

Copyright IBM Corp. 2003, 2005