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);
+    }
 }


Reply via email to