use of com.adaptris.util.text.xml.XPath in project interlok by adaptris.
the class IgnoreOriginalXmlAggregatorTest method testSplitJoinService_WithImplicitDocumentEnoding.
@Test
public void testSplitJoinService_WithImplicitDocumentEnoding() throws Exception {
// This is a XML doc with 3 iterable elements...
AdaptrisMessage msg = AdaptrisMessageFactory.getDefaultInstance().newMessage(SplitterCase.XML_MESSAGE, "ISO-8859-1");
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));
service.setAggregator(new IgnoreOriginalXmlDocumentAggregator("<new/>", new InsertNode("/new")));
execute(service, msg);
// Should now be 6 document nodes
XPath xpath = new XPath();
assertEquals(3, xpath.selectNodeList(XmlHelper.createDocument(msg, true), "/new/document").getLength());
assertEquals("ISO-8859-1", msg.getContentEncoding());
}
use of com.adaptris.util.text.xml.XPath in project interlok by adaptris.
the class IgnoreOriginalXmlAggregatorTest method testSplitJoinService_withFilter.
@Test
public void testSplitJoinService_withFilter() 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");
aggr.setFilterCondition(new EvenOddCondition());
service.setAggregator(aggr);
execute(service, msg);
// Should now be 3 document nodes
// because we ignore the original
XPath xpath = new XPath();
assertEquals(1, 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 XmlAggregatorTest method testSplitJoinService_WithImplicitDocumentEnoding.
@Test
public void testSplitJoinService_WithImplicitDocumentEnoding() throws Exception {
// This is a XML doc with 3 iterable elements...
AdaptrisMessage msg = AdaptrisMessageFactory.getDefaultInstance().newMessage(SplitterCase.XML_MESSAGE, "ISO-8859-1");
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));
service.setAggregator(new XmlDocumentAggregator(new InsertNode(XPATH_ENVELOPE)));
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("ISO-8859-1", msg.getContentEncoding());
}
use of com.adaptris.util.text.xml.XPath in project interlok by adaptris.
the class XmlUtilsTest method testWriteDocumentToWriter.
@Test
public void testWriteDocumentToWriter() throws Exception {
XmlUtils xu = new XmlUtils(null, null, DocumentBuilderFactory.newInstance());
xu.setSource(new java.io.StringReader(unpadded));
Document d = (Document) xu.getSingleNode("/");
StringWriter sw = new StringWriter();
xu.writeDocument(d, sw);
// Let's check that XPAth resolves.
XPath xpath = new XPath();
XmlHelper.createDocument(sw.toString());
String text = xpath.selectSingleTextItem(XmlHelper.createDocument(sw.toString()), "/root/test");
assertEquals(CHAR_80 + CHAR_80, text);
}
use of com.adaptris.util.text.xml.XPath in project interlok by adaptris.
the class XpathMetadataService method doService.
@Override
public void doService(AdaptrisMessage msg) throws ServiceException {
Set<MetadataElement> metadataElements = new HashSet<MetadataElement>();
NamespaceContext namespaceCtx = SimpleNamespaceContext.create(getNamespaceContext(), msg);
try {
DocumentBuilderFactoryBuilder builder = documentFactoryBuilder();
if (namespaceCtx != null) {
builder.setNamespaceAware(true);
}
XPath xpathToUse = XPath.newXPathInstance(builder, namespaceCtx);
Document doc = XmlHelper.createDocument(msg, builder);
for (XpathQuery query : queriesToExecute) {
metadataElements.add(query.resolveXpath(doc, xpathToUse, query.createXpathQuery(msg)));
}
logMetadata("Xpath Metadata resolved {}", metadataElements);
msg.setMetadata(metadataElements);
} catch (Exception e) {
throw new ServiceException(e);
}
}
Aggregations