From 23b2c912e2250c9172c02703e2acadfe775ba726 Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Fri, 6 Dec 2019 10:08:27 +0000 Subject: [PATCH] genericize file tree --- .../main/groovy/com/muwire/core/files/FileTree.groovy | 8 +++++--- .../groovy/com/muwire/core/files/FileTreeTest.groovy | 10 +++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/core/src/main/groovy/com/muwire/core/files/FileTree.groovy b/core/src/main/groovy/com/muwire/core/files/FileTree.groovy index 4d2f83a3..a143be82 100644 --- a/core/src/main/groovy/com/muwire/core/files/FileTree.groovy +++ b/core/src/main/groovy/com/muwire/core/files/FileTree.groovy @@ -2,12 +2,12 @@ package com.muwire.core.files import java.util.concurrent.ConcurrentHashMap -class FileTree { +class FileTree { private final TreeNode root = new TreeNode() private final Map fileToNode = new ConcurrentHashMap<>() - synchronized void add(File file) { + synchronized void add(File file, T value) { List path = new ArrayList<>() path.add(file) while (file.getParentFile() != null) { @@ -29,6 +29,7 @@ class FileTree { } current = existing } + current.value = value; } synchronized boolean remove(File file) { @@ -45,9 +46,10 @@ class FileTree { true } - public static class TreeNode { + public static class TreeNode { TreeNode parent File file + T value; final Set children = new HashSet<>() public int hashCode() { diff --git a/core/src/test/groovy/com/muwire/core/files/FileTreeTest.groovy b/core/src/test/groovy/com/muwire/core/files/FileTreeTest.groovy index 12f3620b..86476c2d 100644 --- a/core/src/test/groovy/com/muwire/core/files/FileTreeTest.groovy +++ b/core/src/test/groovy/com/muwire/core/files/FileTreeTest.groovy @@ -10,8 +10,8 @@ class FileTreeTest { File b = new File(a, "b") File c = new File(b, "c") - FileTree tree = new FileTree() - tree.add(c) + FileTree tree = new FileTree<>() + tree.add(c,null) assert tree.root.children.size() == 1 assert tree.fileToNode.size() == 3 @@ -28,12 +28,12 @@ class FileTreeTest { File c = new File(b, "c") File d = new File(b, "d") - FileTree tree = new FileTree() - tree.add(c) + FileTree tree = new FileTree<>() + tree.add(c,null) assert tree.fileToNode.size() == 3 - tree.add(d) + tree.add(d, null) assert tree.fileToNode.size() == 4 tree.remove(d)