You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by jo...@apache.org on 2015/04/22 17:46:49 UTC

[06/11] incubator-nifi git commit: NIFI-271 checkpoint

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/888254b2/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 ec25ab1..07e754e 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
@@ -457,11 +457,12 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
         rootGroup.setName(DEFAULT_ROOT_GROUP_NAME);
         instanceId = UUID.randomUUID().toString();
 
-        if (remoteInputSocketPort == null){
+        if (remoteInputSocketPort == null) {
             LOG.info("Not enabling Site-to-Site functionality because nifi.remote.input.socket.port is not set");
             externalSiteListener = null;
         } else if (isSiteToSiteSecure && sslContext == null) {
-            LOG.error("Unable to create Secure Site-to-Site Listener because not all required Keystore/Truststore Properties are set. Site-to-Site functionality will be disabled until this problem is has been fixed.");
+            LOG.error("Unable to create Secure Site-to-Site Listener because not all required Keystore/Truststore "
+                    + "Properties are set. Site-to-Site functionality will be disabled until this problem is has been fixed.");
             externalSiteListener = null;
         } else {
             // Register the SocketFlowFileServerProtocol as the appropriate resource for site-to-site Server Protocol
@@ -530,7 +531,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
             }
         };
     }
-    
+
     public void initializeFlow() throws IOException {
         writeLock.lock();
         try {
@@ -584,17 +585,19 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
      * Causes any processors that were added to the flow with a 'delayStart'
      * flag of true to now start
      * </p>
+     *
+     * @param startDelayedComponents true if start
      */
     public void onFlowInitialized(final boolean startDelayedComponents) {
         writeLock.lock();
         try {
-            if ( startDelayedComponents ) {
+            if (startDelayedComponents) {
                 LOG.info("Starting {} processors/ports/funnels", (startConnectablesAfterInitialization.size() + startRemoteGroupPortsAfterInitialization.size()));
                 for (final Connectable connectable : startConnectablesAfterInitialization) {
                     if (connectable.getScheduledState() == ScheduledState.DISABLED) {
                         continue;
                     }
-    
+
                     try {
                         if (connectable instanceof ProcessorNode) {
                             connectable.getProcessGroup().startProcessor((ProcessorNode) connectable);
@@ -603,14 +606,14 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
                         }
                     } catch (final Throwable t) {
                         LOG.error("Unable to start {} due to {}", new Object[]{connectable, t.toString()});
-                        if ( LOG.isDebugEnabled() ) {
+                        if (LOG.isDebugEnabled()) {
                             LOG.error("", t);
                         }
                     }
                 }
-    
+
                 startConnectablesAfterInitialization.clear();
-    
+
                 int startedTransmitting = 0;
                 for (final RemoteGroupPort remoteGroupPort : startRemoteGroupPortsAfterInitialization) {
                     try {
@@ -620,7 +623,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
                         LOG.error("Unable to start transmitting with {} due to {}", new Object[]{remoteGroupPort, t});
                     }
                 }
-    
+
                 LOG.info("Started {} Remote Group Ports transmitting", startedTransmitting);
                 startRemoteGroupPortsAfterInitialization.clear();
             } else {
@@ -635,7 +638,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
                         LOG.error("Unable to start {} due to {}", new Object[]{connectable, t});
                     }
                 }
-                
+
                 startConnectablesAfterInitialization.clear();
                 startRemoteGroupPortsAfterInitialization.clear();
             }
@@ -720,9 +723,9 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     /**
      * Creates a new Label
      *
-     * @param id
-     * @param text
-     * @return
+     * @param id identifier
+     * @param text label text
+     * @return new label
      * @throws NullPointerException if either argument is null
      */
     public Label createLabel(final String id, final String text) {
@@ -732,8 +735,8 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     /**
      * Creates a funnel
      *
-     * @param id
-     * @return
+     * @param id funnel id
+     * @return new funnel
      */
     public Funnel createFunnel(final String id) {
         return new StandardFunnel(id.intern(), null, processScheduler);
@@ -742,9 +745,9 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     /**
      * Creates a Port to use as an Input Port for a Process Group
      *
-     * @param id
-     * @param name
-     * @return
+     * @param id port identifier
+     * @param name port name
+     * @return new port
      * @throws NullPointerException if the ID or name is not unique
      * @throws IllegalStateException if an Input Port already exists with the
      * same name or id.
@@ -759,9 +762,9 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     /**
      * Creates a Port to use as an Output Port for a Process Group
      *
-     * @param id
-     * @param name
-     * @return
+     * @param id port id
+     * @param name port name
+     * @return new port
      * @throws NullPointerException if the ID or name is not unique
      * @throws IllegalStateException if an Input Port already exists with the
      * same name or id.
@@ -776,8 +779,8 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     /**
      * Creates a ProcessGroup with the given ID
      *
-     * @param id
-     * @return
+     * @param id group id
+     * @return new group
      * @throws NullPointerException if the argument is null
      */
     public ProcessGroup createProcessGroup(final String id) {
@@ -786,13 +789,13 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
 
     /**
      * <p>
-     * Creates a new ProcessorNode with the given type and identifier and initializes it invoking the
-     * methods annotated with {@link OnAdded}.
+     * Creates a new ProcessorNode with the given type and identifier and
+     * initializes it invoking the methods annotated with {@link OnAdded}.
      * </p>
      *
-     * @param type
-     * @param id
-     * @return
+     * @param type processor type
+     * @param id processor id
+     * @return new processor
      * @throws NullPointerException if either arg is null
      * @throws ProcessorInstantiationException if the processor cannot be
      * instantiated for any reason
@@ -800,17 +803,19 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     public ProcessorNode createProcessor(final String type, String id) throws ProcessorInstantiationException {
         return createProcessor(type, id, true);
     }
-    
+
     /**
      * <p>
-     * Creates a new ProcessorNode with the given type and identifier and optionally initializes it.
+     * Creates a new ProcessorNode with the given type and identifier and
+     * optionally initializes it.
      * </p>
      *
      * @param type the fully qualified Processor class name
      * @param id the unique ID of the Processor
-     * @param firstTimeAdded whether or not this is the first time this Processor is added to the graph. If {@code true},
-     *                       will invoke methods annotated with the {@link OnAdded} annotation.
-     * @return
+     * @param firstTimeAdded whether or not this is the first time this
+     * Processor is added to the graph. If {@code true}, will invoke methods
+     * annotated with the {@link OnAdded} annotation.
+     * @return new processor node
      * @throws NullPointerException if either arg is null
      * @throws ProcessorInstantiationException if the processor cannot be
      * instantiated for any reason
@@ -825,7 +830,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
         final LogRepository logRepository = LogRepositoryFactory.getRepository(id);
         logRepository.addObserver(StandardProcessorNode.BULLETIN_OBSERVER_ID, LogLevel.WARN, new ProcessorLogObserver(getBulletinRepository(), procNode));
 
-        if ( firstTimeAdded ) {
+        if (firstTimeAdded) {
             try (final NarCloseable x = NarCloseable.withNarLoader()) {
                 ReflectionUtils.invokeMethodsWithAnnotation(OnAdded.class, org.apache.nifi.processor.annotation.OnAdded.class, processor);
             } catch (final Exception e) {
@@ -886,9 +891,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     }
 
     /**
-     * Gets the BulletinRepository for storing and retrieving Bulletins.
-     *
-     * @return
+     * @return the BulletinRepository for storing and retrieving Bulletins
      */
     public BulletinRepository getBulletinRepository() {
         return bulletinRepository;
@@ -902,9 +905,9 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
      * Creates a Port to use as an Input Port for the root Process Group, which
      * is used for Site-to-Site communications
      *
-     * @param id
-     * @param name
-     * @return
+     * @param id port id
+     * @param name port name
+     * @return new port
      * @throws NullPointerException if the ID or name is not unique
      * @throws IllegalStateException if an Input Port already exists with the
      * same name or id.
@@ -913,7 +916,8 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
         id = requireNonNull(id).intern();
         name = requireNonNull(name).intern();
         verifyPortIdDoesNotExist(id);
-        return new StandardRootGroupPort(id, name, null, TransferDirection.RECEIVE, ConnectableType.INPUT_PORT, userService, getBulletinRepository(), processScheduler, Boolean.TRUE.equals(isSiteToSiteSecure));
+        return new StandardRootGroupPort(id, name, null, TransferDirection.RECEIVE, ConnectableType.INPUT_PORT,
+                userService, getBulletinRepository(), processScheduler, Boolean.TRUE.equals(isSiteToSiteSecure));
     }
 
     /**
@@ -921,9 +925,9 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
      * is used for Site-to-Site communications and will queue flow files waiting
      * to be delivered to remote instances
      *
-     * @param id
-     * @param name
-     * @return
+     * @param id port id
+     * @param name port name
+     * @return new port
      * @throws NullPointerException if the ID or name is not unique
      * @throws IllegalStateException if an Input Port already exists with the
      * same name or id.
@@ -932,17 +936,17 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
         id = requireNonNull(id).intern();
         name = requireNonNull(name).intern();
         verifyPortIdDoesNotExist(id);
-        return new StandardRootGroupPort(id, name, null, TransferDirection.SEND, ConnectableType.OUTPUT_PORT, userService, getBulletinRepository(), processScheduler, Boolean.TRUE.equals(isSiteToSiteSecure));
+        return new StandardRootGroupPort(id, name, null, TransferDirection.SEND, ConnectableType.OUTPUT_PORT,
+                userService, getBulletinRepository(), processScheduler, Boolean.TRUE.equals(isSiteToSiteSecure));
     }
 
     /**
      * Creates a new Remote Process Group with the given ID that points to the
      * given URI
      *
-     * @param id
-     * @param uri
-     * @return
-     *
+     * @param id group id
+     * @param uri group uri
+     * @return new group
      * @throws NullPointerException if either argument is null
      * @throws IllegalArgumentException if <code>uri</code> is not a valid URI.
      */
@@ -954,8 +958,8 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
      * Verifies that no output port exists with the given id or name. If this
      * does not hold true, throws an IllegalStateException
      *
-     * @param id
-     * @throws IllegalStateException
+     * @param id port identifier
+     * @throws IllegalStateException port already exists
      */
     private void verifyPortIdDoesNotExist(final String id) {
         Port port = rootGroup.findOutputPort(id);
@@ -985,7 +989,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
      * Sets the name for the Root Group, which also changes the name for the
      * controller.
      *
-     * @param name
+     * @param name of root group
      */
     public void setName(final String name) {
         readLock.lock();
@@ -997,10 +1001,8 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     }
 
     /**
-     * Gets the comments of this controller, which is also the comment of the
-     * Root Group.
-     *
-     * @return
+     * @return the comments of this controller, which is also the comment of the
+     * Root Group
      */
     public String getComments() {
         readLock.lock();
@@ -1012,10 +1014,10 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     }
 
     /**
-     * Sets the comment for the Root Group, which also changes the comment for
-     * the controller.
+     * Sets the comments
      *
-     * @param comments
+     * @param comments for the Root Group, which also changes the comment for
+     * the controller
      */
     public void setComments(final String comments) {
         readLock.lock();
@@ -1075,23 +1077,23 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
 
             // Trigger any processors' methods marked with @OnShutdown to be called
             rootGroup.shutdown();
-            
+
             // invoke any methods annotated with @OnShutdown on Controller Services
-            for ( final ControllerServiceNode serviceNode : getAllControllerServices() ) {
+            for (final ControllerServiceNode serviceNode : getAllControllerServices()) {
                 try (final NarCloseable narCloseable = NarCloseable.withNarLoader()) {
                     final ConfigurationContext configContext = new StandardConfigurationContext(serviceNode, controllerServiceProvider);
                     ReflectionUtils.quietlyInvokeMethodsWithAnnotation(OnShutdown.class, serviceNode.getControllerServiceImplementation(), configContext);
                 }
             }
-            
+
             // invoke any methods annotated with @OnShutdown on Reporting Tasks
-            for ( final ReportingTaskNode taskNode : getAllReportingTasks() ) {
+            for (final ReportingTaskNode taskNode : getAllReportingTasks()) {
                 final ConfigurationContext configContext = taskNode.getConfigurationContext();
                 try (final NarCloseable narCloseable = NarCloseable.withNarLoader()) {
                     ReflectionUtils.quietlyInvokeMethodsWithAnnotation(OnShutdown.class, taskNode.getReportingTask(), configContext);
                 }
             }
-            
+
             try {
                 this.timerDrivenEngineRef.get().awaitTermination(gracefulShutdownSeconds / 2, TimeUnit.SECONDS);
                 this.eventDrivenEngineRef.get().awaitTermination(gracefulShutdownSeconds / 2, TimeUnit.SECONDS);
@@ -1108,7 +1110,8 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
             if (this.timerDrivenEngineRef.get().isTerminated() && eventDrivenEngineRef.get().isTerminated()) {
                 LOG.info("Controller has been terminated successfully.");
             } else {
-                LOG.warn("Controller hasn't terminated properly.  There exists an uninterruptable thread that will take an indeterminate amount of time to stop.  Might need to kill the program manually.");
+                LOG.warn("Controller hasn't terminated properly.  There exists an uninterruptable thread that "
+                        + "will take an indeterminate amount of time to stop.  Might need to kill the program manually.");
             }
 
             if (externalSiteListener != null) {
@@ -1118,24 +1121,24 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
             if (flowFileSwapManager != null) {
                 flowFileSwapManager.shutdown();
             }
-            
-            if ( processScheduler != null ) {
-            	processScheduler.shutdown();
+
+            if (processScheduler != null) {
+                processScheduler.shutdown();
             }
-            
-            if ( contentRepository != null ) {
+
+            if (contentRepository != null) {
                 contentRepository.shutdown();
             }
-            
-            if ( provenanceEventRepository != null ) {
-            	try {
-            		provenanceEventRepository.close();
-            	} catch (final IOException ioe) {
-            		LOG.warn("There was a problem shutting down the Provenance Repository: " + ioe.toString());
-            		if ( LOG.isDebugEnabled() ) {
-            			LOG.warn("", ioe);
-            		}
-            	}
+
+            if (provenanceEventRepository != null) {
+                try {
+                    provenanceEventRepository.close();
+                } catch (final IOException ioe) {
+                    LOG.warn("There was a problem shutting down the Provenance Repository: " + ioe.toString());
+                    if (LOG.isDebugEnabled()) {
+                        LOG.warn("", ioe);
+                    }
+                }
             }
         } finally {
             writeLock.unlock();
@@ -1145,8 +1148,8 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     /**
      * Serializes the current state of the controller to the given OutputStream
      *
-     * @param serializer
-     * @param os
+     * @param serializer serializer
+     * @param os stream
      * @throws FlowSerializationException if serialization of the flow fails for
      * any reason
      */
@@ -1165,7 +1168,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
      * For more details, see
      * {@link FlowSynchronizer#sync(FlowController, DataFlow)}.
      *
-     * @param synchronizer
+     * @param synchronizer synchronizer
      * @param dataFlow the flow to load the controller with. If the flow is null
      * or zero length, then the controller must not have a flow or else an
      * UninheritableFlowException will be thrown.
@@ -1294,8 +1297,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
      * in DTO that is <code>null</code> (with the exception of the required ID)
      * will be ignored.
      *
-     * @param dto
-     * @return a fully-populated DTO representing the newly updated ProcessGroup
+     * @param dto group
      * @throws ProcessorInstantiationException
      *
      * @throws IllegalStateException if no process group can be found with the
@@ -1331,7 +1333,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
      * part of the current flow. This is going create a template based on a
      * snippet of this flow.
      *
-     * @param dto
+     * @param dto template
      * @return a copy of the given DTO
      * @throws IOException if an I/O error occurs when persisting the Template
      * @throws NullPointerException if the DTO is null
@@ -1346,7 +1348,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     /**
      * Removes all templates from this controller
      *
-     * @throws IOException
+     * @throws IOException ioe
      */
     public void clearTemplates() throws IOException {
         templateManager.clear();
@@ -1356,20 +1358,18 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
      * Imports the specified template into this controller. The contents of this
      * template may have come from another NiFi instance.
      *
-     * @param dto
-     * @return
-     * @throws IOException
+     * @param dto dto
+     * @return template
+     * @throws IOException ioe
      */
     public Template importTemplate(final TemplateDTO dto) throws IOException {
         return templateManager.importTemplate(dto);
     }
 
     /**
-     * Returns the template with the given ID, or <code>null</code> if no
-     * template exists with the given ID.
-     *
-     * @param id
-     * @return
+     * @param id identifier
+     * @return the template with the given ID, or <code>null</code> if no
+     * template exists with the given ID
      */
     public Template getTemplate(final String id) {
         return templateManager.getTemplate(id);
@@ -1380,9 +1380,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     }
 
     /**
-     * Returns all templates that this controller knows about.
-     *
-     * @return
+     * @return all templates that this controller knows about
      */
     public Collection<Template> getTemplates() {
         return templateManager.getTemplates();
@@ -1411,8 +1409,8 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
      * Creates an instance of the given snippet and adds the components to the
      * given group
      *
-     * @param group
-     * @param dto
+     * @param group group
+     * @param dto dto
      *
      * @throws NullPointerException if either argument is null
      * @throws IllegalStateException if the snippet is not valid because a
@@ -1432,27 +1430,27 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
             //
             // Instantiate Controller Services
             //
-            for ( final ControllerServiceDTO controllerServiceDTO : dto.getControllerServices() ) {
+            for (final ControllerServiceDTO controllerServiceDTO : dto.getControllerServices()) {
                 final ControllerServiceNode serviceNode = createControllerService(controllerServiceDTO.getType(), controllerServiceDTO.getId(), true);
-                
+
                 serviceNode.setAnnotationData(controllerServiceDTO.getAnnotationData());
                 serviceNode.setComments(controllerServiceDTO.getComments());
                 serviceNode.setName(controllerServiceDTO.getName());
             }
-            
+
             // configure controller services. We do this after creating all of them in case 1 service
             // references another service.
-            for ( final ControllerServiceDTO controllerServiceDTO : dto.getControllerServices() ) {
+            for (final ControllerServiceDTO controllerServiceDTO : dto.getControllerServices()) {
                 final String serviceId = controllerServiceDTO.getId();
                 final ControllerServiceNode serviceNode = getControllerServiceNode(serviceId);
-                
-                for ( final Map.Entry<String, String> entry : controllerServiceDTO.getProperties().entrySet() ) {
-                    if ( entry.getValue() != null ) {
+
+                for (final Map.Entry<String, String> entry : controllerServiceDTO.getProperties().entrySet()) {
+                    if (entry.getValue() != null) {
                         serviceNode.setProperty(entry.getKey(), entry.getValue());
                     }
                 }
             }
-            
+
             //
             // Instantiate the labels
             //
@@ -1467,7 +1465,6 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
                 group.addLabel(label);
             }
 
-            // 
             // Instantiate the funnels
             for (final FunnelDTO funnelDTO : dto.getFunnels()) {
                 final Funnel funnel = createFunnel(funnelDTO.getId());
@@ -1604,7 +1601,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
                 group.addRemoteProcessGroup(remoteGroup);
             }
 
-            // 
+            //
             // Instantiate ProcessGroups
             //
             for (final ProcessGroupDTO groupDTO : dto.getProcessGroups()) {
@@ -1640,12 +1637,12 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
                 final Connectable source;
                 final Connectable destination;
 
-                // locate the source and destination connectable. if this is a remote port 
-                // we need to locate the remote process groups. otherwise we need to 
+                // locate the source and destination connectable. if this is a remote port
+                // we need to locate the remote process groups. otherwise we need to
                 // find the connectable given its parent group.
                 // NOTE: (getConnectable returns ANY connectable, when the parent is
-                // not this group only input ports or output ports should be returned. if something 
-                // other than a port is returned, an exception will be thrown when adding the 
+                // not this group only input ports or output ports should be returned. if something
+                // other than a port is returned, an exception will be thrown when adding the
                 // connection below.)
                 // see if the source connectable is a remote port
                 if (ConnectableType.REMOTE_OUTPUT_PORT.name().equals(sourceDTO.getType())) {
@@ -1711,8 +1708,8 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     /**
      * Converts a set of ports into a set of remote process group ports.
      *
-     * @param ports
-     * @return
+     * @param ports ports
+     * @return group descriptors
      */
     private Set<RemoteProcessGroupPortDescriptor> convertRemotePort(final Set<RemoteProcessGroupPortDTO> ports) {
         Set<RemoteProcessGroupPortDescriptor> remotePorts = null;
@@ -1738,8 +1735,8 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
      * Returns the parent of the specified Connectable. This only considers this
      * group and any direct child sub groups.
      *
-     * @param parentGroupId
-     * @return
+     * @param parentGroupId group id
+     * @return parent group
      */
     private ProcessGroup getConnectableParent(final ProcessGroup group, final String parentGroupId) {
         if (areGroupsSame(group.getIdentifier(), parentGroupId)) {
@@ -1770,8 +1767,8 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
      * {@link ProcessorInstantiationException} will be thrown.
      * </p>
      *
-     * @param group
-     * @param templateContents
+     * @param group group
+     * @param templateContents contents
      */
     private void validateSnippetContents(final ProcessGroup group, final FlowSnippetDTO templateContents) {
         // validate the names of Input Ports
@@ -1816,7 +1813,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
                 throw new IllegalStateException("Invalid Processor Type: " + proc.getType());
             }
         }
-        
+
         final Set<ControllerServiceDTO> controllerServices = templateContents.getControllerServices();
         if (controllerServices != null) {
             for (final ControllerServiceDTO service : controllerServices) {
@@ -1841,8 +1838,8 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     /**
      * Recursively finds all ProcessorDTO's
      *
-     * @param group
-     * @return
+     * @param group group
+     * @return processor dto set
      */
     private Set<ProcessorDTO> findAllProcessors(final ProcessGroupDTO group) {
         final Set<ProcessorDTO> procs = new HashSet<>();
@@ -1859,8 +1856,8 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     /**
      * Recursively finds all ConnectionDTO's
      *
-     * @param group
-     * @return
+     * @param group group
+     * @return connection dtos
      */
     private Set<ConnectionDTO> findAllConnections(final ProcessGroupDTO group) {
         final Set<ConnectionDTO> conns = new HashSet<>();
@@ -1879,11 +1876,11 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     //
     /**
      * Indicates whether or not the two ID's point to the same ProcessGroup. If
-     * either id is null, will return <code>false</code.
+     * either id is null, will return <code>false</code>.
      *
-     * @param id1
-     * @param id2
-     * @return
+     * @param id1 group id
+     * @param id2 other group id
+     * @return true if same
      */
     public boolean areGroupsSame(final String id1, final String id2) {
         if (id1 == null || id2 == null) {
@@ -1999,7 +1996,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     /**
      * Returns the ProcessGroup with the given ID
      *
-     * @param id
+     * @param id group
      * @return the process group or null if not group is found
      */
     private ProcessGroup lookupGroup(final String id) {
@@ -2013,7 +2010,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     /**
      * Returns the ProcessGroup with the given ID
      *
-     * @param id
+     * @param id group id
      * @return the process group or null if not group is found
      */
     public ProcessGroup getGroup(final String id) {
@@ -2083,7 +2080,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
             bytesSent += procStat.getBytesSent();
         }
 
-        // set status for local child groups     
+        // set status for local child groups
         final Collection<ProcessGroupStatus> localChildGroupStatusCollection = new ArrayList<>();
         status.setProcessGroupStatus(localChildGroupStatusCollection);
         for (final ProcessGroup childGroup : group.getProcessGroups()) {
@@ -2441,8 +2438,8 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
         }
 
         // determine the run status and get any validation errors... must check
-        // is valid when not disabled since a processors validity could change due 
-        // to environmental conditions (property configured with a file path and 
+        // is valid when not disabled since a processors validity could change due
+        // to environmental conditions (property configured with a file path and
         // the file being externally removed)
         if (ScheduledState.DISABLED.equals(procNode.getScheduledState())) {
             status.setRunStatus(RunStatus.Disabled);
@@ -2548,17 +2545,17 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     public ReportingTaskNode createReportingTask(final String type) throws ReportingTaskInstantiationException {
         return createReportingTask(type, true);
     }
-    
+
     public ReportingTaskNode createReportingTask(final String type, final boolean firstTimeAdded) throws ReportingTaskInstantiationException {
-    	return createReportingTask(type, UUID.randomUUID().toString(), firstTimeAdded);
+        return createReportingTask(type, UUID.randomUUID().toString(), firstTimeAdded);
     }
-    
+
     @Override
     public ReportingTaskNode createReportingTask(final String type, final String id, final boolean firstTimeAdded) throws ReportingTaskInstantiationException {
         if (type == null || id == null) {
             throw new NullPointerException();
         }
-        
+
         ReportingTask task = null;
         final ClassLoader ctxClassLoader = Thread.currentThread().getContextClassLoader();
         try {
@@ -2585,8 +2582,8 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
         final ValidationContextFactory validationContextFactory = new StandardValidationContextFactory(controllerServiceProvider);
         final ReportingTaskNode taskNode = new StandardReportingTaskNode(task, id, this, processScheduler, validationContextFactory);
         taskNode.setName(task.getClass().getSimpleName());
-        
-        if ( firstTimeAdded ) {
+
+        if (firstTimeAdded) {
             final ComponentLog componentLog = new SimpleProcessLogger(id, taskNode.getReportingTask());
             final ReportingInitializationContext config = new StandardReportingInitializationContext(id, taskNode.getName(),
                     SchedulingStrategy.TIMER_DRIVEN, "1 min", componentLog, this);
@@ -2596,14 +2593,14 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
             } catch (final InitializationException ie) {
                 throw new ReportingTaskInstantiationException("Failed to initialize reporting task of type " + type, ie);
             }
-                    
+
             try (final NarCloseable x = NarCloseable.withNarLoader()) {
                 ReflectionUtils.invokeMethodsWithAnnotation(OnAdded.class, task);
             } catch (final Exception e) {
                 throw new ComponentLifeCycleException("Failed to invoke On-Added Lifecycle methods of " + task, e);
             }
         }
-        
+
         reportingTasks.put(id, taskNode);
         return taskNode;
     }
@@ -2620,10 +2617,9 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
         }
 
         reportingTaskNode.verifyCanStart();
-       	processScheduler.schedule(reportingTaskNode);
+        processScheduler.schedule(reportingTaskNode);
     }
 
-    
     @Override
     public void stopReportingTask(final ReportingTaskNode reportingTaskNode) {
         if (isTerminated()) {
@@ -2637,32 +2633,32 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     @Override
     public void removeReportingTask(final ReportingTaskNode reportingTaskNode) {
         final ReportingTaskNode existing = reportingTasks.get(reportingTaskNode.getIdentifier());
-        if ( existing == null || existing != reportingTaskNode ) {
+        if (existing == null || existing != reportingTaskNode) {
             throw new IllegalStateException("Reporting Task " + reportingTaskNode + " does not exist in this Flow");
         }
-        
+
         reportingTaskNode.verifyCanDelete();
-        
+
         try (final NarCloseable x = NarCloseable.withNarLoader()) {
             ReflectionUtils.quietlyInvokeMethodsWithAnnotation(OnRemoved.class, reportingTaskNode.getReportingTask(), reportingTaskNode.getConfigurationContext());
         }
-        
-        for ( final Map.Entry<PropertyDescriptor, String> entry : reportingTaskNode.getProperties().entrySet() ) {
+
+        for (final Map.Entry<PropertyDescriptor, String> entry : reportingTaskNode.getProperties().entrySet()) {
             final PropertyDescriptor descriptor = entry.getKey();
-            if (descriptor.getControllerServiceDefinition() != null ) {
+            if (descriptor.getControllerServiceDefinition() != null) {
                 final String value = entry.getValue() == null ? descriptor.getDefaultValue() : entry.getValue();
-                if ( value != null ) {
+                if (value != null) {
                     final ControllerServiceNode serviceNode = controllerServiceProvider.getControllerServiceNode(value);
-                    if ( serviceNode != null ) {
+                    if (serviceNode != null) {
                         serviceNode.removeReference(reportingTaskNode);
                     }
                 }
             }
         }
-        
+
         reportingTasks.remove(reportingTaskNode.getIdentifier());
     }
-    
+
     @Override
     public Set<ReportingTaskNode> getAllReportingTasks() {
         return new HashSet<>(reportingTasks.values());
@@ -2672,60 +2668,60 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     public ControllerServiceNode createControllerService(final String type, final String id, final boolean firstTimeAdded) {
         return controllerServiceProvider.createControllerService(type, id, firstTimeAdded);
     }
-    
+
     @Override
     public void enableReportingTask(final ReportingTaskNode reportingTaskNode) {
         reportingTaskNode.verifyCanEnable();
         processScheduler.enableReportingTask(reportingTaskNode);
     }
-    
+
     @Override
     public void disableReportingTask(final ReportingTaskNode reportingTaskNode) {
         reportingTaskNode.verifyCanDisable();
         processScheduler.disableReportingTask(reportingTaskNode);
     }
-    
+
     @Override
     public void disableReferencingServices(final ControllerServiceNode serviceNode) {
         controllerServiceProvider.disableReferencingServices(serviceNode);
     }
-    
+
     @Override
     public void enableReferencingServices(final ControllerServiceNode serviceNode) {
         controllerServiceProvider.enableReferencingServices(serviceNode);
     }
-    
+
     @Override
     public void scheduleReferencingComponents(final ControllerServiceNode serviceNode) {
         controllerServiceProvider.scheduleReferencingComponents(serviceNode);
     }
-    
+
     @Override
     public void unscheduleReferencingComponents(final ControllerServiceNode serviceNode) {
         controllerServiceProvider.unscheduleReferencingComponents(serviceNode);
     }
-    
+
     @Override
     public void enableControllerService(final ControllerServiceNode serviceNode) {
         controllerServiceProvider.enableControllerService(serviceNode);
     }
-    
+
     @Override
     public void enableControllerServices(final Collection<ControllerServiceNode> serviceNodes) {
         controllerServiceProvider.enableControllerServices(serviceNodes);
     }
-    
+
     @Override
     public void disableControllerService(final ControllerServiceNode serviceNode) {
         serviceNode.verifyCanDisable();
         controllerServiceProvider.disableControllerService(serviceNode);
     }
-    
+
     @Override
     public void verifyCanEnableReferencingServices(final ControllerServiceNode serviceNode) {
         controllerServiceProvider.verifyCanEnableReferencingServices(serviceNode);
     }
-    
+
     @Override
     public void verifyCanScheduleReferencingComponents(final ControllerServiceNode serviceNode) {
         controllerServiceProvider.verifyCanScheduleReferencingComponents(serviceNode);
@@ -2735,12 +2731,12 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     public void verifyCanDisableReferencingServices(final ControllerServiceNode serviceNode) {
         controllerServiceProvider.verifyCanDisableReferencingServices(serviceNode);
     }
-    
+
     @Override
     public void verifyCanStopReferencingComponents(final ControllerServiceNode serviceNode) {
         controllerServiceProvider.verifyCanStopReferencingComponents(serviceNode);
     }
-    
+
     @Override
     public ControllerService getControllerService(final String serviceIdentifier) {
         return controllerServiceProvider.getControllerService(serviceIdentifier);
@@ -2765,21 +2761,22 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     public boolean isControllerServiceEnabling(final String serviceIdentifier) {
         return controllerServiceProvider.isControllerServiceEnabling(serviceIdentifier);
     }
-    
+
     @Override
     public String getControllerServiceName(final String serviceIdentifier) {
-    	return controllerServiceProvider.getControllerServiceName(serviceIdentifier);
+        return controllerServiceProvider.getControllerServiceName(serviceIdentifier);
     }
 
+    @Override
     public void removeControllerService(final ControllerServiceNode serviceNode) {
         controllerServiceProvider.removeControllerService(serviceNode);
     }
-    
+
     @Override
     public Set<ControllerServiceNode> getAllControllerServices() {
-    	return controllerServiceProvider.getAllControllerServices();
+        return controllerServiceProvider.getAllControllerServices();
     }
-    
+
     //
     // Counters
     //
@@ -2842,7 +2839,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
      * Starts heartbeating to the cluster. May only be called if the instance
      * was constructed for a clustered environment.
      *
-     * @throws IllegalStateException
+     * @throws IllegalStateException if not configured for clustering
      */
     public void startHeartbeating() throws IllegalStateException {
         if (!configuredForClustering) {
@@ -2893,7 +2890,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
      * constructed for a clustered environment. If the controller was not
      * heartbeating, then this method has no effect.
      *
-     * @throws IllegalStateException
+     * @throws IllegalStateException if not clustered
      */
     public void stopHeartbeating() throws IllegalStateException {
 
@@ -2925,9 +2922,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     }
 
     /**
-     * Returns true if the instance is heartbeating; false otherwise.
-     *
-     * @return
+     * @return true if the instance is heartbeating; false otherwise
      */
     public boolean isHeartbeating() {
         readLock.lock();
@@ -2940,9 +2935,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     }
 
     /**
-     * Returns the number of seconds to wait between successive heartbeats.
-     *
-     * @return
+     * @return the number of seconds to wait between successive heartbeats
      */
     public int getHeartbeatDelaySeconds() {
         readLock.lock();
@@ -2996,12 +2989,10 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
     }
 
     /**
-     * Returns the DN of the Cluster Manager that we are currently connected to,
+     * @return the DN of the Cluster Manager that we are currently connected to,
      * if available. This will return null if the instance is not clustered or
      * if the instance is clustered but the NCM's DN is not available - for
-     * instance, if cluster communications are not secure.
-     *
-     * @return
+     * instance, if cluster communications are not secure
      */
     public String getClusterManagerDN() {
         readLock.lock();
@@ -3016,7 +3007,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
      * Sets whether this instance is clustered. Clustered means that a node is
      * either connected or trying to connect to the cluster.
      *
-     * @param clustered
+     * @param clustered true if clustered
      * @param clusterInstanceId if clustered is true, indicates the InstanceID
      * of the Cluster Manager
      */
@@ -3028,7 +3019,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
      * Sets whether this instance is clustered. Clustered means that a node is
      * either connected or trying to connect to the cluster.
      *
-     * @param clustered
+     * @param clustered true if clustered
      * @param clusterInstanceId if clustered is true, indicates the InstanceID
      * of the Cluster Manager
      * @param clusterManagerDn the DN of the NCM
@@ -3288,7 +3279,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
             return "Failed to determine whether or not content was available in Content Repository due to " + ioe.toString();
         }
 
-        // Make sure that the source queue exists 
+        // Make sure that the source queue exists
         if (event.getSourceQueueIdentifier() == null) {
             return "Cannot replay data from Provenance Event because the event does not specify the Source FlowFile Queue";
         }
@@ -3339,7 +3330,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
             throw new IllegalArgumentException("Cannot replay data from Provenance Event because the event does not contain the required Content Claim");
         }
 
-        // Make sure that the source queue exists 
+        // Make sure that the source queue exists
         if (event.getSourceQueueIdentifier() == null) {
             throw new IllegalArgumentException("Cannot replay data from Provenance Event because the event does not specify the Source FlowFile Queue");
         }
@@ -3358,7 +3349,8 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
         }
 
         // Create the ContentClaim
-        final ContentClaim claim = contentClaimManager.newContentClaim(event.getPreviousContentClaimContainer(), event.getPreviousContentClaimSection(), event.getPreviousContentClaimIdentifier(), false);
+        final ContentClaim claim = contentClaimManager.newContentClaim(event.getPreviousContentClaimContainer(),
+                event.getPreviousContentClaimSection(), event.getPreviousContentClaimIdentifier(), false);
 
         // Increment Claimant Count, since we will now be referencing the Content Claim
         contentClaimManager.incrementClaimantCount(claim);
@@ -3544,7 +3536,8 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R
                     if (bulletin.getGroupId() == null) {
                         escapedBulletin = BulletinFactory.createBulletin(bulletin.getCategory(), bulletin.getLevel(), escapedBulletinMessage);
                     } else {
-                        escapedBulletin = BulletinFactory.createBulletin(bulletin.getGroupId(), bulletin.getSourceId(), bulletin.getSourceName(), bulletin.getCategory(), bulletin.getLevel(), escapedBulletinMessage);
+                        escapedBulletin = BulletinFactory.createBulletin(bulletin.getGroupId(), bulletin.getSourceId(),
+                                bulletin.getSourceName(), bulletin.getCategory(), bulletin.getLevel(), escapedBulletinMessage);
                     }
                 } else {
                     escapedBulletin = bulletin;

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/888254b2/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowFromDOMFactory.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowFromDOMFactory.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowFromDOMFactory.java
index 85ad159..144395c 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowFromDOMFactory.java
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowFromDOMFactory.java
@@ -79,39 +79,39 @@ public class FlowFromDOMFactory {
 
         return styles;
     }
-    
+
     public static ControllerServiceDTO getControllerService(final Element element, final StringEncryptor encryptor) {
-    	final ControllerServiceDTO dto = new ControllerServiceDTO();
-    	
-    	dto.setId(getString(element, "id"));
-    	dto.setName(getString(element, "name"));
-    	dto.setComments(getString(element, "comment"));
-    	dto.setType(getString(element, "class"));
-
-    	final boolean enabled = getBoolean(element, "enabled");
-    	dto.setState(enabled ? ControllerServiceState.ENABLED.name() : ControllerServiceState.DISABLED.name());
-    	
+        final ControllerServiceDTO dto = new ControllerServiceDTO();
+
+        dto.setId(getString(element, "id"));
+        dto.setName(getString(element, "name"));
+        dto.setComments(getString(element, "comment"));
+        dto.setType(getString(element, "class"));
+
+        final boolean enabled = getBoolean(element, "enabled");
+        dto.setState(enabled ? ControllerServiceState.ENABLED.name() : ControllerServiceState.DISABLED.name());
+
         dto.setProperties(getProperties(element, encryptor));
         dto.setAnnotationData(getString(element, "annotationData"));
 
         return dto;
     }
-    
+
     public static ReportingTaskDTO getReportingTask(final Element element, final StringEncryptor encryptor) {
-    	final ReportingTaskDTO dto = new ReportingTaskDTO();
-    	
-    	dto.setId(getString(element, "id"));
-    	dto.setName(getString(element, "name"));
-    	dto.setComments(getString(element, "comment"));
-    	dto.setType(getString(element, "class"));
-    	dto.setSchedulingPeriod(getString(element, "schedulingPeriod"));
-    	dto.setState(getString(element, "scheduledState"));
-    	dto.setSchedulingStrategy(getString(element, "schedulingStrategy"));
-    	
-    	dto.setProperties(getProperties(element, encryptor));
-    	dto.setAnnotationData(getString(element, "annotationData"));
-
-    	return dto;
+        final ReportingTaskDTO dto = new ReportingTaskDTO();
+
+        dto.setId(getString(element, "id"));
+        dto.setName(getString(element, "name"));
+        dto.setComments(getString(element, "comment"));
+        dto.setType(getString(element, "class"));
+        dto.setSchedulingPeriod(getString(element, "schedulingPeriod"));
+        dto.setState(getString(element, "scheduledState"));
+        dto.setSchedulingStrategy(getString(element, "schedulingStrategy"));
+
+        dto.setProperties(getProperties(element, encryptor));
+        dto.setAnnotationData(getString(element, "annotationData"));
+
+        return dto;
     }
 
     public static ProcessGroupDTO getProcessGroup(final String parentId, final Element element, final StringEncryptor encryptor) {
@@ -383,7 +383,7 @@ public class FlowFromDOMFactory {
     }
 
     private static LinkedHashMap<String, String> getProperties(final Element element, final StringEncryptor encryptor) {
-    	final LinkedHashMap<String, String> properties = new LinkedHashMap<>();
+        final LinkedHashMap<String, String> properties = new LinkedHashMap<>();
         final List<Element> propertyNodeList = getChildrenByTagName(element, "property");
         for (final Element propertyElement : propertyNodeList) {
             final String name = getString(propertyElement, "name");
@@ -392,7 +392,7 @@ public class FlowFromDOMFactory {
         }
         return properties;
     }
-    
+
     private static String getString(final Element element, final String childElementName) {
         final List<Element> nodeList = getChildrenByTagName(element, childElementName);
         if (nodeList == null || nodeList.isEmpty()) {

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/888254b2/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowUnmarshaller.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowUnmarshaller.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowUnmarshaller.java
index 42d7f1c..7cc3039 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowUnmarshaller.java
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowUnmarshaller.java
@@ -42,13 +42,13 @@ public class FlowUnmarshaller {
      * Flow Configuration schema and returns a FlowSnippetDTO representing the
      * flow
      *
-     * @param flowContents
-     * @param encryptor
-     * @return
+     * @param flowContents contents
+     * @param encryptor encryptor
+     * @return snippet dto
      * @throws NullPointerException if <code>flowContents</code> is null
-     * @throws IOException
-     * @throws SAXException
-     * @throws ParserConfigurationException
+     * @throws IOException ioe
+     * @throws SAXException sax
+     * @throws ParserConfigurationException pe
      */
     public static FlowSnippetDTO unmarshal(final byte[] flowContents, final StringEncryptor encryptor) throws IOException, SAXException, ParserConfigurationException {
         if (Objects.requireNonNull(flowContents).length == 0) {

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/888254b2/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/StandardFlowSerializer.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/StandardFlowSerializer.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/StandardFlowSerializer.java
index 7cd9d3b..c6aa395 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/StandardFlowSerializer.java
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/StandardFlowSerializer.java
@@ -80,17 +80,17 @@ public class StandardFlowSerializer implements FlowSerializer {
             addTextElement(rootNode, "maxTimerDrivenThreadCount", controller.getMaxTimerDrivenThreadCount());
             addTextElement(rootNode, "maxEventDrivenThreadCount", controller.getMaxEventDrivenThreadCount());
             addProcessGroup(rootNode, controller.getGroup(controller.getRootGroupId()), "rootGroup");
-            
+
             final Element controllerServicesNode = doc.createElement("controllerServices");
             rootNode.appendChild(controllerServicesNode);
-            for ( final ControllerServiceNode serviceNode : controller.getAllControllerServices() ) {
-            	addControllerService(controllerServicesNode, serviceNode, encryptor);
+            for (final ControllerServiceNode serviceNode : controller.getAllControllerServices()) {
+                addControllerService(controllerServicesNode, serviceNode, encryptor);
             }
-            
+
             final Element reportingTasksNode = doc.createElement("reportingTasks");
             rootNode.appendChild(reportingTasksNode);
-            for ( final ReportingTaskNode taskNode : controller.getAllReportingTasks() ) {
-            	addReportingTask(reportingTasksNode, taskNode, encryptor);
+            for (final ReportingTaskNode taskNode : controller.getAllReportingTasks()) {
+                addReportingTask(reportingTasksNode, taskNode, encryptor);
             }
 
             final DOMSource domSource = new DOMSource(doc);
@@ -314,15 +314,15 @@ public class StandardFlowSerializer implements FlowSerializer {
         addTextElement(element, "runDurationNanos", processor.getRunDuration(TimeUnit.NANOSECONDS));
 
         addConfiguration(element, processor.getProperties(), processor.getAnnotationData(), encryptor);
-        
+
         for (final Relationship rel : processor.getAutoTerminatedRelationships()) {
             addTextElement(element, "autoTerminatedRelationship", rel.getName());
         }
     }
-    
+
     private static void addConfiguration(final Element element, final Map<PropertyDescriptor, String> properties, final String annotationData, final StringEncryptor encryptor) {
-    	final Document doc = element.getOwnerDocument();
-    	for (final Map.Entry<PropertyDescriptor, String> entry : properties.entrySet()) {
+        final Document doc = element.getOwnerDocument();
+        for (final Map.Entry<PropertyDescriptor, String> entry : properties.entrySet()) {
             final PropertyDescriptor descriptor = entry.getKey();
             String value = entry.getValue();
 
@@ -406,38 +406,37 @@ public class StandardFlowSerializer implements FlowSerializer {
         parentElement.appendChild(element);
     }
 
-    
     public static void addControllerService(final Element element, final ControllerServiceNode serviceNode, final StringEncryptor encryptor) {
-    	final Element serviceElement = element.getOwnerDocument().createElement("controllerService");
-    	addTextElement(serviceElement, "id", serviceNode.getIdentifier());
-    	addTextElement(serviceElement, "name", serviceNode.getName());
-    	addTextElement(serviceElement, "comment", serviceNode.getComments());
-    	addTextElement(serviceElement, "class", serviceNode.getControllerServiceImplementation().getClass().getCanonicalName());
-    	
-    	final ControllerServiceState state = serviceNode.getState();
-    	final boolean enabled = (state == ControllerServiceState.ENABLED || state == ControllerServiceState.ENABLING);
+        final Element serviceElement = element.getOwnerDocument().createElement("controllerService");
+        addTextElement(serviceElement, "id", serviceNode.getIdentifier());
+        addTextElement(serviceElement, "name", serviceNode.getName());
+        addTextElement(serviceElement, "comment", serviceNode.getComments());
+        addTextElement(serviceElement, "class", serviceNode.getControllerServiceImplementation().getClass().getCanonicalName());
+
+        final ControllerServiceState state = serviceNode.getState();
+        final boolean enabled = (state == ControllerServiceState.ENABLED || state == ControllerServiceState.ENABLING);
         addTextElement(serviceElement, "enabled", String.valueOf(enabled));
-        
+
         addConfiguration(serviceElement, serviceNode.getProperties(), serviceNode.getAnnotationData(), encryptor);
-        
-    	element.appendChild(serviceElement);
+
+        element.appendChild(serviceElement);
     }
-    
+
     public static void addReportingTask(final Element element, final ReportingTaskNode taskNode, final StringEncryptor encryptor) {
-    	final Element taskElement = element.getOwnerDocument().createElement("reportingTask");
-    	addTextElement(taskElement, "id", taskNode.getIdentifier());
-    	addTextElement(taskElement, "name", taskNode.getName());
-    	addTextElement(taskElement, "comment", taskNode.getComments());
-    	addTextElement(taskElement, "class", taskNode.getReportingTask().getClass().getCanonicalName());
+        final Element taskElement = element.getOwnerDocument().createElement("reportingTask");
+        addTextElement(taskElement, "id", taskNode.getIdentifier());
+        addTextElement(taskElement, "name", taskNode.getName());
+        addTextElement(taskElement, "comment", taskNode.getComments());
+        addTextElement(taskElement, "class", taskNode.getReportingTask().getClass().getCanonicalName());
         addTextElement(taskElement, "schedulingPeriod", taskNode.getSchedulingPeriod());
         addTextElement(taskElement, "scheduledState", taskNode.getScheduledState().name());
         addTextElement(taskElement, "schedulingStrategy", taskNode.getSchedulingStrategy().name());
-    	
-    	addConfiguration(taskElement, taskNode.getProperties(), taskNode.getAnnotationData(), encryptor);
-    	
-    	element.appendChild(taskElement);
+
+        addConfiguration(taskElement, taskNode.getProperties(), taskNode.getAnnotationData(), encryptor);
+
+        element.appendChild(taskElement);
     }
-    
+
     private static void addTextElement(final Element element, final String name, final long value) {
         addTextElement(element, name, String.valueOf(value));
     }

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/888254b2/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/StandardFlowService.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/StandardFlowService.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/StandardFlowService.java
index fcfee83..1511293 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/StandardFlowService.java
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/StandardFlowService.java
@@ -338,7 +338,7 @@ public class StandardFlowService implements FlowService, ProtocolHandler {
                 case RECONNECTION_REQUEST:
                     // Suspend heartbeats until we've reconnected. Otherwise,
                     // we may send a heartbeat while we are still in the process of
-                    // connecting, which will cause the Cluster Manager to mark us 
+                    // connecting, which will cause the Cluster Manager to mark us
                     // as "Connected," which becomes problematic as the FlowController's lock
                     // may still be held, causing this node to take a long time to respond to requests.
                     controller.suspendHeartbeats();
@@ -389,7 +389,7 @@ public class StandardFlowService implements FlowService, ProtocolHandler {
                 /*
                  * Attempt to connect to the cluster.  If the manager is able to
                  * provide a data flow, then the manager will send a connection
-                 * response.  If the manager was unable to be located, then 
+                 * response.  If the manager was unable to be located, then
                  * the response will be null and we should load the local dataflow
                  * and heartbeat until a manager is located.
                  */
@@ -411,10 +411,10 @@ public class StandardFlowService implements FlowService, ProtocolHandler {
                     controller.setConnected(false);
 
                     /*
-                     * Start heartbeating.  Heartbeats will fail because we can't reach 
-                     * the manager, but when we locate the manager, the node will 
-                     * reconnect and establish a connection to the cluster.  The 
-                     * heartbeat is the trigger that will cause the manager to 
+                     * Start heartbeating.  Heartbeats will fail because we can't reach
+                     * the manager, but when we locate the manager, the node will
+                     * reconnect and establish a connection to the cluster.  The
+                     * heartbeat is the trigger that will cause the manager to
                      * issue a reconnect request.
                      */
                     controller.startHeartbeating();
@@ -515,7 +515,7 @@ public class StandardFlowService implements FlowService, ProtocolHandler {
 
             logger.info("Node reconnected.");
         } catch (final Exception ex) {
-            // disconnect controller 
+            // disconnect controller
             if (controller.isClustered()) {
                 disconnect();
             }
@@ -618,7 +618,6 @@ public class StandardFlowService implements FlowService, ProtocolHandler {
 
             // load the controller tasks
 //            dao.loadReportingTasks(controller);
-
             // initialize the flow
             controller.initializeFlow();
 
@@ -638,11 +637,11 @@ public class StandardFlowService implements FlowService, ProtocolHandler {
 
             // send connection request to cluster manager
             /*
-             * Try to get a current copy of the cluster's dataflow from the manager 
-             * for ten times, sleeping between attempts.  Ten times should be 
+             * Try to get a current copy of the cluster's dataflow from the manager
+             * for ten times, sleeping between attempts.  Ten times should be
              * enough because the manager will register the node as connecting
              * and therefore, no other changes to the cluster flow can occur.
-             * 
+             *
              * However, the manager needs to obtain a current data flow within
              * maxAttempts * tryLaterSeconds or else the node will fail to startup.
              */
@@ -813,7 +812,7 @@ public class StandardFlowService implements FlowService, ProtocolHandler {
                     writeLock.lock();
                     try {
                         dao.save(controller, holder.shouldArchive);
-                        // Nulling it out if it is still set to our current SaveHolder.  Otherwise leave it alone because it means 
+                        // Nulling it out if it is still set to our current SaveHolder.  Otherwise leave it alone because it means
                         // another save is already pending.
                         final boolean noSavePending = StandardFlowService.this.saveHolder.compareAndSet(holder, null);
                         logger.info("Saved flow controller {} // Another save pending = {}", controller, !noSavePending);

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/888254b2/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/StandardFlowSynchronizer.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/StandardFlowSynchronizer.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/StandardFlowSynchronizer.java
index 201482c..b66bedc 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/StandardFlowSynchronizer.java
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/StandardFlowSynchronizer.java
@@ -129,7 +129,8 @@ public class StandardFlowSynchronizer implements FlowSynchronizer {
     }
 
     @Override
-    public void sync(final FlowController controller, final DataFlow proposedFlow, final StringEncryptor encryptor) throws FlowSerializationException, UninheritableFlowException, FlowSynchronizationException {
+    public void sync(final FlowController controller, final DataFlow proposedFlow, final StringEncryptor encryptor)
+            throws FlowSerializationException, UninheritableFlowException, FlowSynchronizationException {
         // get the controller's root group
         final ProcessGroup rootGroup = controller.getGroup(controller.getRootGroupId());
 
@@ -173,20 +174,20 @@ public class StandardFlowSynchronizer implements FlowSynchronizer {
 
                     final Element reportingTasksElement = (Element) DomUtils.getChild(rootElement, "reportingTasks");
                     final List<Element> taskElements;
-                    if ( reportingTasksElement == null ) {
+                    if (reportingTasksElement == null) {
                         taskElements = Collections.emptyList();
                     } else {
                         taskElements = DomUtils.getChildElementsByTagName(reportingTasksElement, "reportingTask");
                     }
-                    
+
                     final Element controllerServicesElement = (Element) DomUtils.getChild(rootElement, "controllerServices");
                     final List<Element> controllerServiceElements;
-                    if ( controllerServicesElement == null ) {
+                    if (controllerServicesElement == null) {
                         controllerServiceElements = Collections.emptyList();
                     } else {
                         controllerServiceElements = DomUtils.getChildElementsByTagName(controllerServicesElement, "controllerService");
                     }
-                    
+
                     logger.trace("Parsing process group from DOM");
                     final Element rootGroupElement = (Element) rootElement.getElementsByTagName("rootGroup").item(0);
                     final ProcessGroupDTO rootGroupDto = FlowFromDOMFactory.getProcessGroup(null, rootGroupElement, encryptor);
@@ -230,14 +231,14 @@ public class StandardFlowSynchronizer implements FlowSynchronizer {
         // create document by parsing proposed flow bytes
         logger.trace("Parsing proposed flow bytes as DOM document");
         final Document configuration = parseFlowBytes(proposedFlow.getFlow());
-        
+
         // attempt to sync controller with proposed flow
         try {
             if (configuration != null) {
                 synchronized (configuration) {
                     // get the root element
                     final Element rootElement = (Element) configuration.getElementsByTagName("flowController").item(0);
-    
+
                     // set controller config
                     logger.trace("Updating flow config");
                     final Integer maxThreadCount = getInteger(rootElement, "maxThreadCount");
@@ -248,23 +249,23 @@ public class StandardFlowSynchronizer implements FlowSynchronizer {
                         controller.setMaxTimerDrivenThreadCount(maxThreadCount * 2 / 3);
                         controller.setMaxEventDrivenThreadCount(maxThreadCount / 3);
                     }
-    
+
                     // get the root group XML element
                     final Element rootGroupElement = (Element) rootElement.getElementsByTagName("rootGroup").item(0);
-    
+
                     final Element controllerServicesElement = (Element) DomUtils.getChild(rootElement, "controllerServices");
-    	            if ( controllerServicesElement != null ) {
-    	                final List<Element> serviceElements = DomUtils.getChildElementsByTagName(controllerServicesElement, "controllerService");
-    	                
-    	                if ( !initialized || existingFlowEmpty ) {
-    	                    ControllerServiceLoader.loadControllerServices(serviceElements, controller, encryptor, controller.getBulletinRepository(), autoResumeState);
-    	                } else {
-    	                    for ( final Element serviceElement : serviceElements ) {
-    	                        updateControllerService(controller, serviceElement, encryptor);
-    	                    }
-    	                }
+                    if (controllerServicesElement != null) {
+                        final List<Element> serviceElements = DomUtils.getChildElementsByTagName(controllerServicesElement, "controllerService");
+
+                        if (!initialized || existingFlowEmpty) {
+                            ControllerServiceLoader.loadControllerServices(serviceElements, controller, encryptor, controller.getBulletinRepository(), autoResumeState);
+                        } else {
+                            for (final Element serviceElement : serviceElements) {
+                                updateControllerService(controller, serviceElement, encryptor);
+                            }
+                        }
                     }
-    
+
                     // if this controller isn't initialized or its emtpy, add the root group, otherwise update
                     if (!initialized || existingFlowEmpty) {
                         logger.trace("Adding root process group");
@@ -273,21 +274,21 @@ public class StandardFlowSynchronizer implements FlowSynchronizer {
                         logger.trace("Updating root process group");
                         updateProcessGroup(controller, /* parent group */ null, rootGroupElement, encryptor);
                     }
-    
+
                     final Element reportingTasksElement = (Element) DomUtils.getChild(rootElement, "reportingTasks");
-                    if ( reportingTasksElement != null ) {
-                    	final List<Element> taskElements = DomUtils.getChildElementsByTagName(reportingTasksElement, "reportingTask");
-                    	for ( final Element taskElement : taskElements ) {
-                    		if ( !initialized || existingFlowEmpty ) {
-                    			addReportingTask(controller, taskElement, encryptor);
-                    		} else {
-                    			updateReportingTask(controller, taskElement, encryptor);
-                    		}
-                    	}
+                    if (reportingTasksElement != null) {
+                        final List<Element> taskElements = DomUtils.getChildElementsByTagName(reportingTasksElement, "reportingTask");
+                        for (final Element taskElement : taskElements) {
+                            if (!initialized || existingFlowEmpty) {
+                                addReportingTask(controller, taskElement, encryptor);
+                            } else {
+                                updateReportingTask(controller, taskElement, encryptor);
+                            }
+                        }
                     }
                 }
             }
-    
+
             logger.trace("Synching templates");
             if ((existingTemplates == null || existingTemplates.length == 0) && proposedFlow.getTemplates() != null && proposedFlow.getTemplates().length > 0) {
                 // need to load templates
@@ -370,105 +371,104 @@ public class StandardFlowSynchronizer implements FlowSynchronizer {
 
         return baos.toByteArray();
     }
-    
-    
+
     private void updateControllerService(final FlowController controller, final Element controllerServiceElement, final StringEncryptor encryptor) {
-    	final ControllerServiceDTO dto = FlowFromDOMFactory.getControllerService(controllerServiceElement, encryptor);
-    	
-    	final ControllerServiceState dtoState = ControllerServiceState.valueOf(dto.getState());
+        final ControllerServiceDTO dto = FlowFromDOMFactory.getControllerService(controllerServiceElement, encryptor);
+
+        final ControllerServiceState dtoState = ControllerServiceState.valueOf(dto.getState());
         final boolean dtoEnabled = (dtoState == ControllerServiceState.ENABLED || dtoState == ControllerServiceState.ENABLING);
-        
+
         final ControllerServiceNode serviceNode = controller.getControllerServiceNode(dto.getId());
         final ControllerServiceState serviceState = serviceNode.getState();
         final boolean serviceEnabled = (serviceState == ControllerServiceState.ENABLED || serviceState == ControllerServiceState.ENABLING);
-        
-    	if (dtoEnabled && !serviceEnabled) {
-    		controller.enableControllerService(controller.getControllerServiceNode(dto.getId()));
-    	} else if (!dtoEnabled && serviceEnabled) {
-    		controller.disableControllerService(controller.getControllerServiceNode(dto.getId()));
-    	}
+
+        if (dtoEnabled && !serviceEnabled) {
+            controller.enableControllerService(controller.getControllerServiceNode(dto.getId()));
+        } else if (!dtoEnabled && serviceEnabled) {
+            controller.disableControllerService(controller.getControllerServiceNode(dto.getId()));
+        }
     }
-    
+
     private void addReportingTask(final FlowController controller, final Element reportingTaskElement, final StringEncryptor encryptor) throws ReportingTaskInstantiationException {
-    	final ReportingTaskDTO dto = FlowFromDOMFactory.getReportingTask(reportingTaskElement, encryptor);
-    	
-    	final ReportingTaskNode reportingTask = controller.createReportingTask(dto.getType(), dto.getId(), false);
-    	reportingTask.setName(dto.getName());
-    	reportingTask.setComments(dto.getComments());
-    	reportingTask.setScheduldingPeriod(dto.getSchedulingPeriod());
-    	reportingTask.setSchedulingStrategy(SchedulingStrategy.valueOf(dto.getSchedulingStrategy()));
-    	
-    	reportingTask.setAnnotationData(dto.getAnnotationData());
-    	
+        final ReportingTaskDTO dto = FlowFromDOMFactory.getReportingTask(reportingTaskElement, encryptor);
+
+        final ReportingTaskNode reportingTask = controller.createReportingTask(dto.getType(), dto.getId(), false);
+        reportingTask.setName(dto.getName());
+        reportingTask.setComments(dto.getComments());
+        reportingTask.setScheduldingPeriod(dto.getSchedulingPeriod());
+        reportingTask.setSchedulingStrategy(SchedulingStrategy.valueOf(dto.getSchedulingStrategy()));
+
+        reportingTask.setAnnotationData(dto.getAnnotationData());
+
         for (final Map.Entry<String, String> entry : dto.getProperties().entrySet()) {
             if (entry.getValue() == null) {
-            	reportingTask.removeProperty(entry.getKey());
+                reportingTask.removeProperty(entry.getKey());
             } else {
-            	reportingTask.setProperty(entry.getKey(), entry.getValue());
+                reportingTask.setProperty(entry.getKey(), entry.getValue());
             }
         }
-        
+
         final ComponentLog componentLog = new SimpleProcessLogger(dto.getId(), reportingTask.getReportingTask());
         final ReportingInitializationContext config = new StandardReportingInitializationContext(dto.getId(), dto.getName(),
                 SchedulingStrategy.valueOf(dto.getSchedulingStrategy()), dto.getSchedulingPeriod(), componentLog, controller);
-        
+
         try {
             reportingTask.getReportingTask().initialize(config);
         } catch (final InitializationException ie) {
             throw new ReportingTaskInstantiationException("Failed to initialize reporting task of type " + dto.getType(), ie);
         }
-        
-        if ( autoResumeState ) {
-	        if ( ScheduledState.RUNNING.name().equals(dto.getState()) ) {
-	        	try {
-	        		controller.startReportingTask(reportingTask);
-	        	} catch (final Exception e) {
-	        		logger.error("Failed to start {} due to {}", reportingTask, e);
-	        		if ( logger.isDebugEnabled() ) {
-	        			logger.error("", e);
-	        		}
-	        		controller.getBulletinRepository().addBulletin(BulletinFactory.createBulletin(
-	        				"Reporting Tasks", Severity.ERROR.name(), "Failed to start " + reportingTask + " due to " + e));
-	        	}
-	        } else if ( ScheduledState.DISABLED.name().equals(dto.getState()) ) {
-	        	try {
-	        		controller.disableReportingTask(reportingTask);
-	        	} catch (final Exception e) {
-	        		logger.error("Failed to mark {} as disabled due to {}", reportingTask, e);
-	        		if ( logger.isDebugEnabled() ) {
-	        			logger.error("", e);
-	        		}
-	        		controller.getBulletinRepository().addBulletin(BulletinFactory.createBulletin(
-	        				"Reporting Tasks", Severity.ERROR.name(), "Failed to mark " + reportingTask + " as disabled due to " + e));
-	        	}
-	        }
+
+        if (autoResumeState) {
+            if (ScheduledState.RUNNING.name().equals(dto.getState())) {
+                try {
+                    controller.startReportingTask(reportingTask);
+                } catch (final Exception e) {
+                    logger.error("Failed to start {} due to {}", reportingTask, e);
+                    if (logger.isDebugEnabled()) {
+                        logger.error("", e);
+                    }
+                    controller.getBulletinRepository().addBulletin(BulletinFactory.createBulletin(
+                            "Reporting Tasks", Severity.ERROR.name(), "Failed to start " + reportingTask + " due to " + e));
+                }
+            } else if (ScheduledState.DISABLED.name().equals(dto.getState())) {
+                try {
+                    controller.disableReportingTask(reportingTask);
+                } catch (final Exception e) {
+                    logger.error("Failed to mark {} as disabled due to {}", reportingTask, e);
+                    if (logger.isDebugEnabled()) {
+                        logger.error("", e);
+                    }
+                    controller.getBulletinRepository().addBulletin(BulletinFactory.createBulletin(
+                            "Reporting Tasks", Severity.ERROR.name(), "Failed to mark " + reportingTask + " as disabled due to " + e));
+                }
+            }
         }
     }
 
     private void updateReportingTask(final FlowController controller, final Element reportingTaskElement, final StringEncryptor encryptor) {
-    	final ReportingTaskDTO dto = FlowFromDOMFactory.getReportingTask(reportingTaskElement, encryptor);
-    	final ReportingTaskNode taskNode = controller.getReportingTaskNode(dto.getId());
-    	
+        final ReportingTaskDTO dto = FlowFromDOMFactory.getReportingTask(reportingTaskElement, encryptor);
+        final ReportingTaskNode taskNode = controller.getReportingTaskNode(dto.getId());
+
         if (!taskNode.getScheduledState().name().equals(dto.getState())) {
             try {
                 switch (ScheduledState.valueOf(dto.getState())) {
                     case DISABLED:
-                    	if ( taskNode.isRunning() ) {
-                    		controller.stopReportingTask(taskNode);
-                    	}
-                    	controller.disableReportingTask(taskNode);
+                        if (taskNode.isRunning()) {
+                            controller.stopReportingTask(taskNode);
+                        }
+                        controller.disableReportingTask(taskNode);
                         break;
                     case RUNNING:
-                    	if ( taskNode.getScheduledState() == ScheduledState.DISABLED ) {
-                    		controller.enableReportingTask(taskNode);
-                    	}
-                    	controller.startReportingTask(taskNode);
+                        if (taskNode.getScheduledState() == ScheduledState.DISABLED) {
+                            controller.enableReportingTask(taskNode);
+                        }
+                        controller.startReportingTask(taskNode);
                         break;
                     case STOPPED:
                         if (taskNode.getScheduledState() == ScheduledState.DISABLED) {
-                        	controller.enableReportingTask(taskNode);
+                            controller.enableReportingTask(taskNode);
                         } else if (taskNode.getScheduledState() == ScheduledState.RUNNING) {
-                        	controller.stopReportingTask(taskNode);
+                            controller.stopReportingTask(taskNode);
                         }
                         break;
                 }
@@ -486,9 +486,9 @@ public class StandardFlowSynchronizer implements FlowSynchronizer {
             }
         }
     }
-    
-    
-    private ProcessGroup updateProcessGroup(final FlowController controller, final ProcessGroup parentGroup, final Element processGroupElement, final StringEncryptor encryptor) throws ProcessorInstantiationException {
+
+    private ProcessGroup updateProcessGroup(final FlowController controller, final ProcessGroup parentGroup, final Element processGroupElement, final StringEncryptor encryptor)
+            throws ProcessorInstantiationException {
 
         // get the parent group ID
         final String parentId = (parentGroup == null) ? null : parentGroup.getIdentifier();
@@ -698,7 +698,8 @@ public class StandardFlowSynchronizer implements FlowSynchronizer {
         return new Position(dto.getX(), dto.getY());
     }
 
-    private void updateProcessor(final ProcessorNode procNode, final ProcessorDTO processorDTO, final ProcessGroup processGroup, final FlowController controller) throws ProcessorInstantiationException {
+    private void updateProcessor(final ProcessorNode procNode, final ProcessorDTO processorDTO, final ProcessGroup processGroup, final FlowController controller)
+            throws ProcessorInstantiationException {
         final ProcessorConfigDTO config = processorDTO.getConfig();
         procNode.setPosition(toPosition(processorDTO.getPosition()));
         procNode.setName(processorDTO.getName());
@@ -747,7 +748,8 @@ public class StandardFlowSynchronizer implements FlowSynchronizer {
         }
     }
 
-    private ProcessGroup addProcessGroup(final FlowController controller, final ProcessGroup parentGroup, final Element processGroupElement, final StringEncryptor encryptor) throws ProcessorInstantiationException {
+    private ProcessGroup addProcessGroup(final FlowController controller, final ProcessGroup parentGroup, final Element processGroupElement, final StringEncryptor encryptor)
+            throws ProcessorInstantiationException {
         // get the parent group ID
         final String parentId = (parentGroup == null) ? null : parentGroup.getIdentifier();
 
@@ -866,7 +868,7 @@ public class StandardFlowSynchronizer implements FlowSynchronizer {
             final FunnelDTO funnelDTO = FlowFromDOMFactory.getFunnel(funnelElement);
             final Funnel funnel = controller.createFunnel(funnelDTO.getId());
             funnel.setPosition(toPosition(funnelDTO.getPosition()));
-            
+
             // Since this is called during startup, we want to add the funnel without enabling it
             // and then tell the controller to enable it. This way, if the controller is not fully
             // initialized, the starting of the funnel is delayed until the controller is ready.
@@ -1031,7 +1033,7 @@ public class StandardFlowSynchronizer implements FlowSynchronizer {
      * Returns true if the given controller can inherit the proposed flow
      * without orphaning flow files.
      *
-     * @param existingFlow
+     * @param existingFlow flow
      * @param controller the running controller
      * @param proposedFlow the flow to inherit
      *
@@ -1081,7 +1083,7 @@ public class StandardFlowSynchronizer implements FlowSynchronizer {
      * Returns true if the given controller can inherit the proposed flow
      * without orphaning flow files.
      *
-     * @param existingFlow
+     * @param existingFlow flow
      * @param proposedFlow the flow to inherit
      *
      * @return null if the controller can inherit the specified flow, an