in modules/core/src/main/java/org/apache/savan/eventing/EventingMessageReceiverDelegator.java [227:291]
public void handleGetStatusRequest(SavanMessageContext getStatusMessage,
MessageContext outMessage) throws SavanException {
if (outMessage == null)
throw new SavanException("Missing outMessage for getStatus!");
MessageContext getStatusContext = getStatusMessage.getMessageContext();
String id = (String)getStatusMessage
.getProperty(EventingConstants.TransferedProperties.SUBSCRIBER_UUID);
if (id == null)
throw new SavanException("Subscriber ID not found");
//setting the action
outMessage.getOptions().setAction(EventingConstants.Actions.GetStatusResponse);
SOAPEnvelope outMessageEnvelope = outMessage.getEnvelope();
SOAPFactory factory;
if (outMessageEnvelope != null) {
factory = (SOAPFactory)outMessageEnvelope.getOMFactory();
} else {
factory = (SOAPFactory)getStatusContext.getEnvelope().getOMFactory();
outMessageEnvelope = factory.getDefaultEnvelope();
try {
outMessage.setEnvelope(outMessageEnvelope);
} catch (AxisFault e) {
throw new SavanException(e);
}
}
SubscriberStore store = CommonUtil
.getSubscriberStore(getStatusMessage.getMessageContext().getAxisService());
if (store == null) {
throw new SavanException("AbstractSubscriber Store was not found");
}
EventingSubscriber subscriber = (EventingSubscriber)store.retrieve(id);
if (subscriber == null) {
throw new SavanException("AbstractSubscriber not found");
}
OMNamespace ens = factory.createOMNamespace(EventingConstants.EVENTING_NAMESPACE,
EventingConstants.EVENTING_PREFIX);
OMElement getStatusResponseElement =
factory.createOMElement(EventingConstants.ElementNames.GetStatusResponse, ens);
Date expires = subscriber.getSubscriptionEndingTime();
if (expires != null) {
OMElement expiresElement =
factory.createOMElement(EventingConstants.ElementNames.Expires, ens);
Calendar calendar = Calendar.getInstance();
calendar.setTime(expires);
String expirationString = ConverterUtil.convertToString(calendar);
expiresElement.setText(expirationString);
getStatusResponseElement.addChild(expiresElement);
}
outMessageEnvelope.getBody().addChild(getStatusResponseElement);
//setting the message type
outMessage.setProperty(SavanConstants.MESSAGE_TYPE,
SavanConstants.MessageTypes.GET_STATUS_RESPONSE_MESSAGE);
}