NIFI-250: Allow Controller Services to be created without id and properties; allow controller service lookup to provide name of controller service given an id
Project: http://git-wip-us.apache.org/repos/asf/incubator-nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-nifi/commit/7a3d208f Tree: http://git-wip-us.apache.org/repos/asf/incubator-nifi/tree/7a3d208f Diff: http://git-wip-us.apache.org/repos/asf/incubator-nifi/diff/7a3d208f Branch: refs/heads/NIFI-250 Commit: 7a3d208f031122ab13349ace8aeafac9fe5c54ac Parents: 80f02e4 Author: Mark Payne <[email protected]> Authored: Mon Jan 26 11:42:01 2015 -0500 Committer: Mark Payne <[email protected]> Committed: Mon Jan 26 11:42:01 2015 -0500 ---------------------------------------------------------------------- .../controller/ControllerServiceLookup.java | 7 ++++ ...kControllerServiceInitializationContext.java | 5 +++ .../nifi/util/MockControllerServiceLookup.java | 6 ++++ .../MockProcessorInitializationContext.java | 5 +++ .../apache/nifi/util/MockValidationContext.java | 6 ++++ .../cluster/manager/impl/WebClusterManager.java | 10 ++++-- .../service/ControllerServiceProvider.java | 7 ++-- .../service/ControllerServiceReference.java | 7 ++-- .../apache/nifi/controller/FlowController.java | 38 +++++++++++++++++--- .../reporting/StandardReportingContext.java | 6 ++++ .../StandardReportingInitializationContext.java | 5 +++ ...dControllerServiceInitializationContext.java | 5 +++ .../service/StandardControllerServiceNode.java | 2 +- .../StandardControllerServiceProvider.java | 31 +++++++--------- .../StandardControllerServiceReference.java | 15 ++++---- .../nifi/processor/StandardProcessContext.java | 5 +++ .../processor/TestStandardPropertyValue.java | 6 +++- .../org/apache/nifi/web/api/dto/DtoFactory.java | 5 +-- .../nifi/web/controller/ControllerFacade.java | 11 ++++-- 19 files changed, 133 insertions(+), 49 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/7a3d208f/nifi/nifi-api/src/main/java/org/apache/nifi/controller/ControllerServiceLookup.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-api/src/main/java/org/apache/nifi/controller/ControllerServiceLookup.java b/nifi/nifi-api/src/main/java/org/apache/nifi/controller/ControllerServiceLookup.java index 77b8e62..25167ad 100644 --- a/nifi/nifi-api/src/main/java/org/apache/nifi/controller/ControllerServiceLookup.java +++ b/nifi/nifi-api/src/main/java/org/apache/nifi/controller/ControllerServiceLookup.java @@ -63,4 +63,11 @@ public interface ControllerServiceLookup { */ Set<String> getControllerServiceIdentifiers(Class<? extends ControllerService> serviceType) throws IllegalArgumentException; + /** + * Returns the name of the Controller service with the given identifier. If no service can be + * found with this identifier, returns {@code null}. + * @param serviceIdentifier + * @return + */ + String getControllerServiceName(String serviceIdentifier); } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/7a3d208f/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockControllerServiceInitializationContext.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockControllerServiceInitializationContext.java b/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockControllerServiceInitializationContext.java index 86624ae..1d74029 100644 --- a/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockControllerServiceInitializationContext.java +++ b/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockControllerServiceInitializationContext.java @@ -33,6 +33,11 @@ public class MockControllerServiceInitializationContext extends MockControllerSe public String getIdentifier() { return identifier; } + + @Override + public String getControllerServiceName(final String serviceIdentifier) { + return null; + } @Override public ControllerServiceLookup getControllerServiceLookup() { http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/7a3d208f/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockControllerServiceLookup.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockControllerServiceLookup.java b/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockControllerServiceLookup.java index ed0d650..82540d0 100644 --- a/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockControllerServiceLookup.java +++ b/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockControllerServiceLookup.java @@ -73,4 +73,10 @@ public abstract class MockControllerServiceLookup implements ControllerServiceLo } return ids; } + + @Override + public String getControllerServiceName(String serviceIdentifier) { + final ControllerServiceConfiguration status = controllerServiceMap.get(serviceIdentifier); + return status == null ? null : serviceIdentifier; + } } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/7a3d208f/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockProcessorInitializationContext.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockProcessorInitializationContext.java b/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockProcessorInitializationContext.java index f49a6c5..582ffb1 100644 --- a/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockProcessorInitializationContext.java +++ b/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockProcessorInitializationContext.java @@ -63,6 +63,11 @@ public class MockProcessorInitializationContext implements ProcessorInitializati } @Override + public String getControllerServiceName(String serviceIdentifier) { + return context.getControllerServiceName(serviceIdentifier); + } + + @Override public boolean isControllerServiceEnabled(String serviceIdentifier) { return context.isControllerServiceEnabled(serviceIdentifier); } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/7a3d208f/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockValidationContext.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockValidationContext.java b/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockValidationContext.java index fd0b6cd..34fd7de 100644 --- a/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockValidationContext.java +++ b/nifi/nifi-mock/src/main/java/org/apache/nifi/util/MockValidationContext.java @@ -90,4 +90,10 @@ public class MockValidationContext implements ValidationContext, ControllerServi public boolean isControllerServiceEnabled(final ControllerService service) { return context.isControllerServiceEnabled(service); } + + @Override + public String getControllerServiceName(final String serviceIdentifier) { + final ControllerServiceConfiguration configuration = context.getConfiguration(serviceIdentifier); + return configuration == null ? null : serviceIdentifier; + } } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/7a3d208f/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-cluster/src/main/java/org/apache/nifi/cluster/manager/impl/WebClusterManager.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-cluster/src/main/java/org/apache/nifi/cluster/manager/impl/WebClusterManager.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-cluster/src/main/java/org/apache/nifi/cluster/manager/impl/WebClusterManager.java index 511bb7d..17a6452 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-cluster/src/main/java/org/apache/nifi/cluster/manager/impl/WebClusterManager.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-cluster/src/main/java/org/apache/nifi/cluster/manager/impl/WebClusterManager.java @@ -191,7 +191,6 @@ import org.apache.nifi.web.api.entity.ProvenanceEventEntity; import org.apache.nifi.web.api.entity.RemoteProcessGroupEntity; import org.apache.nifi.web.api.entity.RemoteProcessGroupsEntity; import org.apache.nifi.web.util.WebUtils; - import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -1299,8 +1298,8 @@ public class WebClusterManager implements HttpClusterManager, ProtocolHandler, C * @return */ @Override - public ControllerServiceNode createControllerService(String type, String id, Map<String, String> properties) { - return controllerServiceProvider.createControllerService(type, id, properties); + public ControllerServiceNode createControllerService(String type) { + return controllerServiceProvider.createControllerService(type); } @Override @@ -1323,6 +1322,11 @@ public class WebClusterManager implements HttpClusterManager, ProtocolHandler, C return controllerServiceProvider.isControllerServiceEnabled(serviceIdentifier); } + @Override + public String getControllerServiceName(final String serviceIdentifier) { + return controllerServiceProvider.getControllerServiceName(serviceIdentifier); + } + /** * Handle a bulletins message. * http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/7a3d208f/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/main/java/org/apache/nifi/controller/service/ControllerServiceProvider.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/main/java/org/apache/nifi/controller/service/ControllerServiceProvider.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/main/java/org/apache/nifi/controller/service/ControllerServiceProvider.java index 35a255d..ba00799 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/main/java/org/apache/nifi/controller/service/ControllerServiceProvider.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/main/java/org/apache/nifi/controller/service/ControllerServiceProvider.java @@ -16,8 +16,6 @@ */ package org.apache.nifi.controller.service; -import java.util.Map; - import org.apache.nifi.controller.ControllerServiceLookup; /** @@ -26,15 +24,14 @@ import org.apache.nifi.controller.ControllerServiceLookup; public interface ControllerServiceProvider extends ControllerServiceLookup { /** - * Gets the controller service for the specified identifier. Returns null if - * the identifier does not match a known service. + * Creates a new Controller Service of the specified type * * @param type * @param id * @param properties * @return */ - ControllerServiceNode createControllerService(String type, String id, Map<String, String> properties); + ControllerServiceNode createControllerService(String type); /** * Gets the controller service node for the specified identifier. Returns http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/7a3d208f/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/main/java/org/apache/nifi/controller/service/ControllerServiceReference.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/main/java/org/apache/nifi/controller/service/ControllerServiceReference.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/main/java/org/apache/nifi/controller/service/ControllerServiceReference.java index 5cb676f..67ffb6c 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/main/java/org/apache/nifi/controller/service/ControllerServiceReference.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/main/java/org/apache/nifi/controller/service/ControllerServiceReference.java @@ -41,10 +41,11 @@ public interface ControllerServiceReference { Set<ConfiguredComponent> getReferencingComponents(); /** - * Returns a {@link Set} of all Processors and Reporting Tasks that are - * referencing the Controller Service and are running, in addition to all + * Returns a {@link Set} of all Processors, Reporting Tasks, and Controller Services that are + * referencing the Controller Service and are running (in the case of Processors and Reporting Tasks) + * or enabled (in the case of Controller Services) * * @return */ - Set<ConfiguredComponent> getRunningReferences(); + Set<ConfiguredComponent> getActiveReferences(); } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/7a3d208f/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java index 346e801..ae0ef97 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java @@ -48,6 +48,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock; import javax.net.ssl.SSLContext; +import org.apache.commons.lang3.StringUtils; import org.apache.nifi.admin.service.UserService; import org.apache.nifi.cluster.BulletinsPayload; import org.apache.nifi.cluster.HeartbeatPayload; @@ -100,6 +101,7 @@ import org.apache.nifi.controller.scheduling.StandardProcessScheduler; import org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent; import org.apache.nifi.controller.service.ControllerServiceNode; import org.apache.nifi.controller.service.ControllerServiceProvider; +import org.apache.nifi.controller.service.ControllerServiceReference; import org.apache.nifi.controller.service.StandardControllerServiceProvider; import org.apache.nifi.controller.status.ConnectionStatus; import org.apache.nifi.controller.status.PortStatus; @@ -126,7 +128,6 @@ import org.apache.nifi.groups.ProcessGroup; import org.apache.nifi.groups.RemoteProcessGroup; import org.apache.nifi.groups.RemoteProcessGroupPortDescriptor; import org.apache.nifi.groups.StandardProcessGroup; -import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.logging.LogLevel; import org.apache.nifi.logging.LogRepository; import org.apache.nifi.logging.LogRepositoryFactory; @@ -163,6 +164,7 @@ import org.apache.nifi.reporting.EventAccess; import org.apache.nifi.reporting.ReportingTask; import org.apache.nifi.reporting.Severity; import org.apache.nifi.scheduling.SchedulingStrategy; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.util.FormatUtils; import org.apache.nifi.util.NiFiProperties; import org.apache.nifi.util.ReflectionUtils; @@ -182,7 +184,6 @@ import org.apache.nifi.web.api.dto.RemoteProcessGroupDTO; import org.apache.nifi.web.api.dto.RemoteProcessGroupPortDTO; import org.apache.nifi.web.api.dto.TemplateDTO; import org.apache.nifi.web.api.dto.status.StatusHistoryDTO; -import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -2522,9 +2523,32 @@ public class FlowController implements EventAccess, ControllerServiceProvider, H return reportingTasks.values(); } + /** + * Recursively stops all Processors and Reporting Tasks that are referencing the given Controller Service, + * as well as disabling any Controller Service that references this Controller Service (and stops + * all Reporting Task or Controller Service that is referencing it, and so on). + * @param serviceNode + */ + public void deactiveReferencingComponents(final ControllerServiceNode serviceNode) { + final ControllerServiceReference reference = serviceNode.getReferences(); + + final Set<ConfiguredComponent> components = reference.getActiveReferences(); + for (final ConfiguredComponent component : components) { + if ( component instanceof ControllerServiceNode ) { + deactiveReferencingComponents((ControllerServiceNode) component); + // TODO: DISABLE CONTROLLER SERVICE! + } else if ( component instanceof ReportingTaskNode ) { + stopReportingTask((ReportingTaskNode) component); + } else if ( component instanceof ProcessorNode ) { + final ProcessorNode procNode = (ProcessorNode) component; + stopProcessor(procNode.getProcessGroup().getIdentifier(), procNode.getIdentifier()); + } + } + } + @Override - public ControllerServiceNode createControllerService(final String type, final String id, final Map<String, String> properties) { - return controllerServiceProvider.createControllerService(type, id.intern(), properties); + public ControllerServiceNode createControllerService(final String type) { + return controllerServiceProvider.createControllerService(type); } @Override @@ -2547,6 +2571,12 @@ public class FlowController implements EventAccess, ControllerServiceProvider, H return controllerServiceProvider.isControllerServiceEnabled(serviceIdentifier); } + @Override + public String getControllerServiceName(final String serviceIdentifier) { + return controllerServiceProvider.getControllerServiceName(serviceIdentifier); + } + + // // Counters // http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/7a3d208f/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/reporting/StandardReportingContext.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/reporting/StandardReportingContext.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/reporting/StandardReportingContext.java index ed48e20..2b49d76 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/reporting/StandardReportingContext.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/reporting/StandardReportingContext.java @@ -129,4 +129,10 @@ public class StandardReportingContext implements ReportingContext, ControllerSer public ControllerServiceLookup getControllerServiceLookup() { return this; } + + @Override + public String getControllerServiceName(final String serviceIdentifier) { + return serviceProvider.getControllerServiceName(serviceIdentifier); + } + } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/7a3d208f/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/reporting/StandardReportingInitializationContext.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/reporting/StandardReportingInitializationContext.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/reporting/StandardReportingInitializationContext.java index d576f9c..6330373 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/reporting/StandardReportingInitializationContext.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/reporting/StandardReportingInitializationContext.java @@ -93,4 +93,9 @@ public class StandardReportingInitializationContext implements ReportingInitiali public ControllerServiceLookup getControllerServiceLookup() { return this; } + + @Override + public String getControllerServiceName(final String serviceIdentifier) { + return serviceProvider.getControllerServiceName(serviceIdentifier); + } } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/7a3d208f/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceInitializationContext.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceInitializationContext.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceInitializationContext.java index 8b5f27f..ed7a152 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceInitializationContext.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceInitializationContext.java @@ -61,4 +61,9 @@ public class StandardControllerServiceInitializationContext implements Controlle public boolean isControllerServiceEnabled(final ControllerService service) { return serviceProvider.isControllerServiceEnabled(service); } + + @Override + public String getControllerServiceName(final String serviceIdentifier) { + return serviceProvider.getControllerServiceName(serviceIdentifier); + } } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/7a3d208f/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceNode.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceNode.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceNode.java index 455eac1..e3e6e6b 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceNode.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceNode.java @@ -62,7 +62,7 @@ public class StandardControllerServiceNode extends AbstractConfiguredComponent i if (disabled) { // do not allow a Controller Service to be disabled if it's currently being used. - final Set<ConfiguredComponent> runningRefs = getReferences().getRunningReferences(); + final Set<ConfiguredComponent> runningRefs = getReferences().getActiveReferences(); if (!runningRefs.isEmpty()) { throw new IllegalStateException("Cannot disable Controller Service because it is referenced (either directly or indirectly) by " + runningRefs.size() + " different components that are currently running"); } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/7a3d208f/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceProvider.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceProvider.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceProvider.java index fc07ce1..66cc541 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceProvider.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceProvider.java @@ -28,19 +28,16 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import org.apache.nifi.controller.ControllerService; import org.apache.nifi.controller.ValidationContextFactory; -import org.apache.nifi.controller.annotation.OnConfigured; -import org.apache.nifi.controller.exception.ControllerServiceAlreadyExistsException; import org.apache.nifi.controller.exception.ControllerServiceNotFoundException; import org.apache.nifi.nar.ExtensionManager; import org.apache.nifi.nar.NarCloseable; import org.apache.nifi.processor.StandardValidationContextFactory; import org.apache.nifi.util.ObjectHolder; -import org.apache.nifi.util.ReflectionUtils; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -93,14 +90,12 @@ public class StandardControllerServiceProvider implements ControllerServiceProvi } @Override - public ControllerServiceNode createControllerService(final String type, final String id, final Map<String, String> properties) { - if (type == null || id == null) { + public ControllerServiceNode createControllerService(final String type) { + if (type == null) { throw new NullPointerException(); } - if (controllerServices.containsKey(id)) { - throw new ControllerServiceAlreadyExistsException(id); - } - + + final String id = UUID.randomUUID().toString(); final ClassLoader currentContextClassLoader = Thread.currentThread().getContextClassLoader(); try { final ClassLoader cl = ExtensionManager.getClassLoader(type); @@ -133,7 +128,7 @@ public class StandardControllerServiceProvider implements ControllerServiceProvi }; final ControllerService proxiedService = (ControllerService) Proxy.newProxyInstance(cl, getInterfaces(controllerServiceClass), invocationHandler); - logger.info("Loaded service {} as configured.", type); + logger.info("Create Controller Service of type {} with identifier {}", type, id); originalService.initialize(new StandardControllerServiceInitializationContext(id, this)); @@ -141,13 +136,7 @@ public class StandardControllerServiceProvider implements ControllerServiceProvi final ControllerServiceNode serviceNode = new StandardControllerServiceNode(proxiedService, id, validationContextFactory, this); serviceNodeHolder.set(serviceNode); - serviceNode.setAnnotationData(null); - serviceNode.setName(id); - for (final Map.Entry<String, String> entry : properties.entrySet()) { - serviceNode.setProperty(entry.getKey(), entry.getValue()); - } - final StandardConfigurationContext configurationContext = new StandardConfigurationContext(serviceNode, this); - ReflectionUtils.quietlyInvokeMethodsWithAnnotation(OnConfigured.class, originalService, configurationContext); + serviceNode.setName(rawClass.getSimpleName()); this.controllerServices.put(id, serviceNode); return serviceNode; @@ -193,4 +182,10 @@ public class StandardControllerServiceProvider implements ControllerServiceProvi return identifiers; } + + @Override + public String getControllerServiceName(final String serviceIdentifier) { + final ControllerServiceNode node = getControllerServiceNode(serviceIdentifier); + return node == null ? null : node.getName(); + } } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/7a3d208f/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceReference.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceReference.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceReference.java index a1c4984..a8468ff 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceReference.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceReference.java @@ -58,23 +58,24 @@ public class StandardControllerServiceReference implements ControllerServiceRefe } @Override - public Set<ConfiguredComponent> getRunningReferences() { - final Set<ConfiguredComponent> runningReferences = new HashSet<>(); + public Set<ConfiguredComponent> getActiveReferences() { + final Set<ConfiguredComponent> activeReferences = new HashSet<>(); final Set<ControllerServiceNode> serviceNodes = new HashSet<>(); for (final ConfiguredComponent component : components) { if (component instanceof ControllerServiceNode) { serviceNodes.add((ControllerServiceNode) component); + activeReferences.add(component); } else if (isRunning(component)) { - runningReferences.add(component); + activeReferences.add(component); } } - runningReferences.addAll(getRunningIndirectReferences(serviceNodes)); - return runningReferences; + activeReferences.addAll(getActiveIndirectReferences(serviceNodes)); + return activeReferences; } - private Set<ConfiguredComponent> getRunningIndirectReferences(final Set<ControllerServiceNode> referencingServices) { + private Set<ConfiguredComponent> getActiveIndirectReferences(final Set<ControllerServiceNode> referencingServices) { if (referencingServices.isEmpty()) { return Collections.emptySet(); } @@ -92,7 +93,7 @@ public class StandardControllerServiceReference implements ControllerServiceRefe } } - references.addAll(getRunningIndirectReferences(serviceNodes)); + references.addAll(getActiveIndirectReferences(serviceNodes)); } return references; http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/7a3d208f/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/processor/StandardProcessContext.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/processor/StandardProcessContext.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/processor/StandardProcessContext.java index cd0d31c..8d6b710 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/processor/StandardProcessContext.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/processor/StandardProcessContext.java @@ -170,4 +170,9 @@ public class StandardProcessContext implements ProcessContext, ControllerService return set; } + @Override + public String getControllerServiceName(final String serviceIdentifier) { + return controllerServiceProvider.getControllerServiceName(serviceIdentifier); + } + } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/7a3d208f/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/processor/TestStandardPropertyValue.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/processor/TestStandardPropertyValue.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/processor/TestStandardPropertyValue.java index 7390098..2c85655 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/processor/TestStandardPropertyValue.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/processor/TestStandardPropertyValue.java @@ -17,6 +17,7 @@ package org.apache.nifi.processor; import org.apache.nifi.processor.StandardPropertyValue; + import static org.junit.Assert.assertEquals; import java.util.Calendar; @@ -29,7 +30,6 @@ import org.apache.nifi.controller.ControllerService; import org.apache.nifi.controller.ControllerServiceLookup; import org.apache.nifi.controller.repository.StandardFlowFileRecord; import org.apache.nifi.flowfile.FlowFile; - import org.junit.Test; public class TestStandardPropertyValue { @@ -163,5 +163,9 @@ public class TestStandardPropertyValue { return true; } + @Override + public String getControllerServiceName(String serviceIdentifier) { + return null; + } } } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/7a3d208f/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/dto/DtoFactory.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/dto/DtoFactory.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/dto/DtoFactory.java index 7d44624..f2d6325 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/dto/DtoFactory.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/dto/DtoFactory.java @@ -1762,10 +1762,7 @@ public final class DtoFactory { } else { final Set<AllowableValueDTO> allowableValues = new LinkedHashSet<>(); for (final String serviceIdentifier : controllerServiceLookup.getControllerServiceIdentifiers(serviceDefinition)) { - String displayName = serviceIdentifier; - - // TODO: attempt to get the controller service name - final ControllerService controllerService = controllerServiceLookup.getControllerService(serviceIdentifier); + final String displayName = controllerServiceLookup.getControllerServiceName(serviceIdentifier); final AllowableValueDTO allowableValue = new AllowableValueDTO(); allowableValue.setDisplayName(displayName); http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/7a3d208f/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/ControllerFacade.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/ControllerFacade.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/ControllerFacade.java index 4a00d02..27c60bb 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/ControllerFacade.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/ControllerFacade.java @@ -115,7 +115,6 @@ import org.apache.nifi.admin.service.UserService; import org.apache.nifi.authorization.DownloadAuthorization; import org.apache.nifi.processor.DataUnit; import org.apache.nifi.reporting.ReportingTask; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.security.access.AccessDeniedException; @@ -406,8 +405,8 @@ public class ControllerFacade implements ControllerServiceProvider { } @Override - public ControllerServiceNode createControllerService(String type, String id, Map<String, String> properties) { - return flowController.createControllerService(type, id, properties); + public ControllerServiceNode createControllerService(String type) { + return flowController.createControllerService(type); } @Override @@ -429,6 +428,12 @@ public class ControllerFacade implements ControllerServiceProvider { public boolean isControllerServiceEnabled(final String serviceIdentifier) { return flowController.isControllerServiceEnabled(serviceIdentifier); } + + @Override + public String getControllerServiceName(final String serviceIdentifier) { + return flowController.getControllerServiceName(serviceIdentifier); + } + /** * Gets the status of this controller.
