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;