/*
* Copyright(c) 2005 Center for E-Commerce Infrastructure Development, The
* University of Hong Kong (HKU). All Rights Reserved.
*
* This software is licensed under the GNU GENERAL PUBLIC LICENSE Version 2.0 [1]
*
* [1] http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
*/
package hk.hku.cecid.ebms.spa.listener;
import hk.hku.cecid.ebms.pkg.EbxmlMessage;
import hk.hku.cecid.piazza.commons.servlet.RequestListenerException;
import hk.hku.cecid.piazza.commons.soap.SOAPHttpAdaptor;
import hk.hku.cecid.piazza.commons.soap.SOAPRequest;
import hk.hku.cecid.piazza.commons.soap.SOAPRequestException;
import hk.hku.cecid.piazza.commons.soap.SOAPResponse;
/**
* @author Donahue Sze
*
* Window - Preferences - Java - Code Style - Code Templates
*/
public abstract class EbmsAdaptor extends SOAPHttpAdaptor {
public abstract void processRequest(EbmsRequest request,
EbmsResponse response) throws RequestListenerException;
public void processRequest(SOAPRequest soapRequest,
SOAPResponse soapResponse) throws SOAPRequestException {
try {
EbxmlMessage ebxmlRequestMessage = new EbxmlMessage(soapRequest
.getMessage());
ebxmlRequestMessage.setBytes(soapRequest.getBytes());
EbmsRequest ebmsRequest = new EbmsRequest(soapRequest);
ebmsRequest.setMessage(ebxmlRequestMessage);
EbmsResponse ebmsResponse = new EbmsResponse(soapResponse);
processRequest(ebmsRequest, ebmsResponse);
EbxmlMessage ebxmlResponseMessage = ebmsResponse.getMessage();
if (ebxmlResponseMessage != null) {
soapResponse.setMessage(ebxmlResponseMessage.getSOAPMessage());
} else {
// Modified by Steve Chan
// Empty HTTP BODY response for async request
soapResponse.setMessage(null);
}
} catch (Throwable e) {
throw new SOAPRequestException("Error in processing EbXML message",
e);
}
}
}