You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by as...@apache.org on 2009/05/04 08:16:14 UTC

svn commit: r771192 - in /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/eventing: SynapseEventSource.java filters/TopicBasedEventFilter.java managers/DefaultInMemorySubscriptionManager.java

Author: asanka
Date: Mon May  4 06:16:11 2009
New Revision: 771192

URL: http://svn.apache.org/viewvc?rev=771192&view=rev
Log:
Change the message-context used in the event<msgctx>.

Modified:
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/eventing/SynapseEventSource.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/eventing/filters/TopicBasedEventFilter.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/eventing/managers/DefaultInMemorySubscriptionManager.java

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/eventing/SynapseEventSource.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/eventing/SynapseEventSource.java?rev=771192&r1=771191&r2=771192&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/eventing/SynapseEventSource.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/eventing/SynapseEventSource.java Mon May  4 06:16:11 2009
@@ -192,7 +192,8 @@
 
         public void run() {
             try {
-                Event<org.apache.synapse.MessageContext> event = new Event(synCtx);
+                MessageContext msgCtx = ((Axis2MessageContext) synCtx).getAxis2MessageContext();
+                Event<MessageContext> event = new Event(msgCtx);
                 subscriptions = subscriptionManager.getMatchingSubscriptions(event);
             } catch (EventException e) {
                 handleException("Matching subscriptions fetching error", e);

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/eventing/filters/TopicBasedEventFilter.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/eventing/filters/TopicBasedEventFilter.java?rev=771192&r1=771191&r2=771192&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/eventing/filters/TopicBasedEventFilter.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/eventing/filters/TopicBasedEventFilter.java Mon May  4 06:16:11 2009
@@ -19,19 +19,27 @@
 
 package org.apache.synapse.eventing.filters;
 
-import org.apache.synapse.MessageContext;
+import org.apache.axis2.context.MessageContext;
 import org.apache.synapse.util.xpath.SynapseXPath;
+import org.apache.synapse.SynapseException;
+import org.apache.axiom.om.xpath.AXIOMXPath;
+import org.apache.axiom.om.OMElement;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.wso2.eventing.EventFilter;
 import org.wso2.eventing.Event;
+import org.wso2.eventing.exceptions.EventException;
+import org.jaxen.JaxenException;
 
 /**
  * Topic baed event filter that match the subscription based on a given topic
  */
 public class TopicBasedEventFilter implements EventFilter<MessageContext> {
 
-    private SynapseXPath sourceXpath;
+    private AXIOMXPath sourceXpath;
     private String resultValue;
     private static final String FILTER_SEP = "/";
+ private static final Log log = LogFactory.getLog(TopicBasedEventFilter.class);
 
     public String getResultValue() {
         return resultValue;
@@ -45,7 +53,7 @@
         return resultValue;
     }
 
-    public SynapseXPath getSourceXpath() {
+    public AXIOMXPath getSourceXpath() {
         return sourceXpath;
     }
 
@@ -55,12 +63,31 @@
 
     public boolean match(Event<MessageContext> event) {
         MessageContext messageContext = event.getMessage();
-        String evaluatedValue = sourceXpath.stringValueOf(messageContext);
+        String evaluatedValue=null;
+        try {
+            OMElement topicNode = (OMElement) sourceXpath.selectSingleNode(messageContext.getEnvelope());
+            if (topicNode != null) {
+                evaluatedValue = topicNode.getText();
+            }
+        } catch (JaxenException e) {
+            handleException("Error creating topic xpath",e);
+        }     
+        if (evaluatedValue!=null){
         if (evaluatedValue.equals(resultValue)) {
             return true;
         } else if (evaluatedValue.startsWith((resultValue + FILTER_SEP).trim())) {
             return true;
         }
+        }
         return false;
     }
+   private void handleException(String message) {
+        log.error(message);
+        throw new SynapseException(message);
+    }
+
+    private void handleException(String message, Exception e) {
+        log.error(message, e);
+        throw new SynapseException(message, e);
+    }
 }
\ No newline at end of file

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/eventing/managers/DefaultInMemorySubscriptionManager.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/eventing/managers/DefaultInMemorySubscriptionManager.java?rev=771192&r1=771191&r2=771192&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/eventing/managers/DefaultInMemorySubscriptionManager.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/eventing/managers/DefaultInMemorySubscriptionManager.java Mon May  4 06:16:11 2009
@@ -21,7 +21,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.synapse.MessageContext;
+import org.apache.axis2.context.MessageContext;
 import org.apache.synapse.SynapseException;
 import org.apache.synapse.eventing.SynapseEventingConstants;
 import org.apache.synapse.eventing.filters.TopicBasedEventFilter;