From eca1e4d5f33f5bd11535edef927c01162a45677b Mon Sep 17 00:00:00 2001 From: Walter Oggioni Date: Sun, 28 Jul 2019 16:12:06 +0100 Subject: [PATCH] fixed useless object IDs dumping --- .../worth/serialization/ValueDumper.java | 33 ++++++------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/src/main/java/net/woggioni/worth/serialization/ValueDumper.java b/src/main/java/net/woggioni/worth/serialization/ValueDumper.java index ab44bb4..1791585 100644 --- a/src/main/java/net/woggioni/worth/serialization/ValueDumper.java +++ b/src/main/java/net/woggioni/worth/serialization/ValueDumper.java @@ -6,7 +6,8 @@ import net.woggioni.worth.traversal.TraversalContext; import net.woggioni.worth.traversal.ValueIdentity; import net.woggioni.worth.traversal.ValueVisitor; import net.woggioni.worth.traversal.ValueWalker; -import net.woggioni.worth.value.*; +import net.woggioni.worth.value.ArrayValue; +import net.woggioni.worth.value.ObjectValue; import net.woggioni.worth.xface.Dumper; import net.woggioni.worth.xface.Value; @@ -14,9 +15,10 @@ import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Writer; import java.nio.charset.Charset; -import java.util.*; -import java.util.stream.Collectors; -import java.util.stream.Stream; +import java.util.ArrayDeque; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; public abstract class ValueDumper implements Dumper { @@ -31,13 +33,6 @@ public abstract class ValueDumper implements Dumper { protected Map getIdMap(Value root) { Map occurrencies = new HashMap<>(); ValueVisitor visitor = new ValueVisitor(){ - - private void visit(Value v) { - ValueIdentity identity = new ValueIdentity(v); - Integer i = occurrencies.getOrDefault(identity, 0); - occurrencies.put(identity, ++i); - } - @Override public boolean filter(Value value, TraversalContext ctx) { if(value.type() == Value.Type.ARRAY || value.type() == Value.Type.OBJECT) { @@ -49,22 +44,14 @@ public abstract class ValueDumper implements Dumper { return true; } } - - @Override - public void visit(ObjectValue value, TraversalContext ctx) { - visit(value); - } - - @Override - public void visit(ArrayValue value, TraversalContext ctx) { - visit(value); - } }; ValueWalker.walk(root, visitor); Map result = new HashMap<>(); int i = 0; - for(ValueIdentity identity : occurrencies.keySet()) { - result.put(identity, i++); + for(Map.Entry entry : occurrencies.entrySet()) { + if(entry.getValue() > 1) { + result.put(entry.getKey(), i++); + } } return result; }