@Override public Map<String, ResourceType> getConfiguredResourceTypes() { final Map<String, ResourceType> map = new HashMap<String, ResourceType>(); final Collection<SnmpCollection> snmpCollections = getContainer().getObject().getSnmpCollectionCollection(); for (final SnmpCollection collection : snmpCollections) { for (final ResourceType resourceType : collection.getResourceTypeCollection()) { map.put(resourceType.getName(), resourceType); } } // FIXME: I guarantee there's a cleaner way to do this, but I didn't want to refactor everything // that calls this just to optimize out validation. if (!m_validated) { try { validateResourceTypes(getContainer(), map.keySet()); } catch (final RuntimeException e) { m_validationException = e; throw e; } } else { if (m_validationException != null) { throw m_validationException; } } return Collections.unmodifiableMap(map); }
@Override protected DatacollectionConfig translateConfig(final DatacollectionConfig config) { final DataCollectionConfigParser parser = new DataCollectionConfigParser(getConfigDirectory()); resourceTypes.clear(); // Create a special collection to hold all resource types, because they should be defined only // once. final SnmpCollection resourceTypeCollection = new SnmpCollection(); resourceTypeCollection.setName("__resource_type_collection"); // Updating Configured Collections for (final SnmpCollection collection : config.getSnmpCollectionCollection()) { parser.parseCollection(collection); // Save local resource types for (final ResourceType rt : collection.getResourceTypeCollection()) { resourceTypeCollection.addResourceType(rt); resourceTypes.put(rt.getName(), rt); } // Remove local resource types collection.getResourceTypeCollection().clear(); } // Save external Resource Types for (final ResourceType rt : parser.getAllResourceTypes()) { resourceTypeCollection.addResourceType(rt); resourceTypes.put(rt.getName(), rt); } resourceTypeCollection.setGroups(new Groups()); resourceTypeCollection.setSystems(new Systems()); config.getSnmpCollectionCollection().add(0, resourceTypeCollection); dataCollectionGroups.clear(); dataCollectionGroups.addAll(parser.getExternalGroupMap().keySet()); validateResourceTypes(config.getSnmpCollectionCollection(), resourceTypes.keySet()); return config; }