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.

Reply via email to