in modules/core/src/main/java/org/apache/savan/atom/AtomMessageReceiverDelegator.java [68:119]
public void handleSubscriptionRequest(SavanMessageContext subscriptionMessage,
MessageContext outMessage) throws SavanException {
try {
if (outMessage != null) {
MessageContext subscriptionMsgCtx = subscriptionMessage.getMessageContext();
SOAPEnvelope outMessageEnvelope =
findOrCreateSoapEnvelope(subscriptionMessage, outMessage);
//setting the action
outMessage.getOptions().setAction(AtomConstants.Actions.SubscribeResponse);
CreateFeedResponseDocument createFeedResponseDocument =
CreateFeedResponseDocument.Factory.newInstance();
CreateFeedResponse createFeedResponse =
createFeedResponseDocument.addNewCreateFeedResponse();
EndpointReferenceType savenEpr = createFeedResponse.addNewSubscriptionManager();
savenEpr.addNewAddress()
.setStringValue(subscriptionMsgCtx.getOptions().getTo().getAddress());
String id = (String)subscriptionMessage
.getProperty(AtomConstants.TransferedProperties.SUBSCRIBER_UUID);
if (id != null) {
XmlCursor c = savenEpr.addNewReferenceParameters().newCursor();
c.toNextToken();
addNameValuePair(c, new QName(AtomConstants.ATOM_NAMESPACE,
AtomConstants.ElementNames.Identifier), id);
} else {
throw new SavanException("Subscription UUID is not set");
}
// HttpServletRequest request = (HttpServletRequest) subscriptionMessage.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
// request.getServerPort()
createFeedResponse.setFeedUrl(
(String)subscriptionMessage.getProperty(AtomConstants.Properties.feedUrl));
outMessageEnvelope.getBody().addChild(CommonUtil.toOM(createFeedResponseDocument));
} else {
throw new SavanException(
"Eventing protocol need to sent the SubscriptionResponseMessage. But the outMessage is null");
}
//setting the message type
outMessage.setProperty(SavanConstants.MESSAGE_TYPE, new Integer(
SavanConstants.MessageTypes.SUBSCRIPTION_RESPONSE_MESSAGE));
} catch (SOAPProcessingException e) {
throw new SavanException(e);
} catch (AxisFault e) {
throw new SavanException(e);
} catch (OMException e) {
throw new SavanException(e);
}
}