This is an automated email from the ASF dual-hosted git repository.

bsimon pushed a commit to branch support/nifi-1.x
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/support/nifi-1.x by this push:
     new 4a6e6751d5 NIFI-11213 Showing version change in older (pre 1.18.0) 
contained version flows properly (#7017)
4a6e6751d5 is described below

commit 4a6e6751d5478514ab6fe937685b057193365f65
Author: simonbence <61191107+simonbe...@users.noreply.github.com>
AuthorDate: Mon Mar 20 16:52:07 2023 +0100

    NIFI-11213 Showing version change in older (pre 1.18.0) contained version 
flows properly (#7017)
---
 .../apache/nifi/util/FlowDifferenceFilters.java    | 22 +++-------
 .../diff/ConciseEvolvingDifferenceDescriptor.java  |  2 +-
 .../registry/flow/diff/FlowDifferenceUtil.java     | 50 ++++++++++++++++++++++
 3 files changed, 58 insertions(+), 16 deletions(-)

diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/util/FlowDifferenceFilters.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/util/FlowDifferenceFilters.java
index db714946db..ad2fa76122 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/util/FlowDifferenceFilters.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/util/FlowDifferenceFilters.java
@@ -34,6 +34,7 @@ import org.apache.nifi.groups.ProcessGroup;
 import org.apache.nifi.processor.Relationship;
 import org.apache.nifi.registry.flow.diff.DifferenceType;
 import org.apache.nifi.registry.flow.diff.FlowDifference;
+import org.apache.nifi.registry.flow.diff.FlowDifferenceUtil;
 import org.apache.nifi.registry.flow.mapping.InstantiatedVersionedComponent;
 import 
org.apache.nifi.registry.flow.mapping.InstantiatedVersionedControllerService;
 import org.apache.nifi.registry.flow.mapping.InstantiatedVersionedProcessor;
@@ -192,22 +193,13 @@ public class FlowDifferenceFilters {
                 final VersionedFlowCoordinates coordinatesB = 
versionedProcessGroupB.getVersionedFlowCoordinates();
 
                 if (coordinatesA != null && coordinatesB != null) {
-                    String registryUrlA = coordinatesA.getRegistryUrl();
-                    String registryUrlB = coordinatesB.getRegistryUrl();
-
-                    if (registryUrlA != null && registryUrlB != null && 
!registryUrlA.equals(registryUrlB)) {
-                        if (registryUrlA.endsWith("/")) {
-                            registryUrlA = registryUrlA.substring(0, 
registryUrlA.length() - 1);
-                        }
-
-                        if (registryUrlB.endsWith("/")) {
-                            registryUrlB = registryUrlB.substring(0, 
registryUrlB.length() - 1);
-                        }
-
-                        if (registryUrlA.equals(registryUrlB)) {
-                            return true;
-                        }
+                    if (coordinatesA.getStorageLocation() != null || 
coordinatesB.getStorageLocation() != null) {
+                        return false;
                     }
+
+                    return  
!FlowDifferenceUtil.areRegistryStrictlyEqual(coordinatesA, coordinatesB)
+                            && 
FlowDifferenceUtil.areRegistryUrlsEqual(coordinatesA, coordinatesB)
+                            && coordinatesA.getVersion() == 
coordinatesB.getVersion();
                 }
             }
         }
diff --git 
a/nifi-registry/nifi-registry-core/nifi-registry-flow-diff/src/main/java/org/apache/nifi/registry/flow/diff/ConciseEvolvingDifferenceDescriptor.java
 
b/nifi-registry/nifi-registry-core/nifi-registry-flow-diff/src/main/java/org/apache/nifi/registry/flow/diff/ConciseEvolvingDifferenceDescriptor.java
index 144f865af4..3fc4e4b1bf 100644
--- 
a/nifi-registry/nifi-registry-core/nifi-registry-flow-diff/src/main/java/org/apache/nifi/registry/flow/diff/ConciseEvolvingDifferenceDescriptor.java
+++ 
b/nifi-registry/nifi-registry-core/nifi-registry-flow-diff/src/main/java/org/apache/nifi/registry/flow/diff/ConciseEvolvingDifferenceDescriptor.java
@@ -80,7 +80,7 @@ public class ConciseEvolvingDifferenceDescriptor implements 
DifferenceDescriptor
                     final VersionedFlowCoordinates coordinatesB = 
(VersionedFlowCoordinates) valueB;
 
                     // If the two vary only by version, then use a more 
concise message. If anything else is different, then use a fully explanation.
-                    if (Objects.equals(coordinatesA.getRegistryUrl(), 
coordinatesB.getRegistryUrl()) && Objects.equals(coordinatesA.getBucketId(), 
coordinatesB.getBucketId())
+                    if (FlowDifferenceUtil.areRegistryUrlsEqual(coordinatesA, 
coordinatesB) && Objects.equals(coordinatesA.getBucketId(), 
coordinatesB.getBucketId())
                             && Objects.equals(coordinatesA.getFlowId(), 
coordinatesB.getFlowId()) && coordinatesA.getVersion() != 
coordinatesB.getVersion()) {
 
                         description = String.format("Flow Version changed from 
%s to %s", coordinatesA.getVersion(), coordinatesB.getVersion());
diff --git 
a/nifi-registry/nifi-registry-core/nifi-registry-flow-diff/src/main/java/org/apache/nifi/registry/flow/diff/FlowDifferenceUtil.java
 
b/nifi-registry/nifi-registry-core/nifi-registry-flow-diff/src/main/java/org/apache/nifi/registry/flow/diff/FlowDifferenceUtil.java
new file mode 100644
index 0000000000..1d69b06bfb
--- /dev/null
+++ 
b/nifi-registry/nifi-registry-core/nifi-registry-flow-diff/src/main/java/org/apache/nifi/registry/flow/diff/FlowDifferenceUtil.java
@@ -0,0 +1,50 @@
+/*
+ * 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.registry.flow.diff;
+
+import org.apache.nifi.flow.VersionedFlowCoordinates;
+
+public final class FlowDifferenceUtil {
+
+    private FlowDifferenceUtil() {
+        // Not to be instantiated
+    }
+
+    public static boolean areRegistryStrictlyEqual(final 
VersionedFlowCoordinates coordinatesA, final VersionedFlowCoordinates 
coordinatesB) {
+        final String registryUrlA = coordinatesA.getRegistryUrl();
+        final String registryUrlB = coordinatesB.getRegistryUrl();
+        return registryUrlA != null && registryUrlB != null && 
registryUrlA.equals(registryUrlB);
+    }
+
+    public static boolean areRegistryUrlsEqual(final VersionedFlowCoordinates 
coordinatesA, final VersionedFlowCoordinates coordinatesB) {
+        final String registryUrlA = coordinatesA.getRegistryUrl();
+        final String registryUrlB = coordinatesB.getRegistryUrl();
+
+        if (registryUrlA != null && registryUrlB != null) {
+            if (registryUrlA.equals(registryUrlB)) {
+                return true;
+            }
+
+            final String normalizedRegistryUrlA = registryUrlA.endsWith("/") ? 
registryUrlA.substring(0, registryUrlA.length() - 1) : registryUrlA;
+            final String normalizedRegistryUrlB = registryUrlB.endsWith("/") ? 
registryUrlB.substring(0, registryUrlB.length() - 1) : registryUrlB;
+
+            return normalizedRegistryUrlA.equals(normalizedRegistryUrlB);
+        }
+
+        return false;
+    }
+}

Reply via email to