diff --git a/core/src/main/java/module-info.java b/core/src/main/java/module-info.java new file mode 100644 index 00000000..84db6289 --- /dev/null +++ b/core/src/main/java/module-info.java @@ -0,0 +1,27 @@ +/// Vortex core module: shared type model, error contract, low-level I/O, compute kernels, and the +/// generated FlatBuffers/Protobuf wire codecs. +/// +/// The model, error, and I/O packages form the public surface shared with downstream tooling. The +/// compute kernels and the generated `fbs`/`proto` codecs are internal plumbing, exported only to +/// the reader and writer modules. +// "module" lint suppressed for two unavoidable warnings under the zero-warning policy: +// the group-derived name component `dfa1` has a terminal digit, and the qualified-export targets +// (reader/writer) are not visible when this module is compiled standalone in the reactor. +@SuppressWarnings("module") +module io.github.dfa1.vortex.core { + // Compile-only: generated proto records carry @javax.annotation.processing.Generated + // (SOURCE retention, so not needed at runtime). + requires static java.compiler; + + // Public API. + exports io.github.dfa1.vortex.core.model; + exports io.github.dfa1.vortex.core.error; + exports io.github.dfa1.vortex.core.io; + + // Internal compute kernels and generated wire codecs: consumed only by reader/writer (modular + // path). Downstream non-modular tooling like the inspector reads them via the classpath, where + // these directives are ignored. + exports io.github.dfa1.vortex.core.compute to io.github.dfa1.vortex.reader, io.github.dfa1.vortex.writer; + exports io.github.dfa1.vortex.core.fbs to io.github.dfa1.vortex.reader, io.github.dfa1.vortex.writer; + exports io.github.dfa1.vortex.core.proto to io.github.dfa1.vortex.reader, io.github.dfa1.vortex.writer; +} diff --git a/reader/src/main/java/io/github/dfa1/vortex/reader/ArrayStats.java b/reader/src/main/java/io/github/dfa1/vortex/reader/ArrayStats.java index f553c802..559d49f5 100644 --- a/reader/src/main/java/io/github/dfa1/vortex/reader/ArrayStats.java +++ b/reader/src/main/java/io/github/dfa1/vortex/reader/ArrayStats.java @@ -37,6 +37,10 @@ public static ArrayStats empty() { /// /// @param fbs the FlatBuffers stats table, or `null` /// @return parsed stats, or an empty instance if no usable data is present + // Low-level entry point for the parse path and the inspector tool; intentionally exposes the + // generated FlatBuffers type, which core only qualified-exports. Suppress the resulting + // exports-leak lint rather than widen the core export or hide this factory. + @SuppressWarnings("exports") public static ArrayStats fromFbs(io.github.dfa1.vortex.core.fbs.FbsArrayStats fbs) { if (fbs == null) { return EMPTY; diff --git a/reader/src/main/java/module-info.java b/reader/src/main/java/module-info.java new file mode 100644 index 00000000..b5d0bc1b --- /dev/null +++ b/reader/src/main/java/module-info.java @@ -0,0 +1,58 @@ +/// Vortex reader module: memory-mapped file parsing, the layout/scan engine, decoded `Array` +/// types, and the encoding/extension decoders dispatched via [java.util.ServiceLoader]. +/// +/// `vortex.core` is re-exported (`requires transitive`) because decoded types surface core model +/// types (`DType`, `PType`, …) in the public API. The native zstd codec is optional +/// (`requires static`): the `vortex.zstd` decoder loads only when the `zstd` module is present. +// Lint suppressed: `module` for the group-derived terminal-digit name component `dfa1`; +// `requires-automatic` because the optional `zstd` codec ships as an automatic module (no +// module descriptor yet) and is pulled in via `requires static`. +@SuppressWarnings({"module", "requires-automatic"}) +module io.github.dfa1.vortex.reader { + requires transitive io.github.dfa1.vortex.core; + requires static zstd; + // transitive: VortexHttpReader.open exposes java.net.http.HttpClient in its public signature. + requires transitive java.net.http; + + exports io.github.dfa1.vortex.reader; + exports io.github.dfa1.vortex.reader.array; + exports io.github.dfa1.vortex.reader.decode; + exports io.github.dfa1.vortex.reader.extension; + + uses io.github.dfa1.vortex.reader.decode.EncodingDecoder; + + provides io.github.dfa1.vortex.reader.decode.EncodingDecoder with + io.github.dfa1.vortex.reader.decode.AlpEncodingDecoder, + io.github.dfa1.vortex.reader.decode.AlpRdEncodingDecoder, + io.github.dfa1.vortex.reader.decode.BitpackedEncodingDecoder, + io.github.dfa1.vortex.reader.decode.BoolEncodingDecoder, + io.github.dfa1.vortex.reader.decode.ByteBoolEncodingDecoder, + io.github.dfa1.vortex.reader.decode.ChunkedEncodingDecoder, + io.github.dfa1.vortex.reader.decode.ConstantEncodingDecoder, + io.github.dfa1.vortex.reader.decode.DateTimePartsEncodingDecoder, + io.github.dfa1.vortex.reader.decode.DecimalBytePartsEncodingDecoder, + io.github.dfa1.vortex.reader.decode.DecimalEncodingDecoder, + io.github.dfa1.vortex.reader.decode.DeltaEncodingDecoder, + io.github.dfa1.vortex.reader.decode.DictEncodingDecoder, + io.github.dfa1.vortex.reader.decode.ExtEncodingDecoder, + io.github.dfa1.vortex.reader.decode.FixedSizeListEncodingDecoder, + io.github.dfa1.vortex.reader.decode.FrameOfReferenceEncodingDecoder, + io.github.dfa1.vortex.reader.decode.FsstEncodingDecoder, + io.github.dfa1.vortex.reader.decode.ListEncodingDecoder, + io.github.dfa1.vortex.reader.decode.ListViewEncodingDecoder, + io.github.dfa1.vortex.reader.decode.MaskedEncodingDecoder, + io.github.dfa1.vortex.reader.decode.NullEncodingDecoder, + io.github.dfa1.vortex.reader.decode.PatchedEncodingDecoder, + io.github.dfa1.vortex.reader.decode.PcoEncodingDecoder, + io.github.dfa1.vortex.reader.decode.PrimitiveEncodingDecoder, + io.github.dfa1.vortex.reader.decode.RleEncodingDecoder, + io.github.dfa1.vortex.reader.decode.RunEndEncodingDecoder, + io.github.dfa1.vortex.reader.decode.SequenceEncodingDecoder, + io.github.dfa1.vortex.reader.decode.SparseEncodingDecoder, + io.github.dfa1.vortex.reader.decode.StructEncodingDecoder, + io.github.dfa1.vortex.reader.decode.VarBinEncodingDecoder, + io.github.dfa1.vortex.reader.decode.VariantEncodingDecoder, + io.github.dfa1.vortex.reader.decode.VarBinViewEncodingDecoder, + io.github.dfa1.vortex.reader.decode.ZigZagEncodingDecoder, + io.github.dfa1.vortex.reader.decode.ZstdEncodingDecoder; +} diff --git a/writer/pom.xml b/writer/pom.xml index 76a8973e..e4790a11 100644 --- a/writer/pom.xml +++ b/writer/pom.xml @@ -61,6 +61,38 @@ + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + default-testCompile + + + -Xlint:all + --add-reads + io.github.dfa1.vortex.writer=ALL-MODULE-PATH + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + false + + + + +