You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by am...@apache.org on 2021/08/27 11:15:51 UTC

[ignite-3] 01/02: Move TupleImpl to table module.

This is an automated email from the ASF dual-hosted git repository.

amashenkov pushed a commit to branch ignite-15382
in repository https://gitbox.apache.org/repos/asf/ignite-3.git

commit 6dd6b4ebb6399070f08633a164cfcbd87cafe133
Author: Andrew Mashenkov <an...@gmail.com>
AuthorDate: Fri Aug 27 14:15:16 2021 +0300

    Move TupleImpl to table module.
---
 .../main/java/org/apache/ignite/table/Tuple.java   | 31 ++++++++++++++++++++--
 modules/table/pom.xml                              |  9 +++++++
 .../internal/table/MutableRowTupleAdapter.java     |  1 -
 .../ignite/internal/table/TupleFactoryImpl.java}   | 18 +++++++++++--
 .../apache/ignite/internal}/table/TupleImpl.java   |  3 ++-
 .../org.apache.ignite.table.Tuple$TupleFactory     |  1 +
 .../TupleMarshallerFixlenOnlyBenchmark.java        |  2 +-
 .../TupleMarshallerVarlenOnlyBenchmark.java        |  2 +-
 .../internal/table/MutableRowTupleAdapterTest.java |  1 -
 .../org/apache/ignite/table/TupleImplTest.java     |  1 +
 10 files changed, 60 insertions(+), 9 deletions(-)

diff --git a/modules/api/src/main/java/org/apache/ignite/table/Tuple.java b/modules/api/src/main/java/org/apache/ignite/table/Tuple.java
index 5b82972..a8fedb4 100644
--- a/modules/api/src/main/java/org/apache/ignite/table/Tuple.java
+++ b/modules/api/src/main/java/org/apache/ignite/table/Tuple.java
@@ -22,6 +22,8 @@ import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.util.BitSet;
+import java.util.ServiceConfigurationError;
+import java.util.ServiceLoader;
 import java.util.UUID;
 import org.apache.ignite.binary.BinaryObject;
 import org.jetbrains.annotations.NotNull;
@@ -32,13 +34,18 @@ import org.jetbrains.annotations.NotNull;
  * Provides specialized method for some value-types to avoid boxing/unboxing.
  */
 public interface Tuple extends Iterable<Object> {
+    /** Default factory. */
+    static TupleFactory FACTORY = ServiceLoader.load(TupleFactory.class)
+                                      .findFirst()
+                                      .orElseThrow(() -> new ServiceConfigurationError("Failed to locate TupleFactory."));
+
     /**
      * Creates a tuple.
      *
      * @return Tuple.
      */
     static Tuple create() {
-        return new TupleImpl();
+        return FACTORY.create();
     }
 
     /**
@@ -48,7 +55,7 @@ public interface Tuple extends Iterable<Object> {
      * @return Tuple.
      */
     static Tuple create(int capacity) {
-        return new TupleImpl();
+        return FACTORY.create(capacity);
     }
 
     /**
@@ -365,4 +372,24 @@ public interface Tuple extends Iterable<Object> {
      * @throws IndexOutOfBoundsException If column with given index doesn't exists.
      */
     Instant timestampValue(int columnIndex);
+
+    /**
+     * Tuple factory service interface.
+     */
+    interface TupleFactory {
+        /**
+         * Creates a tuple.
+         *
+         * @return Tuple.
+         */
+        Tuple create();
+
+        /**
+         * Creates a tuple with specified initial capacity.
+         *
+         * @param capacity Initial capacity.
+         * @return Tuple.
+         */
+        Tuple create(int capacity);
+    }
 }
diff --git a/modules/table/pom.xml b/modules/table/pom.xml
index d63fa39..55d63b3 100644
--- a/modules/table/pom.xml
+++ b/modules/table/pom.xml
@@ -165,4 +165,13 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
+
+    <build>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <filtering>true</filtering>
+            </resource>
+        </resources>
+    </build>
 </project>
diff --git a/modules/table/src/main/java/org/apache/ignite/internal/table/MutableRowTupleAdapter.java b/modules/table/src/main/java/org/apache/ignite/internal/table/MutableRowTupleAdapter.java
index 6c46ca5..d88f461 100644
--- a/modules/table/src/main/java/org/apache/ignite/internal/table/MutableRowTupleAdapter.java
+++ b/modules/table/src/main/java/org/apache/ignite/internal/table/MutableRowTupleAdapter.java
@@ -27,7 +27,6 @@ import java.util.UUID;
 import org.apache.ignite.binary.BinaryObject;
 import org.apache.ignite.internal.schema.row.Row;
 import org.apache.ignite.table.Tuple;
-import org.apache.ignite.table.TupleImpl;
 import org.jetbrains.annotations.NotNull;
 
 /**
diff --git a/modules/schema/src/main/java/org/apache/ignite/schema/package-info.java b/modules/table/src/main/java/org/apache/ignite/internal/table/TupleFactoryImpl.java
similarity index 66%
rename from modules/schema/src/main/java/org/apache/ignite/schema/package-info.java
rename to modules/table/src/main/java/org/apache/ignite/internal/table/TupleFactoryImpl.java
index 9e3328b..64f521c 100644
--- a/modules/schema/src/main/java/org/apache/ignite/schema/package-info.java
+++ b/modules/table/src/main/java/org/apache/ignite/internal/table/TupleFactoryImpl.java
@@ -15,7 +15,21 @@
  * limitations under the License.
  */
 
+package org.apache.ignite.internal.table;
+
+import org.apache.ignite.table.Tuple;
+
 /**
- * Contains public schema definition helpers.
+ * Tuple factory service implementation.
  */
-package org.apache.ignite.schema;
+public class TupleFactoryImpl implements Tuple.TupleFactory {
+    /** {@inheritDoc} */
+    @Override public Tuple create() {
+        return new TupleImpl();
+    }
+
+    /** {@inheritDoc} */
+    @Override public Tuple create(int capacity) {
+        return new TupleImpl(capacity);
+    }
+}
diff --git a/modules/api/src/main/java/org/apache/ignite/table/TupleImpl.java b/modules/table/src/main/java/org/apache/ignite/internal/table/TupleImpl.java
similarity index 99%
rename from modules/api/src/main/java/org/apache/ignite/table/TupleImpl.java
rename to modules/table/src/main/java/org/apache/ignite/internal/table/TupleImpl.java
index 279dd27..79a92b1 100644
--- a/modules/api/src/main/java/org/apache/ignite/table/TupleImpl.java
+++ b/modules/table/src/main/java/org/apache/ignite/internal/table/TupleImpl.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.ignite.table;
+package org.apache.ignite.internal.table;
 
 import java.time.Instant;
 import java.time.LocalDate;
@@ -30,6 +30,7 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.UUID;
 import org.apache.ignite.binary.BinaryObject;
+import org.apache.ignite.table.Tuple;
 import org.jetbrains.annotations.NotNull;
 
 /**
diff --git a/modules/table/src/main/resources/META-INF/services/org.apache.ignite.table.Tuple$TupleFactory b/modules/table/src/main/resources/META-INF/services/org.apache.ignite.table.Tuple$TupleFactory
new file mode 100644
index 0000000..7a69e2b
--- /dev/null
+++ b/modules/table/src/main/resources/META-INF/services/org.apache.ignite.table.Tuple$TupleFactory
@@ -0,0 +1 @@
+org.apache.ignite.internal.table.TupleFactoryImpl
\ No newline at end of file
diff --git a/modules/table/src/test/java/org/apache/ignite/internal/benchmarks/TupleMarshallerFixlenOnlyBenchmark.java b/modules/table/src/test/java/org/apache/ignite/internal/benchmarks/TupleMarshallerFixlenOnlyBenchmark.java
index 07107cc..1c87ce9 100644
--- a/modules/table/src/test/java/org/apache/ignite/internal/benchmarks/TupleMarshallerFixlenOnlyBenchmark.java
+++ b/modules/table/src/test/java/org/apache/ignite/internal/benchmarks/TupleMarshallerFixlenOnlyBenchmark.java
@@ -30,7 +30,7 @@ import org.apache.ignite.internal.schema.registry.SchemaRegistryImpl;
 import org.apache.ignite.internal.schema.row.Row;
 import org.apache.ignite.internal.table.TupleMarshallerImpl;
 import org.apache.ignite.table.Tuple;
-import org.apache.ignite.table.TupleImpl;
+import org.apache.ignite.internal.table.TupleImpl;
 import org.openjdk.jmh.annotations.Benchmark;
 import org.openjdk.jmh.annotations.BenchmarkMode;
 import org.openjdk.jmh.annotations.Fork;
diff --git a/modules/table/src/test/java/org/apache/ignite/internal/benchmarks/TupleMarshallerVarlenOnlyBenchmark.java b/modules/table/src/test/java/org/apache/ignite/internal/benchmarks/TupleMarshallerVarlenOnlyBenchmark.java
index 51dc32f..800a224 100644
--- a/modules/table/src/test/java/org/apache/ignite/internal/benchmarks/TupleMarshallerVarlenOnlyBenchmark.java
+++ b/modules/table/src/test/java/org/apache/ignite/internal/benchmarks/TupleMarshallerVarlenOnlyBenchmark.java
@@ -31,7 +31,7 @@ import org.apache.ignite.internal.schema.registry.SchemaRegistryImpl;
 import org.apache.ignite.internal.schema.row.Row;
 import org.apache.ignite.internal.table.TupleMarshallerImpl;
 import org.apache.ignite.table.Tuple;
-import org.apache.ignite.table.TupleImpl;
+import org.apache.ignite.internal.table.TupleImpl;
 import org.openjdk.jmh.annotations.Benchmark;
 import org.openjdk.jmh.annotations.BenchmarkMode;
 import org.openjdk.jmh.annotations.Fork;
diff --git a/modules/table/src/test/java/org/apache/ignite/internal/table/MutableRowTupleAdapterTest.java b/modules/table/src/test/java/org/apache/ignite/internal/table/MutableRowTupleAdapterTest.java
index 9890ea9..f753f44 100644
--- a/modules/table/src/test/java/org/apache/ignite/internal/table/MutableRowTupleAdapterTest.java
+++ b/modules/table/src/test/java/org/apache/ignite/internal/table/MutableRowTupleAdapterTest.java
@@ -38,7 +38,6 @@ import org.apache.ignite.internal.table.impl.DummySchemaManagerImpl;
 import org.apache.ignite.internal.testframework.IgniteTestUtils;
 import org.apache.ignite.schema.SchemaMode;
 import org.apache.ignite.table.Tuple;
-import org.apache.ignite.table.TupleImpl;
 import org.junit.jupiter.api.Test;
 import org.mockito.Mockito;
 
diff --git a/modules/table/src/test/java/org/apache/ignite/table/TupleImplTest.java b/modules/table/src/test/java/org/apache/ignite/table/TupleImplTest.java
index 9841602..a80342d 100644
--- a/modules/table/src/test/java/org/apache/ignite/table/TupleImplTest.java
+++ b/modules/table/src/test/java/org/apache/ignite/table/TupleImplTest.java
@@ -25,6 +25,7 @@ import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.util.Random;
 import java.util.UUID;
+import org.apache.ignite.internal.table.TupleImpl;
 import org.apache.ignite.internal.testframework.IgniteTestUtils;
 import org.junit.jupiter.api.Test;