use of com.adaptris.util.text.xml.XPath in project interlok by adaptris.
the class StoredProcedureProducerTest method resolveXPath.
private String resolveXPath(AdaptrisMessage message, String xpath) throws XPathExpressionException, IOException {
XmlUtils xmlUtility = new XmlUtils();
xmlUtility.setSource(message.getInputStream());
String textItem = new XPath().selectSingleTextItem(xmlUtility.getCurrentDoc(), xpath);
if (isEmpty(textItem)) {
return null;
} else {
return textItem;
}
}
use of com.adaptris.util.text.xml.XPath in project interlok by adaptris.
the class XmlAggregatorTest method testAggregate_WithFilter.
@Test
public void testAggregate_WithFilter() throws Exception {
XmlDocumentAggregator aggr = createAggregatorForTests();
aggr.setMergeImplementation(new InsertNode(XPATH_ENVELOPE));
aggr.setFilterCondition(new EvenOddCondition());
AdaptrisMessageFactory fac = AdaptrisMessageFactory.getDefaultInstance();
AdaptrisMessage original = fac.newMessage("<envelope/>");
AdaptrisMessage splitMsg1 = fac.newMessage("<document>hello</document>");
AdaptrisMessage splitMsg2 = fac.newMessage("<document>world</document>");
aggr.aggregate(original, Arrays.asList(new AdaptrisMessage[] { splitMsg1, splitMsg2 }));
XPath xpath = new XPath();
Document d = XmlHelper.createDocument(original, DocumentBuilderFactoryBuilder.newInstance());
assertEquals(1, xpath.selectNodeList(d, ENVELOPE_DOCUMENT).getLength());
}
use of com.adaptris.util.text.xml.XPath in project interlok by adaptris.
the class XmlAggregatorTest method testSplitJoinService_WithExplicitDocumentEnoding.
@Test
public void testSplitJoinService_WithExplicitDocumentEnoding() throws Exception {
// This is a XML doc with 3 iterable elements...
AdaptrisMessage msg = AdaptrisMessageFactory.getDefaultInstance().newMessage(SplitterCase.XML_MESSAGE);
PooledSplitJoinService service = new PooledSplitJoinService();
// The service doesn't actually matter right now.
service.setService(asCollection(new NullService()));
service.setTimeout(new TimeInterval(10L, TimeUnit.SECONDS));
service.setSplitter(new XpathMessageSplitter(ENVELOPE_DOCUMENT, ENCODING_UTF8));
XmlDocumentAggregator aggr = new XmlDocumentAggregator(new InsertNode(XPATH_ENVELOPE));
aggr.setDocumentEncoding("UTF-8");
service.setAggregator(aggr);
execute(service, msg);
// Should now be 6 document nodes
XPath xpath = new XPath();
assertEquals(6, xpath.selectNodeList(XmlHelper.createDocument(msg, true), ENVELOPE_DOCUMENT).getLength());
assertEquals("UTF-8", msg.getContentEncoding());
}
use of com.adaptris.util.text.xml.XPath in project interlok by adaptris.
the class IgnoreOriginalXmlAggregatorTest method testSplitJoinService_WithExplicitDocumentEnoding.
@Test
public void testSplitJoinService_WithExplicitDocumentEnoding() throws Exception {
// This is a XML doc with 3 iterable elements...
AdaptrisMessage msg = AdaptrisMessageFactory.getDefaultInstance().newMessage(SplitterCase.XML_MESSAGE);
PooledSplitJoinService service = new PooledSplitJoinService();
// The service doesn't actually matter right now.
service.setService(asCollection(new NullService()));
service.setTimeout(new TimeInterval(10L, TimeUnit.SECONDS));
service.setSplitter(new XpathMessageSplitter(ENVELOPE_DOCUMENT, ENCODING_UTF8));
IgnoreOriginalXmlDocumentAggregator aggr = new IgnoreOriginalXmlDocumentAggregator("<new/>", new InsertNode("/new"));
aggr.setDocumentEncoding("UTF-8");
service.setAggregator(aggr);
execute(service, msg);
// Should now be 3 document nodes
// because we ignore the original
XPath xpath = new XPath();
assertEquals(3, xpath.selectNodeList(XmlHelper.createDocument(msg, true), "/new/document").getLength());
assertEquals("UTF-8", msg.getContentEncoding());
}
use of com.adaptris.util.text.xml.XPath in project interlok by adaptris.
the class XmlPayloadTranslatorTest method testService_XpathParam_WithAutoConvert.
// This should effectively give the same results as testService_WithTranslators...
@Test
public void testService_XpathParam_WithAutoConvert() throws Exception {
createDatabase();
List<AdapterTypeVersion> dbItems = generate(10);
AdapterTypeVersion entry = dbItems.get(0);
populateDatabase(dbItems, false);
JdbcDataQueryService s = createXmlService();
s.setResultSetTranslator(new XmlPayloadTranslator().withAttemptAutoConvert(true).withColumnNameStyle(ColumnStyle.NoStyle));
AdaptrisMessage msg = createMessage(entry);
execute(s, msg);
XPath xp = new XPath();
Document xmlDoc = XmlHelper.createDocument(msg, DocumentBuilderFactoryBuilder.newInstance());
assertNull(xp.selectSingleNode(xmlDoc, "/Results/OriginalMessage"));
assertNotNull(xp.selectSingleNode(xmlDoc, "/Results/Row"));
assertEquals(entry.getVersion(), xp.selectSingleTextItem(xmlDoc, "/Results/Row/ADAPTER_VERSION"));
assertEquals(String.valueOf(entry.getCounter()), xp.selectSingleTextItem(xmlDoc, "/Results/Row/COUNTER"));
assertEquals(entry.getTranslatorType(), xp.selectSingleTextItem(xmlDoc, "/Results/Row/MESSAGE_TRANSLATOR_TYPE"));
// This should have been done by a TimestampColumnTranslator...
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
assertEquals(df.format(entry.getDate()), xp.selectSingleTextItem(xmlDoc, "/Results/Row/INSERTED_ON"));
}
Aggregations