You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ma...@apache.org on 2015/01/26 21:17:26 UTC
[2/5] incubator-nifi git commit: 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
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 <ma...@hotmail.com>
Authored: Mon Jan 26 11:42:01 2015 -0500
Committer: Mark Payne <ma...@hotmail.com>
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.