Author: hiranya
Date: Fri Jul 19 18:25:13 2013
New Revision: 1504957
URL: http://svn.apache.org/r1504957
Log:
Applying the patch for SYNAPSE-911 with a test case. This patch adds support
for selecting XML attributes in the enrich mediator using the target custom
XPath
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/elementary/Target.java
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/elementary/EnrichMediatorTest.java
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/elementary/Target.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/elementary/Target.java?rev=1504957&r1=1504956&r2=1504957&view=diff
==============================================================================
---
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/elementary/Target.java
(original)
+++
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/elementary/Target.java
Fri Jul 19 18:25:13 2013
@@ -18,6 +18,7 @@
*/
package org.apache.synapse.mediators.elementary;
+import org.apache.axiom.om.OMAttribute;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMNode;
import org.apache.axiom.om.OMText;
@@ -101,9 +102,14 @@ public class Target {
((OMElement)targetParent).addChild(sourceNodeList.get(0));
}
}
+ } else if (targetObj instanceof OMAttribute){
+ OMAttribute attribute = (OMAttribute)targetObj;
+ if (sourceNodeList.get(0) instanceof OMText){
+
attribute.setAttributeValue(((OMText)sourceNodeList.get(0)).getText());
+ }
} else {
- synLog.error("Invalid Target object to be enrich.");
- throw new SynapseException("Invalid Target object to be
enrich.");
+ synLog.error("Invalid Target object to enrich.");
+ throw new SynapseException("Invalid Target object to enrich.");
}
} else if (targetType == EnrichMediator.BODY) {
SOAPEnvelope env = synContext.getEnvelope();
Modified:
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/elementary/EnrichMediatorTest.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/elementary/EnrichMediatorTest.java?rev=1504957&r1=1504956&r2=1504957&view=diff
==============================================================================
---
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/elementary/EnrichMediatorTest.java
(original)
+++
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/elementary/EnrichMediatorTest.java
Fri Jul 19 18:25:13 2013
@@ -6,6 +6,7 @@ import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.synapse.MessageContext;
import org.apache.synapse.mediators.TestUtils;
+import org.apache.synapse.util.xpath.SynapseXPath;
import javax.xml.namespace.QName;
@@ -63,4 +64,25 @@ public class EnrichMediatorTest extends
assertEquals("property", result.getLocalName());
assertEquals("test", result.getFirstElement().getLocalName());
}
+
+ public void testEnrich3() throws Exception {
+ EnrichMediator mediator = new EnrichMediator();
+ Source source = new Source();
+ source.setSourceType(EnrichMediator.PROPERTY);
+ source.setProperty("gender");
+
+ Target target = new Target();
+ target.setTargetType(EnrichMediator.CUSTOM);
+ target.setXpath(new SynapseXPath("//student/@gender"));
+ mediator.setSource(source);
+ mediator.setTarget(target);
+
+ MessageContext msgContext = TestUtils.getTestContext("<student
gender=\"female\"><name>John</name><age>15</age></student>");
+ msgContext.setProperty("gender", "male");
+
+ mediator.mediate(msgContext);
+ OMElement element =
msgContext.getEnvelope().getBody().getFirstElement();
+ String result = element.getAttributeValue(new QName("gender"));
+ assertEquals("male", result);
+ }
}