use of org.apache.commons.jxpath.Pointer in project opennms by OpenNMS.
the class JsonCollectorSolarisZonesIT method testXpath.
/**
* Test to verify XPath content.
*
* @throws Exception the exception
*/
@Test
@SuppressWarnings("unchecked")
public void testXpath() throws Exception {
JSONObject json = MockDocumentBuilder.getJSONDocument();
JXPathContext context = JXPathContext.newContext(json);
Iterator<Pointer> itr = context.iteratePointers("/zones/zone");
while (itr.hasNext()) {
Pointer resPtr = itr.next();
JXPathContext relativeContext = context.getRelativeContext(resPtr);
String resourceName = (String) relativeContext.getValue("@name");
Assert.assertNotNull(resourceName);
String value = (String) relativeContext.getValue("parameter[@key='nproc']/@value");
Assert.assertNotNull(Integer.valueOf(value));
}
}
use of org.apache.commons.jxpath.Pointer in project opennms by OpenNMS.
the class JsonCollectorArrayIT method testXpath.
@Test
@SuppressWarnings("unchecked")
public void testXpath() throws Exception {
JSONObject json = MockDocumentBuilder.getJSONDocument();
JXPathContext context = JXPathContext.newContext(json);
Iterator<Pointer> itr = context.iteratePointers("/elements[4]/it");
Assert.assertTrue(itr.hasNext());
Assert.assertEquals(itr.next().getValue(), "works");
Assert.assertFalse(itr.hasNext());
}
use of org.apache.commons.jxpath.Pointer in project opennms by OpenNMS.
the class AbstractJsonCollectionHandler method fillCollectionSet.
/**
* Fill collection set.
*
* @param agent the agent
* @param collectionSet the collection set
* @param source the source
* @param json the JSON Object
* @throws ParseException the parse exception
*/
@SuppressWarnings("unchecked")
protected void fillCollectionSet(CollectionAgent agent, CollectionSetBuilder builder, XmlSource source, JSONObject json) throws ParseException {
JXPathContext context = JXPathContext.newContext(json);
for (XmlGroup group : source.getXmlGroups()) {
LOG.debug("fillCollectionSet: getting resources for XML group {} using XPATH {}", group.getName(), group.getResourceXpath());
Date timestamp = getTimeStamp(context, group);
Iterator<Pointer> itr = context.iteratePointers(group.getResourceXpath());
while (itr.hasNext()) {
JXPathContext relativeContext = context.getRelativeContext(itr.next());
String resourceName = getResourceName(relativeContext, group);
LOG.debug("fillCollectionSet: processing XML resource {} of type {}", resourceName, group.getResourceType());
final Resource collectionResource = getCollectionResource(agent, resourceName, group.getResourceType(), timestamp);
LOG.debug("fillCollectionSet: processing resource {}", collectionResource);
for (XmlObject object : group.getXmlObjects()) {
try {
Object obj = relativeContext.getValue(object.getXpath());
if (obj != null) {
builder.withAttribute(collectionResource, group.getName(), object.getName(), obj.toString(), object.getDataType());
}
} catch (JXPathException ex) {
LOG.warn("Unable to get value for {}: {}", object.getXpath(), ex.getMessage());
}
}
processXmlResource(builder, collectionResource, resourceName, group.getName());
}
}
}
Aggregations