Search in sources :

Example 16 with Resource

use of org.opennms.netmgt.collection.support.builder.Resource 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());
        }
    }
}
Also used : XmlGroup(org.opennms.protocols.xml.config.XmlGroup) JXPathContext(org.apache.commons.jxpath.JXPathContext) Resource(org.opennms.netmgt.collection.support.builder.Resource) JXPathException(org.apache.commons.jxpath.JXPathException) Pointer(org.apache.commons.jxpath.Pointer) XmlObject(org.opennms.protocols.xml.config.XmlObject) XmlObject(org.opennms.protocols.xml.config.XmlObject) JSONObject(net.sf.json.JSONObject) Date(java.util.Date)

Example 17 with Resource

use of org.opennms.netmgt.collection.support.builder.Resource in project opennms by OpenNMS.

the class AbstractXmlCollectionHandler method fillCollectionSet.

/**
 * Fill collection set.
 *
 * @param agent the agent
 * @param collectionSet the collection set
 * @param source the source
 * @param doc the doc
 * @throws XPathExpressionException the x path expression exception
 * @throws ParseException the parse exception
 */
protected void fillCollectionSet(CollectionAgent agent, CollectionSetBuilder builder, XmlSource source, Document doc) throws XPathExpressionException, ParseException {
    NamespaceContext nc = new DocumentNamespaceResolver(doc);
    XPath xpath = XPathFactory.newInstance().newXPath();
    xpath.setNamespaceContext(nc);
    for (XmlGroup group : source.getXmlGroups()) {
        LOG.debug("fillCollectionSet: getting resources for XML group {} using XPATH {}", group.getName(), group.getResourceXpath());
        Date timestamp = getTimeStamp(doc, xpath, group);
        NodeList resourceList = (NodeList) xpath.evaluate(group.getResourceXpath(), doc, XPathConstants.NODESET);
        for (int j = 0; j < resourceList.getLength(); j++) {
            Node resource = resourceList.item(j);
            String resourceName = getResourceName(xpath, group, resource);
            final Resource collectionResource = getCollectionResource(agent, resourceName, group.getResourceType(), timestamp);
            LOG.debug("fillCollectionSet: processing resource {}", collectionResource);
            for (XmlObject object : group.getXmlObjects()) {
                String value = (String) xpath.evaluate(object.getXpath(), resource, XPathConstants.STRING);
                builder.withAttribute(collectionResource, group.getName(), object.getName(), value, object.getDataType());
            }
            processXmlResource(builder, collectionResource, resourceName, group.getName());
        }
    }
    LOG.debug("fillCollectionSet: finishing collection set with {} resources and {} attributes on {}", builder.getNumResources(), builder.getNumAttributes(), agent);
}
Also used : XPath(javax.xml.xpath.XPath) XmlGroup(org.opennms.protocols.xml.config.XmlGroup) NamespaceContext(javax.xml.namespace.NamespaceContext) NodeList(org.w3c.dom.NodeList) Node(org.w3c.dom.Node) OnmsNode(org.opennms.netmgt.model.OnmsNode) CollectionResource(org.opennms.netmgt.collection.api.CollectionResource) NodeLevelResource(org.opennms.netmgt.collection.support.builder.NodeLevelResource) DeferredGenericTypeResource(org.opennms.netmgt.collection.support.builder.DeferredGenericTypeResource) Resource(org.opennms.netmgt.collection.support.builder.Resource) XmlObject(org.opennms.protocols.xml.config.XmlObject) Date(java.util.Date)

Aggregations

Resource (org.opennms.netmgt.collection.support.builder.Resource)17 NodeLevelResource (org.opennms.netmgt.collection.support.builder.NodeLevelResource)13 CollectionSetBuilder (org.opennms.netmgt.collection.support.builder.CollectionSetBuilder)9 AttributeType (org.opennms.netmgt.collection.api.AttributeType)8 List (java.util.List)6 GenericTypeResource (org.opennms.netmgt.collection.support.builder.GenericTypeResource)6 OnmsNode (org.opennms.netmgt.model.OnmsNode)6 Node (org.w3c.dom.Node)6 Map (java.util.Map)5 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)5 Collectors (java.util.stream.Collectors)5 InetAddressUtils (org.opennms.core.utils.InetAddressUtils)5 CollectionAgent (org.opennms.netmgt.collection.api.CollectionAgent)5 CollectionAttribute (org.opennms.netmgt.collection.api.CollectionAttribute)5 CollectionException (org.opennms.netmgt.collection.api.CollectionException)5 CollectionInitializationException (org.opennms.netmgt.collection.api.CollectionInitializationException)5 CollectionSet (org.opennms.netmgt.collection.api.CollectionSet)5 Attrib (org.opennms.netmgt.config.wsman.Attrib)5 Maps (com.google.common.collect.Maps)4 Sets (com.google.common.collect.Sets)4