diff --git a/core/src/main/java/io/parsingdata/metal/Trampoline.java b/core/src/main/java/io/parsingdata/metal/Trampoline.java index 7f22daa2..0235a069 100644 --- a/core/src/main/java/io/parsingdata/metal/Trampoline.java +++ b/core/src/main/java/io/parsingdata/metal/Trampoline.java @@ -44,10 +44,12 @@ static Trampoline complete(final CompletedTrampoline completedTrampoli @FunctionalInterface interface CompletedTrampoline extends Trampoline { + @Override default boolean hasNext() { return false; } + @Override default Trampoline next() { throw new UnsupportedOperationException("A CompletedTrampoline does not have a next computation."); } @@ -61,10 +63,12 @@ static Trampoline intermediate(final IntermediateTrampoline intermedia @FunctionalInterface interface IntermediateTrampoline extends Trampoline { + @Override default T result() { throw new UnsupportedOperationException("An IntermediateTrampoline does not have a result."); } + @Override default boolean hasNext() { return true; } diff --git a/core/src/main/java/io/parsingdata/metal/data/ParseGraph.java b/core/src/main/java/io/parsingdata/metal/data/ParseGraph.java index 03918a15..5e84474f 100644 --- a/core/src/main/java/io/parsingdata/metal/data/ParseGraph.java +++ b/core/src/main/java/io/parsingdata/metal/data/ParseGraph.java @@ -117,13 +117,13 @@ private Trampoline> current(final ImmutableList return intermediate(() -> current(items.tail)); } - public boolean isGraph() { return true; } - public ParseGraph asGraph() { return this; } - public Token getDefinition() { return definition; } + @Override public boolean isGraph() { return true; } + @Override public ParseGraph asGraph() { return this; } + @Override public Token getDefinition() { return definition; } @Override public String toString() { - if (this == EMPTY) { + if (this.equals(EMPTY)) { return "pg(EMPTY)"; } if (head == null) { diff --git a/core/src/main/java/io/parsingdata/metal/data/ParseReference.java b/core/src/main/java/io/parsingdata/metal/data/ParseReference.java index 1becd77a..d6207dbf 100644 --- a/core/src/main/java/io/parsingdata/metal/data/ParseReference.java +++ b/core/src/main/java/io/parsingdata/metal/data/ParseReference.java @@ -43,9 +43,9 @@ public Optional resolve(final ParseGraph root) { return findItemAtOffset(getAllRoots(root, definition), location, source).computeResult(); } - public boolean isReference() { return true; } - public ParseReference asReference() { return this; } - public Token getDefinition() { return definition; } + @Override public boolean isReference() { return true; } + @Override public ParseReference asReference() { return this; } + @Override public Token getDefinition() { return definition; } @Override public String toString() { diff --git a/core/src/main/java/io/parsingdata/metal/data/ParseValue.java b/core/src/main/java/io/parsingdata/metal/data/ParseValue.java index e2fb8ef5..0f2ea7a6 100644 --- a/core/src/main/java/io/parsingdata/metal/data/ParseValue.java +++ b/core/src/main/java/io/parsingdata/metal/data/ParseValue.java @@ -40,9 +40,9 @@ public boolean matches(final String name) { return this.name.equals(name) || this.name.endsWith(Token.SEPARATOR + name); } - public boolean isValue() { return true; } - public ParseValue asValue() { return this; } - public Token getDefinition() { return definition; } + @Override public boolean isValue() { return true; } + @Override public ParseValue asValue() { return this; } + @Override public Token getDefinition() { return definition; } @Override public String toString() { diff --git a/core/src/main/java/io/parsingdata/metal/encoding/ByteOrder.java b/core/src/main/java/io/parsingdata/metal/encoding/ByteOrder.java index 8830c015..7f12f65e 100644 --- a/core/src/main/java/io/parsingdata/metal/encoding/ByteOrder.java +++ b/core/src/main/java/io/parsingdata/metal/encoding/ByteOrder.java @@ -18,10 +18,10 @@ public enum ByteOrder { - BIG_ENDIAN { public byte[] apply(final byte[] bytes) { + BIG_ENDIAN { @Override public byte[] apply(final byte[] bytes) { return bytes.clone(); } }, - LITTLE_ENDIAN { public byte[] apply(final byte[] bytes) { + LITTLE_ENDIAN { @Override public byte[] apply(final byte[] bytes) { final byte[] output = bytes.clone(); for (int i = 0; i < bytes.length; i++) { output[i] = bytes[(bytes.length-1)-i]; diff --git a/core/src/main/java/io/parsingdata/metal/token/Until.java b/core/src/main/java/io/parsingdata/metal/token/Until.java index 618e644a..a16eeae1 100644 --- a/core/src/main/java/io/parsingdata/metal/token/Until.java +++ b/core/src/main/java/io/parsingdata/metal/token/Until.java @@ -101,8 +101,8 @@ private Trampoline> handleInterval(final Environment enviro private Trampoline> iterate(final Environment environment, final BigInteger currentSize, final BigInteger stepSize, final BigInteger maxSize) { if (stepSize.compareTo(ZERO) == 0 || - stepSize.compareTo(ZERO) > 0 && currentSize.compareTo(maxSize) > 0 || - stepSize.compareTo(ZERO) < 0 && currentSize.compareTo(maxSize) < 0) { + (stepSize.compareTo(ZERO) > 0 && currentSize.compareTo(maxSize) > 0) || + (stepSize.compareTo(ZERO) < 0 && currentSize.compareTo(maxSize) < 0)) { return complete(Util::failure); } return environment.parseState diff --git a/core/src/test/java/io/parsingdata/metal/AutoEqualityTest.java b/core/src/test/java/io/parsingdata/metal/AutoEqualityTest.java index 0192cb88..bec338a8 100644 --- a/core/src/test/java/io/parsingdata/metal/AutoEqualityTest.java +++ b/core/src/test/java/io/parsingdata/metal/AutoEqualityTest.java @@ -154,27 +154,31 @@ public class AutoEqualityTest { private static final List> BIG_INTEGERS = Arrays.asList(() -> ONE, () -> BigInteger.valueOf(3)); private static final List> PARSE_STATES = Arrays.asList(() -> createFromByteStream(DUMMY_STREAM), () -> createFromByteStream(DUMMY_STREAM, ONE), () -> new ParseState(GRAPH_WITH_REFERENCE, DUMMY_BYTE_STREAM_SOURCE, TEN)); private static final List> IMMUTABLE_LISTS = Arrays.asList(ImmutableList::new, () -> ImmutableList.create("TEST"), () -> ImmutableList.create(1), () -> ImmutableList.create(1).add(2)); - private static final Map>> mapping = new HashMap>>() {{ - put(String.class, STRINGS); - put(Encoding.class, ENCODINGS); - put(Token.class, TOKENS); - put(Token[].class, TOKEN_ARRAYS); - put(ValueExpression.class, VALUE_EXPRESSIONS); - put(Expression.class, EXPRESSIONS); - put(Value.class, VALUES); - put(BinaryOperator.class, REDUCERS); - put(Slice.class, SLICES); - put(byte[].class, BYTE_ARRAYS); - put(Source.class, SOURCES); - put(long.class, LONGS); - put(int.class, INTEGERS); - put(ParseGraph.class, PARSE_GRAPHS); - put(ParseItem.class, PARSE_ITEMS); - put(ByteStream.class, BYTE_STREAMS); - put(BigInteger.class, BIG_INTEGERS); - put(ParseState.class, PARSE_STATES); - put(ImmutableList.class, IMMUTABLE_LISTS); - }}; + private static final Map>> mapping = buildMap(); + + private static Map>> buildMap() { + final Map>> result = new HashMap<>(); + result.put(String.class, STRINGS); + result.put(Encoding.class, ENCODINGS); + result.put(Token.class, TOKENS); + result.put(Token[].class, TOKEN_ARRAYS); + result.put(ValueExpression.class, VALUE_EXPRESSIONS); + result.put(Expression.class, EXPRESSIONS); + result.put(Value.class, VALUES); + result.put(BinaryOperator.class, REDUCERS); + result.put(Slice.class, SLICES); + result.put(byte[].class, BYTE_ARRAYS); + result.put(Source.class, SOURCES); + result.put(long.class, LONGS); + result.put(int.class, INTEGERS); + result.put(ParseGraph.class, PARSE_GRAPHS); + result.put(ParseItem.class, PARSE_ITEMS); + result.put(ByteStream.class, BYTE_STREAMS); + result.put(BigInteger.class, BIG_INTEGERS); + result.put(ParseState.class, PARSE_STATES); + result.put(ImmutableList.class, IMMUTABLE_LISTS); + return result; + } @Parameterized.Parameters(name="{0}") public static Collection data() throws IllegalAccessException, InvocationTargetException, InstantiationException { diff --git a/core/src/test/java/io/parsingdata/metal/data/callback/CallbackTest.java b/core/src/test/java/io/parsingdata/metal/data/callback/CallbackTest.java index 3a04fa23..1183f870 100644 --- a/core/src/test/java/io/parsingdata/metal/data/callback/CallbackTest.java +++ b/core/src/test/java/io/parsingdata/metal/data/callback/CallbackTest.java @@ -242,7 +242,7 @@ void assertAllHandled() { } } - private class CountingCallback implements Callback { + private static class CountingCallback implements Callback { private int successCount = 0; private int failureCount = 0; diff --git a/core/src/test/java/io/parsingdata/metal/data/selection/ByTokenTest.java b/core/src/test/java/io/parsingdata/metal/data/selection/ByTokenTest.java index 6f9936ed..e5764976 100644 --- a/core/src/test/java/io/parsingdata/metal/data/selection/ByTokenTest.java +++ b/core/src/test/java/io/parsingdata/metal/data/selection/ByTokenTest.java @@ -301,7 +301,7 @@ public void getAllRootsMultiSub() throws IOException { } } - private class CustomToken extends Token { + private static class CustomToken extends Token { public final Token token; diff --git a/formats/src/main/java/io/parsingdata/metal/expression/value/GUID.java b/formats/src/main/java/io/parsingdata/metal/expression/value/GUID.java index 82508d58..1a5d527c 100644 --- a/formats/src/main/java/io/parsingdata/metal/expression/value/GUID.java +++ b/formats/src/main/java/io/parsingdata/metal/expression/value/GUID.java @@ -45,7 +45,7 @@ private GUID() {} * @return expression to use as predicate */ public static ValueExpression guid(final String guid) { - final String[] parts = checkNotNull(guid, "guid").split("-"); + final String[] parts = checkNotNull(guid, "guid").split("-", -1); if (parts.length != 5) { throw new IllegalArgumentException("Invalid GUID string: " + guid); } diff --git a/pom.xml b/pom.xml index e098bde1..a113971e 100644 --- a/pom.xml +++ b/pom.xml @@ -67,6 +67,9 @@ 3.0.1 1.2.4 3.0.2 + 3.3 + 2.8.3 + 2.3.1 @@ -98,6 +101,30 @@ + + org.apache.maven.plugins + maven-compiler-plugin + ${errorprone.maven.compiler.version} + + javac-with-errorprone + true + true + + + + org.codehaus.plexus + plexus-compiler-javac-errorprone + ${errorprone.plexus.javac.version} + + + + com.google.errorprone + error_prone_core + ${errorprone.core.version} + + + org.sonatype.plugins nexus-staging-maven-plugin