From 733a7750df53eb127369f9916d3356e8476ad76d Mon Sep 17 00:00:00 2001 From: James Duong Date: Tue, 28 Nov 2023 00:12:32 -0800 Subject: [PATCH 01/11] Add module-info.java files for format and vector --- java/format/src/main/java/module-info.java | 21 ++++++++++++++++ java/vector/src/main/java/module-info.java | 29 ++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 java/format/src/main/java/module-info.java create mode 100644 java/vector/src/main/java/module-info.java diff --git a/java/format/src/main/java/module-info.java b/java/format/src/main/java/module-info.java new file mode 100644 index 0000000000000..bda779c91afbc --- /dev/null +++ b/java/format/src/main/java/module-info.java @@ -0,0 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +module org.apache.arrow.format { + exports org.apache.arrow.flatbuf; + requires transitive flatbuffers.java; +} diff --git a/java/vector/src/main/java/module-info.java b/java/vector/src/main/java/module-info.java new file mode 100644 index 0000000000000..9ca1d43985d17 --- /dev/null +++ b/java/vector/src/main/java/module-info.java @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +module org.apache.arrow.vector { + requires com.fasterxml.jackson.annotation; + requires com.fasterxml.jackson.core; + requires com.fasterxml.jackson.databind; + requires com.fasterxml.jackson.datatype.jsr310; + requires flatbuffers.java; + requires io.netty.common; + requires java.sql; + requires org.apache.arrow.format; + requires org.apache.commons.codec; + requires slf4j.api; +} From b5232850bef95399bceb028111fd884388b0164f Mon Sep 17 00:00:00 2001 From: James Duong Date: Tue, 28 Nov 2023 12:39:22 -0800 Subject: [PATCH 02/11] Move arrow-vector tests to use a different package Do not add tests in org.apache.arrow.util because that is an exported package for arrow-memory-core and causes module conflicts --- .../src/test/java/org/apache/arrow/flight/FlightTestUtil.java | 2 +- .../org/apache/arrow/{ => vector}/util/ArrowTestDataUtil.java | 2 +- .../java/org/apache/arrow/{ => vector}/util/TestSchemaUtil.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename java/vector/src/test/java/org/apache/arrow/{ => vector}/util/ArrowTestDataUtil.java (97%) rename java/vector/src/test/java/org/apache/arrow/{ => vector}/util/TestSchemaUtil.java (98%) diff --git a/java/flight/flight-core/src/test/java/org/apache/arrow/flight/FlightTestUtil.java b/java/flight/flight-core/src/test/java/org/apache/arrow/flight/FlightTestUtil.java index 64f70856a3b05..f9def74b56d1b 100644 --- a/java/flight/flight-core/src/test/java/org/apache/arrow/flight/FlightTestUtil.java +++ b/java/flight/flight-core/src/test/java/org/apache/arrow/flight/FlightTestUtil.java @@ -25,7 +25,7 @@ import java.util.List; import java.util.Random; -import org.apache.arrow.util.ArrowTestDataUtil; +import org.apache.arrow.vector.util.ArrowTestDataUtil; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.function.Executable; diff --git a/java/vector/src/test/java/org/apache/arrow/util/ArrowTestDataUtil.java b/java/vector/src/test/java/org/apache/arrow/vector/util/ArrowTestDataUtil.java similarity index 97% rename from java/vector/src/test/java/org/apache/arrow/util/ArrowTestDataUtil.java rename to java/vector/src/test/java/org/apache/arrow/vector/util/ArrowTestDataUtil.java index 120c0adc884ed..1c525c0c271ac 100644 --- a/java/vector/src/test/java/org/apache/arrow/util/ArrowTestDataUtil.java +++ b/java/vector/src/test/java/org/apache/arrow/vector/util/ArrowTestDataUtil.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.arrow.util; +package org.apache.arrow.vector.util; import java.nio.file.Path; import java.nio.file.Paths; diff --git a/java/vector/src/test/java/org/apache/arrow/util/TestSchemaUtil.java b/java/vector/src/test/java/org/apache/arrow/vector/util/TestSchemaUtil.java similarity index 98% rename from java/vector/src/test/java/org/apache/arrow/util/TestSchemaUtil.java rename to java/vector/src/test/java/org/apache/arrow/vector/util/TestSchemaUtil.java index cefff83823289..52b6584086832 100644 --- a/java/vector/src/test/java/org/apache/arrow/util/TestSchemaUtil.java +++ b/java/vector/src/test/java/org/apache/arrow/vector/util/TestSchemaUtil.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.arrow.util; +package org.apache.arrow.vector.util; import static java.util.Arrays.asList; import static org.junit.Assert.assertEquals; From 367f59081fb8129763b1b5fb08c6cb02bea4f07a Mon Sep 17 00:00:00 2001 From: James Duong Date: Tue, 28 Nov 2023 12:40:18 -0800 Subject: [PATCH 03/11] Explicitly have arrow-vector depend on immutables Having an implicit dependency from arrow-memory-core does not put immutables on the module-path when running tests and causes module issues. --- java/vector/pom.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/java/vector/pom.xml b/java/vector/pom.xml index 17d8f312a52a5..a4292449c9cb2 100644 --- a/java/vector/pom.xml +++ b/java/vector/pom.xml @@ -30,6 +30,10 @@ org.apache.arrow arrow-memory-core + + org.immutables + value + com.fasterxml.jackson.core jackson-core From 0476125cc99f98d39a9b7b88486e6646bd0a7e31 Mon Sep 17 00:00:00 2001 From: James Duong Date: Tue, 28 Nov 2023 12:41:04 -0800 Subject: [PATCH 04/11] Export packages for arrow-vector module Export public package for arrow-vector module. Allow jackson to use arrow-vector pojo classes reflectively for serialization. --- java/vector/src/main/java/module-info.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/java/vector/src/main/java/module-info.java b/java/vector/src/main/java/module-info.java index 9ca1d43985d17..a64d1caa4d8cd 100644 --- a/java/vector/src/main/java/module-info.java +++ b/java/vector/src/main/java/module-info.java @@ -16,6 +16,26 @@ */ module org.apache.arrow.vector { + exports org.apache.arrow.vector; + exports org.apache.arrow.vector.compare; + exports org.apache.arrow.vector.compare.util; + exports org.apache.arrow.vector.complex; + exports org.apache.arrow.vector.complex.impl; + exports org.apache.arrow.vector.complex.reader; + exports org.apache.arrow.vector.complex.writer; + exports org.apache.arrow.vector.compression; + exports org.apache.arrow.vector.dictionary; + exports org.apache.arrow.vector.holders; + exports org.apache.arrow.vector.ipc; + exports org.apache.arrow.vector.ipc.message; + exports org.apache.arrow.vector.table; + exports org.apache.arrow.vector.types; + exports org.apache.arrow.vector.types.pojo; + exports org.apache.arrow.vector.util; + exports org.apache.arrow.vector.validate; + + opens org.apache.arrow.vector.types.pojo to com.fasterxml.jackson.databind; + requires com.fasterxml.jackson.annotation; requires com.fasterxml.jackson.core; requires com.fasterxml.jackson.databind; From 558a04199e505fcd9340526a57063c74ea01e0c4 Mon Sep 17 00:00:00 2001 From: James Duong Date: Tue, 28 Nov 2023 14:47:47 -0800 Subject: [PATCH 05/11] Fix a missed reference to moved arrow-vector test classes --- .../src/test/java/org/apache/arrow/dataset/TestAllTypes.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/dataset/src/test/java/org/apache/arrow/dataset/TestAllTypes.java b/java/dataset/src/test/java/org/apache/arrow/dataset/TestAllTypes.java index 7be49079e7450..5293aca0c329b 100644 --- a/java/dataset/src/test/java/org/apache/arrow/dataset/TestAllTypes.java +++ b/java/dataset/src/test/java/org/apache/arrow/dataset/TestAllTypes.java @@ -32,7 +32,6 @@ import org.apache.arrow.dataset.file.DatasetFileWriter; import org.apache.arrow.dataset.file.FileFormat; import org.apache.arrow.memory.BufferAllocator; -import org.apache.arrow.util.ArrowTestDataUtil; import org.apache.arrow.vector.BigIntVector; import org.apache.arrow.vector.BitVector; import org.apache.arrow.vector.DateMilliVector; @@ -76,6 +75,7 @@ import org.apache.arrow.vector.types.pojo.Field; import org.apache.arrow.vector.types.pojo.FieldType; import org.apache.arrow.vector.types.pojo.Schema; +import org.apache.arrow.vector.util.ArrowTestDataUtil; import org.apache.arrow.vector.util.ByteArrayReadableSeekableByteChannel; import org.apache.arrow.vector.util.Text; import org.junit.ClassRule; From b7977f5c1ed8b08a489eb35af8850f08fb2da55a Mon Sep 17 00:00:00 2001 From: James Duong Date: Wed, 29 Nov 2023 18:31:48 -0800 Subject: [PATCH 06/11] Have arrow-vector depend on jdk.unsupported Needed because Vector classes use MemoryUtil.UNSAFE. --- java/vector/src/main/java/module-info.java | 1 + 1 file changed, 1 insertion(+) diff --git a/java/vector/src/main/java/module-info.java b/java/vector/src/main/java/module-info.java index a64d1caa4d8cd..346e809b85459 100644 --- a/java/vector/src/main/java/module-info.java +++ b/java/vector/src/main/java/module-info.java @@ -43,6 +43,7 @@ requires flatbuffers.java; requires io.netty.common; requires java.sql; + requires jdk.unsupported; requires org.apache.arrow.format; requires org.apache.commons.codec; requires slf4j.api; From d2a0839d56f870879f08e1033165dc0fb349eed5 Mon Sep 17 00:00:00 2001 From: James Duong Date: Mon, 4 Dec 2023 12:16:11 -0800 Subject: [PATCH 07/11] Remove unused dependencies on netty and java.sql in arrow-vector --- java/vector/src/main/codegen/includes/vv_imports.ftl | 3 --- java/vector/src/main/java/module-info.java | 2 -- 2 files changed, 5 deletions(-) diff --git a/java/vector/src/main/codegen/includes/vv_imports.ftl b/java/vector/src/main/codegen/includes/vv_imports.ftl index c9a8820b258b1..f4c72a1a6cbae 100644 --- a/java/vector/src/main/codegen/includes/vv_imports.ftl +++ b/java/vector/src/main/codegen/includes/vv_imports.ftl @@ -48,9 +48,6 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.nio.ByteBuffer; -import java.sql.Date; -import java.sql.Time; -import java.sql.Timestamp; import java.math.BigDecimal; import java.math.BigInteger; import java.time.Duration; diff --git a/java/vector/src/main/java/module-info.java b/java/vector/src/main/java/module-info.java index 346e809b85459..fcb38c32419fd 100644 --- a/java/vector/src/main/java/module-info.java +++ b/java/vector/src/main/java/module-info.java @@ -41,8 +41,6 @@ requires com.fasterxml.jackson.databind; requires com.fasterxml.jackson.datatype.jsr310; requires flatbuffers.java; - requires io.netty.common; - requires java.sql; requires jdk.unsupported; requires org.apache.arrow.format; requires org.apache.commons.codec; From f9ad830bf5af53c78af9f996938d6444d3bb4ac7 Mon Sep 17 00:00:00 2001 From: James Duong Date: Mon, 4 Dec 2023 14:40:27 -0800 Subject: [PATCH 08/11] Add dependency on eclipse collections to arrow-vector --- java/vector/src/main/java/module-info.java | 1 + 1 file changed, 1 insertion(+) diff --git a/java/vector/src/main/java/module-info.java b/java/vector/src/main/java/module-info.java index fcb38c32419fd..9a2ef6f46919d 100644 --- a/java/vector/src/main/java/module-info.java +++ b/java/vector/src/main/java/module-info.java @@ -44,5 +44,6 @@ requires jdk.unsupported; requires org.apache.arrow.format; requires org.apache.commons.codec; + requires org.eclipse.collections.impl; requires slf4j.api; } From 1a8e084121f606ba5ee834efe84a0a003c0fdef3 Mon Sep 17 00:00:00 2001 From: James Duong Date: Thu, 7 Dec 2023 15:16:59 -0800 Subject: [PATCH 09/11] Have arrow-vector depend on memory-core Also don't depend on jdk.unsupported --- java/vector/src/main/java/module-info.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/vector/src/main/java/module-info.java b/java/vector/src/main/java/module-info.java index 9a2ef6f46919d..4624b6f2a9a9e 100644 --- a/java/vector/src/main/java/module-info.java +++ b/java/vector/src/main/java/module-info.java @@ -41,8 +41,8 @@ requires com.fasterxml.jackson.databind; requires com.fasterxml.jackson.datatype.jsr310; requires flatbuffers.java; - requires jdk.unsupported; requires org.apache.arrow.format; + requires org.apache.arrow.memory.core; requires org.apache.commons.codec; requires org.eclipse.collections.impl; requires slf4j.api; From f35501e3cc96f1082427029c962b01def442ca6b Mon Sep 17 00:00:00 2001 From: James Duong Date: Thu, 7 Dec 2023 15:40:10 -0800 Subject: [PATCH 10/11] Have arrow-vector rely on Unsafe Needed because it uses MemoryUtil.UNSAFE --- java/vector/src/main/java/module-info.java | 1 + 1 file changed, 1 insertion(+) diff --git a/java/vector/src/main/java/module-info.java b/java/vector/src/main/java/module-info.java index 4624b6f2a9a9e..f65acce5c00bd 100644 --- a/java/vector/src/main/java/module-info.java +++ b/java/vector/src/main/java/module-info.java @@ -41,6 +41,7 @@ requires com.fasterxml.jackson.databind; requires com.fasterxml.jackson.datatype.jsr310; requires flatbuffers.java; + requires jdk.unsupported; requires org.apache.arrow.format; requires org.apache.arrow.memory.core; requires org.apache.commons.codec; From 94b9c204268412b2c5a39f5aaebae489d740b8f8 Mon Sep 17 00:00:00 2001 From: James Duong Date: Mon, 11 Dec 2023 12:23:27 -0800 Subject: [PATCH 11/11] Use correct JPMS name for SLF4J in arrow-vector --- java/vector/src/main/java/module-info.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/vector/src/main/java/module-info.java b/java/vector/src/main/java/module-info.java index f65acce5c00bd..20f7094715f4d 100644 --- a/java/vector/src/main/java/module-info.java +++ b/java/vector/src/main/java/module-info.java @@ -46,5 +46,5 @@ requires org.apache.arrow.memory.core; requires org.apache.commons.codec; requires org.eclipse.collections.impl; - requires slf4j.api; + requires org.slf4j; }