Repository: nifi-minifi Updated Branches: refs/heads/master 8c47fb4a0 -> 0689ac904
MINIFI-42 Adjusting handling of the remote process group ID when locating its parent group. This closes #22 Signed-off-by: Joseph Percivall <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/nifi-minifi/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi-minifi/commit/0689ac90 Tree: http://git-wip-us.apache.org/repos/asf/nifi-minifi/tree/0689ac90 Diff: http://git-wip-us.apache.org/repos/asf/nifi-minifi/diff/0689ac90 Branch: refs/heads/master Commit: 0689ac904d6e8dc8df52583bcb457375000aca1b Parents: 8c47fb4 Author: Aldrin Piri <[email protected]> Authored: Mon Jun 27 13:16:21 2016 -0600 Committer: Joseph Percivall <[email protected]> Committed: Thu Jun 30 23:22:38 2016 -0400 ---------------------------------------------------------------------- .../bootstrap/util/ConfigTransformer.java | 41 ++++++++++---------- 1 file changed, 20 insertions(+), 21 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/0689ac90/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/util/ConfigTransformer.java ---------------------------------------------------------------------- diff --git a/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/util/ConfigTransformer.java b/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/util/ConfigTransformer.java index 956f4dc..1e44174 100644 --- a/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/util/ConfigTransformer.java +++ b/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/util/ConfigTransformer.java @@ -68,6 +68,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.zip.GZIPOutputStream; public final class ConfigTransformer { @@ -367,7 +368,7 @@ public final class ConfigTransformer { List<RemoteProcessingGroupSchema> remoteProcessingGroups = configSchema.getRemoteProcessingGroups(); if (remoteProcessingGroups != null) { - for (RemoteProcessingGroupSchema remoteProcessingGroupSchema: remoteProcessingGroups) { + for (RemoteProcessingGroupSchema remoteProcessingGroupSchema : remoteProcessingGroups) { addRemoteProcessGroup(element, remoteProcessingGroupSchema); } } @@ -491,7 +492,7 @@ public final class ConfigTransformer { addTextElement(element, "transmitting", "true"); List<RemoteInputPortSchema> remoteInputPorts = remoteProcessingGroupProperties.getInputPorts(); - for(RemoteInputPortSchema remoteInputPortSchema: remoteInputPorts) { + for (RemoteInputPortSchema remoteInputPortSchema : remoteInputPorts) { addRemoteGroupPort(element, remoteInputPortSchema); } @@ -538,10 +539,11 @@ public final class ConfigTransformer { addTextElement(element, "sourceGroupId", "Root-Group"); addTextElement(element, "sourceType", "PROCESSOR"); - addTextElement(element, "destinationId", connectionProperties.getDestinationName()); - - if (isInputPortId(connectionProperties.getDestinationName(), configSchema)) { - addTextElement(element, "destinationGroupId", "Remote-Process-Group"); + final String connectionDestinationId = connectionProperties.getDestinationName(); + addTextElement(element, "destinationId", connectionDestinationId); + final Optional<String> parentGroup = findInputPortParentGroup(connectionDestinationId, configSchema); + if (parentGroup.isPresent()) { + addTextElement(element, "destinationGroupId", parentGroup.get()); addTextElement(element, "destinationType", "REMOTE_INPUT_PORT"); } else { addTextElement(element, "destinationGroupId", "Root-Group"); @@ -562,25 +564,22 @@ public final class ConfigTransformer { } } - private static boolean isInputPortId(String id, ConfigSchema configSchema) { - boolean isInputPortId = false; - try { - List<RemoteProcessingGroupSchema> remoteProcessingGroups = configSchema.getRemoteProcessingGroups(); - if (remoteProcessingGroups != null) { - for (RemoteProcessingGroupSchema remoteProcessingGroupSchema: remoteProcessingGroups) { - List<RemoteInputPortSchema> remoteInputPorts = remoteProcessingGroupSchema.getInputPorts(); - for (RemoteInputPortSchema remoteInputPortSchema: remoteInputPorts) { - if (remoteInputPortSchema != null && id.equals(remoteInputPortSchema.getId())) { - isInputPortId = true; - break; - } + // Locate the associated parent group for a given input port by its id + private static Optional<String> findInputPortParentGroup(String inputPortId, ConfigSchema configSchema) { + final List<RemoteProcessingGroupSchema> remoteProcessingGroups = configSchema.getRemoteProcessingGroups(); + if (remoteProcessingGroups != null) { + for (final RemoteProcessingGroupSchema remoteProcessingGroupSchema : remoteProcessingGroups) { + final List<RemoteInputPortSchema> remoteInputPorts = remoteProcessingGroupSchema.getInputPorts(); + for (final RemoteInputPortSchema remoteInputPortSchema : remoteInputPorts) { + if (remoteInputPortSchema != null && inputPortId.equals(remoteInputPortSchema.getId())) { + return Optional.of(remoteProcessingGroupSchema.getName()); + } } } - } catch (Exception e) { - // If an exception was thrown then it isn't the InputPort } - return isInputPortId; + + return Optional.empty(); } private static void addPosition(final Element parentElement) {
