private void handleRenewRequest()

in modules/core/src/main/java/org/apache/savan/eventing/EventingMessageReceiverDelegator.java [129:195]


    private void handleRenewRequest(SavanMessageContext renewMessage, MessageContext outMessage)
            throws SavanException {

        if (outMessage == null)
            throw new SavanException("Missing outMessage for Renew");

        MessageContext subscriptionMsgCtx = renewMessage.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.RenewResponse);

        OMNamespace ens = factory.createOMNamespace(EventingConstants.EVENTING_NAMESPACE,
                                                    EventingConstants.EVENTING_PREFIX);

        //sending the Renew Response message.
        OMElement renewResponseElement =
                factory.createOMElement(EventingConstants.ElementNames.RenewResponse, ens);
        String subscriberID = (String)renewMessage
                .getProperty(EventingConstants.TransferedProperties.SUBSCRIBER_UUID);
        if (subscriberID == null) {
            String message = "SubscriberID TransferedProperty is not set";
            throw new SavanException(message);
        }

        SubscriberStore store =
                CommonUtil.getSubscriberStore(renewMessage.getMessageContext().getAxisService());
        Subscriber subscriber = store.retrieve(subscriberID);
        EventingSubscriber eventingSubscriber = (EventingSubscriber)subscriber;
        if (eventingSubscriber == null) {
            String message = "Cannot find the AbstractSubscriber with the given ID";
            throw new SavanException(message);
        }

        Date expiration = eventingSubscriber.getSubscriptionEndingTime();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(expiration);

        String expiresValue = ConverterUtil.convertToString(calendar);

        if (expiresValue != null) {
            OMElement expiresElement =
                    factory.createOMElement(EventingConstants.ElementNames.Expires, ens);
            renewResponseElement.addChild(expiresElement);
        }

        outMessageEnvelope.getBody().addChild(renewResponseElement);

        //setting the message type
        outMessage.setProperty(SavanConstants.MESSAGE_TYPE,
                               SavanConstants.MessageTypes.RENEW_RESPONSE_MESSAGE);
    }