* Default subscription expiration to an hour
* More cleanup
git-svn-id: https://svn.apache.org/repos/asf/webservices/savan/trunk/java@688255 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/modules/core/src/main/java/org/apache/savan/eventing/EventingConstants.java b/modules/core/src/main/java/org/apache/savan/eventing/EventingConstants.java
index 5070296..31ba079 100644
--- a/modules/core/src/main/java/org/apache/savan/eventing/EventingConstants.java
+++ b/modules/core/src/main/java/org/apache/savan/eventing/EventingConstants.java
@@ -17,6 +17,8 @@
package org.apache.savan.eventing;
+import javax.xml.namespace.QName;
+
public interface EventingConstants {
String EVENTING_NAMESPACE = "http://schemas.xmlsoap.org/ws/2004/08/eventing";
@@ -26,6 +28,8 @@
"http://schemas.xmlsoap.org/ws/2004/08/eventing/DeliveryModes/Push";
String DEFAULT_FILTER_IDENTIFIER = FilterDialects.XPath;
+ QName EXPIRES_QNAME = new QName(
+ EventingConstants.EVENTING_NAMESPACE, EventingConstants.ElementNames.Expires);
interface TransferedProperties {
String SUBSCRIBER_UUID = "SAVAN_EVENTING_SUBSCRIBER_UUID";
diff --git a/modules/core/src/main/java/org/apache/savan/eventing/EventingMessageReceiverDelegator.java b/modules/core/src/main/java/org/apache/savan/eventing/EventingMessageReceiverDelegator.java
index f0eb37e..64a8c61 100644
--- a/modules/core/src/main/java/org/apache/savan/eventing/EventingMessageReceiverDelegator.java
+++ b/modules/core/src/main/java/org/apache/savan/eventing/EventingMessageReceiverDelegator.java
@@ -40,7 +40,6 @@
import java.util.Calendar;
import java.util.Date;
-
public class EventingMessageReceiverDelegator extends MessageReceiverDelegator {
public void doProtocolSpecificProcessing(SavanMessageContext inSavanMessage,
@@ -61,13 +60,12 @@
MessageContext outMessage) throws SavanException {
if (outMessage == null)
- throw new SavanException(
- "Eventing protocol need to sent the SubscriptionResponseMessage. But the outMessage is null");
+ throw new SavanException("Missing outMessage for Subscribe");
MessageContext subscriptionMsgCtx = subscriptionMessage.getMessageContext();
SOAPEnvelope outMessageEnvelope = outMessage.getEnvelope();
- SOAPFactory factory = null;
+ SOAPFactory factory;
if (outMessageEnvelope != null) {
factory = (SOAPFactory)outMessageEnvelope.getOMFactory();
@@ -94,23 +92,25 @@
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);
+ 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 = null;
+ OMElement subscriptionManagerElement;
try {
subscriptionManagerElement = EndpointReferenceHelper.toOM(
- subscribeResponseElement.getOMFactory(), subscriptionManagerEPR, new QName(
- EventingConstants.EVENTING_NAMESPACE,
- EventingConstants.ElementNames.SubscriptionManager,
- EventingConstants.EVENTING_PREFIX),
- AddressingConstants.Submission.WSA_NAMESPACE);
+ 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);
}
@@ -121,8 +121,8 @@
outMessageEnvelope.getBody().addChild(subscribeResponseElement);
//setting the message type
- outMessage.setProperty(SavanConstants.MESSAGE_TYPE, new Integer(
- SavanConstants.MessageTypes.SUBSCRIPTION_RESPONSE_MESSAGE));
+ outMessage.setProperty(SavanConstants.MESSAGE_TYPE,
+ SavanConstants.MessageTypes.SUBSCRIPTION_RESPONSE_MESSAGE);
}
@@ -130,13 +130,12 @@
throws SavanException {
if (outMessage == null)
- throw new SavanException(
- "Eventing protocol need to sent the SubscriptionResponseMessage. But the outMessage is null");
+ throw new SavanException("Missing outMessage for Renew");
MessageContext subscriptionMsgCtx = renewMessage.getMessageContext();
SOAPEnvelope outMessageEnvelope = outMessage.getEnvelope();
- SOAPFactory factory = null;
+ SOAPFactory factory;
if (outMessageEnvelope != null) {
factory = (SOAPFactory)outMessageEnvelope.getOMFactory();
@@ -192,15 +191,14 @@
//setting the message type
outMessage.setProperty(SavanConstants.MESSAGE_TYPE,
- new Integer(SavanConstants.MessageTypes.RENEW_RESPONSE_MESSAGE));
+ SavanConstants.MessageTypes.RENEW_RESPONSE_MESSAGE);
}
private void handleEndSubscriptionRequest(SavanMessageContext renewMessage,
MessageContext outMessage) throws SavanException {
if (outMessage == null)
- throw new SavanException(
- "Eventing protocol need to sent the SubscriptionResponseMessage. But the outMessage is null");
+ throw new SavanException("Missing outMessage for EndSubscription");
MessageContext subscriptionMsgCtx = renewMessage.getMessageContext();
@@ -208,11 +206,9 @@
outMessage.getOptions().setAction(EventingConstants.Actions.UnsubscribeResponse);
SOAPEnvelope outMessageEnvelope = outMessage.getEnvelope();
- SOAPFactory factory = null;
- if (outMessageEnvelope != null) {
- factory = (SOAPFactory)outMessageEnvelope.getOMFactory();
- } else {
+ if (outMessageEnvelope == null) {
+ SOAPFactory factory;
factory = (SOAPFactory)subscriptionMsgCtx.getEnvelope().getOMFactory();
outMessageEnvelope = factory.getDefaultEnvelope();
@@ -224,36 +220,34 @@
}
//setting the message type
- outMessage.setProperty(SavanConstants.MESSAGE_TYPE, new Integer(
- SavanConstants.MessageTypes.UNSUBSCRIPTION_RESPONSE_MESSAGE));
+ outMessage.setProperty(SavanConstants.MESSAGE_TYPE,
+ SavanConstants.MessageTypes.UNSUBSCRIPTION_RESPONSE_MESSAGE);
}
public void handleGetStatusRequest(SavanMessageContext getStatusMessage,
MessageContext outMessage) throws SavanException {
if (outMessage == null)
- throw new SavanException(
- "Eventing protocol need to sent the SubscriptionResponseMessage. But the outMessage is null");
+ throw new SavanException("Missing outMessage for getStatus!");
- MessageContext subscriptionMsgCtx = getStatusMessage.getMessageContext();
+ MessageContext getStatusContext = getStatusMessage.getMessageContext();
String id = (String)getStatusMessage
.getProperty(EventingConstants.TransferedProperties.SUBSCRIBER_UUID);
if (id == null)
- throw new SavanException("Cannot fulfil request. AbstractSubscriber ID not found");
+ throw new SavanException("Subscriber ID not found");
//setting the action
- outMessage.getOptions().setAction(EventingConstants.Actions.UnsubscribeResponse);
+ outMessage.getOptions().setAction(EventingConstants.Actions.GetStatusResponse);
SOAPEnvelope outMessageEnvelope = outMessage.getEnvelope();
- SOAPFactory factory = null;
+ SOAPFactory factory;
if (outMessageEnvelope != null) {
factory = (SOAPFactory)outMessageEnvelope.getOMFactory();
} else {
- factory = (SOAPFactory)subscriptionMsgCtx.getEnvelope().getOMFactory();
+ factory = (SOAPFactory)getStatusContext.getEnvelope().getOMFactory();
outMessageEnvelope = factory.getDefaultEnvelope();
-
try {
outMessage.setEnvelope(outMessageEnvelope);
} catch (AxisFault e) {
@@ -264,7 +258,6 @@
SubscriberStore store = CommonUtil
.getSubscriberStore(getStatusMessage.getMessageContext().getAxisService());
-
if (store == null) {
throw new SavanException("AbstractSubscriber Store was not found");
}
@@ -293,8 +286,8 @@
outMessageEnvelope.getBody().addChild(getStatusResponseElement);
//setting the message type
- outMessage.setProperty(SavanConstants.MESSAGE_TYPE, new Integer(
- SavanConstants.MessageTypes.GET_STATUS_RESPONSE_MESSAGE));
+ outMessage.setProperty(SavanConstants.MESSAGE_TYPE,
+ SavanConstants.MessageTypes.GET_STATUS_RESPONSE_MESSAGE);
}
public void doProtocolSpecificProcessing(SavanMessageContext inSavanMessage)
diff --git a/modules/core/src/main/java/org/apache/savan/eventing/EventingSubscriptionProcessor.java b/modules/core/src/main/java/org/apache/savan/eventing/EventingSubscriptionProcessor.java
index 86fcc64..be9da1a 100644
--- a/modules/core/src/main/java/org/apache/savan/eventing/EventingSubscriptionProcessor.java
+++ b/modules/core/src/main/java/org/apache/savan/eventing/EventingSubscriptionProcessor.java
@@ -159,8 +159,8 @@
eventingSubscriber.setDelivery(delivery);
- OMElement expiresElement = subscribeElement.getFirstChildWithName(new QName(
- EventingConstants.EVENTING_NAMESPACE, EventingConstants.ElementNames.Expires));
+ OMElement expiresElement =
+ subscribeElement.getFirstChildWithName(EventingConstants.EXPIRES_QNAME);
if (expiresElement != null) {
String expiresText = expiresElement.getText();
@@ -180,13 +180,19 @@
} else
expiration = expirationBean.getDateValue();
-
if (expiration == null) {
String message = "Cannot understand the given date-time value for the Expiration";
throw new SavanException(message);
}
eventingSubscriber.setSubscriptionEndingTime(expiration);
+ } else {
+ // They didn't specify an expiration, so default to an hour.
+ Calendar calendar = Calendar.getInstance();
+ Duration duration = new Duration();
+ duration.setHours(1);
+ CommonUtil.addDurationToCalendar(calendar, duration);
+ eventingSubscriber.setSubscriptionEndingTime(calendar.getTime());
}
OMElement filterElement = subscribeElement.getFirstChildWithName(new QName(
diff --git a/modules/core/src/main/java/org/apache/savan/eventing/subscribers/EventingSubscriber.java b/modules/core/src/main/java/org/apache/savan/eventing/subscribers/EventingSubscriber.java
index c19a1ea..bc0c158 100644
--- a/modules/core/src/main/java/org/apache/savan/eventing/subscribers/EventingSubscriber.java
+++ b/modules/core/src/main/java/org/apache/savan/eventing/subscribers/EventingSubscriber.java
@@ -36,8 +36,6 @@
/** Defines methods common to all eventing subscribers. */
public class EventingSubscriber implements Subscriber {
-
-
private URI id;
private Filter filter = null;
private EndpointReference endToEPr;
@@ -47,7 +45,6 @@
/** The time at which further notification of messages should be avaoded to this subscriber. */
private Date subscriptionEndingTime = null;
-
public Filter getFilter() {
return filter;
}
@@ -100,12 +97,11 @@
}
/**
- * This method first checks weather the passed message complies with the current filter. If so
- * message is sent, and the subscriberID is added to the PublicationReport. Else message is
- * ignored.
+ * This method first checks whether the passed message complies with the current filter.
+ * If so the message is sent, and the subscriberID is added to the PublicationReport.
+ * Otherwise the message is ignored.
*
- * @param smc
- * @param report
+ * @param eventData an OMElement containing the SOAP Envelope
* @throws SavanException
*/
public void sendEventData(OMElement eventData) throws SavanException {
@@ -126,10 +122,7 @@
}
private boolean doesEventDataBelongToTheFilter(OMElement eventData) throws SavanException {
- if (filter != null) {
- return filter.checkCompliance(eventData);
- } else
- return true;
+ return filter == null || filter.checkCompliance(eventData);
}
private void sendThePublication(OMElement eventData) throws SavanException {
diff --git a/modules/core/src/main/java/org/apache/savan/messagereceiver/SavanInOutMessageReceiver.java b/modules/core/src/main/java/org/apache/savan/messagereceiver/SavanInOutMessageReceiver.java
index 7a51589..173026f 100644
--- a/modules/core/src/main/java/org/apache/savan/messagereceiver/SavanInOutMessageReceiver.java
+++ b/modules/core/src/main/java/org/apache/savan/messagereceiver/SavanInOutMessageReceiver.java
@@ -49,7 +49,5 @@
delegator.processMessage(savanInMessage);
delegator.doProtocolSpecificProcessing(savanInMessage, outMessage);
-
}
-
}