nifi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From joew...@apache.org
Subject [nifi] 12/21: NIFI-6069 Fixing fingerprinting of connection relationships to be properly sorted
Date Tue, 12 Mar 2019 19:40:04 GMT
This is an automated email from the ASF dual-hosted git repository.

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

commit 3ab55b6dce6c2a533ab27b47ce171305c408fe11
Author: Bryan Bende <bbende@apache.org>
AuthorDate: Thu Feb 21 16:58:03 2019 -0500

    NIFI-6069 Fixing fingerprinting of connection relationships to be properly sorted
    
    This closes #3325.
    
    Signed-off-by: Mark Payne <markap14@hotmail.com>
---
 .../nifi/fingerprint/FingerprintFactory.java       | 33 +---------------
 .../nifi/fingerprint/FingerprintFactoryTest.java   | 44 +++++++++++++---------
 .../flow-connection-with-multiple-rels.xml         | 40 ++++++++++++++++++++
 3 files changed, 68 insertions(+), 49 deletions(-)

diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/fingerprint/FingerprintFactory.java
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/fingerprint/FingerprintFactory.java
index 999a42d..e873af8 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/fingerprint/FingerprintFactory.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/fingerprint/FingerprintFactory.java
@@ -614,7 +614,7 @@ public class FingerprintFactory {
 
         // relationships
         final NodeList relationshipElems = DomUtils.getChildNodesByTagName(connectionElem,
"relationship");
-        final List<Element> sortedRelationshipElems = sortElements(relationshipElems,
getConnectionRelationshipsComparator());
+        final List<Element> sortedRelationshipElems = sortElements(relationshipElems,
getElementTextComparator());
         for (final Element relationshipElem : sortedRelationshipElems) {
             builder.append(getValue(relationshipElem, NO_VALUE));
         }
@@ -766,36 +766,7 @@ public class FingerprintFactory {
             }
         };
     }
-
-    private Comparator<Element> getConnectionRelationshipsComparator() {
-        return getSingleChildComparator("relationship");
-    }
-
-    private Comparator<Element> getSingleChildComparator(final String childElementName)
{
-        return new Comparator<Element>() {
-            @Override
-            public int compare(final Element e1, final Element e2) {
-                if (e2 == null) {
-                    return -1;
-                } else if (e1 == null) {
-                    return 1;
-                }
-
-                // compare using processor ids
-                final String e1Id = getFirstValue(DomUtils.getChildNodesByTagName(e1, childElementName));
-                if (e1Id == null) {
-                    return 1;
-                }
-                final String e2Id = getFirstValue(DomUtils.getChildNodesByTagName(e2, childElementName));
-                if (e2Id == null) {
-                    return -1;
-                }
-
-                return e1Id.compareTo(e2Id);
-            }
-        };
-    }
-
+    
     private Comparator<Element> getElementTextComparator() {
         return new Comparator<Element>() {
             @Override
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/fingerprint/FingerprintFactoryTest.java
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/fingerprint/FingerprintFactoryTest.java
index 09acbc9..befe332 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/fingerprint/FingerprintFactoryTest.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/fingerprint/FingerprintFactoryTest.java
@@ -16,24 +16,6 @@
  */
 package org.apache.nifi.fingerprint;
 
-import static org.apache.nifi.controller.serialization.ScheduledStateLookup.IDENTITY_LOOKUP;
-import static org.apache.nifi.fingerprint.FingerprintFactory.FLOW_CONFIG_XSD;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import java.io.IOException;
-import java.lang.reflect.Method;
-import java.util.Collections;
-import javax.xml.XMLConstants;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.validation.Schema;
-import javax.xml.validation.SchemaFactory;
-import java.util.Optional;
-
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.nifi.connectable.Position;
@@ -55,6 +37,25 @@ import org.xml.sax.ErrorHandler;
 import org.xml.sax.SAXException;
 import org.xml.sax.SAXParseException;
 
+import javax.xml.XMLConstants;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.util.Collections;
+import java.util.Optional;
+
+import static org.apache.nifi.controller.serialization.ScheduledStateLookup.IDENTITY_LOOKUP;
+import static org.apache.nifi.fingerprint.FingerprintFactory.FLOW_CONFIG_XSD;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
 /**
  */
 public class FingerprintFactoryTest {
@@ -125,6 +126,13 @@ public class FingerprintFactoryTest {
     }
 
     @Test
+    public void testConnectionWithMultipleRelationshipsSortedInFingerprint() throws IOException
{
+        final String fingerprint = fingerprinter.createFingerprint(getResourceBytes("/nifi/fingerprint/flow-connection-with-multiple-rels.xml"),
null);
+        assertNotNull(fingerprint);
+        assertTrue(fingerprint.contains("AAABBBCCCDDD"));
+    }
+
+    @Test
     public void testSchemaValidation() throws IOException {
         FingerprintFactory fp = new FingerprintFactory(null, getValidatingDocumentBuilder(),
extensionManager);
         final String fingerprint = fp.createFingerprint(getResourceBytes("/nifi/fingerprint/validating-flow.xml"),
null);
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/resources/nifi/fingerprint/flow-connection-with-multiple-rels.xml
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/resources/nifi/fingerprint/flow-connection-with-multiple-rels.xml
new file mode 100644
index 0000000..45bc5e7
--- /dev/null
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/resources/nifi/fingerprint/flow-connection-with-multiple-rels.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+  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.
+-->
+<flowController>
+    <maxThreadCount>15</maxThreadCount>
+    <rootGroup>
+        <connection>
+            <id>5bd05300-f03d-4511-a13f-6a36afe2bcc5</id>
+            <name/>
+            <bendPoints/>
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <style/>
+            <sourceId>a65695bb-a938-4d3d-bf5d-f70a335268ec</sourceId>
+            <sourceGroupId>efeece05-3934-4298-a725-658eec116470</sourceGroupId>
+            <sourceType>OUTPUT_PORT</sourceType>
+            <destinationId>e520797a-dddb-4930-9034-2092d3e816a6</destinationId>
+            <destinationGroupId>e3909250-331d-420b-a9b3-cc54ad459401</destinationGroupId>
+            <destinationType>PROCESSOR</destinationType>
+            <relationship>CCC</relationship>
+            <relationship>BBB</relationship>
+            <relationship>DDD</relationship>
+            <relationship>AAA</relationship>
+            <maxWorkQueueSize>0</maxWorkQueueSize>
+            <flowFileExpiration>0 s</flowFileExpiration>
+        </connection>
+    </rootGroup>
+</flowController>


Mime
View raw message