From 7a087d93443bb40b98b31f8fa7d28c64d9649e6f Mon Sep 17 00:00:00 2001 From: Joseph Tarbit Date: Wed, 5 Mar 2025 18:12:27 +0000 Subject: [PATCH 1/2] Use JSpecify & add module-info --- build.gradle | 3 +-- src/main/java/com/mojang/datafixers/DataFix.java | 2 +- src/main/java/com/mojang/datafixers/FieldFinder.java | 2 +- src/main/java/com/mojang/datafixers/FunctionType.java | 6 +++--- src/main/java/com/mojang/datafixers/OpticFinder.java | 2 +- .../com/mojang/datafixers/functions/PointFree.java | 2 +- src/main/java/com/mojang/datafixers/types/Type.java | 2 +- .../types/families/RecursiveTypeFamily.java | 2 +- .../com/mojang/datafixers/types/templates/Check.java | 2 +- .../datafixers/types/templates/CompoundList.java | 2 +- .../com/mojang/datafixers/types/templates/Const.java | 2 +- .../com/mojang/datafixers/types/templates/Hook.java | 2 +- .../com/mojang/datafixers/types/templates/List.java | 2 +- .../com/mojang/datafixers/types/templates/Named.java | 2 +- .../mojang/datafixers/types/templates/Product.java | 2 +- .../datafixers/types/templates/RecursivePoint.java | 2 +- .../com/mojang/datafixers/types/templates/Sum.java | 2 +- .../com/mojang/datafixers/types/templates/Tag.java | 2 +- .../datafixers/types/templates/TaggedChoice.java | 2 +- .../datafixers/types/templates/TypeTemplate.java | 2 +- src/main/java/com/mojang/serialization/Dynamic.java | 2 +- src/main/java/com/mojang/serialization/JavaOps.java | 2 +- src/main/java/com/mojang/serialization/JsonOps.java | 2 +- .../java/com/mojang/serialization/MapDecoder.java | 2 +- src/main/java/com/mojang/serialization/MapLike.java | 2 +- src/main/java/module-info.java | 11 +++++++++++ .../java/com/mojang/serialization/CodecTests.java | 2 +- 27 files changed, 39 insertions(+), 29 deletions(-) create mode 100644 src/main/java/module-info.java diff --git a/build.gradle b/build.gradle index 9bd71f76..0638d30f 100644 --- a/build.gradle +++ b/build.gradle @@ -29,7 +29,7 @@ dependencies { api 'com.google.guava:guava:32.1.2-jre' // TypeToken primarily exposed api 'it.unimi.dsi:fastutil:8.5.12' // various collection types are used in public API - compileOnlyApi 'com.google.code.findbugs:jsr305:3.0.2' + compileOnlyApi 'org.jspecify:jspecify:1.0.0' implementation 'org.slf4j:slf4j-api:2.0.9' testImplementation 'junit:junit-dep:4.11' @@ -37,7 +37,6 @@ dependencies { } task sourcesJar(type: Jar) { - classifier = 'sources' from sourceSets.main.allSource } diff --git a/src/main/java/com/mojang/datafixers/DataFix.java b/src/main/java/com/mojang/datafixers/DataFix.java index 6c0aa26d..01bd970a 100644 --- a/src/main/java/com/mojang/datafixers/DataFix.java +++ b/src/main/java/com/mojang/datafixers/DataFix.java @@ -10,7 +10,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import java.util.BitSet; import java.util.Objects; import java.util.Optional; diff --git a/src/main/java/com/mojang/datafixers/FieldFinder.java b/src/main/java/com/mojang/datafixers/FieldFinder.java index 9b5f66d2..86bc4aef 100644 --- a/src/main/java/com/mojang/datafixers/FieldFinder.java +++ b/src/main/java/com/mojang/datafixers/FieldFinder.java @@ -13,7 +13,7 @@ import com.mojang.datafixers.util.Either; import com.mojang.datafixers.util.Pair; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import java.util.Objects; public final class FieldFinder implements OpticFinder { diff --git a/src/main/java/com/mojang/datafixers/FunctionType.java b/src/main/java/com/mojang/datafixers/FunctionType.java index 364943e6..61d8f20a 100644 --- a/src/main/java/com/mojang/datafixers/FunctionType.java +++ b/src/main/java/com/mojang/datafixers/FunctionType.java @@ -20,7 +20,7 @@ import com.mojang.datafixers.util.Either; import com.mojang.datafixers.util.Pair; -import javax.annotation.Nonnull; +import org.jspecify.annotations.NonNull; import java.util.function.Function; import java.util.function.Supplier; @@ -42,8 +42,8 @@ static Function unbox(final App, B> box) { } @Override - @Nonnull - B apply(@Nonnull A a); + @NonNull + B apply(@NonNull A a); final class ReaderInstance implements Representable, R, ReaderInstance.Mu> { public static final class Mu implements Representable.Mu {} diff --git a/src/main/java/com/mojang/datafixers/OpticFinder.java b/src/main/java/com/mojang/datafixers/OpticFinder.java index 82cfcab5..c736cd86 100644 --- a/src/main/java/com/mojang/datafixers/OpticFinder.java +++ b/src/main/java/com/mojang/datafixers/OpticFinder.java @@ -5,7 +5,7 @@ import com.mojang.datafixers.types.Type; import com.mojang.datafixers.util.Either; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; public interface OpticFinder { Type type(); diff --git a/src/main/java/com/mojang/datafixers/functions/PointFree.java b/src/main/java/com/mojang/datafixers/functions/PointFree.java index 81b0dff2..b5c76fe6 100644 --- a/src/main/java/com/mojang/datafixers/functions/PointFree.java +++ b/src/main/java/com/mojang/datafixers/functions/PointFree.java @@ -5,7 +5,7 @@ import com.mojang.datafixers.types.Type; import com.mojang.serialization.DynamicOps; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import java.util.Optional; import java.util.function.Function; diff --git a/src/main/java/com/mojang/datafixers/types/Type.java b/src/main/java/com/mojang/datafixers/types/Type.java index c917e6cf..ab5c1da0 100644 --- a/src/main/java/com/mojang/datafixers/types/Type.java +++ b/src/main/java/com/mojang/datafixers/types/Type.java @@ -26,7 +26,7 @@ import com.mojang.serialization.Dynamic; import com.mojang.serialization.DynamicOps; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import java.util.Map; import java.util.Optional; import java.util.concurrent.CompletableFuture; diff --git a/src/main/java/com/mojang/datafixers/types/families/RecursiveTypeFamily.java b/src/main/java/com/mojang/datafixers/types/families/RecursiveTypeFamily.java index c0023d00..0b391906 100644 --- a/src/main/java/com/mojang/datafixers/types/families/RecursiveTypeFamily.java +++ b/src/main/java/com/mojang/datafixers/types/families/RecursiveTypeFamily.java @@ -22,7 +22,7 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import java.util.BitSet; import java.util.List; import java.util.Objects; diff --git a/src/main/java/com/mojang/datafixers/types/templates/Check.java b/src/main/java/com/mojang/datafixers/types/templates/Check.java index 7974ba57..0b3548b4 100644 --- a/src/main/java/com/mojang/datafixers/types/templates/Check.java +++ b/src/main/java/com/mojang/datafixers/types/templates/Check.java @@ -17,7 +17,7 @@ import com.mojang.serialization.DataResult; import com.mojang.serialization.DynamicOps; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import java.util.Optional; import java.util.function.IntFunction; diff --git a/src/main/java/com/mojang/datafixers/types/templates/CompoundList.java b/src/main/java/com/mojang/datafixers/types/templates/CompoundList.java index f360572c..636cf7ec 100644 --- a/src/main/java/com/mojang/datafixers/types/templates/CompoundList.java +++ b/src/main/java/com/mojang/datafixers/types/templates/CompoundList.java @@ -20,7 +20,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.DynamicOps; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.Optional; import java.util.function.IntFunction; diff --git a/src/main/java/com/mojang/datafixers/types/templates/Const.java b/src/main/java/com/mojang/datafixers/types/templates/Const.java index 8359a8fc..8aaf010e 100644 --- a/src/main/java/com/mojang/datafixers/types/templates/Const.java +++ b/src/main/java/com/mojang/datafixers/types/templates/Const.java @@ -15,7 +15,7 @@ import com.mojang.datafixers.util.Either; import com.mojang.serialization.Codec; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import java.util.Objects; import java.util.function.IntFunction; diff --git a/src/main/java/com/mojang/datafixers/types/templates/Hook.java b/src/main/java/com/mojang/datafixers/types/templates/Hook.java index 36013cc9..4c22386f 100644 --- a/src/main/java/com/mojang/datafixers/types/templates/Hook.java +++ b/src/main/java/com/mojang/datafixers/types/templates/Hook.java @@ -17,7 +17,7 @@ import com.mojang.serialization.DynamicOps; import com.mojang.serialization.Lifecycle; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import java.util.Objects; import java.util.Optional; import java.util.function.IntFunction; diff --git a/src/main/java/com/mojang/datafixers/types/templates/List.java b/src/main/java/com/mojang/datafixers/types/templates/List.java index 1f4b6aa2..69b9a9a7 100644 --- a/src/main/java/com/mojang/datafixers/types/templates/List.java +++ b/src/main/java/com/mojang/datafixers/types/templates/List.java @@ -17,7 +17,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.DynamicOps; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import java.util.Optional; import java.util.function.IntFunction; diff --git a/src/main/java/com/mojang/datafixers/types/templates/Named.java b/src/main/java/com/mojang/datafixers/types/templates/Named.java index 6c3c1dd9..46c1447f 100644 --- a/src/main/java/com/mojang/datafixers/types/templates/Named.java +++ b/src/main/java/com/mojang/datafixers/types/templates/Named.java @@ -19,7 +19,7 @@ import com.mojang.serialization.DynamicOps; import com.mojang.serialization.Lifecycle; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import java.util.Objects; import java.util.Optional; import java.util.function.IntFunction; diff --git a/src/main/java/com/mojang/datafixers/types/templates/Product.java b/src/main/java/com/mojang/datafixers/types/templates/Product.java index 178f9b0f..8f594058 100644 --- a/src/main/java/com/mojang/datafixers/types/templates/Product.java +++ b/src/main/java/com/mojang/datafixers/types/templates/Product.java @@ -26,7 +26,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.DynamicOps; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import java.util.Optional; import java.util.function.IntFunction; diff --git a/src/main/java/com/mojang/datafixers/types/templates/RecursivePoint.java b/src/main/java/com/mojang/datafixers/types/templates/RecursivePoint.java index 365c071b..a968f3e2 100644 --- a/src/main/java/com/mojang/datafixers/types/templates/RecursivePoint.java +++ b/src/main/java/com/mojang/datafixers/types/templates/RecursivePoint.java @@ -20,7 +20,7 @@ import com.mojang.serialization.DynamicOps; import com.mojang.serialization.Lifecycle; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import java.util.BitSet; import java.util.Objects; import java.util.Optional; diff --git a/src/main/java/com/mojang/datafixers/types/templates/Sum.java b/src/main/java/com/mojang/datafixers/types/templates/Sum.java index 016b477c..264b862b 100644 --- a/src/main/java/com/mojang/datafixers/types/templates/Sum.java +++ b/src/main/java/com/mojang/datafixers/types/templates/Sum.java @@ -23,7 +23,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.DynamicOps; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import java.util.Optional; import java.util.function.IntFunction; diff --git a/src/main/java/com/mojang/datafixers/types/templates/Tag.java b/src/main/java/com/mojang/datafixers/types/templates/Tag.java index ac8798a2..bbc907f4 100644 --- a/src/main/java/com/mojang/datafixers/types/templates/Tag.java +++ b/src/main/java/com/mojang/datafixers/types/templates/Tag.java @@ -16,7 +16,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.DynamicOps; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import java.util.Objects; import java.util.Optional; import java.util.function.IntFunction; diff --git a/src/main/java/com/mojang/datafixers/types/templates/TaggedChoice.java b/src/main/java/com/mojang/datafixers/types/templates/TaggedChoice.java index 9cd08de6..97a2b676 100644 --- a/src/main/java/com/mojang/datafixers/types/templates/TaggedChoice.java +++ b/src/main/java/com/mojang/datafixers/types/templates/TaggedChoice.java @@ -39,7 +39,7 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectMaps; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import java.util.Arrays; import java.util.BitSet; import java.util.Map; diff --git a/src/main/java/com/mojang/datafixers/types/templates/TypeTemplate.java b/src/main/java/com/mojang/datafixers/types/templates/TypeTemplate.java index 38236e98..7d76fad8 100644 --- a/src/main/java/com/mojang/datafixers/types/templates/TypeTemplate.java +++ b/src/main/java/com/mojang/datafixers/types/templates/TypeTemplate.java @@ -9,7 +9,7 @@ import com.mojang.datafixers.types.families.TypeFamily; import com.mojang.datafixers.util.Either; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import java.util.function.IntFunction; public interface TypeTemplate { diff --git a/src/main/java/com/mojang/serialization/Dynamic.java b/src/main/java/com/mojang/serialization/Dynamic.java index d73bb052..3f89679b 100644 --- a/src/main/java/com/mojang/serialization/Dynamic.java +++ b/src/main/java/com/mojang/serialization/Dynamic.java @@ -6,7 +6,7 @@ import com.mojang.datafixers.DataFixUtils; import com.mojang.datafixers.util.Pair; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import java.nio.ByteBuffer; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/mojang/serialization/JavaOps.java b/src/main/java/com/mojang/serialization/JavaOps.java index 5ddf36ab..eb2759e1 100644 --- a/src/main/java/com/mojang/serialization/JavaOps.java +++ b/src/main/java/com/mojang/serialization/JavaOps.java @@ -10,7 +10,7 @@ import it.unimi.dsi.fastutil.longs.LongArrayList; import it.unimi.dsi.fastutil.longs.LongList; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import java.nio.ByteBuffer; import java.util.LinkedHashMap; import java.util.List; diff --git a/src/main/java/com/mojang/serialization/JsonOps.java b/src/main/java/com/mojang/serialization/JsonOps.java index cb9ee2e6..4fe610c3 100644 --- a/src/main/java/com/mojang/serialization/JsonOps.java +++ b/src/main/java/com/mojang/serialization/JsonOps.java @@ -10,7 +10,7 @@ import com.google.gson.JsonPrimitive; import com.mojang.datafixers.util.Pair; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import java.math.BigDecimal; import java.util.List; import java.util.Map; diff --git a/src/main/java/com/mojang/serialization/MapDecoder.java b/src/main/java/com/mojang/serialization/MapDecoder.java index 1f11c035..7cd0e7cf 100644 --- a/src/main/java/com/mojang/serialization/MapDecoder.java +++ b/src/main/java/com/mojang/serialization/MapDecoder.java @@ -4,7 +4,7 @@ import com.mojang.datafixers.util.Pair; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.List; import java.util.Optional; diff --git a/src/main/java/com/mojang/serialization/MapLike.java b/src/main/java/com/mojang/serialization/MapLike.java index 6841cacf..d58650b0 100644 --- a/src/main/java/com/mojang/serialization/MapLike.java +++ b/src/main/java/com/mojang/serialization/MapLike.java @@ -4,7 +4,7 @@ import com.mojang.datafixers.util.Pair; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import java.util.Map; import java.util.stream.Stream; diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java new file mode 100644 index 00000000..19930aeb --- /dev/null +++ b/src/main/java/module-info.java @@ -0,0 +1,11 @@ +module com.mojang.datafixerupper { + + requires com.google.common; + requires it.unimi.dsi.fastutil; + requires org.jspecify; + requires org.slf4j; + requires com.google.gson; + + exports com.mojang.datafixers; + exports com.mojang.serialization; +} \ No newline at end of file diff --git a/src/test/java/com/mojang/serialization/CodecTests.java b/src/test/java/com/mojang/serialization/CodecTests.java index 48c85e48..2245470b 100644 --- a/src/test/java/com/mojang/serialization/CodecTests.java +++ b/src/test/java/com/mojang/serialization/CodecTests.java @@ -6,7 +6,7 @@ import com.mojang.serialization.codecs.RecordCodecBuilder; import org.junit.Test; -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.Iterator; import java.util.List; From b8ebe90204dd588759571c4a918c746429975fd7 Mon Sep 17 00:00:00 2001 From: Joseph Tarbit Date: Wed, 5 Mar 2025 18:13:47 +0000 Subject: [PATCH 2/2] Re-add sources classifier --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index 0638d30f..dc2e5351 100644 --- a/build.gradle +++ b/build.gradle @@ -37,6 +37,7 @@ dependencies { } task sourcesJar(type: Jar) { + classifier = 'sources' from sourceSets.main.allSource }