From cadf2fb6f25caf334bf787292380af5b25fdcbb1 Mon Sep 17 00:00:00 2001 From: Bence Simon Date: Mon, 19 Jun 2023 13:27:22 +0200 Subject: [PATCH] NIFI-11706 Add option to create dedicated Parameter Contexts for Imported Flows This closes #7401 Signed-off-by: David Handermann --- .../asciidoc/images/import-version-dialog.png | Bin 62746 -> 107267 bytes nifi-docs/src/main/asciidoc/user-guide.adoc | 4 + .../dto/ParameterContextHandlingStrategy.java | 21 +++ .../flow/StandardFlowRegistryClientNode.java | 30 +++- .../nifi/web/api/ProcessGroupResource.java | 133 +++++++++------- ...ParameterContextNameCollisionResolver.java | 74 +++++++++ .../web/util/ParameterContextReplacer.java | 125 +++++++++++++++ .../main/resources/nifi-web-api-context.xml | 7 + ...meterContextNameCollisionResolverTest.java | 87 +++++++++++ .../util/ParameterContextReplacerTest.java | 145 ++++++++++++++++++ .../canvas/import-flow-version-dialog.jsp | 5 + .../src/main/webapp/css/dialog.css | 22 ++- .../webapp/js/nf/canvas/nf-flow-version.js | 8 +- 13 files changed, 597 insertions(+), 64 deletions(-) create mode 100644 nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/ParameterContextHandlingStrategy.java create mode 100644 nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/util/ParameterContextNameCollisionResolver.java create mode 100644 nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/util/ParameterContextReplacer.java create mode 100644 nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/web/util/ParameterContextNameCollisionResolverTest.java create mode 100644 nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/web/util/ParameterContextReplacerTest.java diff --git a/nifi-docs/src/main/asciidoc/images/import-version-dialog.png b/nifi-docs/src/main/asciidoc/images/import-version-dialog.png index c9927472ab92ac82bb19887d150cf3dbe76a57af..a7ff4267984da9556e4189ab51356ad92d92f474 100644 GIT binary patch literal 107267 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%0A+8QTT57pcU2m;ice&7U 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 b*vv7F8dFG0*YNvoz(3eEy{ko+ZNvW$k-om? literal 62746 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 Oe;2h4E);5B4gO!a2P>!m diff --git a/nifi-docs/src/main/asciidoc/user-guide.adoc b/nifi-docs/src/main/asciidoc/user-guide.adoc index 3c114f2e15..567526d600 100644 --- a/nifi-docs/src/main/asciidoc/user-guide.adoc +++ b/nifi-docs/src/main/asciidoc/user-guide.adoc @@ -2440,6 +2440,10 @@ image::import-version-dialog.png["Import Version Dialog"] Connected registries will appear as options in the Registry drop-down menu. For the chosen Registry, buckets the user has access to will appear as options in the Bucket drop-down menu. The names of the flows in the chosen bucket will appear as options in the Name drop-down menu. Select the desired version of the flow to import and select "Import" for the dataflow to be placed on the canvas. +The import also provides the option to keep or replace existing Parameter Contexts based on name. Keeping the Parameter Contexts (which is the default behaviour) will use the existing Contexts if Contexts with the same name already exists, resulting shared parameter sets between multiple imports. + +Unchecking the checkbox named "Keep Existing Parameter Contexts" will result the creation of a new set of Parameter Contexts for the import, making it completely independent of the existing imports. The parameter values of these new Contexts will be set based on the content of the Registry Snapshot. + image::versioned-flow-imported.png["Versioned Flow Imported"] Since the version imported in this example is the latest version (MySQL CDC, Version 3), the state of the versioned process group is "Up to date" (image:iconUpToDate.png["Up To Date Icon"]). If the version imported had been an older version, the state would be "Stale" (image:iconStale.png["Stale Icon"]). diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/ParameterContextHandlingStrategy.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/ParameterContextHandlingStrategy.java new file mode 100644 index 0000000000..d1f7414fab --- /dev/null +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/ParameterContextHandlingStrategy.java @@ -0,0 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.nifi.web.api.dto; + +public enum ParameterContextHandlingStrategy { + KEEP_EXISTING, REPLACE +} diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/registry/flow/StandardFlowRegistryClientNode.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/registry/flow/StandardFlowRegistryClientNode.java index c5a8f91649..6924a16487 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/registry/flow/StandardFlowRegistryClientNode.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/registry/flow/StandardFlowRegistryClientNode.java @@ -55,6 +55,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -225,6 +226,11 @@ public final class StandardFlowRegistryClientNode extends AbstractComponentNode if (fetchRemoteFlows) { final VersionedProcessGroup contents = flowSnapshot.getFlowContents(); for (final VersionedProcessGroup child : contents.getProcessGroups()) { + final Map childParameterContexts = populateVersionedContentsRecursively(context, child, snapshotContainer); + + for (final Map.Entry childParameterContext : childParameterContexts.entrySet()) { + flowSnapshot.getParameterContexts().putIfAbsent(childParameterContext.getKey(), childParameterContext.getValue()); + } populateVersionedContentsRecursively(context, child, snapshotContainer); } } @@ -297,10 +303,15 @@ public final class StandardFlowRegistryClientNode extends AbstractComponentNode return context.getNiFiUserIdentity().orElse(null); } - private void populateVersionedContentsRecursively(final FlowRegistryClientUserContext context, final VersionedProcessGroup group, - final FlowSnapshotContainer snapshotContainer) throws FlowRegistryException { + private Map populateVersionedContentsRecursively( + final FlowRegistryClientUserContext context, + final VersionedProcessGroup group, + final FlowSnapshotContainer snapshotContainer + ) throws FlowRegistryException { + Map accumulatedParameterContexts = new HashMap<>(); + if (group == null) { - return; + return accumulatedParameterContexts; } final VersionedFlowCoordinates coordinates = group.getVersionedFlowCoordinates(); @@ -330,12 +341,23 @@ public final class StandardFlowRegistryClientNode extends AbstractComponentNode group.setLogFileSuffix(contents.getLogFileSuffix()); coordinates.setLatest(snapshot.isLatest()); + for (final Map.Entry parameterContext : snapshot.getParameterContexts().entrySet()) { + accumulatedParameterContexts.put(parameterContext.getKey(), parameterContext.getValue()); + } + snapshotContainer.addChildSnapshot(snapshot, group); } for (final VersionedProcessGroup child : group.getProcessGroups()) { - populateVersionedContentsRecursively(context, child, snapshotContainer); + final Map childParameterContexts = populateVersionedContentsRecursively(context, child, snapshotContainer); + + for (final Map.Entry childParameterContext : childParameterContexts.entrySet()) { + // We favor the context instance from the enclosing versioned flow + accumulatedParameterContexts.putIfAbsent(childParameterContext.getKey(), childParameterContext.getValue()); + } } + + return accumulatedParameterContexts; } private RegisteredFlowSnapshot fetchFlowContents(final FlowRegistryClientUserContext context, final VersionedFlowCoordinates coordinates, diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProcessGroupResource.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProcessGroupResource.java index 33744e25d7..925adc1bb4 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProcessGroupResource.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProcessGroupResource.java @@ -28,6 +28,57 @@ import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import io.swagger.annotations.Authorization; +import java.io.IOException; +import java.io.InputStream; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.stream.Collectors; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.DefaultValue; +import javax.ws.rs.GET; +import javax.ws.rs.HttpMethod; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.HttpHeaders; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.MultivaluedHashMap; +import javax.ws.rs.core.MultivaluedMap; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.Status; +import javax.ws.rs.core.UriBuilder; +import javax.ws.rs.core.UriInfo; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBElement; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Unmarshaller; +import javax.xml.stream.XMLStreamReader; +import javax.xml.transform.stream.StreamSource; import org.apache.commons.lang3.StringUtils; import org.apache.commons.text.StringEscapeUtils; import org.apache.nifi.authorization.AuthorizableLookup; @@ -73,6 +124,7 @@ import org.apache.nifi.web.api.dto.ConnectionDTO; import org.apache.nifi.web.api.dto.ControllerServiceDTO; import org.apache.nifi.web.api.dto.DropRequestDTO; import org.apache.nifi.web.api.dto.FlowSnippetDTO; +import org.apache.nifi.web.api.dto.ParameterContextHandlingStrategy; import org.apache.nifi.web.api.dto.PortDTO; import org.apache.nifi.web.api.dto.PositionDTO; import org.apache.nifi.web.api.dto.ProcessGroupDTO; @@ -123,6 +175,7 @@ import org.apache.nifi.web.api.entity.VariableRegistryUpdateRequestEntity; import org.apache.nifi.web.api.request.ClientIdParameter; import org.apache.nifi.web.api.request.LongParameter; import org.apache.nifi.web.security.token.NiFiAuthenticationToken; +import org.apache.nifi.web.util.ParameterContextReplacer; import org.apache.nifi.web.util.Pause; import org.apache.nifi.xml.processing.stream.StandardXMLStreamReaderProvider; import org.apache.nifi.xml.processing.stream.XMLStreamReaderProvider; @@ -132,58 +185,6 @@ import org.slf4j.LoggerFactory; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.DefaultValue; -import javax.ws.rs.GET; -import javax.ws.rs.HttpMethod; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.MultivaluedHashMap; -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; -import javax.ws.rs.core.UriBuilder; -import javax.ws.rs.core.UriInfo; -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBElement; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Unmarshaller; -import javax.xml.stream.XMLStreamReader; -import javax.xml.transform.stream.StreamSource; -import java.io.IOException; -import java.io.InputStream; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.Collection; -import java.util.Collections; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; -import java.util.UUID; -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.ThreadFactory; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; -import java.util.function.Consumer; -import java.util.function.Function; -import java.util.stream.Collectors; - /** * RESTful endpoint for managing a Group. */ @@ -205,6 +206,7 @@ public class ProcessGroupResource extends FlowUpdateResource varRegistryUpdateRequests = new ConcurrentHashMap<>(); private static final int MAX_VARIABLE_REGISTRY_UPDATE_REQUESTS = 100; @@ -1969,8 +1971,16 @@ public class ProcessGroupResource extends FlowUpdateResource.+?)( \\((?<" + PATTERN_GROUP_INDEX + ">[0-9]+)\\))?$"; + private static final Pattern LINEAGE_PATTERN = Pattern.compile(LINEAGE_FORMAT); + + private static final String NAME_FORMAT = "%s (%d)"; + + public String resolveNameCollision(final String originalParameterContextName, final Collection existingContexts) { + final Matcher lineageMatcher = LINEAGE_PATTERN.matcher(originalParameterContextName); + + if (!lineageMatcher.matches()) { + throw new IllegalArgumentException("Existing Parameter Context name \"(" + originalParameterContextName + "\") cannot be processed"); + } + + final String lineName = lineageMatcher.group(PATTERN_GROUP_NAME); + final String originalIndex = lineageMatcher.group(PATTERN_GROUP_INDEX); + + // Candidates cannot be cached because new context might be added between calls + final Set candidates = existingContexts + .stream() + .map(pc -> pc.getComponent()) + .filter(dto -> dto.getName().startsWith(lineName)) + .collect(Collectors.toSet()); + + int biggestIndex = (originalIndex == null) ? 0 : Integer.valueOf(originalIndex); + + for (final ParameterContextDTO candidate : candidates) { + final Matcher matcher = LINEAGE_PATTERN.matcher(candidate.getName()); + + if (matcher.matches() && lineName.equals(matcher.group(PATTERN_GROUP_NAME))) { + final String indexGroup = matcher.group(PATTERN_GROUP_INDEX); + + if (indexGroup != null) { + int biggestIndexCandidate = Integer.valueOf(indexGroup); + + if (biggestIndexCandidate > biggestIndex) { + biggestIndex = biggestIndexCandidate; + } + } + } + } + + return String.format(NAME_FORMAT, lineName, biggestIndex + 1); + } +} diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/util/ParameterContextReplacer.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/util/ParameterContextReplacer.java new file mode 100644 index 0000000000..56d1a6dd14 --- /dev/null +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/util/ParameterContextReplacer.java @@ -0,0 +1,125 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.nifi.web.util; + +import java.util.Collection; +import org.apache.nifi.flow.VersionedParameterContext; +import org.apache.nifi.flow.VersionedProcessGroup; +import org.apache.nifi.registry.flow.RegisteredFlowSnapshot; +import org.apache.nifi.web.api.entity.ParameterContextEntity; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +/** + * Replaces Parameter Contexts within the snapshot following name conventions. + * + * A set of Parameter Contexts following a given name convention is considered as a lineage. Lineage is used to + * group Parameter Contexts and determine a non-conflicting name for the newly created replacements. This class + * creates replaces all Parameter Contexts in the snapshot, keeping care of the lineage for the given Contexts. + * + * Note: if multiple (sub)groups refer to the same Parameter Context, only one replacement will be created and all + * Process Groups referred to the original Parameter Context will refer to this replacement. + */ +public class ParameterContextReplacer { + private static final Logger LOGGER = LoggerFactory.getLogger(ParameterContextReplacer.class); + + private final ParameterContextNameCollisionResolver nameCollisionResolver; + + ParameterContextReplacer(final ParameterContextNameCollisionResolver nameCollisionResolver) { + this.nameCollisionResolver = nameCollisionResolver; + } + + /** + * Goes through the Process Group structure and replaces Parameter Contexts to avoid collision with the ones + * existing in the flow, based on name. The method disregards if the given Parameter Context has no matching + * counterpart in the existing flow, it replaces all with newly created contexts. + * + * @param flowSnapshot Snapshot from the Registry. Modification will be applied on this object! + */ + public void replaceParameterContexts(final RegisteredFlowSnapshot flowSnapshot, final Collection existingContexts) { + // We do not want to have double replacements: within the snapshot we keep the identical names identical. + final Map parameterContexts = flowSnapshot.getParameterContexts(); + final Map replacements = replaceParameterContexts(flowSnapshot.getFlowContents(), parameterContexts, new HashMap<>(), existingContexts); + + // This is needed because if a PC is used for both assignments and inheritance (parent) then we would both change it + // but without updating the inheritance reference. {@see NIFI-11706 TC#8} + for (final Map.Entry replacement : replacements.entrySet()) { + for (final VersionedParameterContext parameterContext : parameterContexts.values()) { + final List inheritedContexts = parameterContext.getInheritedParameterContexts(); + if (inheritedContexts.contains(replacement.getKey())) { + inheritedContexts.remove(replacement.getKey()); + inheritedContexts.add(replacement.getValue().getName()); + } + } + } + } + + /** + * @return A collection of replaced Parameter Contexts. Every map entry represents a singe replacement where the key + * is the old context's name and the value is the new context. + */ + private Map replaceParameterContexts( + final VersionedProcessGroup group, + final Map flowParameterContexts, + final Map replacements, + final Collection existingContexts + ) { + if (group.getParameterContextName() != null) { + final String oldParameterContextName = group.getParameterContextName(); + final VersionedParameterContext oldParameterContext = flowParameterContexts.get(oldParameterContextName); + + if (replacements.containsKey(oldParameterContextName)) { + final String replacementContextName = replacements.get(oldParameterContextName).getName(); + group.setParameterContextName(replacementContextName); + LOGGER.debug("Replacing Parameter Context in Group {} from {} into {}", group.getIdentifier(), oldParameterContext, replacementContextName); + } else { + final VersionedParameterContext replacementContext = createReplacementContext(oldParameterContext, existingContexts); + group.setParameterContextName(replacementContext.getName()); + + flowParameterContexts.remove(oldParameterContextName); + flowParameterContexts.put(replacementContext.getName(), replacementContext); + replacements.put(oldParameterContextName, replacementContext); + LOGGER.debug("Replacing Parameter Context in Group {} from {} into the newly created {}", group.getIdentifier(), oldParameterContext, replacementContext.getName()); + } + } + + for (final VersionedProcessGroup childGroup : group.getProcessGroups()) { + replaceParameterContexts(childGroup, flowParameterContexts, replacements, existingContexts); + } + + return replacements; + } + + private VersionedParameterContext createReplacementContext(final VersionedParameterContext original, final Collection existingContexts) { + final VersionedParameterContext replacement = new VersionedParameterContext(); + replacement.setName(nameCollisionResolver.resolveNameCollision(original.getName(), existingContexts)); + replacement.setParameters(new HashSet<>(original.getParameters())); + replacement.setInheritedParameterContexts(Optional.ofNullable(original.getInheritedParameterContexts()).orElse(new ArrayList<>())); + replacement.setDescription(original.getDescription()); + replacement.setSynchronized(original.isSynchronized()); + replacement.setParameterProvider(original.getParameterProvider()); + replacement.setParameterGroupName(original.getParameterGroupName()); + return replacement; + } +} diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/resources/nifi-web-api-context.xml b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/resources/nifi-web-api-context.xml index 5e356da4bb..f8a471a484 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/resources/nifi-web-api-context.xml +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/resources/nifi-web-api-context.xml @@ -381,6 +381,12 @@ + + + + + + @@ -501,6 +507,7 @@ + diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/web/util/ParameterContextNameCollisionResolverTest.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/web/util/ParameterContextNameCollisionResolverTest.java new file mode 100644 index 0000000000..881d972e3b --- /dev/null +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/web/util/ParameterContextNameCollisionResolverTest.java @@ -0,0 +1,87 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.nifi.web.util; + +import org.apache.nifi.web.api.dto.ParameterContextDTO; +import org.apache.nifi.web.api.entity.ParameterContextEntity; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; +import org.mockito.Mockito; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.stream.Stream; + +class ParameterContextNameCollisionResolverTest { + private final static Collection EMPTY_PARAMETER_CONTEXT_SOURCE = Collections.emptySet(); + private final static Collection PARAMETER_CONTEXT_SOURCE_WITH_FIRST = Arrays.asList(getTestContext("test")); + private final static Collection PARAMETER_CONTEXT_SOURCE_WITH_SOME = + Arrays.asList(getTestContext("test"), getTestContext("test (1)"), getTestContext("test (2)")); + private final static Collection PARAMETER_CONTEXT_SOURCE_WITH_NON_CONTINUOUS = + Arrays.asList(getTestContext("test (3)"), getTestContext("test (9)")); + private final static Collection PARAMETER_CONTEXT_SOURCE_WITH_OTHER_LINEAGES = + Arrays.asList(getTestContext("test"), getTestContext("test2 (3)"), getTestContext("other")); + + @ParameterizedTest(name = "\"{0}\" into \"{1}\"") + @MethodSource("testDataSet") + public void testResolveNameCollision( + final String oldName, + final String expectedResult, + final Collection parameterContexts + ) { + final ParameterContextNameCollisionResolver testSubject = new ParameterContextNameCollisionResolver(); + final String result = testSubject.resolveNameCollision(oldName, parameterContexts); + Assertions.assertEquals(expectedResult, result); + } + + private static Stream testDataSet() { + return Stream.of( + Arguments.of("test", "test (1)", EMPTY_PARAMETER_CONTEXT_SOURCE), + Arguments.of("test (1)", "test (2)", EMPTY_PARAMETER_CONTEXT_SOURCE), + Arguments.of("test(1)", "test(1) (1)", EMPTY_PARAMETER_CONTEXT_SOURCE), + Arguments.of("test (1) (1)", "test (1) (2)", EMPTY_PARAMETER_CONTEXT_SOURCE), + Arguments.of("(1)", "(1) (1)", EMPTY_PARAMETER_CONTEXT_SOURCE), + Arguments.of( + "((((Lorem.ipsum dolor sit.amet, consectetur adipiscing elit", + "((((Lorem.ipsum dolor sit.amet, consectetur adipiscing elit (1)", + EMPTY_PARAMETER_CONTEXT_SOURCE), + Arguments.of("test", "test (1)", PARAMETER_CONTEXT_SOURCE_WITH_FIRST), + Arguments.of("test (1)", "test (2)", PARAMETER_CONTEXT_SOURCE_WITH_FIRST), + Arguments.of("test (8)", "test (9)", PARAMETER_CONTEXT_SOURCE_WITH_FIRST), + Arguments.of("other", "other (1)", PARAMETER_CONTEXT_SOURCE_WITH_FIRST), + Arguments.of("test", "test (3)", PARAMETER_CONTEXT_SOURCE_WITH_SOME), + Arguments.of("test (1)", "test (3)", PARAMETER_CONTEXT_SOURCE_WITH_SOME), + Arguments.of("other", "other (1)", PARAMETER_CONTEXT_SOURCE_WITH_SOME), + Arguments.of("test", "test (10)", PARAMETER_CONTEXT_SOURCE_WITH_NON_CONTINUOUS), + Arguments.of("test (3)", "test (10)", PARAMETER_CONTEXT_SOURCE_WITH_NON_CONTINUOUS), + Arguments.of("test (15)", "test (16)", PARAMETER_CONTEXT_SOURCE_WITH_NON_CONTINUOUS), + Arguments.of("test", "test (1)", PARAMETER_CONTEXT_SOURCE_WITH_OTHER_LINEAGES), + Arguments.of("test (1)", "test (2)", PARAMETER_CONTEXT_SOURCE_WITH_OTHER_LINEAGES) + ); + } + + private static ParameterContextEntity getTestContext(final String name) { + final ParameterContextEntity result = Mockito.mock(ParameterContextEntity.class); + final ParameterContextDTO dto = Mockito.mock(ParameterContextDTO.class); + Mockito.when(result.getComponent()).thenReturn(dto); + Mockito.when(dto.getName()).thenReturn(name); + return result; + } +} \ No newline at end of file diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/web/util/ParameterContextReplacerTest.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/web/util/ParameterContextReplacerTest.java new file mode 100644 index 0000000000..cd585c06a4 --- /dev/null +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/web/util/ParameterContextReplacerTest.java @@ -0,0 +1,145 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.nifi.web.util; + +import org.apache.nifi.flow.VersionedParameter; +import org.apache.nifi.flow.VersionedParameterContext; +import org.apache.nifi.flow.VersionedProcessGroup; +import org.apache.nifi.registry.flow.RegisteredFlowSnapshot; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +class ParameterContextReplacerTest { + private static final String CONTEXT_ONE_NAME = "contextOne"; + private static final String CONTEXT_TWO_NAME = "contextTwo (1)"; + private static final String CONTEXT_ONE_NAME_AFTER_REPLACE = "contextOne (1)"; + private static final String CONTEXT_TWO_NAME_AFTER_REPLACE = "contextTwo (2)"; + + @Test + public void testReplacementWithoutSubgroups() { + final ParameterContextNameCollisionResolver collisionResolver = new ParameterContextNameCollisionResolver(); + final ParameterContextReplacer testSubject = new ParameterContextReplacer(collisionResolver); + final RegisteredFlowSnapshot snapshot = getSimpleSnapshot(); + + testSubject.replaceParameterContexts(snapshot, new HashSet<>()); + + final Map parameterContexts = snapshot.getParameterContexts(); + Assertions.assertEquals(1, parameterContexts.size()); + Assertions.assertTrue(parameterContexts.containsKey(CONTEXT_ONE_NAME_AFTER_REPLACE)); + + final VersionedParameterContext replacedContext = parameterContexts.get(CONTEXT_ONE_NAME_AFTER_REPLACE); + final Set parameters = replacedContext.getParameters(); + final Map parametersByName = new HashMap<>(); + + for (final VersionedParameter parameter : parameters) { + parametersByName.put(parameter.getName(), parameter); + } + + Assertions.assertEquals(CONTEXT_ONE_NAME_AFTER_REPLACE, snapshot.getFlowContents().getParameterContextName()); + Assertions.assertEquals("value1", parametersByName.get("param1").getValue()); + Assertions.assertEquals("value2", parametersByName.get("param2").getValue()); + } + + @Test + public void testReplacementWithSubgroups() { + final ParameterContextNameCollisionResolver collisionResolver = new ParameterContextNameCollisionResolver(); + final ParameterContextReplacer testSubject = new ParameterContextReplacer(collisionResolver); + final RegisteredFlowSnapshot snapshot = getMultiLevelSnapshot(); + + testSubject.replaceParameterContexts(snapshot, new HashSet<>()); + + final Map parameterContexts = snapshot.getParameterContexts(); + Assertions.assertEquals(2, parameterContexts.size()); + Assertions.assertTrue(parameterContexts.containsKey(CONTEXT_ONE_NAME_AFTER_REPLACE)); + Assertions.assertTrue(parameterContexts.containsKey(CONTEXT_TWO_NAME_AFTER_REPLACE)); + } + + private static RegisteredFlowSnapshot getSimpleSnapshot() { + final VersionedProcessGroup processGroup = getProcessGroup("PG1", CONTEXT_ONE_NAME); + + final RegisteredFlowSnapshot snapshot = new RegisteredFlowSnapshot(); + snapshot.setParameterContexts(new HashMap<>(Collections.singletonMap(CONTEXT_ONE_NAME, getParameterContextOne()))); + snapshot.setFlowContents(processGroup); + + return snapshot; + } + + private static RegisteredFlowSnapshot getMultiLevelSnapshot() { + final VersionedProcessGroup childProcessGroup1 = getProcessGroup("CPG1", CONTEXT_ONE_NAME); + final VersionedProcessGroup childProcessGroup2 = getProcessGroup("CPG2", CONTEXT_TWO_NAME); + final VersionedProcessGroup processGroup = getProcessGroup("PG1", CONTEXT_TWO_NAME, childProcessGroup1, childProcessGroup2); + + final Map parameterContexts = new HashMap<>(); + parameterContexts.put(CONTEXT_ONE_NAME, getParameterContextOne()); + parameterContexts.put(CONTEXT_TWO_NAME, getParameterContextTwo()); + + final RegisteredFlowSnapshot snapshot = new RegisteredFlowSnapshot(); + snapshot.setParameterContexts(parameterContexts); + snapshot.setFlowContents(processGroup); + + return snapshot; + } + + private static VersionedProcessGroup getProcessGroup(final String name, final String parameterContext, final VersionedProcessGroup... children) { + final VersionedProcessGroup result = new VersionedProcessGroup(); + result.setName(name); + result.setIdentifier(name); // Needed for equals check + result.setParameterContextName(parameterContext); + result.setProcessGroups(new HashSet<>(Arrays.asList(children))); + return result; + } + + private static VersionedParameterContext getParameterContextOne() { + final Map parameters = new HashMap<>(); + parameters.put("param1", "value1"); + parameters.put("param2", "value2"); + final VersionedParameterContext context = getParameterContext(CONTEXT_ONE_NAME, parameters); + return context; + } + + private static VersionedParameterContext getParameterContextTwo() { + final Map parameters = new HashMap<>(); + parameters.put("param3", "value3"); + parameters.put("param4", "value4"); + final VersionedParameterContext context = getParameterContext(CONTEXT_TWO_NAME, parameters); + return context; + } + + public static VersionedParameterContext getParameterContext(final String name, final Map parameters) { + final Set contextParameters = new HashSet<>(); + + for (final Map.Entry parameter : parameters.entrySet()) { + final VersionedParameter versionedParameter = new VersionedParameter(); + versionedParameter.setName(parameter.getKey()); + versionedParameter.setValue(parameter.getValue()); + contextParameters.add(versionedParameter); + } + + final VersionedParameterContext context = new VersionedParameterContext(); + context.setName(name); + context.setParameters(contextParameters); + + return context; + } +} \ No newline at end of file diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/import-flow-version-dialog.jsp b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/import-flow-version-dialog.jsp index e2de2d18f6..1bb1eec152 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/import-flow-version-dialog.jsp +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/import-flow-version-dialog.jsp @@ -45,6 +45,11 @@
+
+
+
Keep Existing Parameter Contexts
+
+
Flow Description
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/dialog.css b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/dialog.css index b5b68eaaee..f476852523 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/dialog.css +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/dialog.css @@ -247,11 +247,11 @@ div.progress-label { #import-flow-version-table { overflow: hidden; position: absolute; - top: 270px; + top: 307px; left: 0px; right: 0px; bottom: 0px; - height: 155px; + height: 118px; } #import-flow-description-container { @@ -276,6 +276,24 @@ div.progress-label { border-radius: 0; } +#import-flow-version-dialog .keep-parameter-context { + align-items: center; + display: flex; +} + +.keep-parameter-context .nf-checkbox-label { + font-size: 12px; + font-weight: 500; + font-family: Roboto Slab; +} + +.keep-parameter-context .fa { + color: #004849; + font-size: 12px; + line-height: 22px; + margin-left: 5px; +} + /* Local changes */ diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-flow-version.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-flow-version.js index 134845428c..7c37ec7252 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-flow-version.js +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-flow-version.js @@ -815,6 +815,9 @@ } }]).modal('show'); + // resetting the checkbox + $('#keepExistingParameterContext').removeClass('checkbox-unchecked').addClass('checkbox-checked'); + // hide the new process group dialog $('#new-process-group-dialog').modal('hide'); }); @@ -1045,7 +1048,10 @@ return $.ajax({ type: 'POST', data: JSON.stringify(processGroupEntity), - url: '../nifi-api/process-groups/' + encodeURIComponent(nfCanvasUtils.getGroupId()) + '/process-groups', + url: '../nifi-api/process-groups/' + encodeURIComponent(nfCanvasUtils.getGroupId()) + '/process-groups?' + + $.param({ + 'parameterContextHandlingStrategy' : $('#keepExistingParameterContext').hasClass('checkbox-checked') ? 'KEEP_EXISTING' : 'REPLACE' + }), dataType: 'json', contentType: 'application/json' }).done(function (response) {