[esb-java-dev] svn commit r24349 - branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/eventing/managers
asankaa at wso2.com
asankaa at wso2.com
Thu Nov 20 05:35:29 PST 2008
Author: asankaa
Date: Thu Nov 20 05:35:28 2008
New Revision: 24349
URL: http://wso2.org/svn/browse/wso2?view=rev&revision=24349
Log:
fix the subscription matching issues of the default sub manager , implement the property getters and setters
Modified:
branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/eventing/managers/DefaultInMemorySubscriptionManager.java
Modified: branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/eventing/managers/DefaultInMemorySubscriptionManager.java
URL: http://wso2.org/svn/browse/wso2/branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/eventing/managers/DefaultInMemorySubscriptionManager.java?rev=24349&r1=24348&r2=24349&view=diff
==============================================================================
--- branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/eventing/managers/DefaultInMemorySubscriptionManager.java (original)
+++ branches/synapse/1.2.wso2v1/modules/core/src/main/java/org/apache/synapse/eventing/managers/DefaultInMemorySubscriptionManager.java Thu Nov 20 05:35:28 2008
@@ -20,9 +20,15 @@
package org.apache.synapse.eventing.managers;
import org.apache.synapse.MessageContext;
+import org.apache.synapse.SynapseException;
+import org.apache.synapse.util.xpath.SynapseXPath;
import org.apache.synapse.eventing.EventFilter;
import org.apache.synapse.eventing.Subscription;
import org.apache.synapse.eventing.SubscriptionManager;
+import org.apache.synapse.eventing.filters.XPathBasedEventFilter;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jaxen.JaxenException;
import java.util.LinkedList;
import java.util.List;
@@ -34,7 +40,11 @@
*/
public class DefaultInMemorySubscriptionManager extends SubscriptionManager {
- Map<String, Subscription> store = new ConcurrentHashMap<String, Subscription>();
+ private Map<String, Subscription> store = new ConcurrentHashMap<String, Subscription>();
+ private String topicHeaderName;
+ private String topicHeaderNS;
+ private SynapseXPath topicXPath;
+ private static final Log log = LogFactory.getLog(DefaultInMemorySubscriptionManager.class);
public String addSubscription(Subscription subs) {
if (subs.getId() == null) {
@@ -64,7 +74,8 @@
public List<Subscription> getMatchingSubscribers(MessageContext mc) {
LinkedList<Subscription> list = new LinkedList<Subscription>();
for (Map.Entry<String, Subscription> stringSubscriptionEntry : store.entrySet()) {
- EventFilter filter = stringSubscriptionEntry.getValue().getFilter();
+ XPathBasedEventFilter filter =(XPathBasedEventFilter) stringSubscriptionEntry.getValue().getFilter();
+ filter.setSourceXpath(topicXPath);
if (filter == null || filter.isSatisfied(mc)) {
list.add(stringSubscriptionEntry.getValue());
}
@@ -77,6 +88,39 @@
}
public void init() {
- // nothing to do at the inmemory subscriber initialization
+ try {
+ topicXPath = new SynapseXPath("s11:Header/ns:" + topicHeaderName + " | s12:Header/ns:" + topicHeaderName);
+ topicXPath.addNamespace("s11", "http://schemas.xmlsoap.org/soap/envelope/");
+ topicXPath.addNamespace("s12", "http://www.w3.org/2003/05/soap-envelope");
+ topicXPath.addNamespace("ns", topicHeaderNS);
+ } catch (JaxenException e) {
+ handleException("Unable to create the topic header XPath", e);
+ }
+
+
+ }
+ public String getTopicHeaderName() {
+ return topicHeaderName;
+ }
+
+ public void setTopicHeaderName(String topicHeaderName) {
+ this.topicHeaderName = topicHeaderName;
+ }
+
+ public String getTopicHeaderNS() {
+ return topicHeaderNS;
+ }
+
+ public void setTopicHeaderNS(String topicHeaderNS) {
+ this.topicHeaderNS = topicHeaderNS;
+ }
+ 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);
}
}
More information about the Esb-java-dev
mailing list