use of org.apache.synapse.config.xml.ForEachMediatorFactory in project wso2-synapse by wso2.
the class ForEachMediatorTest method testForEachXpathNodeRelativePath.
/**
* Testing when the xpath returns only one element
*
* @throws Exception
*/
public void testForEachXpathNodeRelativePath() throws Exception {
// Clear envelope
if (testCtx.getEnvelope().getBody().getFirstElement() != null) {
testCtx.getEnvelope().getBody().getFirstElement().detach();
}
testCtx.getEnvelope().getBody().addChild(createOMElement("<original>" + "<itr id=\"one\">test-split-context-itr1-body</itr>" + "<itr>test-split-context-itr2-body</itr>" + "</original>"));
MediatorFactory fac = new ForEachMediatorFactory();
Mediator foreach = fac.createMediator(createOMElement("<foreach " + "expression=\"//itr[@id='one']\" sequence=\"seqRef\" />"), new Properties());
helperMediator.clearMediatedContexts();
foreach.mediate(testCtx);
assertEquals(1, helperMediator.getMsgCount());
assertEquals("<itr id=\"one\">test-split-context-itr1-body</itr>", helperMediator.getMediatedContext(0).getEnvelope().getBody().getFirstElement().toString());
}
use of org.apache.synapse.config.xml.ForEachMediatorFactory in project wso2-synapse by wso2.
the class ForEachMediatorTest method testForEachXpathList.
/**
* Testing when the xpath returns a list of elements
*
* @throws Exception
*/
public void testForEachXpathList() throws Exception {
// Clear envelope
if (testCtx.getEnvelope().getBody().getFirstElement() != null) {
testCtx.getEnvelope().getBody().getFirstElement().detach();
}
testCtx.getEnvelope().getBody().addChild(createOMElement("<original>" + "<itr>test-split-context-itr1-body</itr>" + "<itr>test-split-context-itr2-body</itr>" + "</original>"));
MediatorFactory fac = new ForEachMediatorFactory();
Mediator foreach = fac.createMediator(createOMElement("<foreach expression=\"//original/itr\" sequence=\"seqRef\" />"), new Properties());
helperMediator.clearMediatedContexts();
foreach.mediate(testCtx);
assertEquals(2, helperMediator.getMsgCount());
assertEquals("<itr>test-split-context-itr1-body</itr>", helperMediator.getMediatedContext(0).getEnvelope().getBody().getFirstElement().toString());
assertEquals("<itr>test-split-context-itr2-body</itr>", helperMediator.getMediatedContext(1).getEnvelope().getBody().getFirstElement().toString());
}
use of org.apache.synapse.config.xml.ForEachMediatorFactory in project wso2-synapse by wso2.
the class ForEachMediatorTest method testForEachXpathNode.
/**
* Testing when the xpath returns only one element
*
* @throws Exception
*/
public void testForEachXpathNode() throws Exception {
// Clear envelope
if (testCtx.getEnvelope().getBody().getFirstElement() != null) {
testCtx.getEnvelope().getBody().getFirstElement().detach();
}
testCtx.getEnvelope().getBody().addChild(createOMElement("<original>" + "<itr id=\"one\">test-split-context-itr1-body</itr>" + "<itr>test-split-context-itr2-body</itr>" + "</original>"));
MediatorFactory fac = new ForEachMediatorFactory();
Mediator foreach = fac.createMediator(createOMElement("<foreach " + "expression=\"//original/itr[@id='one']\" sequence=\"seqRef\" />"), new Properties());
helperMediator.clearMediatedContexts();
foreach.mediate(testCtx);
assertEquals(1, helperMediator.getMsgCount());
assertEquals("<itr id=\"one\">test-split-context-itr1-body</itr>", helperMediator.getMediatedContext(0).getEnvelope().getBody().getFirstElement().toString());
}
use of org.apache.synapse.config.xml.ForEachMediatorFactory in project wso2-synapse by wso2.
the class ForEachMediatorTest method testForEachXpathListRelativePath.
/**
* Testing when the relative xpath returns a list of elements
*
* @throws Exception
*/
public void testForEachXpathListRelativePath() throws Exception {
// Clear envelope
if (testCtx.getEnvelope().getBody().getFirstElement() != null) {
testCtx.getEnvelope().getBody().getFirstElement().detach();
}
testCtx.getEnvelope().getBody().addChild(createOMElement("<original>" + "<itr>test-split-context-itr1-body</itr>" + "<itr>test-split-context-itr2-body</itr>" + "</original>"));
MediatorFactory fac = new ForEachMediatorFactory();
Mediator foreach = fac.createMediator(createOMElement("<foreach " + "expression=\"//itr\" sequence=\"seqRef\" />"), new Properties());
helperMediator.clearMediatedContexts();
foreach.mediate(testCtx);
assertEquals(2, helperMediator.getMsgCount());
assertEquals("<itr>test-split-context-itr1-body</itr>", helperMediator.getMediatedContext(0).getEnvelope().getBody().getFirstElement().toString());
assertEquals("<itr>test-split-context-itr2-body</itr>", helperMediator.getMediatedContext(1).getEnvelope().getBody().getFirstElement().toString());
}
use of org.apache.synapse.config.xml.ForEachMediatorFactory in project wso2-synapse by wso2.
the class ForEachMediatorTest method testSequenceValidity.
/**
* Testing validity of reference sequence. Other cases : inline sequence
* is covered in ForEachMediatorFactory
*
* @throws Exception
*/
public void testSequenceValidity() throws Exception {
// Clear envelope
if (testCtx.getEnvelope().getBody().getFirstElement() != null) {
testCtx.getEnvelope().getBody().getFirstElement().detach();
}
testCtx.getEnvelope().getBody().addChild(createOMElement("<original>" + "<itr>test-split-context-itr1-body</itr>" + "<itr>test-split-context-itr2-body</itr>" + "</original>"));
MediatorFactory fac = new ForEachMediatorFactory();
Mediator foreachInvalid = fac.createMediator(createOMElement("<foreach expression=\"//original/itr\" sequence=\"seqRefInvalid\" />"), new Properties());
String result = null;
try {
foreachInvalid.mediate(testCtx);
result = testCtx.getEnvelope().getBody().getFirstElement().toString();
} catch (SynapseException ex) {
result = ex.getMessage();
}
assertTrue(result.contains("Referred sequence cannot contain Call"));
// Clear envelope
if (testCtx.getEnvelope().getBody().getFirstElement() != null) {
testCtx.getEnvelope().getBody().getFirstElement().detach();
}
testCtx.getEnvelope().getBody().addChild(createOMElement("<original>" + "<itr>test-split-context-itr1-body</itr>" + "<itr>test-split-context-itr2-body</itr>" + "</original>"));
Mediator foreachValid = fac.createMediator(createOMElement("<foreach " + "expression=\"//original/itr\" sequence=\"seqRef\" />"), new Properties());
boolean successValid = foreachValid.mediate(testCtx);
assertEquals(true, successValid);
}
Aggregations