You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by al...@apache.org on 2019/08/19 17:22:28 UTC

[nifi-minifi] branch master updated: MINIFI-478 Fix broken OrderedProperties and OrderedPropertiesTest

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

aldrin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi-minifi.git


The following commit(s) were added to refs/heads/master by this push:
     new 11e6395  MINIFI-478 Fix broken OrderedProperties and OrderedPropertiesTest
11e6395 is described below

commit 11e6395dee978609ec88e017f7bbb1632101a8af
Author: Nenad V. Nikolić <me...@shonzilla.com>
AuthorDate: Tue Jul 9 08:34:56 2019 +0200

    MINIFI-478 Fix broken OrderedProperties and OrderedPropertiesTest
    
    In addition:
    - a more self-descriptive private variable name was used
    - the test data set was made bigger (and more "robust").
    
    This closes #158.
    
    Signed-off-by: Aldrin Piri <al...@apache.org>
---
 .../nifi/minifi/bootstrap/util/OrderedProperties.java     | 15 ++++++++++++---
 .../nifi/minifi/bootstrap/util/OrderedPropertiesTest.java | 11 ++++++++---
 .../test/resources/orderedPropertiesExpected.properties   |  5 ++++-
 3 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/util/OrderedProperties.java b/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/util/OrderedProperties.java
index d7496fa..5d5fe51 100644
--- a/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/util/OrderedProperties.java
+++ b/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/util/OrderedProperties.java
@@ -25,27 +25,36 @@ import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
+import java.util.AbstractMap;
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.LinkedHashSet;
 import java.util.Map;
 import java.util.Properties;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 public class OrderedProperties extends Properties {
     private final Map<String, String> textBeforeMap = new HashMap<>();
-    private final LinkedHashSet<Object> linkedHashSet = new LinkedHashSet<>();
+    private final LinkedHashSet<Object> orderedKeys = new LinkedHashSet<>();
 
     @Override
     public synchronized Object put(Object key, Object value) {
-        linkedHashSet.add(key);
+        orderedKeys.add(key);
         return super.put(key, value);
     }
 
     @Override
     public synchronized Enumeration<Object> keys() {
-        return Collections.enumeration(linkedHashSet.stream().filter(this::containsKey).collect(Collectors.toList()));
+        return Collections.enumeration(orderedKeys.stream().filter(this::containsKey).collect(Collectors.toList()));
+    }
+
+    @Override
+    public synchronized Set<Map.Entry<Object, Object>> entrySet() {
+        return orderedKeys.stream()
+                .map(k -> new AbstractMap.SimpleImmutableEntry<>(k, this.get(k)))
+                .collect(Collectors.toCollection(LinkedHashSet::new));
     }
 
     public synchronized Object setProperty(String key, String value, String textBefore) {
diff --git a/minifi-bootstrap/src/test/java/org/apache/nifi/minifi/bootstrap/util/OrderedPropertiesTest.java b/minifi-bootstrap/src/test/java/org/apache/nifi/minifi/bootstrap/util/OrderedPropertiesTest.java
index bc9c4bc..11e9de6 100644
--- a/minifi-bootstrap/src/test/java/org/apache/nifi/minifi/bootstrap/util/OrderedPropertiesTest.java
+++ b/minifi-bootstrap/src/test/java/org/apache/nifi/minifi/bootstrap/util/OrderedPropertiesTest.java
@@ -36,20 +36,25 @@ public class OrderedPropertiesTest {
         orderedProperties.setProperty("prop1", "origVal1");
         orderedProperties.setProperty("prop2", "val2", "#this is property 2");
         orderedProperties.setProperty("prop3", "val3");
+        orderedProperties.setProperty("prop4", "val4");
+        orderedProperties.setProperty("prop5", "val5", "#this is property 5");
+        orderedProperties.setProperty("prop3", "newVal3");
         orderedProperties.setProperty("prop1", "newVal1");
         ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
         orderedProperties.store(byteArrayOutputStream, PROPERTIES_FILE_APACHE_2_0_LICENSE);
 
-        try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(byteArrayOutputStream.toByteArray())));
+        try (BufferedReader actualReader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(byteArrayOutputStream.toByteArray())));
              BufferedReader expectedReader = new BufferedReader(new InputStreamReader(OrderedPropertiesTest.class.getClassLoader().getResourceAsStream("orderedPropertiesExpected.properties")))) {
             String expectedLine;
             while((expectedLine = expectedReader.readLine()) != null) {
-                String actualLine = bufferedReader.readLine();
+                String actualLine = actualReader.readLine();
                 if (!"#Tue Feb 21 11:03:08 EST 2017".equals(expectedLine)) {
                     assertEquals(expectedLine, actualLine);
+                } else {
+                    System.out.println("Skipping timestamp comment line");
                 }
             }
-            assertNull(bufferedReader.readLine());
+            assertNull(actualReader.readLine());
         }
     }
 }
diff --git a/minifi-bootstrap/src/test/resources/orderedPropertiesExpected.properties b/minifi-bootstrap/src/test/resources/orderedPropertiesExpected.properties
index 9e5dca1..ade47f7 100644
--- a/minifi-bootstrap/src/test/resources/orderedPropertiesExpected.properties
+++ b/minifi-bootstrap/src/test/resources/orderedPropertiesExpected.properties
@@ -18,4 +18,7 @@
 prop1=newVal1
 #this is property 2
 prop2=val2
-prop3=val3
+prop3=newVal3
+prop4=val4
+#this is property 5
+prop5=val5