/** * Uses the {@link ExtensionManager} to discover any {@link ControllerService} implementations that implement a specific * ControllerService API. * * @param parent the controller service API * @return a list of controller services that implement the controller service API */ private List<Class<? extends ControllerService>> lookupControllerServiceImpls( final Class<? extends ControllerService> parent) { final List<Class<? extends ControllerService>> implementations = new ArrayList<>(); // first get all ControllerService implementations final Set<Class> controllerServices = extensionManager.getExtensions(ControllerService.class); // then iterate over all controller services looking for any that is a child of the parent // ControllerService API that was passed in as a parameter for (final Class<? extends ControllerService> controllerServiceClass : controllerServices) { if (parent.isAssignableFrom(controllerServiceClass)) { implementations.add(controllerServiceClass); } } return implementations; }
@Override public List<String> getComponentTypes() { final Set<Class> procClasses = flowController.getExtensionManager().getExtensions(Processor.class); final List<String> componentTypes = new ArrayList<>(procClasses.size() + 2); componentTypes.add(ProvenanceEventRecord.REMOTE_INPUT_PORT_TYPE); componentTypes.add(ProvenanceEventRecord.REMOTE_OUTPUT_PORT_TYPE); procClasses.stream() .map(Class::getSimpleName) .forEach(componentTypes::add); return componentTypes; }
/** * Generates documentation into the work/docs dir specified by * NiFiProperties. * * @param properties to lookup nifi properties * @param extensionMapping extension mapping */ public static void generate(final NiFiProperties properties, final ExtensionManager extensionManager, final ExtensionMapping extensionMapping) { final File explodedNiFiDocsDir = properties.getComponentDocumentationWorkingDirectory(); logger.debug("Generating documentation for: " + extensionMapping.size() + " components in: " + explodedNiFiDocsDir); documentConfigurableComponent(extensionManager.getExtensions(Processor.class), explodedNiFiDocsDir, extensionManager); documentConfigurableComponent(extensionManager.getExtensions(ControllerService.class), explodedNiFiDocsDir, extensionManager); documentConfigurableComponent(extensionManager.getExtensions(ReportingTask.class), explodedNiFiDocsDir, extensionManager); }
/** * Gets the FlowFileProcessor types that this controller supports. * * @param bundleGroupFilter if specified, must be member of bundle group * @param bundleArtifactFilter if specified, must be member of bundle artifact * @param typeFilter if specified, type must match * @return types */ public Set<DocumentedTypeDTO> getFlowFileProcessorTypes(final String bundleGroupFilter, final String bundleArtifactFilter, final String typeFilter) { return dtoFactory.fromDocumentedTypes(getExtensionManager().getExtensions(Processor.class), bundleGroupFilter, bundleArtifactFilter, typeFilter); }
/** * Gets the FlowFileComparator types that this controller supports. * * @return the FlowFileComparator types that this controller supports */ public Set<DocumentedTypeDTO> getFlowFileComparatorTypes() { return dtoFactory.fromDocumentedTypes(getExtensionManager().getExtensions(FlowFilePrioritizer.class), null, null, null); }
/** * Gets the ReportingTask types that this controller supports. * * @param bundleGroupFilter if specified, must be member of bundle group * @param bundleArtifactFilter if specified, must be member of bundle artifact * @param typeFilter if specified, type must match * @return the ReportingTask types that this controller supports */ public Set<DocumentedTypeDTO> getReportingTaskTypes(final String bundleGroupFilter, final String bundleArtifactFilter, final String typeFilter) { return dtoFactory.fromDocumentedTypes(getExtensionManager().getExtensions(ReportingTask.class), bundleGroupFilter, bundleArtifactFilter, typeFilter); }
public void verifyComponentTypesInSnippet() { final Map<String, Set<BundleCoordinate>> processorClasses = new HashMap<>(); for (final Class<?> c : extensionManager.getExtensions(Processor.class)) { final String name = c.getName(); processorClasses.put(name, extensionManager.getBundles(name).stream().map(bundle -> bundle.getBundleDetails().getCoordinate()).collect(Collectors.toSet())); for (final Class<?> c : extensionManager.getExtensions(ControllerService.class)) { final String name = c.getName(); controllerServiceClasses.put(name, extensionManager.getBundles(name).stream().map(bundle -> bundle.getBundleDetails().getCoordinate()).collect(Collectors.toSet())); for (final Class<?> c : extensionManager.getExtensions(FlowFilePrioritizer.class)) { prioritizerClasses.add(c.getName());
public void verifyComponentTypesInSnippet(final VersionedProcessGroup versionedFlow) { final Map<String, Set<BundleCoordinate>> processorClasses = new HashMap<>(); for (final Class<?> c : extensionManager.getExtensions(Processor.class)) { final String name = c.getName(); processorClasses.put(name, extensionManager.getBundles(name).stream().map(bundle -> bundle.getBundleDetails().getCoordinate()).collect(Collectors.toSet())); for (final Class<?> c : extensionManager.getExtensions(ControllerService.class)) { final String name = c.getName(); controllerServiceClasses.put(name, extensionManager.getBundles(name).stream().map(bundle -> bundle.getBundleDetails().getCoordinate()).collect(Collectors.toSet())); for (final Class<?> c : extensionManager.getExtensions(FlowFilePrioritizer.class)) { prioritizerClasses.add(c.getName());
final String bundleGroupFilter, final String bundleArtifactFilter, final String typeFilter) { final Set<Class> serviceImplementations = getExtensionManager().getExtensions(ControllerService.class);