Author: saminda
Date: Wed Oct 19 02:16:22 2005
New Revision: 326492
URL: http://svn.apache.org/viewcvs?rev=326492&view=rev
Log:
RuleEngine updated to handle xpath through jaxen
Modified:
incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/SynapseConstants.java
incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapseRuleConfiguration.java
incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapseRuleReader.java
Modified:
incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/SynapseConstants.java
URL:
http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/SynapseConstants.java?rev=326492&r1=326491&r2=326492&view=diff
==============================================================================
---
incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/SynapseConstants.java
(original)
+++
incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/SynapseConstants.java
Wed Oct 19 02:16:22 2005
@@ -17,6 +17,9 @@
public interface SynapseRuleReader {
public static final String CONDITION = "condition";
public static final String MEDIATOR = "mediator";
+ public static final String NAMESPACE = "ns";
+ public static final String PRIFIX = "prifix";
+ public static final String URI = "uri";
}
public interface SynapseRuleEngine {
public static final String CUMULATIVE_RUEL_ARRAY_LIST="cumulative";
Modified:
incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapseRuleConfiguration.java
URL:
http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapseRuleConfiguration.java?rev=326492&r1=326491&r2=326492&view=diff
==============================================================================
---
incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapseRuleConfiguration.java
(original)
+++
incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapseRuleConfiguration.java
Wed Oct 19 02:16:22 2005
@@ -2,7 +2,10 @@
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.AxisFault;
+import org.apache.axis2.soap.SOAPEnvelope;
import org.apache.axis2.om.xpath.AXIOMXPath;
+import org.apache.axis2.om.OMDocument;
+import org.apache.axis2.om.OMAbstractFactory;
import org.apache.axis2.engine.AxisConfiguration;
import org.apache.synapse.SynapseConstants;
import org.jaxen.JaxenException;
@@ -10,9 +13,9 @@
import org.jaxen.SimpleNamespaceContext;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
+import java.util.HashMap;
/**
* Created by IntelliJ IDEA.
@@ -97,6 +100,16 @@
throws JaxenException {
Iterator ruleIte = ruleReader.getRulesIterator();
+ /**
+ * Need registering qulified namesapaces to Jaxen to work on
+ * xpath.
+ */
+ HashMap namespacesMap = ruleReader.getNamespaceMap();
+
+
+ SOAPEnvelope envelope = messageContext.getEnvelope();
+ envelope.build();
+
while (ruleIte.hasNext()) {
SynapaseRuleBean bean = (SynapaseRuleBean) ruleIte.next();
/**
@@ -106,22 +119,32 @@
// this could be more than this.
this.generalRuleList.add(bean);
} else {
+
+ Iterator nsIte = namespacesMap.entrySet().iterator();
+ Map.Entry entry = null;
+ String prifix = null;
+ String uri = null;
+
+ //settingup the namespace which needed to be dealt with care
+ SimpleNamespaceContext nsCtx = new SimpleNamespaceContext();
+
+ while (nsIte.hasNext()) {
+ entry = (Map.Entry) nsIte.next();
+ prifix = (String) entry.getKey();
+ uri = (String) entry.getValue();
+ nsCtx.addNamespace(prifix, uri);
+ }
+
// which deal with the xpath of the message
String xpathExpression = bean.getCondition();
XPath xpath = new AXIOMXPath(xpathExpression);
- //settingup the namespace which needed to be dealt with care
- SimpleNamespaceContext nameSpace = new
SimpleNamespaceContext();
- //add the relevent name spaces
- //-------------------- as an Example
- nameSpace.addNamespace("synapse",
"http://synapse.org/synapse");
- //--------------------
- xpath.setNamespaceContext(nameSpace);
+ xpath.setNamespaceContext(nsCtx);
/**
* Xpath validation for the incomming message.
*/
boolean xpathBool = xpath
- .booleanValueOf(messageContext.getEnvelope());
+ .booleanValueOf(envelope);
if (xpathBool) {
this.xpathRuleList.add(bean);
@@ -136,7 +159,9 @@
cumulativeRuleList.addAll(generalRuleList);
cumulativeRuleList.addAll(xpathRuleList);
-
messageContext.setProperty(SynapseConstants.SynapseRuleEngine.CUMULATIVE_RUEL_ARRAY_LIST,
cumulativeRuleList);
+ messageContext.setProperty(
+ SynapseConstants.SynapseRuleEngine.CUMULATIVE_RUEL_ARRAY_LIST,
+ cumulativeRuleList);
}
}
Modified:
incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapseRuleReader.java
URL:
http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapseRuleReader.java?rev=326492&r1=326491&r2=326492&view=diff
==============================================================================
---
incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapseRuleReader.java
(original)
+++
incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapseRuleReader.java
Wed Oct 19 02:16:22 2005
@@ -3,6 +3,7 @@
import org.apache.axis2.om.OMElement;
import org.apache.axis2.om.OMFactory;
import org.apache.axis2.om.OMAbstractFactory;
+import org.apache.axis2.om.OMAttribute;
import org.apache.axis2.om.impl.llom.builder.StAXOMBuilder;
import org.apache.axis2.AxisFault;
import org.apache.synapse.SynapseConstants;
@@ -12,6 +13,7 @@
import javax.xml.stream.XMLStreamException;
import java.util.ArrayList;
import java.util.Iterator;
+import java.util.HashMap;
import java.io.InputStream;
import java.io.File;
import java.io.FileInputStream;
@@ -28,11 +30,14 @@
public static final String RULE_XML = "synapse.xml";
private ArrayList ruleList;
+ private HashMap namespaceMap;
+
public SynapseRuleReader() {
ruleList = new ArrayList();
+ namespaceMap = new HashMap();
}
- public OMElement readRules()
+ public OMElement readRules()
throws AxisFault {
try {
@@ -65,6 +70,7 @@
OMElement rules = readRules();
if (rules != null) {
this.fillBean(rules);
+ this.fillNamespaces(rules);
}
}
@@ -99,6 +105,40 @@
public Iterator getRulesIterator() {
return ruleList.iterator();
+ }
+
+ public HashMap getNamespaceMap() {
+ return namespaceMap;
+ }
+
+ private void fillNamespaces(OMElement ele) {
+ Iterator ite = ele.getChildElements();
+ while (ite.hasNext()) {
+ OMElement ruleEle = (OMElement) ite.next();
+ Iterator nsIte = ruleEle.getChildElements();
+ while (nsIte.hasNext()) {
+ OMElement nsEle = (OMElement) nsIte.next();
+ if (nsEle.getLocalName().equalsIgnoreCase(
+ SynapseConstants.SynapseRuleReader.NAMESPACE)) {
+ Iterator attIte = nsEle.getAllAttributes();
+ String prifix = null;
+ String uri = null;
+ while (attIte.hasNext()) {
+ OMAttribute att = (OMAttribute) attIte.next();
+ if (att.getLocalName().equalsIgnoreCase(
+ SynapseConstants.SynapseRuleReader.PRIFIX)) {
+ prifix = att.getValue();
+ }
+ if (att.getLocalName().equalsIgnoreCase(
+ SynapseConstants.SynapseRuleReader.URI)) {
+ uri = att.getValue();
+ }
+
+ }
+ namespaceMap.put(prifix, uri);
+ }
+ }
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]