Repository: incubator-nifi Updated Branches: refs/heads/develop e50b20c4c -> b7b42c742
NIFI-670: - Preventing duplicate controller services from being created when copying and pasting processors. A new controller service will be included/created when using templates. Project: http://git-wip-us.apache.org/repos/asf/incubator-nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-nifi/commit/b7b42c74 Tree: http://git-wip-us.apache.org/repos/asf/incubator-nifi/tree/b7b42c74 Diff: http://git-wip-us.apache.org/repos/asf/incubator-nifi/diff/b7b42c74 Branch: refs/heads/develop Commit: b7b42c7423a348ff7c867a17cfbfa106fbc2fbab Parents: e50b20c Author: Matt Gilman <[email protected]> Authored: Thu Jun 18 10:20:49 2015 -0400 Committer: Matt Gilman <[email protected]> Committed: Thu Jun 18 10:20:49 2015 -0400 ---------------------------------------------------------------------- .../apache/nifi/web/StandardNiFiServiceFacade.java | 8 ++++---- .../apache/nifi/web/dao/impl/StandardSnippetDAO.java | 2 +- .../java/org/apache/nifi/web/util/SnippetUtils.java | 15 +++++++++++---- 3 files changed, 16 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/b7b42c74/nifi/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/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java index 9436fb8..903b872 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java @@ -472,7 +472,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { // build the snippet dto final SnippetDTO responseSnippetDto = dtoFactory.createSnippetDto(snippet); - responseSnippetDto.setContents(snippetUtils.populateFlowSnippet(snippet, false)); + responseSnippetDto.setContents(snippetUtils.populateFlowSnippet(snippet, false, false)); // save updated controller if applicable if (snippetDto.getParentGroupId() != null && snippet.isLinked()) { @@ -995,7 +995,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { // add the snippet final Snippet snippet = snippetDAO.createSnippet(snippetDTO); final SnippetDTO responseSnippetDTO = dtoFactory.createSnippetDto(snippet); - responseSnippetDTO.setContents(snippetUtils.populateFlowSnippet(snippet, false)); + responseSnippetDTO.setContents(snippetUtils.populateFlowSnippet(snippet, false, false)); return responseSnippetDTO; } @@ -1092,7 +1092,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { templateDTO.setName(name); templateDTO.setDescription(description); templateDTO.setTimestamp(new Date()); - templateDTO.setSnippet(snippetUtils.populateFlowSnippet(snippet, true)); + templateDTO.setSnippet(snippetUtils.populateFlowSnippet(snippet, true, true)); // set the id based on the specified seed final ClusterContext clusterContext = ClusterContextThreadLocal.getContext(); @@ -1972,7 +1972,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { public SnippetDTO getSnippet(String snippetId) { final Snippet snippet = snippetDAO.getSnippet(snippetId); final SnippetDTO snippetDTO = dtoFactory.createSnippetDto(snippet); - snippetDTO.setContents(snippetUtils.populateFlowSnippet(snippet, false)); + snippetDTO.setContents(snippetUtils.populateFlowSnippet(snippet, false, false)); return snippetDTO; } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/b7b42c74/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardSnippetDAO.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardSnippetDAO.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardSnippetDAO.java index 73a1501..24e9256 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardSnippetDAO.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardSnippetDAO.java @@ -76,7 +76,7 @@ public class StandardSnippetDAO implements SnippetDAO { } // generate the snippet contents - FlowSnippetDTO snippetContents = snippetUtils.populateFlowSnippet(existingSnippet, true); + FlowSnippetDTO snippetContents = snippetUtils.populateFlowSnippet(existingSnippet, true, false); // resolve sensitive properties lookupSensitiveProperties(snippetContents); http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/b7b42c74/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/util/SnippetUtils.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/util/SnippetUtils.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/util/SnippetUtils.java index ea36abd..55982bd 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/util/SnippetUtils.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/util/SnippetUtils.java @@ -72,9 +72,10 @@ public final class SnippetUtils { * * @param snippet snippet * @param recurse recurse + * @param includeControllerServices whether or not to include controller services in the flow snippet dto * @return snippet */ - public FlowSnippetDTO populateFlowSnippet(Snippet snippet, boolean recurse) { + public FlowSnippetDTO populateFlowSnippet(Snippet snippet, boolean recurse, boolean includeControllerServices) { final FlowSnippetDTO snippetDto = new FlowSnippetDTO(); final String groupId = snippet.getParentGroupId(); final ProcessGroup processGroup = flowController.getGroup(groupId); @@ -188,7 +189,9 @@ public final class SnippetUtils { snippetDto.setRemoteProcessGroups(remoteProcessGroups); } - addControllerServicesToSnippet(snippetDto); + if (includeControllerServices) { + addControllerServicesToSnippet(snippetDto); + } return snippetDto; } @@ -570,8 +573,12 @@ public final class SnippetUtils { continue; } - final String newServiceId = serviceIdMap.get(currentServiceId); - properties.put(descriptor.getName(), newServiceId); + // if this is a copy/paste action, we can continue to reference the same service, in this case + // the serviceIdMap will be empty + if (serviceIdMap.containsKey(currentServiceId)) { + final String newServiceId = serviceIdMap.get(currentServiceId); + properties.put(descriptor.getName(), newServiceId); + } } } }
