From b00ecd0e80572956477164b17b8b22546939ff1e Mon Sep 17 00:00:00 2001 From: Markus Frohme Date: Tue, 27 Nov 2018 22:04:41 +0100 Subject: [PATCH] drop lombok dependency replace @EqualsAndHashCode with self-supplied "equals" and "hashcode" implementations according to "Effective Java" best practices. Speeds up the build process and reduces the dependencies on other projects. --- adapters/brics/pom.xml | 4 -- .../brics/BricsTransitionProperty.java | 22 ++++++++- api/pom.xml | 5 -- .../automata/graphs/TransitionEdge.java | 47 +++++++++++++++++-- .../probabilistic/ProbabilisticOutput.java | 26 ++++++++-- commons/smartcollections/pom.xml | 5 -- .../smartcollections/ArrayStorage.java | 24 ++++++++-- commons/util/pom.xml | 4 -- .../net/automatalib/commons/util/Pair.java | 24 +++++++++- .../net/automatalib/commons/util/Triple.java | 25 +++++++++- core/pom.xml | 4 -- .../impl/compact/CompactMealyTransition.java | 28 +++++++++-- .../ts/powerset/FastPowersetState.java | 21 +++++++-- .../net/automatalib/words/impl/Symbol.java | 21 ++++++++- .../net/automatalib/words/impl/VPDSym.java | 27 ++++++++++- distribution/pom.xml | 5 -- modelchecking/ltsmin/pom.xml | 4 -- .../modelcheckers/ltsmin/LTSminVersion.java | 34 +++++++++++--- pom.xml | 8 ---- util/pom.xml | 5 -- .../PaigeTarjanInitializers.java | 21 ++++++++- 21 files changed, 285 insertions(+), 79 deletions(-) diff --git a/adapters/brics/pom.xml b/adapters/brics/pom.xml index 0f57141a54..16f23e9c81 100644 --- a/adapters/brics/pom.xml +++ b/adapters/brics/pom.xml @@ -40,10 +40,6 @@ limitations under the License. automata-api - - org.projectlombok - lombok - com.google.code.findbugs jsr305 diff --git a/adapters/brics/src/main/java/net/automatalib/brics/BricsTransitionProperty.java b/adapters/brics/src/main/java/net/automatalib/brics/BricsTransitionProperty.java index 7161e3579e..6f1595eb8a 100644 --- a/adapters/brics/src/main/java/net/automatalib/brics/BricsTransitionProperty.java +++ b/adapters/brics/src/main/java/net/automatalib/brics/BricsTransitionProperty.java @@ -16,14 +16,12 @@ package net.automatalib.brics; import dk.brics.automaton.Transition; -import lombok.EqualsAndHashCode; /** * The properties of an edge in a Brics automaton. * * @author Malte Isberner */ -@EqualsAndHashCode public class BricsTransitionProperty { private final char min; @@ -88,4 +86,24 @@ public static String toString(char min, char max) { return sb.toString(); } + @Override + public final boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof BricsTransitionProperty)) { + return false; + } + + final BricsTransitionProperty that = (BricsTransitionProperty) o; + return min == that.min && max == that.max; + } + + @Override + public final int hashCode() { + int result = 1; + result = 31 * result + Character.hashCode(min); + result = 31 * result + Character.hashCode(max); + return result; + } } diff --git a/api/pom.xml b/api/pom.xml index 22639df8df..36b88f386f 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -59,11 +59,6 @@ limitations under the License. metainf-services - - org.projectlombok - lombok - - org.testng testng diff --git a/api/src/main/java/net/automatalib/automata/graphs/TransitionEdge.java b/api/src/main/java/net/automatalib/automata/graphs/TransitionEdge.java index acfd29017d..55659e2dd5 100644 --- a/api/src/main/java/net/automatalib/automata/graphs/TransitionEdge.java +++ b/api/src/main/java/net/automatalib/automata/graphs/TransitionEdge.java @@ -15,10 +15,10 @@ */ package net.automatalib.automata.graphs; -import lombok.EqualsAndHashCode; +import java.util.Objects; + import net.automatalib.ts.UniversalTransitionSystem; -@EqualsAndHashCode public final class TransitionEdge { private final I input; @@ -41,7 +41,27 @@ public Property property(UniversalTransitionSystem u return new Property<>(input, uts.getTransitionProperty(transition)); } - @EqualsAndHashCode + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof TransitionEdge)) { + return false; + } + + final TransitionEdge that = (TransitionEdge) o; + return Objects.equals(input, that.input) && Objects.equals(transition, that.transition); + } + + @Override + public int hashCode() { + int result = 1; + result = 31 * result + Objects.hashCode(input); + result = 31 * result + Objects.hashCode(transition); + return result; + } + public static final class Property { private final I input; @@ -59,5 +79,26 @@ public I getInput() { public TP getProperty() { return property; } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof Property)) { + return false; + } + + final Property that = (Property) o; + return Objects.equals(input, that.input) && Objects.equals(property, that.property); + } + + @Override + public int hashCode() { + int result = 1; + result = 31 * result + Objects.hashCode(input); + result = 31 * result + Objects.hashCode(property); + return result; + } } } diff --git a/api/src/main/java/net/automatalib/automata/transducers/probabilistic/ProbabilisticOutput.java b/api/src/main/java/net/automatalib/automata/transducers/probabilistic/ProbabilisticOutput.java index e319e7ee18..8b80c272d3 100644 --- a/api/src/main/java/net/automatalib/automata/transducers/probabilistic/ProbabilisticOutput.java +++ b/api/src/main/java/net/automatalib/automata/transducers/probabilistic/ProbabilisticOutput.java @@ -15,13 +15,12 @@ */ package net.automatalib.automata.transducers.probabilistic; +import java.util.Objects; + import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; -import lombok.EqualsAndHashCode; - @ParametersAreNonnullByDefault -@EqualsAndHashCode public final class ProbabilisticOutput { private final float probability; @@ -41,4 +40,25 @@ public float getProbability() { public O getOutput() { return output; } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof ProbabilisticOutput)) { + return false; + } + + final ProbabilisticOutput that = (ProbabilisticOutput) o; + return Float.compare(probability, that.probability) == 0 && Objects.equals(output, that.output); + } + + @Override + public int hashCode() { + int result = 1; + result = 31 * result + Float.hashCode(probability); + result = 31 * result + Objects.hashCode(output); + return result; + } } diff --git a/commons/smartcollections/pom.xml b/commons/smartcollections/pom.xml index d11d659706..9a989803ed 100644 --- a/commons/smartcollections/pom.xml +++ b/commons/smartcollections/pom.xml @@ -47,11 +47,6 @@ limitations under the License. jsr305 - - org.projectlombok - lombok - - org.testng testng diff --git a/commons/smartcollections/src/main/java/net/automatalib/commons/smartcollections/ArrayStorage.java b/commons/smartcollections/src/main/java/net/automatalib/commons/smartcollections/ArrayStorage.java index 408a1caaf0..1d911ebb52 100644 --- a/commons/smartcollections/src/main/java/net/automatalib/commons/smartcollections/ArrayStorage.java +++ b/commons/smartcollections/src/main/java/net/automatalib/commons/smartcollections/ArrayStorage.java @@ -17,12 +17,11 @@ import java.io.Serializable; import java.util.AbstractList; +import java.util.Arrays; import java.util.Collection; import java.util.RandomAccess; import java.util.function.Supplier; -import lombok.EqualsAndHashCode; - /** * A thin wrapper around a simple {@code Object[]} array. Mainly used (and useful) for heavily generic and array-based * data storage. Extends/Implements some convenient classes/interfaces. @@ -32,8 +31,7 @@ * * @author frohme */ -@EqualsAndHashCode(callSuper = false) -public class ArrayStorage extends AbstractList implements RandomAccess, Serializable, Cloneable { +public final class ArrayStorage extends AbstractList implements RandomAccess, Serializable, Cloneable { private final Object[] storage; @@ -78,4 +76,22 @@ public int size() { public ArrayStorage clone() { return new ArrayStorage<>(storage.clone()); } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof ArrayStorage)) { + return false; + } + + final ArrayStorage that = (ArrayStorage) o; + return Arrays.equals(storage, that.storage); + } + + @Override + public int hashCode() { + return Arrays.hashCode(storage); + } } diff --git a/commons/util/pom.xml b/commons/util/pom.xml index 1d627b3cfe..3e8f1ec44e 100644 --- a/commons/util/pom.xml +++ b/commons/util/pom.xml @@ -51,10 +51,6 @@ limitations under the License. com.google.code.findbugs jsr305 - - org.projectlombok - lombok - org.testng diff --git a/commons/util/src/main/java/net/automatalib/commons/util/Pair.java b/commons/util/src/main/java/net/automatalib/commons/util/Pair.java index 1fb7961a6c..23a5ee5cce 100644 --- a/commons/util/src/main/java/net/automatalib/commons/util/Pair.java +++ b/commons/util/src/main/java/net/automatalib/commons/util/Pair.java @@ -17,8 +17,8 @@ import java.io.IOException; import java.io.Serializable; +import java.util.Objects; -import lombok.EqualsAndHashCode; import net.automatalib.commons.util.strings.AbstractPrintable; import net.automatalib.commons.util.strings.StringUtil; @@ -39,7 +39,6 @@ * @author Malte Isberner * @author frohme */ -@EqualsAndHashCode(callSuper = false) public final class Pair extends AbstractPrintable implements Serializable { private static final long serialVersionUID = -1L; @@ -76,4 +75,25 @@ public void print(Appendable a) throws IOException { a.append(", "); StringUtil.appendObject(a, second); } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof Pair)) { + return false; + } + + final Pair that = (Pair) o; + return Objects.equals(first, that.first) && Objects.equals(second, that.second); + } + + @Override + public int hashCode() { + int result = 1; + result = 31 * result + Objects.hashCode(first); + result = 31 * result + Objects.hashCode(second); + return result; + } } diff --git a/commons/util/src/main/java/net/automatalib/commons/util/Triple.java b/commons/util/src/main/java/net/automatalib/commons/util/Triple.java index b508f1628e..1bc2db1055 100644 --- a/commons/util/src/main/java/net/automatalib/commons/util/Triple.java +++ b/commons/util/src/main/java/net/automatalib/commons/util/Triple.java @@ -17,8 +17,8 @@ import java.io.IOException; import java.io.Serializable; +import java.util.Objects; -import lombok.EqualsAndHashCode; import net.automatalib.commons.util.strings.AbstractPrintable; import net.automatalib.commons.util.strings.StringUtil; @@ -41,7 +41,6 @@ * @author Malte Isberner * @author frohme */ -@EqualsAndHashCode(callSuper = false) public final class Triple extends AbstractPrintable implements Serializable { private static final long serialVersionUID = -1L; @@ -87,4 +86,26 @@ public void print(Appendable a) throws IOException { StringUtil.appendObject(a, third); } + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof Triple)) { + return false; + } + + final Triple that = (Triple) o; + return Objects.equals(first, that.first) && Objects.equals(second, that.second) && + Objects.equals(third, that.third); + } + + @Override + public int hashCode() { + int result = 1; + result = 31 * result + Objects.hashCode(first); + result = 31 * result + Objects.hashCode(second); + result = 31 * result + Objects.hashCode(third); + return result; + } } diff --git a/core/pom.xml b/core/pom.xml index eadec9c31d..65fffa8a5a 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -67,10 +67,6 @@ limitations under the License. org.kohsuke.metainf-services metainf-services - - org.projectlombok - lombok - org.testng diff --git a/core/src/main/java/net/automatalib/automata/transducers/impl/compact/CompactMealyTransition.java b/core/src/main/java/net/automatalib/automata/transducers/impl/compact/CompactMealyTransition.java index 2f004f0e67..251277ee3d 100644 --- a/core/src/main/java/net/automatalib/automata/transducers/impl/compact/CompactMealyTransition.java +++ b/core/src/main/java/net/automatalib/automata/transducers/impl/compact/CompactMealyTransition.java @@ -16,11 +16,9 @@ package net.automatalib.automata.transducers.impl.compact; import java.io.Serializable; +import java.util.Objects; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode -public class CompactMealyTransition implements Serializable { +public final class CompactMealyTransition implements Serializable { private int memoryIdx; private final int succId; @@ -59,4 +57,26 @@ void setMemoryIdx(int memoryIdx) { boolean isAutomatonTransition() { return memoryIdx >= 0; } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof CompactMealyTransition)) { + return false; + } + + final CompactMealyTransition that = (CompactMealyTransition) o; + return memoryIdx == that.memoryIdx && succId == that.succId && Objects.equals(output, that.output); + } + + @Override + public int hashCode() { + int result = 1; + result = 31 * result + Integer.hashCode(memoryIdx); + result = 31 * result + Integer.hashCode(succId); + result = 31 * result + Objects.hashCode(output); + return result; + } } diff --git a/core/src/main/java/net/automatalib/ts/powerset/FastPowersetState.java b/core/src/main/java/net/automatalib/ts/powerset/FastPowersetState.java index bef8259883..3d96ee0f3e 100644 --- a/core/src/main/java/net/automatalib/ts/powerset/FastPowersetState.java +++ b/core/src/main/java/net/automatalib/ts/powerset/FastPowersetState.java @@ -20,10 +20,8 @@ import java.util.BitSet; import java.util.Iterator; import java.util.List; +import java.util.Objects; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(of = "bs", callSuper = false) public class FastPowersetState extends AbstractSet { private final BitSet bs = new BitSet(); @@ -52,4 +50,21 @@ public boolean remove(Object o) { throw new UnsupportedOperationException(); } + @Override + public final boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof FastPowersetState)) { + return false; + } + + final FastPowersetState that = (FastPowersetState) o; + return Objects.equals(bs, that.bs); + } + + @Override + public final int hashCode() { + return Objects.hashCode(bs); + } } diff --git a/core/src/main/java/net/automatalib/words/impl/Symbol.java b/core/src/main/java/net/automatalib/words/impl/Symbol.java index e90c7e18e1..4cd987a9a0 100644 --- a/core/src/main/java/net/automatalib/words/impl/Symbol.java +++ b/core/src/main/java/net/automatalib/words/impl/Symbol.java @@ -15,15 +15,15 @@ */ package net.automatalib.words.impl; +import java.util.Objects; + import javax.annotation.Nonnull; import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; -import lombok.EqualsAndHashCode; import net.automatalib.words.abstractimpl.AbstractSymbol; @ParametersAreNonnullByDefault -@EqualsAndHashCode(callSuper = false) public class Symbol extends AbstractSymbol { @Nullable @@ -49,4 +49,21 @@ public String toString() { return String.valueOf(userObject); } + @Override + public final boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof Symbol)) { + return false; + } + + final Symbol that = (Symbol) o; + return Objects.equals(userObject, that.userObject); + } + + @Override + public final int hashCode() { + return Objects.hashCode(userObject); + } } diff --git a/core/src/main/java/net/automatalib/words/impl/VPDSym.java b/core/src/main/java/net/automatalib/words/impl/VPDSym.java index bd4b274362..1dfb2ae2f7 100644 --- a/core/src/main/java/net/automatalib/words/impl/VPDSym.java +++ b/core/src/main/java/net/automatalib/words/impl/VPDSym.java @@ -16,8 +16,8 @@ package net.automatalib.words.impl; import java.io.Serializable; +import java.util.Objects; -import lombok.EqualsAndHashCode; import net.automatalib.words.VPDAlphabet; /** @@ -29,7 +29,6 @@ * * @author Malte Isberner */ -@EqualsAndHashCode public final class VPDSym implements Serializable { private final VPDAlphabet.SymbolType type; @@ -59,6 +58,30 @@ public int getGlobalIndex() { return globalIndex; } + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof VPDSym)) { + return false; + } + + final VPDSym that = (VPDSym) o; + return localIndex == that.localIndex && globalIndex == that.globalIndex && type == that.type && + Objects.equals(userObject, that.userObject); + } + + @Override + public int hashCode() { + int result = 1; + result = 31 * result + Objects.hashCode(userObject); + result = 31 * result + Objects.hashCode(userObject); + result = 31 * result + Integer.hashCode(localIndex); + result = 31 * result + Integer.hashCode(globalIndex); + return result; + } + @Override public String toString() { return String.valueOf(userObject); diff --git a/distribution/pom.xml b/distribution/pom.xml index dd4a005bc0..4d5db0b1f4 100644 --- a/distribution/pom.xml +++ b/distribution/pom.xml @@ -408,11 +408,6 @@ limitations under the License. metainf-services ${metainf-services.version} - - org.projectlombok - lombok - ${lombok.version} - javax.annotation diff --git a/modelchecking/ltsmin/pom.xml b/modelchecking/ltsmin/pom.xml index 6a95e679a9..13edfad3a1 100644 --- a/modelchecking/ltsmin/pom.xml +++ b/modelchecking/ltsmin/pom.xml @@ -55,10 +55,6 @@ limitations under the License. net.automatalib automata-serialization-fsm - - org.projectlombok - lombok - com.github.misberner.buildergen buildergen diff --git a/modelchecking/ltsmin/src/main/java/net/automatalib/modelcheckers/ltsmin/LTSminVersion.java b/modelchecking/ltsmin/src/main/java/net/automatalib/modelcheckers/ltsmin/LTSminVersion.java index 1b9b242e9c..b5a721f2e6 100644 --- a/modelchecking/ltsmin/src/main/java/net/automatalib/modelcheckers/ltsmin/LTSminVersion.java +++ b/modelchecking/ltsmin/src/main/java/net/automatalib/modelcheckers/ltsmin/LTSminVersion.java @@ -18,7 +18,6 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import lombok.EqualsAndHashCode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,7 +26,6 @@ * * @author frohme */ -@EqualsAndHashCode public final class LTSminVersion { private static final Logger LOGGER = LoggerFactory.getLogger(LTSminVersion.class); @@ -48,12 +46,14 @@ private LTSminVersion(int major, int minor, int patch) { /** * Returns an {@link LTSminVersion} instance described by the provided versions. * - * @param major the major version - * @param minor the minor version - * @param patch the patch version + * @param major + * the major version + * @param minor + * the minor version + * @param patch + * the patch version * * @return A {@link LTSminVersion} instance described by the provided versions. - * */ public static LTSminVersion of(int major, int minor, int patch) { return new LTSminVersion(major, minor, patch); @@ -116,4 +116,26 @@ public boolean supports(LTSminVersion required) { public String toString() { return String.format("v%d.%d.%d", major, minor, patch); } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof LTSminVersion)) { + return false; + } + + final LTSminVersion that = (LTSminVersion) o; + return major == that.major && minor == that.minor && patch == that.patch; + } + + @Override + public int hashCode() { + int result = 1; + result = 31 * result + Integer.hashCode(major); + result = 31 * result + Integer.hashCode(minor); + result = 31 * result + Integer.hashCode(patch); + return result; + } } diff --git a/pom.xml b/pom.xml index 61cdc9c850..496f81629f 100644 --- a/pom.xml +++ b/pom.xml @@ -203,7 +203,6 @@ limitations under the License. 1.3.2 2.1.1 1.2.3 - 1.18.2 1.8 2.23.0 1.7.25 @@ -486,13 +485,6 @@ limitations under the License. provided - - org.projectlombok - lombok - ${lombok.version} - provided - - org.slf4j slf4j-api diff --git a/util/pom.xml b/util/pom.xml index fd0a604fdf..b5d4f1c30a 100644 --- a/util/pom.xml +++ b/util/pom.xml @@ -57,11 +57,6 @@ limitations under the License. duzzt-processor - - org.projectlombok - lombok - - com.google.guava guava diff --git a/util/src/main/java/net/automatalib/util/partitionrefinement/PaigeTarjanInitializers.java b/util/src/main/java/net/automatalib/util/partitionrefinement/PaigeTarjanInitializers.java index 7f869b80d0..05ff27f176 100644 --- a/util/src/main/java/net/automatalib/util/partitionrefinement/PaigeTarjanInitializers.java +++ b/util/src/main/java/net/automatalib/util/partitionrefinement/PaigeTarjanInitializers.java @@ -15,6 +15,7 @@ */ package net.automatalib.util.partitionrefinement; +import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.Objects; @@ -22,7 +23,6 @@ import java.util.function.IntFunction; import java.util.function.Predicate; -import lombok.EqualsAndHashCode; import net.automatalib.automata.DeterministicAutomaton; import net.automatalib.automata.UniversalDeterministicAutomaton; import net.automatalib.automata.concepts.StateIDs; @@ -696,7 +696,6 @@ public abstract Function initialClassifier(UniversalDeterminis Alphabet alphabet); } - @EqualsAndHashCode private static final class CompleteStateSignature { private final Object[] properties; @@ -763,6 +762,24 @@ public static CompleteStateSignature buildFromTransitions(UniversalDeterm } return new CompleteStateSignature(properties); } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof CompleteStateSignature)) { + return false; + } + + final CompleteStateSignature that = (CompleteStateSignature) o; + return Arrays.equals(properties, that.properties); + } + + @Override + public int hashCode() { + return Arrays.hashCode(properties); + } } }