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