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
