No more guava
This commit is contained in:
parent
49fa7d3e12
commit
f5636c082e
3 changed files with 51 additions and 25 deletions
|
|
@ -0,0 +1,48 @@
|
||||||
|
package net.frankheijden.serverutils.common.util;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
public class HashGraph<T> {
|
||||||
|
|
||||||
|
private final Set<T> nodes;
|
||||||
|
private final Map<T, Set<T>> successors;
|
||||||
|
private final Map<T, Set<T>> predecessors;
|
||||||
|
|
||||||
|
public HashGraph() {
|
||||||
|
this(16);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new hash-based graph.
|
||||||
|
*/
|
||||||
|
public HashGraph(int initialCapacity) {
|
||||||
|
this.nodes = new HashSet<>(initialCapacity);
|
||||||
|
this.successors = new HashMap<>(initialCapacity);
|
||||||
|
this.predecessors = new HashMap<>(initialCapacity);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addNode(T node) {
|
||||||
|
this.nodes.add(node);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void putEdge(T from, T to) {
|
||||||
|
this.successors.computeIfAbsent(from, k -> new HashSet<>()).add(to);
|
||||||
|
this.predecessors.computeIfAbsent(to, k -> new HashSet<>()).add(from);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<T> nodes() {
|
||||||
|
return this.nodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<T> successors(T node) {
|
||||||
|
return this.successors.getOrDefault(node, Collections.emptySet());
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<T> predecessors(T node) {
|
||||||
|
return this.predecessors.getOrDefault(node, Collections.emptySet());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,8 +1,5 @@
|
||||||
package net.frankheijden.serverutils.common.utils;
|
package net.frankheijden.serverutils.common.utils;
|
||||||
|
|
||||||
import com.google.common.graph.Graph;
|
|
||||||
import com.google.common.graph.GraphBuilder;
|
|
||||||
import com.google.common.graph.MutableGraph;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Deque;
|
import java.util.Deque;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
@ -10,6 +7,7 @@ import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import net.frankheijden.serverutils.common.util.HashGraph;
|
||||||
|
|
||||||
public class DependencyUtils {
|
public class DependencyUtils {
|
||||||
|
|
||||||
|
|
@ -22,7 +20,7 @@ public class DependencyUtils {
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("UnstableApiUsage")
|
@SuppressWarnings("UnstableApiUsage")
|
||||||
public static <T> List<T> determineOrder(Map<T, Set<T>> dependencyMap) throws IllegalStateException {
|
public static <T> List<T> determineOrder(Map<T, Set<T>> dependencyMap) throws IllegalStateException {
|
||||||
MutableGraph<T> dependencyGraph = GraphBuilder.directed().allowsSelfLoops(true).build();
|
HashGraph<T> dependencyGraph = new HashGraph<>();
|
||||||
for (T node : dependencyMap.keySet()) {
|
for (T node : dependencyMap.keySet()) {
|
||||||
dependencyGraph.addNode(node);
|
dependencyGraph.addNode(node);
|
||||||
}
|
}
|
||||||
|
|
@ -45,7 +43,7 @@ public class DependencyUtils {
|
||||||
|
|
||||||
@SuppressWarnings("UnstableApiUsage")
|
@SuppressWarnings("UnstableApiUsage")
|
||||||
private static <T> void visitNode(
|
private static <T> void visitNode(
|
||||||
Graph<T> dependencyGraph,
|
HashGraph<T> dependencyGraph,
|
||||||
T node,
|
T node,
|
||||||
Map<T, Mark> marks,
|
Map<T, Mark> marks,
|
||||||
List<T> orderedList,
|
List<T> orderedList,
|
||||||
|
|
|
||||||
20
build.gradle
20
build.gradle
|
|
@ -38,7 +38,6 @@ subprojects {
|
||||||
implementation "cloud.commandframework:cloud-core:${rootProject.cloudVersion}"
|
implementation "cloud.commandframework:cloud-core:${rootProject.cloudVersion}"
|
||||||
implementation "cloud.commandframework:cloud-brigadier:${rootProject.cloudVersion}"
|
implementation "cloud.commandframework:cloud-brigadier:${rootProject.cloudVersion}"
|
||||||
implementation 'com.github.FrankHeijden:MinecraftReflection:1.0.0'
|
implementation 'com.github.FrankHeijden:MinecraftReflection:1.0.0'
|
||||||
implementation 'com.google.guava:guava:30.1.1-jre'
|
|
||||||
implementation 'com.google.code.gson:gson:2.8.6'
|
implementation 'com.google.code.gson:gson:2.8.6'
|
||||||
implementation 'me.lucko:commodore:1.10'
|
implementation 'me.lucko:commodore:1.10'
|
||||||
compileOnly 'com.mojang:brigadier:1.0.17'
|
compileOnly 'com.mojang:brigadier:1.0.17'
|
||||||
|
|
@ -72,26 +71,7 @@ subprojects {
|
||||||
exclude 'com/mojang/**'
|
exclude 'com/mojang/**'
|
||||||
exclude 'javax/annotation/**'
|
exclude 'javax/annotation/**'
|
||||||
exclude 'org/checkerframework/**'
|
exclude 'org/checkerframework/**'
|
||||||
exclude 'com/google/errorprone/**'
|
|
||||||
exclude 'com/google/j2objc/**'
|
|
||||||
exclude 'com/google/thirdparty/**'
|
|
||||||
exclude 'com/google/common/annotations/**'
|
|
||||||
exclude 'com/google/common/base/**'
|
|
||||||
exclude 'com/google/common/cache/**'
|
|
||||||
exclude 'com/google/common/collect/**'
|
|
||||||
exclude 'com/google/common/escape/**'
|
|
||||||
exclude 'com/google/common/eventbus/**'
|
|
||||||
exclude 'com/google/common/hash/**'
|
|
||||||
exclude 'com/google/common/html/**'
|
|
||||||
exclude 'com/google/common/io/**'
|
|
||||||
exclude 'com/google/common/math/**'
|
|
||||||
exclude 'com/google/common/net/**'
|
|
||||||
exclude 'com/google/common/primitives/**'
|
|
||||||
exclude 'com/google/common/reflect/**'
|
|
||||||
exclude 'com/google/common/util/**'
|
|
||||||
exclude 'com/google/common/xml/**'
|
|
||||||
relocate 'com.google.gson', dependencyDir + '.gson'
|
relocate 'com.google.gson', dependencyDir + '.gson'
|
||||||
relocate 'com.google.common.graph', dependencyDir + '.common.graph'
|
|
||||||
relocate 'dev.frankheijden.minecraftreflection', dependencyDir + '.minecraftreflection'
|
relocate 'dev.frankheijden.minecraftreflection', dependencyDir + '.minecraftreflection'
|
||||||
relocate 'cloud.commandframework', dependencyDir + '.cloud'
|
relocate 'cloud.commandframework', dependencyDir + '.cloud'
|
||||||
relocate 'me.lucko.commodore', dependencyDir + '.commodore'
|
relocate 'me.lucko.commodore', dependencyDir + '.commodore'
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue