Author: asankaa
Date: Wed Dec  3 12:34:26 2008
New Revision: 25694
URL: http://wso2.org/svn/browse/wso2?view=rev&revision=25694

Log:
Fixing CARBON-607


Modified:
   
branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/eventing/SynapseEventSource.java
   
branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/eventing/builders/SubscriptionMessageBuilder.java

Modified: 
branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/eventing/SynapseEventSource.java
URL: 
http://wso2.org/svn/browse/wso2/branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/eventing/SynapseEventSource.java?rev=25694&r1=25693&r2=25694&view=diff
==============================================================================
--- 
branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/eventing/SynapseEventSource.java
  (original)
+++ 
branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/eventing/SynapseEventSource.java
  Wed Dec  3 12:34:26 2008
@@ -88,8 +88,8 @@
         eventSourceService.addOperation(subscribeOperation);
         axisCfg.addService(eventSourceService);
         //Set the service parameters
-        
eventSourceService.addParameter("subscriptionManager",subscriptionManager);
-        eventSourceService.addParameter("serviceType","eventing");
+        eventSourceService.addParameter("subscriptionManager", 
subscriptionManager);
+        eventSourceService.addParameter("serviceType", "eventing");
     }
 
     /**
@@ -111,22 +111,32 @@
             if (log.isDebugEnabled()) {
                 log.debug("SynapseSubscription request recived  : " + 
subscription.getId());
             }
-            String subID = subscriptionManager.addSubscription(subscription);
-            if (subID != null) {
-                // Send the subscription responce
-                if (log.isDebugEnabled()) {
-                    log.debug("Sending sunscription response for 
SynapseSubscription ID : " + subscription.getId());
+            if (subscription.getId() != null) {
+                String subID = 
subscriptionManager.addSubscription(subscription);
+                if (subID != null) {
+                    // Send the subscription responce
+                    if (log.isDebugEnabled()) {
+                        log.debug("Sending sunscription response for 
SynapseSubscription ID : " + subscription.getId());
+                    }
+                    SOAPEnvelope soapEnvelope = 
messageBuilder.genSubscriptionResponse(subscription);
+                    dispatchResponse(soapEnvelope, 
EventingConstants.WSE_SUbSCRIBE_RESPONSE, null, mc, synCfg, synEnv);
+                } else {
+                    // Send the Fault responce
+                    if (log.isDebugEnabled()) {
+                        log.debug("SynapseSubscription Failed, sending fault 
response");
+                    }
+                    SOAPEnvelope soapEnvelope = 
messageBuilder.genFaultResponse(EventingConstants.WSE_FAULT_CODE_RECEIVER, 
"wse:EventSourceUnableToProcess", "", "");
+                    dispatchResponse(soapEnvelope, 
EventingConstants.WSA_FAULT, null, mc, synCfg, synEnv);
                 }
-                SOAPEnvelope soapEnvelope = 
messageBuilder.genSubscriptionResponse(subscription);
-                dispatchResponse(soapEnvelope, 
EventingConstants.WSE_SUbSCRIBE_RESPONSE,null,mc,synCfg,synEnv);
             } else {
                 // Send the Fault responce
                 if (log.isDebugEnabled()) {
                     log.debug("SynapseSubscription Failed, sending fault 
response");
                 }
-                SOAPEnvelope soapEnvelope = 
messageBuilder.genFaultResponse(EventingConstants.WSE_FAULT_CODE_RECEIVER, 
"wse:EventSourceUnableToProcess", "", "");
-                dispatchResponse(soapEnvelope, 
EventingConstants.WSA_FAULT,null,mc,synCfg,synEnv);
+                SOAPEnvelope soapEnvelope = 
messageBuilder.genFaultResponse(SubscriptionMessageBuilder.getErrorCode(), 
SubscriptionMessageBuilder.getErrorSubCode(), 
SubscriptionMessageBuilder.getErrorReason(), "");
+                dispatchResponse(soapEnvelope, EventingConstants.WSA_FAULT, 
null, mc, synCfg, synEnv);
             }
+
         } else if 
(EventingConstants.WSE_UNSUBSCRIBE.equals(mc.getWSAAction())) {
             // Unsubscribe for responce
             SynapseSubscription subscription = 
SubscriptionMessageBuilder.createUnSubscribeMessage(smc);
@@ -140,14 +150,14 @@
                 }
                 SOAPEnvelope soapEnvelope = 
messageBuilder.genUnSubscribeResponse(subscription);
                 RelatesTo relatesTo = new RelatesTo(subscription.getId());
-                dispatchResponse(soapEnvelope, 
EventingConstants.WSE_UNSUBSCRIBE_RESPONSE,relatesTo,mc,synCfg,synEnv);
+                dispatchResponse(soapEnvelope, 
EventingConstants.WSE_UNSUBSCRIBE_RESPONSE, relatesTo, mc, synCfg, synEnv);
             } else {
                 // Send the Fault responce
                 if (log.isDebugEnabled()) {
                     log.debug("UnSubscription failed, sending fault 
repsponse");
                 }
                 SOAPEnvelope soapEnvelope = 
messageBuilder.genFaultResponse(EventingConstants.WSE_FAULT_CODE_RECEIVER, 
"wse:EventSourceUnableToProcess", "", "");
-                dispatchResponse(soapEnvelope, 
EventingConstants.WSA_FAULT,null,mc,synCfg,synEnv);
+                dispatchResponse(soapEnvelope, EventingConstants.WSA_FAULT, 
null, mc, synCfg, synEnv);
             }
         } else if (EventingConstants.WSE_GET_STATUS.equals(mc.getWSAAction())) 
{
             // Get responce status
@@ -163,14 +173,14 @@
                 //send the responce
                 SOAPEnvelope soapEnvelope = 
messageBuilder.genGetStatusResponse(subscription);
                 RelatesTo relatesTo = new RelatesTo(subscription.getId());
-                dispatchResponse(soapEnvelope, 
EventingConstants.WSE_GET_STATUS_RESPONSE,relatesTo,mc,synCfg,synEnv);
+                dispatchResponse(soapEnvelope, 
EventingConstants.WSE_GET_STATUS_RESPONSE, relatesTo, mc, synCfg, synEnv);
             } else {
                 // Send the Fault responce
                 if (log.isDebugEnabled()) {
                     log.debug("GetStatus failed, sending fault response");
                 }
                 SOAPEnvelope soapEnvelope = 
messageBuilder.genFaultResponse(EventingConstants.WSE_FAULT_CODE_RECEIVER, 
"wse:EventSourceUnableToProcess", "", "");
-                dispatchResponse(soapEnvelope, 
EventingConstants.WSA_FAULT,null,mc,synCfg,synEnv);
+                dispatchResponse(soapEnvelope, EventingConstants.WSA_FAULT, 
null, mc, synCfg, synEnv);
             }
         } else if (EventingConstants.WSE_RENEW.equals(mc.getWSAAction())) {
             // Renew subscription
@@ -185,14 +195,14 @@
                 }
                 SOAPEnvelope soapEnvelope = 
messageBuilder.genRenewSubscriptionResponse(subscription);
                 RelatesTo relatesTo = new RelatesTo(subscription.getId());
-                dispatchResponse(soapEnvelope, 
EventingConstants.WSE_RENEW_RESPONSE,relatesTo,mc,synCfg,synEnv);
+                dispatchResponse(soapEnvelope, 
EventingConstants.WSE_RENEW_RESPONSE, relatesTo, mc, synCfg, synEnv);
             } else {
                 // Send the Fault responce
                 if (log.isDebugEnabled()) {
                     log.debug("ReNew failed, sending fault response");
                 }
                 SOAPEnvelope soapEnvelope = 
messageBuilder.genFaultResponse(EventingConstants.WSE_FAULT_CODE_RECEIVER, 
"wse:UnableToRenew", "", "");
-                dispatchResponse(soapEnvelope, 
EventingConstants.WSA_FAULT,null,mc,synCfg,synEnv);
+                dispatchResponse(soapEnvelope, EventingConstants.WSA_FAULT, 
null, mc, synCfg, synEnv);
             }
         } else {
             // Treat as an Event
@@ -213,6 +223,7 @@
 
     /**
      * Dispatch the message to the target endpoint
+     *
      * @param soapEnvelope   Soap Enevlop with message
      * @param responseAction WSE action for the response
      * @param relatesTo      RelatesTo wsa addressing header
@@ -221,22 +232,22 @@
      * @param synEnv         Synapse Enviornment
      * @throws AxisFault
      */
-    private void dispatchResponse(SOAPEnvelope soapEnvelope,String 
responseAction,RelatesTo relatesTo,MessageContext mc,SynapseConfiguration 
synCfg,SynapseEnvironment synEnv)throws AxisFault{
-                String replyAddress = 
mc.getOptions().getReplyTo().getAddress();
-                AddressEndpoint endpoint = new AddressEndpoint();
-                EndpointDefinition def = new EndpointDefinition();
-                def.setAddress(replyAddress.trim());
-                def.setAddressingOn(true);
-                endpoint.setDefinition(def);
-                org.apache.synapse.MessageContext rmc = new 
Axis2MessageContext(mc, synCfg, synEnv);
-                rmc.setEnvelope(soapEnvelope);
-                rmc.setTo(new EndpointReference(replyAddress));
-                rmc.setWSAAction(responseAction);        //TODO wsa headers 
cannot see in the response message, it drops just before dispatching
-                rmc.setSoapAction(responseAction);
-                if (relatesTo!=null){
-                    rmc.setRelatesTo(new RelatesTo[]{relatesTo});
-                }
-                rmc.setResponse(true);
-                endpoint.send(rmc);
+    private void dispatchResponse(SOAPEnvelope soapEnvelope, String 
responseAction, RelatesTo relatesTo, MessageContext mc, SynapseConfiguration 
synCfg, SynapseEnvironment synEnv) throws AxisFault {
+        String replyAddress = mc.getOptions().getReplyTo().getAddress();
+        AddressEndpoint endpoint = new AddressEndpoint();
+        EndpointDefinition def = new EndpointDefinition();
+        def.setAddress(replyAddress.trim());
+        def.setAddressingOn(true);
+        endpoint.setDefinition(def);
+        org.apache.synapse.MessageContext rmc = new Axis2MessageContext(mc, 
synCfg, synEnv);
+        rmc.setEnvelope(soapEnvelope);
+        rmc.setTo(new EndpointReference(replyAddress));
+        rmc.setWSAAction(responseAction);        //TODO wsa headers cannot see 
in the response message, it drops just before dispatching
+        rmc.setSoapAction(responseAction);
+        if (relatesTo != null) {
+            rmc.setRelatesTo(new RelatesTo[]{relatesTo});
+        }
+        rmc.setResponse(true);
+        endpoint.send(rmc);
     }
 }

Modified: 
branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/eventing/builders/SubscriptionMessageBuilder.java
URL: 
http://wso2.org/svn/browse/wso2/branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/eventing/builders/SubscriptionMessageBuilder.java?rev=25694&r1=25693&r2=25694&view=diff
==============================================================================
--- 
branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/eventing/builders/SubscriptionMessageBuilder.java
 (original)
+++ 
branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/eventing/builders/SubscriptionMessageBuilder.java
 Wed Dec  3 12:34:26 2008
@@ -31,8 +31,8 @@
 import org.apache.synapse.endpoints.AddressEndpoint;
 import org.apache.synapse.endpoints.Endpoint;
 import org.apache.synapse.endpoints.EndpointDefinition;
-import org.apache.synapse.eventing.SynapseSubscription;
 import org.apache.synapse.eventing.SynapseEventingConstants;
+import org.apache.synapse.eventing.SynapseSubscription;
 import org.apache.synapse.eventing.filters.XPathBasedEventFilter;
 import org.apache.synapse.util.xpath.SynapseXPath;
 import org.jaxen.JaxenException;
@@ -58,6 +58,9 @@
     private static final QName EXPIRES = new 
QName(EventingConstants.WSE_EVENTING_NS, EventingConstants.WSE_EN_EXPIRES);
     private static final QName RENEW = new 
QName(EventingConstants.WSE_EVENTING_NS, EventingConstants.WSE_EN_RENEW);
 
+    private static String errorSubCode = null;
+    private static String errorReason = null;
+    private static String errorCode = null;
     /**
      * (01) <s12:Envelope
      * (02)     xmlns:s12="http://www.w3.org/2003/05/soap-envelope";
@@ -125,7 +128,7 @@
                         subscription = new 
SynapseSubscription(EventingConstants.WSE_DEFAULT_DELIVERY_MODE);
                         subscription.setEndpoint(ep);
                         
subscription.setAddressUrl(notifyToElem.getFirstElement().getText());
-                        
subscription.setEndpointUrl(notifyToElem.getFirstElement().getText());          
                 
+                        
subscription.setEndpointUrl(notifyToElem.getFirstElement().getText());
                     }
                 } else {
                     handleException("NotifyTo element not found in the 
subscription message");
@@ -157,8 +160,16 @@
             }
             OMElement expiryElem = elem.getFirstChildWithName(EXPIRES);
             if (expiryElem != null) {
-                Calendar calendar = 
ConverterUtil.convertToDateTime(expiryElem.getText());
-                subscription.setExpires(calendar);
+                Calendar calendarExpires = 
ConverterUtil.convertToDateTime(expiryElem.getText());
+                Calendar calendarNow = Calendar.getInstance();
+                if (calendarNow.before(calendarExpires)) {
+                    subscription.setExpires(calendarExpires);
+                } else {
+                    setErrorCode(EventingConstants.WSE_FAULT_CODE_SENDER);
+                    setErrorSubCode("wse:InvalidExpirationTime");
+                    setErrorReason("The expiration time requested is invalid");
+                    subscription.setId(null);
+                }
             }
         } else {
             handleException("Subscribe element is required as the payload of 
the subscription message");
@@ -315,4 +326,28 @@
         log.error(message, e);
         throw new SynapseException(message, e);
     }
+
+    public static String getErrorSubCode() {
+        return errorSubCode;
+    }
+
+    public static void setErrorSubCode(String errorCode) {
+        errorSubCode = errorCode;
+    }
+
+    public static String getErrorReason() {
+        return errorReason;
+    }
+
+    public static void setErrorReason(String errorReasons) {
+        errorReason = errorReasons;
+    }
+
+    public static String getErrorCode() {
+        return errorCode;
+    }
+
+    public static void setErrorCode(String errorCodes) {
+       errorCode = errorCodes;
+    }
 }

_______________________________________________
Esb-java-dev mailing list
[email protected]
https://wso2.org/cgi-bin/mailman/listinfo/esb-java-dev

Reply via email to