NIFI-5066:
- Ensuring we verify we can enable/disable when appropriate.

Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/18ec3861
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/18ec3861
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/18ec3861

Branch: refs/heads/master
Commit: 18ec3861509193ab1affd196c01b315db6b98919
Parents: 64cd340
Author: Matt Gilman <[email protected]>
Authored: Thu May 24 16:12:02 2018 -0400
Committer: Mark Payne <[email protected]>
Committed: Fri May 25 11:22:21 2018 -0400

----------------------------------------------------------------------
 .../java/org/apache/nifi/web/NiFiServiceFacade.java   |  9 +++++++++
 .../apache/nifi/web/StandardNiFiServiceFacade.java    |  5 +++++
 .../java/org/apache/nifi/web/api/FlowResource.java    |  8 +++++++-
 .../java/org/apache/nifi/web/dao/ProcessGroupDAO.java | 10 ++++++++++
 .../nifi/web/dao/impl/StandardProcessGroupDAO.java    | 14 ++++++++++++++
 5 files changed, 45 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/18ec3861/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java
index e402e1c..9028f41 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java
@@ -1010,6 +1010,15 @@ public interface NiFiServiceFacade {
     void verifyScheduleComponents(String processGroupId, ScheduledState state, 
Set<String> componentIds);
 
     /**
+     * Verifies the contents of the specified process group can be enabled or 
disabled.
+     *
+     * @param processGroupId the ProcessGroup id
+     * @param state scheduled state
+     * @param componentIds the components
+     */
+    void verifyEnableComponents(String processGroupId, ScheduledState state, 
Set<String> componentIds);
+
+    /**
      * Verifies the controller services with the given ID's can be enabled or 
disabled
      *
      * @param processGroupId the ID of the process group

http://git-wip-us.apache.org/repos/asf/nifi/blob/18ec3861/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java
index 0a008ea..5a01736 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java
@@ -496,6 +496,11 @@ public class StandardNiFiServiceFacade implements 
NiFiServiceFacade {
     }
 
     @Override
+    public void verifyEnableComponents(String processGroupId, ScheduledState 
state, Set<String> componentIds) {
+        processGroupDAO.verifyEnableComponents(processGroupId, state, 
componentIds);
+    }
+
+    @Override
     public void verifyActivateControllerServices(final String groupId, final 
ControllerServiceState state, final Collection<String> serviceIds) {
         processGroupDAO.verifyActivateControllerServices(state, serviceIds);
     }

http://git-wip-us.apache.org/repos/asf/nifi/blob/18ec3861/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/FlowResource.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/FlowResource.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/FlowResource.java
index eaa48d2..3446aa3 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/FlowResource.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/FlowResource.java
@@ -686,7 +686,13 @@ public class FlowResource extends ApplicationResource {
                         connectable.authorize(authorizer, RequestAction.WRITE, 
NiFiUserUtils.getNiFiUser());
                     });
                 },
-                () -> serviceFacade.verifyScheduleComponents(id, state, 
requestComponentRevisions.keySet()),
+                () -> {
+                    if 
(STATE_ENABLED.equals(requestScheduleComponentsEntity.getState()) || 
STATE_DISABLED.equals(requestScheduleComponentsEntity.getState())) {
+                        serviceFacade.verifyEnableComponents(id, state, 
requestComponentRevisions.keySet());
+                    } else {
+                        serviceFacade.verifyScheduleComponents(id, state, 
requestComponentRevisions.keySet());
+                    }
+                },
                 (revisions, scheduleComponentsEntity) -> {
 
                     final ScheduledState scheduledState;

http://git-wip-us.apache.org/repos/asf/nifi/blob/18ec3861/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/ProcessGroupDAO.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/ProcessGroupDAO.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/ProcessGroupDAO.java
index 5cf7ecb..ffc3134 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/ProcessGroupDAO.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/ProcessGroupDAO.java
@@ -68,10 +68,20 @@ public interface ProcessGroupDAO {
      *
      * @param groupId id
      * @param state scheduled state
+     * @param componentIds component ids
      */
     void verifyScheduleComponents(String groupId, ScheduledState state, 
Set<String> componentIds);
 
     /**
+     * Verifies the specified process group can be enabled.
+     *
+     * @param groupId id
+     * @param state scheduled state
+     * @param componentIds component ids
+     */
+    void verifyEnableComponents(String groupId, ScheduledState state, 
Set<String> componentIds);
+
+    /**
      * Verifies the specified controller services can be modified
      *
      * @param state the desired state

http://git-wip-us.apache.org/repos/asf/nifi/blob/18ec3861/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessGroupDAO.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessGroupDAO.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessGroupDAO.java
index 265d128..cce3390 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessGroupDAO.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessGroupDAO.java
@@ -131,6 +131,20 @@ public class StandardProcessGroupDAO extends ComponentDAO 
implements ProcessGrou
     }
 
     @Override
+    public void verifyEnableComponents(String groupId, ScheduledState state, 
Set<String> componentIds) {
+        final ProcessGroup group = locateProcessGroup(flowController, groupId);
+
+        for (final String componentId : componentIds) {
+            final Connectable connectable = 
group.findLocalConnectable(componentId);
+            if (ScheduledState.STOPPED.equals(state)) {
+                connectable.verifyCanEnable();
+            } else if (ScheduledState.DISABLED.equals(state)) {
+                connectable.verifyCanDisable();
+            }
+        }
+    }
+
+    @Override
     public void verifyActivateControllerServices(final ControllerServiceState 
state, final Collection<String> serviceIds) {
         final Set<ControllerServiceNode> serviceNodes = serviceIds.stream()
             .map(flowController::getControllerServiceNode)

Reply via email to