in modules/core/src/main/java/org/apache/savan/eventing/EventingMessageReceiverDelegator.java [59:127]
private void handleSubscriptionRequest(SavanMessageContext subscriptionMessage,
MessageContext outMessage) throws SavanException {
if (outMessage == null)
throw new SavanException("Missing outMessage for Subscribe");
MessageContext subscriptionMsgCtx = subscriptionMessage.getMessageContext();
SOAPEnvelope outMessageEnvelope = outMessage.getEnvelope();
SOAPFactory factory;
if (outMessageEnvelope != null) {
factory = (SOAPFactory)outMessageEnvelope.getOMFactory();
} else {
factory = (SOAPFactory)subscriptionMsgCtx.getEnvelope().getOMFactory();
outMessageEnvelope = factory.getDefaultEnvelope();
try {
outMessage.setEnvelope(outMessageEnvelope);
} catch (AxisFault e) {
throw new SavanException(e);
}
}
//setting the action
outMessage.getOptions().setAction(EventingConstants.Actions.SubscribeResponse);
//sending the subscription response message.
String address = subscriptionMsgCtx.getOptions().getTo().getAddress();
EndpointReference subscriptionManagerEPR = new EndpointReference(address);
String id = (String)subscriptionMessage
.getProperty(EventingConstants.TransferedProperties.SUBSCRIBER_UUID);
if (id == null)
throw new SavanException("Subscription UUID is not set");
subscriptionManagerEPR.addReferenceParameter(
new QName(EventingConstants.EVENTING_NAMESPACE,
EventingConstants.ElementNames.Identifier,
EventingConstants.EVENTING_PREFIX),
id);
OMNamespace ens = factory.createOMNamespace(EventingConstants.EVENTING_NAMESPACE,
EventingConstants.EVENTING_PREFIX);
OMElement subscribeResponseElement =
factory.createOMElement(EventingConstants.ElementNames.SubscribeResponse, ens);
OMElement subscriptionManagerElement;
try {
subscriptionManagerElement = EndpointReferenceHelper.toOM(
subscribeResponseElement.getOMFactory(),
subscriptionManagerEPR,
new QName(EventingConstants.EVENTING_NAMESPACE,
EventingConstants.ElementNames.SubscriptionManager,
EventingConstants.EVENTING_PREFIX),
AddressingConstants.Submission.WSA_NAMESPACE);
} catch (AxisFault e) {
throw new SavanException(e);
}
//TODO set expires
subscribeResponseElement.addChild(subscriptionManagerElement);
outMessageEnvelope.getBody().addChild(subscribeResponseElement);
//setting the message type
outMessage.setProperty(SavanConstants.MESSAGE_TYPE,
SavanConstants.MessageTypes.SUBSCRIPTION_RESPONSE_MESSAGE);
}