You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by gu...@apache.org on 2023/06/07 08:22:01 UTC
[flink] branch process-func-api-poc-weijie created (now 43ca07e726c)
This is an automated email from the ASF dual-hosted git repository.
guoweijie pushed a change to branch process-func-api-poc-weijie
in repository https://gitbox.apache.org/repos/asf/flink.git
at 43ca07e726c ProcessOperator supports operator list state.
This branch includes the following new commits:
new 1494ce4cecc Create modules.
new 82a01017c6f Introduce ExecutionEnvironment, whose implementation can be obtained from API via reflection.
new 8e8d39a6057 Introduce DataStream, as well as supplier-source & consumer-sink for testing purpose.
new 6b4f8ce5960 Introduce flink-process-function-parent module, to make it easy building all related modules at once.
new 9616f46377d Supports submit job to minicluster environment.
new 242e9e57af7 Using ConsumerFunction and SupplierFunction to avoid serialization exception and support lambda type inference.
new 1be9ad7a73f Supports supplier source and consumer sink.
new 8be47a72cab Introduce ProcessFunction interface.
new b6c1dc51e86 Introduce RuntimeContext interface.
new c6d04280adc Introduce interfaces for declaring and using states.
new f8e89abde72 Change ProcessFunction to support arbitrary number of outputs.
new 28bd60f0f84 Implements process operator to handle user process function.
new 51bfb5d1387 Extracts type information related interfaces and base classes to core-api module
new 43ca07e726c ProcessOperator supports operator list state.
The 14 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[flink] 11/14: Change ProcessFunction to support arbitrary number of outputs.
Posted by gu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
guoweijie pushed a commit to branch process-func-api-poc-weijie
in repository https://gitbox.apache.org/repos/asf/flink.git
commit f8e89abde72835c703ffb15f6ea716f8badd3591
Author: Xintong Song <to...@gmail.com>
AuthorDate: Sun Jun 4 14:17:38 2023 +0800
Change ProcessFunction to support arbitrary number of outputs.
---
.../java/org/apache/flink/processfunction/api/ProcessFunction.java | 3 ++-
.../java/org/apache/flink/processfunction/examples/SimpleMap.java | 7 ++++---
.../apache/flink/processfunction/examples/SimpleStatefulMap.java | 6 +++---
3 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java
index 796305fadb2..5448910b641 100644
--- a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java
+++ b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java
@@ -20,10 +20,11 @@ package org.apache.flink.processfunction.api;
import java.util.Collections;
import java.util.Map;
+import java.util.function.Consumer;
@FunctionalInterface
public interface ProcessFunction<IN, OUT> {
- OUT processRecord(IN record, RuntimeContext ctx);
+ void processRecord(IN record, Consumer<OUT> output, RuntimeContext ctx);
// Explicitly declares states upfront. See FLIP-22.
default Map<String, StateDescriptor> usesStates() { // stateId -> stateDescriptor
diff --git a/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java b/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
index 5bcfe8592a5..207befab2f5 100644
--- a/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
+++ b/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
@@ -29,9 +29,10 @@ public class SimpleMap {
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.tmpFromSupplierSource(System::currentTimeMillis)
.process(
- (tsLong, ctx) ->
- new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS")
- .format(new Date(tsLong)))
+ (tsLong, output, ctx) ->
+ output.accept(
+ new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS")
+ .format(new Date(tsLong))))
// Don't use Lambda reference as PrintStream is not serializable.
.tmpToConsumerSink((tsStr) -> System.out.println(tsStr));
env.execute();
diff --git a/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleStatefulMap.java b/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleStatefulMap.java
index df759e8eb45..5f849dbf8e4 100644
--- a/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleStatefulMap.java
+++ b/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleStatefulMap.java
@@ -26,6 +26,7 @@ import org.apache.flink.processfunction.api.StateDescriptor;
import java.util.Collections;
import java.util.Map;
+import java.util.function.Consumer;
/** Usage: Must be executed with flink-process-function and flink-dist jar in classpath. */
public class SimpleStatefulMap {
@@ -43,13 +44,12 @@ public class SimpleStatefulMap {
static final String STATE_ID = "lastTimestamp";
@Override
- public Long processRecord(Long record, RuntimeContext ctx) {
+ public void processRecord(Long record, Consumer<Long> output, RuntimeContext ctx) {
State state = ctx.getState(STATE_ID);
// TODO:
// long diff = record - state.getValue();
// state.setValue(record)
- // return diff;
- return record;
+ // output.accept(diff);
}
@Override
[flink] 02/14: Introduce ExecutionEnvironment, whose implementation can be obtained from API via reflection.
Posted by gu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
guoweijie pushed a commit to branch process-func-api-poc-weijie
in repository https://gitbox.apache.org/repos/asf/flink.git
commit 82a01017c6f4b9acf37466f892624c7401c2b4f3
Author: Xintong Song <to...@gmail.com>
AuthorDate: Tue May 30 19:41:02 2023 +0800
Introduce ExecutionEnvironment, whose implementation can be obtained from API via reflection.
---
.../processfunction/api/ExecutionEnvironment.java | 31 +++++++++++++++++++++
.../flink/processfunction/examples/SimpleMap.java | 28 +++++++++++++++++++
.../processfunction/ExecutionEnvironmentImpl.java | 32 ++++++++++++++++++++++
3 files changed, 91 insertions(+)
diff --git a/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java b/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java
new file mode 100644
index 00000000000..a13d60d9385
--- /dev/null
+++ b/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+package org.apache.flink.processfunction.api;
+
+public abstract class ExecutionEnvironment {
+ public static ExecutionEnvironment getExecutionEnvironment()
+ throws ReflectiveOperationException {
+ return (ExecutionEnvironment)
+ Class.forName("org.apache.flink.processfunction.ExecutionEnvironmentImpl")
+ .getMethod("newInstance")
+ .invoke(null);
+ }
+
+ public abstract void foo();
+}
diff --git a/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java b/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
new file mode 100644
index 00000000000..531b87e214e
--- /dev/null
+++ b/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+
+package org.apache.flink.processfunction.examples;
+
+import org.apache.flink.processfunction.api.ExecutionEnvironment;
+
+/** Usage: Must be executed with flink-process-function jar in classpath. */
+public class SimpleMap {
+ public static void main(String[] args) throws Exception {
+ ExecutionEnvironment.getExecutionEnvironment().foo();
+ }
+}
diff --git a/flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java b/flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java
new file mode 100644
index 00000000000..8ea8f33a093
--- /dev/null
+++ b/flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+
+package org.apache.flink.processfunction;
+
+import org.apache.flink.processfunction.api.ExecutionEnvironment;
+
+public class ExecutionEnvironmentImpl extends ExecutionEnvironment {
+ public static ExecutionEnvironmentImpl newInstance() {
+ return new ExecutionEnvironmentImpl();
+ }
+
+ @Override
+ public void foo() {
+ System.out.println(getClass().getSimpleName());
+ }
+}
[flink] 07/14: Supports supplier source and consumer sink.
Posted by gu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
guoweijie pushed a commit to branch process-func-api-poc-weijie
in repository https://gitbox.apache.org/repos/asf/flink.git
commit 1be9ad7a73f797be7ac86563e1a0072912d61391
Author: Weijie Guo <re...@163.com>
AuthorDate: Wed May 31 14:38:08 2023 +0800
Supports supplier source and consumer sink.
---
.../processfunction/api/ExecutionEnvironment.java | 5 ++-
.../flink/processfunction/examples/SimpleMap.java | 2 +-
.../flink/processfunction/DataStreamImpl.java | 36 +++++++++++++++++++-
.../processfunction/ExecutionEnvironmentImpl.java | 39 ++++++++++++++++++++--
.../ConsumerSinkFunction.java} | 17 +++++++---
.../connector/SupplierSourceFunction.java} | 34 +++++++++++++------
6 files changed, 112 insertions(+), 21 deletions(-)
diff --git a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java
index 8f4d39427ce..0c8e726e222 100644
--- a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java
+++ b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java
@@ -31,6 +31,9 @@ public abstract class ExecutionEnvironment {
public abstract void execute() throws Exception;
- /** TODO: Temporal method. Will revisit source functions later. */
+ /**
+ * TODO: 1. Temporal method. Will revisit source functions later. 2. Refactor and move the type
+ * information related code to core-api module.
+ */
public abstract <OUT> DataStream<OUT> tmpFromSupplierSource(SupplierFunction<OUT> supplier);
}
diff --git a/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java b/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
index 172b62c2853..523815b8aec 100644
--- a/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
+++ b/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
@@ -20,7 +20,7 @@ package org.apache.flink.processfunction.examples;
import org.apache.flink.processfunction.api.ExecutionEnvironment;
-/** Usage: Must be executed with flink-process-function jar in classpath. */
+/** Usage: Must be executed with flink-process-function and flink-dist jar in classpath. */
public class SimpleMap {
public static void main(String[] args) throws Exception {
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
diff --git a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java b/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
index 72cb6d276f5..b926c7e1d60 100644
--- a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
+++ b/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
@@ -18,12 +18,46 @@
package org.apache.flink.processfunction;
+import org.apache.flink.api.dag.Transformation;
import org.apache.flink.processfunction.api.DataStream;
+import org.apache.flink.processfunction.connector.ConsumerSinkFunction;
+import org.apache.flink.streaming.api.operators.StreamSink;
+import org.apache.flink.streaming.api.transformations.LegacySinkTransformation;
+import org.apache.flink.streaming.api.transformations.PhysicalTransformation;
+import org.apache.flink.util.Preconditions;
import org.apache.flink.util.function.ConsumerFunction;
public class DataStreamImpl<T> implements DataStream<T> {
+ private final ExecutionEnvironmentImpl environment;
+ private final Transformation<T> transformation;
+
+ public DataStreamImpl(ExecutionEnvironmentImpl environment, Transformation<T> transformation) {
+ this.environment =
+ Preconditions.checkNotNull(environment, "Execution Environment must not be null.");
+ this.transformation =
+ Preconditions.checkNotNull(
+ transformation, "Stream Transformation must not be null.");
+ }
+
@Override
public void tmpToConsumerSink(ConsumerFunction<T> consumer) {
- // TODO: keep calling `consumer.accept()` at runtime
+ // read the output type of the input Transform to coax out errors about MissingTypeInfo
+ transformation.getOutputType();
+
+ ConsumerSinkFunction<T> sinkFunction = new ConsumerSinkFunction<>(consumer);
+
+ // TODO Supports clean closure
+ StreamSink<T> sinkOperator = new StreamSink<>(sinkFunction);
+
+ PhysicalTransformation<T> sinkTransformation =
+ new LegacySinkTransformation<>(
+ transformation,
+ "Consumer Sink",
+ sinkOperator,
+ // TODO Supports configure parallelism
+ 1,
+ true);
+
+ environment.addOperator(sinkTransformation);
}
}
diff --git a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java b/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java
index be0401df86c..16dca9d2b4e 100644
--- a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java
+++ b/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java
@@ -19,7 +19,10 @@
package org.apache.flink.processfunction;
import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.connector.source.Boundedness;
import org.apache.flink.api.dag.Transformation;
+import org.apache.flink.api.java.typeutils.TypeExtractor;
import org.apache.flink.client.deployment.executors.LocalExecutorFactory;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.configuration.DeploymentOptions;
@@ -28,11 +31,15 @@ import org.apache.flink.core.execution.PipelineExecutor;
import org.apache.flink.core.execution.PipelineExecutorFactory;
import org.apache.flink.processfunction.api.DataStream;
import org.apache.flink.processfunction.api.ExecutionEnvironment;
+import org.apache.flink.processfunction.connector.SupplierSourceFunction;
import org.apache.flink.streaming.api.environment.CheckpointConfig;
import org.apache.flink.streaming.api.graph.StreamGraph;
import org.apache.flink.streaming.api.graph.StreamGraphGenerator;
+import org.apache.flink.streaming.api.operators.StreamSource;
+import org.apache.flink.streaming.api.transformations.LegacySourceTransformation;
import org.apache.flink.util.ExceptionUtils;
import org.apache.flink.util.FlinkException;
+import org.apache.flink.util.Preconditions;
import org.apache.flink.util.function.SupplierFunction;
import java.util.ArrayList;
@@ -64,8 +71,36 @@ public class ExecutionEnvironmentImpl extends ExecutionEnvironment {
@Override
public <OUT> DataStream<OUT> tmpFromSupplierSource(SupplierFunction<OUT> supplier) {
- // TODO: keep calling `supplier.get()` at runtime
- return new DataStreamImpl<>();
+ final String sourceName = "Supplier Source";
+ // TODO Supports clean closure
+ final SupplierSourceFunction<OUT> sourceFunction = new SupplierSourceFunction<>(supplier);
+ final TypeInformation<OUT> resolvedTypeInfo =
+ TypeExtractor.getUnaryOperatorReturnType(
+ supplier,
+ SupplierFunction.class,
+ -1,
+ 0,
+ TypeExtractor.NO_INDEX,
+ null,
+ null,
+ false);
+
+ final StreamSource<OUT, ?> sourceOperator = new StreamSource<>(sourceFunction);
+ return new DataStreamImpl<>(
+ this,
+ new LegacySourceTransformation<>(
+ sourceName,
+ sourceOperator,
+ resolvedTypeInfo,
+ // TODO Supports configure parallelism
+ 1,
+ Boundedness.CONTINUOUS_UNBOUNDED,
+ true));
+ }
+
+ public void addOperator(Transformation<?> transformation) {
+ Preconditions.checkNotNull(transformation, "transformation must not be null.");
+ this.transformations.add(transformation);
}
// -----------------------------------------------
diff --git a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java b/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/connector/ConsumerSinkFunction.java
similarity index 64%
copy from flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
copy to flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/connector/ConsumerSinkFunction.java
index 72cb6d276f5..996e5ec0e25 100644
--- a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
+++ b/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/connector/ConsumerSinkFunction.java
@@ -16,14 +16,21 @@
* limitations under the License.
*/
-package org.apache.flink.processfunction;
+package org.apache.flink.processfunction.connector;
-import org.apache.flink.processfunction.api.DataStream;
+import org.apache.flink.streaming.api.functions.sink.SinkFunction;
import org.apache.flink.util.function.ConsumerFunction;
-public class DataStreamImpl<T> implements DataStream<T> {
+/** Legacy implementation for ConsumerSink. */
+public class ConsumerSinkFunction<IN> implements SinkFunction<IN> {
+ private final ConsumerFunction<IN> dataConsumer;
+
+ public ConsumerSinkFunction(ConsumerFunction<IN> dataConsumer) {
+ this.dataConsumer = dataConsumer;
+ }
+
@Override
- public void tmpToConsumerSink(ConsumerFunction<T> consumer) {
- // TODO: keep calling `consumer.accept()` at runtime
+ public void invoke(IN value, Context context) {
+ dataConsumer.accept(value);
}
}
diff --git a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java b/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/connector/SupplierSourceFunction.java
similarity index 52%
copy from flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java
copy to flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/connector/SupplierSourceFunction.java
index 8f4d39427ce..044dc4c6c1d 100644
--- a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java
+++ b/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/connector/SupplierSourceFunction.java
@@ -16,21 +16,33 @@
* limitations under the License.
*/
-package org.apache.flink.processfunction.api;
+package org.apache.flink.processfunction.connector;
+import org.apache.flink.streaming.api.functions.source.SourceFunction;
import org.apache.flink.util.function.SupplierFunction;
-public abstract class ExecutionEnvironment {
- public static ExecutionEnvironment getExecutionEnvironment()
- throws ReflectiveOperationException {
- return (ExecutionEnvironment)
- Class.forName("org.apache.flink.processfunction.ExecutionEnvironmentImpl")
- .getMethod("newInstance")
- .invoke(null);
+/** Legacy implementation for SupplierSource. */
+public class SupplierSourceFunction<OUT> implements SourceFunction<OUT> {
+ private volatile boolean isRunning = true;
+
+ private final SupplierFunction<OUT> dataSupplier;
+
+ public SupplierSourceFunction(SupplierFunction<OUT> dataSupplier) {
+ this.dataSupplier = dataSupplier;
}
- public abstract void execute() throws Exception;
+ @Override
+ public void run(SourceContext<OUT> ctx) throws Exception {
+ while (isRunning) {
+ OUT data = dataSupplier.get();
+ ctx.collect(data);
+ //noinspection BusyWait
+ Thread.sleep(1000L);
+ }
+ }
- /** TODO: Temporal method. Will revisit source functions later. */
- public abstract <OUT> DataStream<OUT> tmpFromSupplierSource(SupplierFunction<OUT> supplier);
+ @Override
+ public void cancel() {
+ isRunning = false;
+ }
}
[flink] 14/14: ProcessOperator supports operator list state.
Posted by gu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
guoweijie pushed a commit to branch process-func-api-poc-weijie
in repository https://gitbox.apache.org/repos/asf/flink.git
commit 43ca07e726c40c296ddc349eab87ab98a9926303
Author: Weijie Guo <re...@163.com>
AuthorDate: Tue Jun 6 21:02:53 2023 +0800
ProcessOperator supports operator list state.
---
.../flink/api/common/state/AppendingState.java | 0
.../apache/flink/api/common/state/ListState.java | 0
.../api/common/state/ListStateDeclaration.java | 30 +++++++++++--------
.../flink/api/common/state/MergingState.java | 0
.../org/apache/flink/api/common/state/State.java | 0
.../flink/api/common/state/StateDeclaration.java | 5 ++--
.../{State.java => StateDeclarationConverter.java} | 27 ++++++++---------
.../flink/processfunction/api/ProcessFunction.java | 5 ++--
.../flink/processfunction/api/RuntimeContext.java | 4 ++-
.../flink/processfunction/api/StateDescriptor.java | 21 -------------
.../examples/SimpleStatefulMap.java | 35 ++++++++++++++--------
.../processfunction/operators/ProcessOperator.java | 30 +++++++++++++++----
12 files changed, 86 insertions(+), 71 deletions(-)
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/state/AppendingState.java b/flink-core-api/src/main/java/org/apache/flink/api/common/state/AppendingState.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/common/state/AppendingState.java
rename to flink-core-api/src/main/java/org/apache/flink/api/common/state/AppendingState.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/state/ListState.java b/flink-core-api/src/main/java/org/apache/flink/api/common/state/ListState.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/common/state/ListState.java
rename to flink-core-api/src/main/java/org/apache/flink/api/common/state/ListState.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/state/State.java b/flink-core-api/src/main/java/org/apache/flink/api/common/state/ListStateDeclaration.java
similarity index 60%
copy from flink-core/src/main/java/org/apache/flink/api/common/state/State.java
copy to flink-core-api/src/main/java/org/apache/flink/api/common/state/ListStateDeclaration.java
index bd5211df618..a9ee9f219f0 100644
--- a/flink-core/src/main/java/org/apache/flink/api/common/state/State.java
+++ b/flink-core-api/src/main/java/org/apache/flink/api/common/state/ListStateDeclaration.java
@@ -18,19 +18,23 @@
package org.apache.flink.api.common.state;
-import org.apache.flink.annotation.PublicEvolving;
+import org.apache.flink.api.common.typeinfo.TypeDescriptor;
-/**
- * Interface that different types of partitioned state must implement.
- *
- * <p>The state is only accessible by functions applied on a {@code KeyedStream}. The key is
- * automatically supplied by the system, so the function always sees the value mapped to the key of
- * the current element. That way, the system can handle stream and state partitioning consistently
- * together.
- */
-@PublicEvolving
-public interface State {
+public class ListStateDeclaration<T> implements StateDeclaration {
+ private final String name;
+
+ private final TypeDescriptor<T> elementTypeDescriptor;
+
+ public ListStateDeclaration(String name, TypeDescriptor<T> elementTypeDescriptor) {
+ this.name = name;
+ this.elementTypeDescriptor = elementTypeDescriptor;
+ }
+
+ public String getName() {
+ return name;
+ }
- /** Removes the value mapped under the current key. */
- void clear();
+ public TypeDescriptor<T> getElementTypeDescriptor() {
+ return elementTypeDescriptor;
+ }
}
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/state/MergingState.java b/flink-core-api/src/main/java/org/apache/flink/api/common/state/MergingState.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/common/state/MergingState.java
rename to flink-core-api/src/main/java/org/apache/flink/api/common/state/MergingState.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/state/State.java b/flink-core-api/src/main/java/org/apache/flink/api/common/state/State.java
similarity index 100%
copy from flink-core/src/main/java/org/apache/flink/api/common/state/State.java
copy to flink-core-api/src/main/java/org/apache/flink/api/common/state/State.java
diff --git a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/State.java b/flink-core-api/src/main/java/org/apache/flink/api/common/state/StateDeclaration.java
similarity index 88%
rename from flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/State.java
rename to flink-core-api/src/main/java/org/apache/flink/api/common/state/StateDeclaration.java
index 3fc48ab137d..5070f2ac8f6 100644
--- a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/State.java
+++ b/flink-core-api/src/main/java/org/apache/flink/api/common/state/StateDeclaration.java
@@ -16,6 +16,7 @@
* limitations under the License.
*/
-package org.apache.flink.processfunction.api;
+package org.apache.flink.api.common.state;
-public interface State {}
+/** Declaration for state. */
+public interface StateDeclaration {}
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/state/State.java b/flink-core/src/main/java/org/apache/flink/api/common/state/StateDeclarationConverter.java
similarity index 55%
rename from flink-core/src/main/java/org/apache/flink/api/common/state/State.java
rename to flink-core/src/main/java/org/apache/flink/api/common/state/StateDeclarationConverter.java
index bd5211df618..363c21ec619 100644
--- a/flink-core/src/main/java/org/apache/flink/api/common/state/State.java
+++ b/flink-core/src/main/java/org/apache/flink/api/common/state/StateDeclarationConverter.java
@@ -18,19 +18,18 @@
package org.apache.flink.api.common.state;
-import org.apache.flink.annotation.PublicEvolving;
+import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
-/**
- * Interface that different types of partitioned state must implement.
- *
- * <p>The state is only accessible by functions applied on a {@code KeyedStream}. The key is
- * automatically supplied by the system, so the function always sees the value mapped to the key of
- * the current element. That way, the system can handle stream and state partitioning consistently
- * together.
- */
-@PublicEvolving
-public interface State {
-
- /** Removes the value mapped under the current key. */
- void clear();
+/** Utils to convert {@link StateDeclaration} to {@link StateDeclaration}. */
+public class StateDeclarationConverter {
+ public static <T> ListStateDescriptor<T> getListStateDescriptor(
+ ListStateDeclaration<T> stateDeclaration) {
+ //noinspection unchecked
+ return new ListStateDescriptor<>(
+ stateDeclaration.getName(),
+ (TypeInformation<T>)
+ TypeInformationUtils.fromTypeDescriptor(
+ stateDeclaration.getElementTypeDescriptor()));
+ }
}
diff --git a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java
index 55919cd8307..f83c7967137 100644
--- a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java
+++ b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java
@@ -19,6 +19,7 @@
package org.apache.flink.processfunction.api;
import org.apache.flink.api.common.functions.Function;
+import org.apache.flink.api.common.state.StateDeclaration;
import java.util.Collections;
import java.util.Map;
@@ -26,10 +27,10 @@ import java.util.function.Consumer;
@FunctionalInterface
public interface ProcessFunction<IN, OUT> extends Function {
- void processRecord(IN record, Consumer<OUT> output, RuntimeContext ctx);
+ void processRecord(IN record, Consumer<OUT> output, RuntimeContext ctx) throws Exception;
// Explicitly declares states upfront. See FLIP-22.
- default Map<String, StateDescriptor> usesStates() { // stateId -> stateDescriptor
+ default Map<String, StateDeclaration> usesStates() { // stateId -> stateDeclaration
return Collections.emptyMap();
}
}
diff --git a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/RuntimeContext.java b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/RuntimeContext.java
index 908eeb8367a..f5db74d87fa 100644
--- a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/RuntimeContext.java
+++ b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/RuntimeContext.java
@@ -18,6 +18,8 @@
package org.apache.flink.processfunction.api;
+import org.apache.flink.api.common.state.ListState;
+
public interface RuntimeContext {
- State getState(String stateId);
+ <T> ListState<T> getListState(String stateId) throws Exception;
}
diff --git a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/StateDescriptor.java b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/StateDescriptor.java
deleted file mode 100644
index 838de57d9c0..00000000000
--- a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/StateDescriptor.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.flink.processfunction.api;
-
-public interface StateDescriptor {}
diff --git a/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleStatefulMap.java b/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleStatefulMap.java
index 5f849dbf8e4..86097640448 100644
--- a/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleStatefulMap.java
+++ b/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleStatefulMap.java
@@ -18,11 +18,13 @@
package org.apache.flink.processfunction.examples;
+import org.apache.flink.api.common.state.ListState;
+import org.apache.flink.api.common.state.ListStateDeclaration;
+import org.apache.flink.api.common.state.StateDeclaration;
+import org.apache.flink.api.common.typeinfo.TypeDescriptors;
import org.apache.flink.processfunction.api.ExecutionEnvironment;
import org.apache.flink.processfunction.api.ProcessFunction;
import org.apache.flink.processfunction.api.RuntimeContext;
-import org.apache.flink.processfunction.api.State;
-import org.apache.flink.processfunction.api.StateDescriptor;
import java.util.Collections;
import java.util.Map;
@@ -36,26 +38,35 @@ public class SimpleStatefulMap {
.process(new CalcTimeDiffFunc())
// Don't use Lambda reference as PrintStream is not serializable.
.tmpToConsumerSink(
- (timeDiff) -> System.out.println("%d milliseconds since last timestamp."));
+ (timeDiff) ->
+ System.out.printf(
+ "%d milliseconds since last timestamp. \n", timeDiff));
env.execute();
}
private static class CalcTimeDiffFunc implements ProcessFunction<Long, Long> {
+
static final String STATE_ID = "lastTimestamp";
@Override
- public void processRecord(Long record, Consumer<Long> output, RuntimeContext ctx) {
- State state = ctx.getState(STATE_ID);
- // TODO:
- // long diff = record - state.getValue();
- // state.setValue(record)
- // output.accept(diff);
+ public void processRecord(Long record, Consumer<Long> output, RuntimeContext ctx)
+ throws Exception {
+ ListState<Long> state = ctx.getListState(STATE_ID);
+ if (!state.get().iterator().hasNext()) {
+ // for first record
+ output.accept(0L);
+ } else {
+ long diff = record - state.get().iterator().next();
+ output.accept(diff);
+ }
+ state.update(Collections.singletonList(record));
}
@Override
- public Map<String, StateDescriptor> usesStates() {
- // TODO: state descriptor for type LONG
- return Collections.singletonMap(STATE_ID, null);
+ public Map<String, StateDeclaration> usesStates() {
+ ListStateDeclaration<Long> listStateDeclaration =
+ new ListStateDeclaration<>(STATE_ID, TypeDescriptors.LONG);
+ return Collections.singletonMap(STATE_ID, listStateDeclaration);
}
}
}
diff --git a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/operators/ProcessOperator.java b/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/operators/ProcessOperator.java
index 70700ede5eb..693e9078337 100644
--- a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/operators/ProcessOperator.java
+++ b/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/operators/ProcessOperator.java
@@ -18,14 +18,20 @@
package org.apache.flink.processfunction.operators;
+import org.apache.flink.api.common.state.ListState;
+import org.apache.flink.api.common.state.ListStateDeclaration;
+import org.apache.flink.api.common.state.ListStateDescriptor;
+import org.apache.flink.api.common.state.StateDeclaration;
+import org.apache.flink.api.common.state.StateDeclarationConverter;
import org.apache.flink.processfunction.api.ProcessFunction;
import org.apache.flink.processfunction.api.RuntimeContext;
-import org.apache.flink.processfunction.api.State;
import org.apache.flink.streaming.api.operators.AbstractUdfStreamOperator;
import org.apache.flink.streaming.api.operators.ChainingStrategy;
import org.apache.flink.streaming.api.operators.OneInputStreamOperator;
import org.apache.flink.streaming.runtime.streamrecord.StreamRecord;
+import org.apache.flink.util.Preconditions;
+import java.util.Map;
import java.util.function.Consumer;
/** Operator for {@link org.apache.flink.processfunction.api.ProcessFunction}. */
@@ -51,7 +57,7 @@ public class ProcessOperator<IN, OUT>
}
@Override
- public void processElement(StreamRecord<IN> element) {
+ public void processElement(StreamRecord<IN> element) throws Exception {
userFunction.processRecord(element.getValue(), outputCollector, context);
}
@@ -65,12 +71,24 @@ public class ProcessOperator<IN, OUT>
}
}
- private static class ContextImpl implements RuntimeContext {
+ private class ContextImpl implements RuntimeContext {
+ private final Map<String, StateDeclaration> allRegisteredStates;
+
+ private ContextImpl() {
+ allRegisteredStates = userFunction.usesStates();
+ }
@Override
- public State getState(String stateId) {
- // TODO return state.
- return null;
+ public <T> ListState<T> getListState(String stateId) throws Exception {
+ StateDeclaration stateDeclaration = allRegisteredStates.get(stateId);
+ Preconditions.checkNotNull(stateDeclaration, "No list state with id: " + stateId);
+ Preconditions.checkState(stateDeclaration instanceof ListStateDeclaration);
+
+ //noinspection unchecked
+ ListStateDescriptor<T> listStateDescriptor =
+ StateDeclarationConverter.getListStateDescriptor(
+ (ListStateDeclaration<T>) stateDeclaration);
+ return getOperatorStateBackend().getListState(listStateDescriptor);
}
}
}
[flink] 03/14: Introduce DataStream, as well as supplier-source & consumer-sink for testing purpose.
Posted by gu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
guoweijie pushed a commit to branch process-func-api-poc-weijie
in repository https://gitbox.apache.org/repos/asf/flink.git
commit 8e8d39a60578f1e1ddfdc5214aac33d3fe1497a4
Author: Xintong Song <to...@gmail.com>
AuthorDate: Tue May 30 20:03:51 2023 +0800
Introduce DataStream, as well as supplier-source & consumer-sink for testing purpose.
---
.../org/apache/flink/processfunction/api/DataStream.java | 12 +++++-------
.../flink/processfunction/api/ExecutionEnvironment.java | 7 ++++++-
.../apache/flink/processfunction/examples/SimpleMap.java | 4 +++-
.../{ExecutionEnvironmentImpl.java => DataStreamImpl.java} | 12 +++++-------
.../flink/processfunction/ExecutionEnvironmentImpl.java | 13 +++++++++++--
5 files changed, 30 insertions(+), 18 deletions(-)
diff --git a/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java b/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/DataStream.java
similarity index 69%
copy from flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
copy to flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/DataStream.java
index 531b87e214e..775b95faee3 100644
--- a/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
+++ b/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/DataStream.java
@@ -16,13 +16,11 @@
* limitations under the License.
*/
-package org.apache.flink.processfunction.examples;
+package org.apache.flink.processfunction.api;
-import org.apache.flink.processfunction.api.ExecutionEnvironment;
+import java.util.function.Consumer;
-/** Usage: Must be executed with flink-process-function jar in classpath. */
-public class SimpleMap {
- public static void main(String[] args) throws Exception {
- ExecutionEnvironment.getExecutionEnvironment().foo();
- }
+public interface DataStream<T> {
+ /** TODO: Temporal method. Will revisit sink functions later. */
+ void tmpToConsumerSink(Consumer<T> consumer);
}
diff --git a/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java b/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java
index a13d60d9385..6335c9e33b8 100644
--- a/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java
+++ b/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java
@@ -18,6 +18,8 @@
package org.apache.flink.processfunction.api;
+import java.util.function.Supplier;
+
public abstract class ExecutionEnvironment {
public static ExecutionEnvironment getExecutionEnvironment()
throws ReflectiveOperationException {
@@ -27,5 +29,8 @@ public abstract class ExecutionEnvironment {
.invoke(null);
}
- public abstract void foo();
+ public abstract void execute();
+
+ /** TODO: Temporal method. Will revisit source functions later. */
+ public abstract <OUT> DataStream<OUT> tmpFromSupplierSource(Supplier<OUT> supplier);
}
diff --git a/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java b/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
index 531b87e214e..a9f7212ba88 100644
--- a/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
+++ b/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
@@ -23,6 +23,8 @@ import org.apache.flink.processfunction.api.ExecutionEnvironment;
/** Usage: Must be executed with flink-process-function jar in classpath. */
public class SimpleMap {
public static void main(String[] args) throws Exception {
- ExecutionEnvironment.getExecutionEnvironment().foo();
+ ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
+ env.tmpFromSupplierSource(System::currentTimeMillis).tmpToConsumerSink(System.out::println);
+ env.execute();
}
}
diff --git a/flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java b/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
similarity index 72%
copy from flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java
copy to flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
index 8ea8f33a093..83c679b00e5 100644
--- a/flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java
+++ b/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
@@ -18,15 +18,13 @@
package org.apache.flink.processfunction;
-import org.apache.flink.processfunction.api.ExecutionEnvironment;
+import org.apache.flink.processfunction.api.DataStream;
-public class ExecutionEnvironmentImpl extends ExecutionEnvironment {
- public static ExecutionEnvironmentImpl newInstance() {
- return new ExecutionEnvironmentImpl();
- }
+import java.util.function.Consumer;
+public class DataStreamImpl<T> implements DataStream<T> {
@Override
- public void foo() {
- System.out.println(getClass().getSimpleName());
+ public void tmpToConsumerSink(Consumer<T> consumer) {
+ // TODO: keep calling `consumer.accept()` at runtime
}
}
diff --git a/flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java b/flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java
index 8ea8f33a093..ee366d47b9d 100644
--- a/flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java
+++ b/flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java
@@ -18,15 +18,24 @@
package org.apache.flink.processfunction;
+import org.apache.flink.processfunction.api.DataStream;
import org.apache.flink.processfunction.api.ExecutionEnvironment;
+import java.util.function.Supplier;
+
public class ExecutionEnvironmentImpl extends ExecutionEnvironment {
public static ExecutionEnvironmentImpl newInstance() {
return new ExecutionEnvironmentImpl();
}
@Override
- public void foo() {
- System.out.println(getClass().getSimpleName());
+ public void execute() {
+ // TODO: submit job for execution
+ }
+
+ @Override
+ public <OUT> DataStream<OUT> tmpFromSupplierSource(Supplier<OUT> supplier) {
+ // TODO: keep calling `supplier.get()` at runtime
+ return new DataStreamImpl<>();
}
}
[flink] 01/14: Create modules.
Posted by gu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
guoweijie pushed a commit to branch process-func-api-poc-weijie
in repository https://gitbox.apache.org/repos/asf/flink.git
commit 1494ce4cecc0db7fb31c59460315f656e2970cd0
Author: Xintong Song <to...@gmail.com>
AuthorDate: Tue May 30 19:35:27 2023 +0800
Create modules.
---
flink-process-function-api/pom.xml | 38 ++++++++++++++++++++++++++++
flink-process-function-examples/pom.xml | 45 +++++++++++++++++++++++++++++++++
flink-process-function/pom.xml | 45 +++++++++++++++++++++++++++++++++
pom.xml | 5 +++-
4 files changed, 132 insertions(+), 1 deletion(-)
diff --git a/flink-process-function-api/pom.xml b/flink-process-function-api/pom.xml
new file mode 100644
index 00000000000..e7087f3acf1
--- /dev/null
+++ b/flink-process-function-api/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.flink</groupId>
+ <artifactId>flink-parent</artifactId>
+ <version>1.18-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>flink-process-function-api</artifactId>
+
+ <properties>
+ <maven.compiler.source>11</maven.compiler.source>
+ <maven.compiler.target>11</maven.compiler.target>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+</project>
diff --git a/flink-process-function-examples/pom.xml b/flink-process-function-examples/pom.xml
new file mode 100644
index 00000000000..c821e49443d
--- /dev/null
+++ b/flink-process-function-examples/pom.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.flink</groupId>
+ <artifactId>flink-parent</artifactId>
+ <version>1.18-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>flink-process-function-examples</artifactId>
+
+ <properties>
+ <maven.compiler.source>11</maven.compiler.source>
+ <maven.compiler.target>11</maven.compiler.target>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.flink</groupId>
+ <artifactId>flink-process-function-api</artifactId>
+ <version>1.18-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/flink-process-function/pom.xml b/flink-process-function/pom.xml
new file mode 100644
index 00000000000..1abe1dae837
--- /dev/null
+++ b/flink-process-function/pom.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.flink</groupId>
+ <artifactId>flink-parent</artifactId>
+ <version>1.18-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>flink-process-function</artifactId>
+
+ <properties>
+ <maven.compiler.source>11</maven.compiler.source>
+ <maven.compiler.target>11</maven.compiler.target>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.flink</groupId>
+ <artifactId>flink-process-function-api</artifactId>
+ <version>1.18-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/pom.xml b/pom.xml
index 8fbc45fa8d4..9ccfeacf6a0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -102,7 +102,10 @@ under the License.
<module>flink-kubernetes</module>
<module>flink-external-resources</module>
<module>tools/ci/flink-ci-tools</module>
- </modules>
+ <module>flink-process-function-api</module>
+ <module>flink-process-function</module>
+ <module>flink-process-function-examples</module>
+ </modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
[flink] 06/14: Using ConsumerFunction and SupplierFunction to avoid serialization exception and support lambda type inference.
Posted by gu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
guoweijie pushed a commit to branch process-func-api-poc-weijie
in repository https://gitbox.apache.org/repos/asf/flink.git
commit 242e9e57af79b7d59dd232b51b2cce5048f870cd
Author: Weijie Guo <re...@163.com>
AuthorDate: Wed May 31 15:52:08 2023 +0800
Using ConsumerFunction and SupplierFunction to avoid serialization exception and support lambda type inference.
---
.../pom.xml | 21 +++++++++++++--------
.../apache/flink/api/common/functions/Function.java | 20 ++++++++++----------
.../flink/util/function/ConsumerFunction.java | 17 +++++++++--------
.../flink/util/function/SupplierFunction.java | 19 ++++++++++---------
flink-core/pom.xml | 2 +-
.../flink-process-function-api/pom.xml | 8 ++++++++
.../flink/processfunction/api/DataStream.java | 4 ++--
.../processfunction/api/ExecutionEnvironment.java | 4 ++--
.../flink/processfunction/examples/SimpleMap.java | 4 +++-
.../flink/processfunction/DataStreamImpl.java | 5 ++---
.../processfunction/ExecutionEnvironmentImpl.java | 4 ++--
pom.xml | 1 +
12 files changed, 63 insertions(+), 46 deletions(-)
diff --git a/flink-process-function-parent/flink-process-function-api/pom.xml b/flink-core-api/pom.xml
similarity index 75%
copy from flink-process-function-parent/flink-process-function-api/pom.xml
copy to flink-core-api/pom.xml
index 1812f311ca4..d597c50bc1f 100644
--- a/flink-process-function-parent/flink-process-function-api/pom.xml
+++ b/flink-core-api/pom.xml
@@ -20,21 +20,26 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
<parent>
+ <artifactId>flink-parent</artifactId>
<groupId>org.apache.flink</groupId>
- <artifactId>flink-process-function-parent</artifactId>
<version>1.18-SNAPSHOT</version>
</parent>
+ <modelVersion>4.0.0</modelVersion>
- <artifactId>flink-process-function-api</artifactId>
-
- <packaging>jar</packaging>
+ <artifactId>flink-core-api</artifactId>
+ <name>Flink : Core API </name>
<properties>
- <maven.compiler.source>11</maven.compiler.source>
- <maven.compiler.target>11</maven.compiler.target>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <maven.compiler.source>8</maven.compiler.source>
+ <maven.compiler.target>8</maven.compiler.target>
</properties>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.flink</groupId>
+ <artifactId>flink-annotations</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
</project>
diff --git a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java b/flink-core-api/src/main/java/org/apache/flink/api/common/functions/Function.java
similarity index 67%
copy from flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
copy to flink-core-api/src/main/java/org/apache/flink/api/common/functions/Function.java
index 83c679b00e5..9069752dba2 100644
--- a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
+++ b/flink-core-api/src/main/java/org/apache/flink/api/common/functions/Function.java
@@ -16,15 +16,15 @@
* limitations under the License.
*/
-package org.apache.flink.processfunction;
+package org.apache.flink.api.common.functions;
-import org.apache.flink.processfunction.api.DataStream;
+import org.apache.flink.annotation.Public;
-import java.util.function.Consumer;
-
-public class DataStreamImpl<T> implements DataStream<T> {
- @Override
- public void tmpToConsumerSink(Consumer<T> consumer) {
- // TODO: keep calling `consumer.accept()` at runtime
- }
-}
+/**
+ * The base interface for all user-defined functions.
+ *
+ * <p>This interface is empty in order to allow extending interfaces to be SAM (single abstract
+ * method) interfaces that can be implemented via Java 8 lambdas.
+ */
+@Public
+public interface Function extends java.io.Serializable {}
diff --git a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java b/flink-core-api/src/main/java/org/apache/flink/util/function/ConsumerFunction.java
similarity index 71%
copy from flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
copy to flink-core-api/src/main/java/org/apache/flink/util/function/ConsumerFunction.java
index 83c679b00e5..5ba5bbfe0dd 100644
--- a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
+++ b/flink-core-api/src/main/java/org/apache/flink/util/function/ConsumerFunction.java
@@ -16,15 +16,16 @@
* limitations under the License.
*/
-package org.apache.flink.processfunction;
+package org.apache.flink.util.function;
-import org.apache.flink.processfunction.api.DataStream;
+import org.apache.flink.annotation.Public;
+import org.apache.flink.api.common.functions.Function;
import java.util.function.Consumer;
-public class DataStreamImpl<T> implements DataStream<T> {
- @Override
- public void tmpToConsumerSink(Consumer<T> consumer) {
- // TODO: keep calling `consumer.accept()` at runtime
- }
-}
+/**
+ * A {@link Consumer} but implements {@link Function} to support serialization and type inference.
+ */
+@Public
+@FunctionalInterface
+public interface ConsumerFunction<T> extends Consumer<T>, Function {}
diff --git a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java b/flink-core-api/src/main/java/org/apache/flink/util/function/SupplierFunction.java
similarity index 68%
copy from flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
copy to flink-core-api/src/main/java/org/apache/flink/util/function/SupplierFunction.java
index 83c679b00e5..303994594b6 100644
--- a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
+++ b/flink-core-api/src/main/java/org/apache/flink/util/function/SupplierFunction.java
@@ -16,15 +16,16 @@
* limitations under the License.
*/
-package org.apache.flink.processfunction;
+package org.apache.flink.util.function;
-import org.apache.flink.processfunction.api.DataStream;
+import org.apache.flink.annotation.Public;
+import org.apache.flink.api.common.functions.Function;
-import java.util.function.Consumer;
+import java.util.function.Supplier;
-public class DataStreamImpl<T> implements DataStream<T> {
- @Override
- public void tmpToConsumerSink(Consumer<T> consumer) {
- // TODO: keep calling `consumer.accept()` at runtime
- }
-}
+/**
+ * A {@link Supplier} but implements {@link Function} to support serialization and type inference.
+ */
+@Public
+@FunctionalInterface
+public interface SupplierFunction<T> extends Supplier<T>, Function {}
diff --git a/flink-core/pom.xml b/flink-core/pom.xml
index 5ba7b349639..3eb9d22900b 100644
--- a/flink-core/pom.xml
+++ b/flink-core/pom.xml
@@ -36,7 +36,7 @@ under the License.
<dependencies>
<dependency>
<groupId>org.apache.flink</groupId>
- <artifactId>flink-annotations</artifactId>
+ <artifactId>flink-core-api</artifactId>
<version>${project.version}</version>
</dependency>
diff --git a/flink-process-function-parent/flink-process-function-api/pom.xml b/flink-process-function-parent/flink-process-function-api/pom.xml
index 1812f311ca4..01b7166cbc7 100644
--- a/flink-process-function-parent/flink-process-function-api/pom.xml
+++ b/flink-process-function-parent/flink-process-function-api/pom.xml
@@ -37,4 +37,12 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.flink</groupId>
+ <artifactId>flink-core-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
+
</project>
diff --git a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/DataStream.java b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/DataStream.java
index 775b95faee3..70a0a5aa040 100644
--- a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/DataStream.java
+++ b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/DataStream.java
@@ -18,9 +18,9 @@
package org.apache.flink.processfunction.api;
-import java.util.function.Consumer;
+import org.apache.flink.util.function.ConsumerFunction;
public interface DataStream<T> {
/** TODO: Temporal method. Will revisit sink functions later. */
- void tmpToConsumerSink(Consumer<T> consumer);
+ void tmpToConsumerSink(ConsumerFunction<T> consumer);
}
diff --git a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java
index 36d7180d2c9..8f4d39427ce 100644
--- a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java
+++ b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java
@@ -18,7 +18,7 @@
package org.apache.flink.processfunction.api;
-import java.util.function.Supplier;
+import org.apache.flink.util.function.SupplierFunction;
public abstract class ExecutionEnvironment {
public static ExecutionEnvironment getExecutionEnvironment()
@@ -32,5 +32,5 @@ public abstract class ExecutionEnvironment {
public abstract void execute() throws Exception;
/** TODO: Temporal method. Will revisit source functions later. */
- public abstract <OUT> DataStream<OUT> tmpFromSupplierSource(Supplier<OUT> supplier);
+ public abstract <OUT> DataStream<OUT> tmpFromSupplierSource(SupplierFunction<OUT> supplier);
}
diff --git a/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java b/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
index a9f7212ba88..172b62c2853 100644
--- a/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
+++ b/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
@@ -24,7 +24,9 @@ import org.apache.flink.processfunction.api.ExecutionEnvironment;
public class SimpleMap {
public static void main(String[] args) throws Exception {
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
- env.tmpFromSupplierSource(System::currentTimeMillis).tmpToConsumerSink(System.out::println);
+ env.tmpFromSupplierSource(System::currentTimeMillis)
+ // Don't use Lambda reference as PrintStream is not serializable.
+ .tmpToConsumerSink((data) -> System.out.println(data));
env.execute();
}
}
diff --git a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java b/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
index 83c679b00e5..72cb6d276f5 100644
--- a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
+++ b/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
@@ -19,12 +19,11 @@
package org.apache.flink.processfunction;
import org.apache.flink.processfunction.api.DataStream;
-
-import java.util.function.Consumer;
+import org.apache.flink.util.function.ConsumerFunction;
public class DataStreamImpl<T> implements DataStream<T> {
@Override
- public void tmpToConsumerSink(Consumer<T> consumer) {
+ public void tmpToConsumerSink(ConsumerFunction<T> consumer) {
// TODO: keep calling `consumer.accept()` at runtime
}
}
diff --git a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java b/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java
index c5554f23fe4..be0401df86c 100644
--- a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java
+++ b/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java
@@ -33,12 +33,12 @@ import org.apache.flink.streaming.api.graph.StreamGraph;
import org.apache.flink.streaming.api.graph.StreamGraphGenerator;
import org.apache.flink.util.ExceptionUtils;
import org.apache.flink.util.FlinkException;
+import org.apache.flink.util.function.SupplierFunction;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
-import java.util.function.Supplier;
import static org.apache.flink.streaming.api.graph.StreamGraphGenerator.DEFAULT_TIME_CHARACTERISTIC;
import static org.apache.flink.util.Preconditions.checkNotNull;
@@ -63,7 +63,7 @@ public class ExecutionEnvironmentImpl extends ExecutionEnvironment {
}
@Override
- public <OUT> DataStream<OUT> tmpFromSupplierSource(Supplier<OUT> supplier) {
+ public <OUT> DataStream<OUT> tmpFromSupplierSource(SupplierFunction<OUT> supplier) {
// TODO: keep calling `supplier.get()` at runtime
return new DataStreamImpl<>();
}
diff --git a/pom.xml b/pom.xml
index 3a7ba4f4d65..73862a26b22 100644
--- a/pom.xml
+++ b/pom.xml
@@ -66,6 +66,7 @@ under the License.
<module>flink-annotations</module>
<module>flink-architecture-tests</module>
<module>flink-core</module>
+ <module>flink-core-api</module>
<module>flink-java</module>
<module>flink-scala</module>
<module>flink-filesystems</module>
[flink] 05/14: Supports submit job to minicluster environment.
Posted by gu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
guoweijie pushed a commit to branch process-func-api-poc-weijie
in repository https://gitbox.apache.org/repos/asf/flink.git
commit 9616f46377db055a3e7a1b8323313f10e4f7b68e
Author: Weijie Guo <re...@163.com>
AuthorDate: Wed May 31 12:12:23 2023 +0800
Supports submit job to minicluster environment.
---
.../processfunction/api/ExecutionEnvironment.java | 2 +-
.../flink-process-function-examples/pom.xml | 2 +-
.../flink-process-function/pom.xml | 14 ++-
.../processfunction/ExecutionEnvironmentImpl.java | 110 ++++++++++++++++++++-
4 files changed, 123 insertions(+), 5 deletions(-)
diff --git a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java
index 6335c9e33b8..36d7180d2c9 100644
--- a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java
+++ b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java
@@ -29,7 +29,7 @@ public abstract class ExecutionEnvironment {
.invoke(null);
}
- public abstract void execute();
+ public abstract void execute() throws Exception;
/** TODO: Temporal method. Will revisit source functions later. */
public abstract <OUT> DataStream<OUT> tmpFromSupplierSource(Supplier<OUT> supplier);
diff --git a/flink-process-function-parent/flink-process-function-examples/pom.xml b/flink-process-function-parent/flink-process-function-examples/pom.xml
index a37a7ad21d3..c223300a5b0 100644
--- a/flink-process-function-parent/flink-process-function-examples/pom.xml
+++ b/flink-process-function-parent/flink-process-function-examples/pom.xml
@@ -41,7 +41,7 @@
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-process-function-api</artifactId>
- <version>1.18-SNAPSHOT</version>
+ <version>${project.version}</version>
</dependency>
</dependencies>
</project>
diff --git a/flink-process-function-parent/flink-process-function/pom.xml b/flink-process-function-parent/flink-process-function/pom.xml
index 92609ba3938..f36526d1fe4 100644
--- a/flink-process-function-parent/flink-process-function/pom.xml
+++ b/flink-process-function-parent/flink-process-function/pom.xml
@@ -41,7 +41,19 @@
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-process-function-api</artifactId>
- <version>1.18-SNAPSHOT</version>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.flink</groupId>
+ <artifactId>flink-streaming-java</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.flink</groupId>
+ <artifactId>flink-clients</artifactId>
+ <version>${project.version}</version>
</dependency>
</dependencies>
</project>
diff --git a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java b/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java
index ee366d47b9d..c5554f23fe4 100644
--- a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java
+++ b/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java
@@ -18,19 +18,48 @@
package org.apache.flink.processfunction;
+import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.dag.Transformation;
+import org.apache.flink.client.deployment.executors.LocalExecutorFactory;
+import org.apache.flink.configuration.Configuration;
+import org.apache.flink.configuration.DeploymentOptions;
+import org.apache.flink.core.execution.JobClient;
+import org.apache.flink.core.execution.PipelineExecutor;
+import org.apache.flink.core.execution.PipelineExecutorFactory;
import org.apache.flink.processfunction.api.DataStream;
import org.apache.flink.processfunction.api.ExecutionEnvironment;
+import org.apache.flink.streaming.api.environment.CheckpointConfig;
+import org.apache.flink.streaming.api.graph.StreamGraph;
+import org.apache.flink.streaming.api.graph.StreamGraphGenerator;
+import org.apache.flink.util.ExceptionUtils;
+import org.apache.flink.util.FlinkException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
import java.util.function.Supplier;
+import static org.apache.flink.streaming.api.graph.StreamGraphGenerator.DEFAULT_TIME_CHARACTERISTIC;
+import static org.apache.flink.util.Preconditions.checkNotNull;
+
public class ExecutionEnvironmentImpl extends ExecutionEnvironment {
+ private final List<Transformation<?>> transformations = new ArrayList<>();
+
+ private final ExecutionConfig config = new ExecutionConfig();
+
+ private final Configuration configuration = new Configuration();
+
public static ExecutionEnvironmentImpl newInstance() {
return new ExecutionEnvironmentImpl();
}
@Override
- public void execute() {
- // TODO: submit job for execution
+ public void execute() throws Exception {
+ StreamGraph streamGraph = getStreamGraph();
+ streamGraph.setJobName("Process Function Api Test Job");
+ execute(streamGraph);
+ // TODO Supports cache for DataStream.
}
@Override
@@ -38,4 +67,81 @@ public class ExecutionEnvironmentImpl extends ExecutionEnvironment {
// TODO: keep calling `supplier.get()` at runtime
return new DataStreamImpl<>();
}
+
+ // -----------------------------------------------
+ // Internal Methods
+ // -----------------------------------------------
+
+ private void execute(StreamGraph streamGraph) throws Exception {
+ final JobClient jobClient = executeAsync(streamGraph);
+
+ try {
+ if (configuration.getBoolean(DeploymentOptions.ATTACHED)) {
+ jobClient.getJobExecutionResult().get();
+ }
+ // TODO Supports handle JobExecutionResult, including execution time and accumulator.
+
+ // TODO Supports job listeners.
+ } catch (Throwable t) {
+ // get() on the JobExecutionResult Future will throw an ExecutionException. This
+ // behaviour was largely not there in Flink versions before the PipelineExecutor
+ // refactoring so we should strip that exception.
+ Throwable strippedException = ExceptionUtils.stripExecutionException(t);
+ ExceptionUtils.rethrowException(strippedException);
+ }
+ }
+
+ private JobClient executeAsync(StreamGraph streamGraph) throws Exception {
+ checkNotNull(streamGraph, "StreamGraph cannot be null.");
+ final PipelineExecutor executor = getPipelineExecutor();
+
+ CompletableFuture<JobClient> jobClientFuture =
+ executor.execute(streamGraph, configuration, getClass().getClassLoader());
+
+ try {
+ // TODO Supports job listeners.
+ // TODO Supports DataStream collect.
+ return jobClientFuture.get();
+ } catch (ExecutionException executionException) {
+ final Throwable strippedException =
+ ExceptionUtils.stripExecutionException(executionException);
+ throw new FlinkException(
+ String.format("Failed to execute job '%s'.", streamGraph.getJobName()),
+ strippedException);
+ }
+ }
+
+ /** Get {@link StreamGraph} and clear all transformations. */
+ private StreamGraph getStreamGraph() {
+ final StreamGraph streamGraph = getStreamGraphGenerator(transformations).generate();
+ transformations.clear();
+ return streamGraph;
+ }
+
+ private StreamGraphGenerator getStreamGraphGenerator(List<Transformation<?>> transformations) {
+ if (transformations.size() <= 0) {
+ throw new IllegalStateException(
+ "No operators defined in streaming topology. Cannot execute.");
+ }
+
+ // We copy the transformation so that newly added transformations cannot intervene with the
+ // stream graph generation.
+ return new StreamGraphGenerator(
+ new ArrayList<>(transformations),
+ config,
+ new CheckpointConfig(),
+ configuration)
+ // TODO Re-Consider should we expose the logic of controlling chains to users.
+ .setChaining(true)
+ .setTimeCharacteristic(DEFAULT_TIME_CHARACTERISTIC);
+ }
+
+ private PipelineExecutor getPipelineExecutor() {
+ // TODO Get executor factory via SPI.
+ PipelineExecutorFactory executorFactory = new LocalExecutorFactory();
+ // TODO Local executor only expect attached mode, remove this after other executor
+ // supported.
+ configuration.set(DeploymentOptions.ATTACHED, true);
+ return executorFactory.getExecutor(configuration);
+ }
}
[flink] 13/14: Extracts type information related interfaces and base classes to core-api module
Posted by gu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
guoweijie pushed a commit to branch process-func-api-poc-weijie
in repository https://gitbox.apache.org/repos/asf/flink.git
commit 51bfb5d13878dcbf93895f02f063e67f4eadc61d
Author: Weijie Guo <re...@163.com>
AuthorDate: Tue Jun 6 15:15:44 2023 +0800
Extracts type information related interfaces and base classes to core-api module
---
.../operator/CompactorRequestTypeInfo.java | 4 +-
.../connector/file/table/batch/BatchSink.java | 6 +-
.../connector/file/table/stream/StreamingSink.java | 12 +-
.../file/table/stream/PartitionCommitInfoTest.java | 5 +-
.../flink/connectors/hive/HiveTableSink.java | 4 +-
.../connectors/kafka/FlinkKafkaProducer.java | 4 +-
.../sink/testutils/KafkaSinkExternalContext.java | 3 +-
.../connector/kafka/source/KafkaSourceITCase.java | 5 +-
.../testutils/KafkaSourceExternalContext.java | 3 +-
.../connectors/kafka/KafkaConsumerTestBase.java | 25 +--
.../connectors/kafka/KafkaProducerTestBase.java | 3 +-
.../flink/api/java/typeutils/WritableTypeInfo.java | 3 +-
flink-core-api/pom.xml | 7 +
.../flink/api/common/SerializableSerializer.java | 27 +--
.../apache/flink/api/common/SerializerContext.java | 59 ++++++
.../api/common/typeinfo/BasicTypeDescriptor.java | 23 +--
.../flink/api/common/typeinfo/PojoDescriptor.java | 42 +++--
.../api/common/typeinfo/TupleTypeDescriptor.java | 27 +--
.../flink/api/common/typeinfo/TypeDescriptor.java | 26 +--
.../flink/api/common/typeinfo/TypeDescriptors.java | 33 ++--
.../apache/flink/api/common/typeinfo/TypeInfo.java | 4 +-
.../flink/api/common/typeinfo/TypeInfoFactory.java | 0
.../flink/api/common/typeinfo/TypeInformation.java | 56 +-----
.../flink/api/common/typeutils/TypeSerializer.java | 198 +++++++++++++++++++++
.../TypeSerializerSchemaCompatibility.java | 195 ++++++++++++++++++++
.../common/typeutils/TypeSerializerSnapshot.java | 36 ----
.../org/apache/flink/api/java/tuple/Tuple.java | 0
.../org/apache/flink/api/java/tuple/Tuple0.java | 0
.../org/apache/flink/api/java/tuple/Tuple1.java | 0
.../org/apache/flink/api/java/tuple/Tuple10.java | 0
.../org/apache/flink/api/java/tuple/Tuple11.java | 0
.../org/apache/flink/api/java/tuple/Tuple12.java | 0
.../org/apache/flink/api/java/tuple/Tuple13.java | 0
.../org/apache/flink/api/java/tuple/Tuple14.java | 0
.../org/apache/flink/api/java/tuple/Tuple15.java | 0
.../org/apache/flink/api/java/tuple/Tuple16.java | 0
.../org/apache/flink/api/java/tuple/Tuple17.java | 0
.../org/apache/flink/api/java/tuple/Tuple18.java | 0
.../org/apache/flink/api/java/tuple/Tuple19.java | 0
.../org/apache/flink/api/java/tuple/Tuple2.java | 0
.../org/apache/flink/api/java/tuple/Tuple20.java | 0
.../org/apache/flink/api/java/tuple/Tuple21.java | 0
.../org/apache/flink/api/java/tuple/Tuple22.java | 0
.../org/apache/flink/api/java/tuple/Tuple23.java | 0
.../org/apache/flink/api/java/tuple/Tuple24.java | 0
.../org/apache/flink/api/java/tuple/Tuple25.java | 0
.../org/apache/flink/api/java/tuple/Tuple3.java | 0
.../org/apache/flink/api/java/tuple/Tuple4.java | 0
.../org/apache/flink/api/java/tuple/Tuple5.java | 0
.../org/apache/flink/api/java/tuple/Tuple6.java | 0
.../org/apache/flink/api/java/tuple/Tuple7.java | 0
.../org/apache/flink/api/java/tuple/Tuple8.java | 0
.../org/apache/flink/api/java/tuple/Tuple9.java | 0
.../api/java/tuple/builder/Tuple0Builder.java | 0
.../api/java/tuple/builder/Tuple10Builder.java | 0
.../api/java/tuple/builder/Tuple11Builder.java | 0
.../api/java/tuple/builder/Tuple12Builder.java | 0
.../api/java/tuple/builder/Tuple13Builder.java | 0
.../api/java/tuple/builder/Tuple14Builder.java | 0
.../api/java/tuple/builder/Tuple15Builder.java | 0
.../api/java/tuple/builder/Tuple16Builder.java | 0
.../api/java/tuple/builder/Tuple17Builder.java | 0
.../api/java/tuple/builder/Tuple18Builder.java | 0
.../api/java/tuple/builder/Tuple19Builder.java | 0
.../api/java/tuple/builder/Tuple1Builder.java | 0
.../api/java/tuple/builder/Tuple20Builder.java | 0
.../api/java/tuple/builder/Tuple21Builder.java | 0
.../api/java/tuple/builder/Tuple22Builder.java | 0
.../api/java/tuple/builder/Tuple23Builder.java | 0
.../api/java/tuple/builder/Tuple24Builder.java | 0
.../api/java/tuple/builder/Tuple25Builder.java | 0
.../api/java/tuple/builder/Tuple2Builder.java | 0
.../api/java/tuple/builder/Tuple3Builder.java | 0
.../api/java/tuple/builder/Tuple4Builder.java | 0
.../api/java/tuple/builder/Tuple5Builder.java | 0
.../api/java/tuple/builder/Tuple6Builder.java | 0
.../api/java/tuple/builder/Tuple7Builder.java | 0
.../api/java/tuple/builder/Tuple8Builder.java | 0
.../api/java/tuple/builder/Tuple9Builder.java | 0
.../apache/flink/core/memory/DataInputView.java | 3 +-
.../apache/flink/core/memory/DataOutputView.java | 3 +-
.../org/apache/flink/types/NullFieldException.java | 0
.../java/org/apache/flink/util/Preconditions.java | 0
.../java/org/apache/flink/util/StringUtils.java | 28 ++-
.../apache/flink/api/common/ExecutionConfig.java | 19 +-
.../AbstractDeserializationSchema.java | 3 +-
.../api/common/typeinfo/BasicArrayTypeInfo.java | 4 +-
.../flink/api/common/typeinfo/BasicTypeInfo.java | 3 +-
.../api/common/typeinfo/LocalTimeTypeInfo.java | 3 +-
.../flink/api/common/typeinfo/NothingTypeInfo.java | 4 +-
.../common/typeinfo/PrimitiveArrayTypeInfo.java | 3 +-
.../flink/api/common/typeinfo/SqlTimeTypeInfo.java | 3 +-
.../api/common/typeinfo/TypeInformationUtils.java | 122 +++++++++++++
.../apache/flink/api/common/typeinfo/Types.java | 5 +-
.../NestedSerializersSnapshotDelegate.java | 4 +-
.../TypeSerializerSnapshotSerializationUtil.java | 4 +-
.../typeutils/TypeSerializerSnapshotUtils.java | 61 +++++++
.../flink/api/java/typeutils/EitherTypeInfo.java | 7 +-
.../flink/api/java/typeutils/EnumTypeInfo.java | 3 +-
.../flink/api/java/typeutils/GenericTypeInfo.java | 7 +-
.../flink/api/java/typeutils/ListTypeInfo.java | 10 +-
.../flink/api/java/typeutils/MapTypeInfo.java | 16 +-
.../flink/api/java/typeutils/MissingTypeInfo.java | 4 +-
.../api/java/typeutils/ObjectArrayTypeInfo.java | 4 +-
.../flink/api/java/typeutils/PojoTypeInfo.java | 17 +-
.../flink/api/java/typeutils/RowTypeInfo.java | 5 +-
.../flink/api/java/typeutils/TupleTypeInfo.java | 6 +-
.../flink/api/java/typeutils/ValueTypeInfo.java | 3 +-
.../java/typeutils/runtime/KryoRegistration.java | 11 +-
.../api/java/typeutils/runtime/PojoSerializer.java | 35 ++--
.../typeutils/runtime/PojoSerializerSnapshot.java | 2 +-
.../runtime/PojoSerializerSnapshotData.java | 9 +-
.../typeutils/runtime/kryo/KryoSerializer.java | 40 ++---
.../runtime/kryo/KryoSerializerSnapshot.java | 2 +-
.../runtime/kryo/KryoSerializerSnapshotData.java | 2 +-
.../AbstractDeserializationSchemaTest.java | 11 +-
.../TypeDescriptorToTypeInformationTest.java | 76 ++++++++
.../api/common/typeinfo/TypeInformationTest.java | 14 +-
.../common/typeutils/CompositeSerializerTest.java | 4 +-
.../CompositeTypeSerializerSnapshotTest.java | 8 +-
.../common/typeutils/TypeInformationTestBase.java | 4 +-
.../api/java/typeutils/PojoTypeExtractionTest.java | 17 +-
.../api/java/typeutils/TupleTypeInfoTest.java | 4 +-
.../api/java/typeutils/TypeExtractorTest.java | 102 ++++++-----
.../api/java/typeutils/TypeInfoFactoryTest.java | 14 +-
.../MultidimensionalArraySerializerTest.java | 3 +-
.../runtime/kryo/KryoSerializerSnapshotTest.java | 5 +-
.../tests/SingleThreadAccessCheckingTypeInfo.java | 9 +-
.../streaming/tests/SlidingWindowCheckMapper.java | 4 +-
.../tests/queryablestate/QsStateClient.java | 6 +-
.../tests/queryablestate/QsStateProducer.java | 6 +-
.../apache/flink/test/StatefulStreamingJob.java | 6 +-
.../kafka/test/base/KafkaEventSchema.java | 3 +-
.../examples/join/WindowJoinSampleData.java | 6 +-
.../kafka/EventDeSerializationSchema.java | 3 +-
.../flink/formats/avro/typeutils/AvroTypeInfo.java | 4 +-
.../avro/typeutils/GenericRecordAvroTypeInfo.java | 4 +-
.../avro/utils/AvroKryoSerializerUtils.java | 3 +-
.../flink/formats/avro/AvroBulkFormatITCase.java | 3 +-
.../formats/avro/AvroStreamingFileSinkITCase.java | 6 +-
.../formats/compress/CompressionFactoryITCase.java | 5 +-
.../apache/flink/formats/csv/CsvReaderFormat.java | 3 +-
.../flink/formats/csv/CsvReaderFormatTest.java | 10 +-
.../flink/formats/csv/DataStreamCsvITCase.java | 4 +-
.../bulk/HadoopPathBasedPartFileWriterITCase.java | 4 +-
.../flink/orc/writer/OrcBulkWriterITCase.java | 5 +-
.../avro/AvroParquetStreamingFileSinkITCase.java | 6 +-
.../ParquetProtoStreamingFileSinkITCase.java | 5 +-
.../SequenceStreamingFileSinkITCase.java | 4 +-
.../api/java/operators/SingleInputUdfOperator.java | 5 +-
.../api/java/operators/TwoInputUdfOperator.java | 5 +-
.../base/CoGroupOperatorCollectionTest.java | 3 +-
.../operators/base/GroupReduceOperatorTest.java | 3 +-
.../common/operators/base/ReduceOperatorTest.java | 3 +-
.../apache/flink/cep/operator/CEPOperatorTest.java | 4 +-
.../apache/flink/state/api/SavepointWriter.java | 4 +-
.../state/api/StateBootstrapTransformation.java | 5 +-
.../typeinfo/python/PickledByteArrayTypeInfo.java | 4 +-
.../client/VoidNamespaceTypeInfo.java | 4 +-
.../flink/runtime/state/VoidNamespaceTypeInfo.java | 4 +-
.../operators/sort/LargeRecordHandlerTest.java | 8 +-
.../api/scala/codegen/TypeInformationGen.scala | 9 +-
.../scala/org/apache/flink/api/scala/package.scala | 4 +-
.../flink/api/scala/typeutils/EitherTypeInfo.scala | 4 +-
.../api/scala/typeutils/EnumValueTypeInfo.scala | 4 +-
.../flink/api/scala/typeutils/OptionTypeInfo.scala | 4 +-
.../api/scala/typeutils/ScalaNothingTypeInfo.scala | 4 +-
.../api/scala/typeutils/TraversableTypeInfo.scala | 4 +-
.../flink/api/scala/typeutils/TrySerializer.scala | 4 +-
.../flink/api/scala/typeutils/TryTypeInfo.scala | 4 +-
.../flink/api/scala/typeutils/UnitTypeInfo.scala | 4 +-
.../scala/typeutils/CaseClassTypeInfoTest.scala | 6 +-
.../scala/typeutils/TraversableTypeInfoTest.scala | 6 +-
.../api/scala/typeutils/TypeInfoFactoryTest.scala | 5 +-
.../state/changelog/ChangelogListStateTest.java | 5 +-
.../state/changelog/ChangelogMapStateTest.java | 5 +-
.../sink2/CommittableMessageTypeInfo.java | 4 +-
.../streaming/api/datastream/CoGroupedStreams.java | 7 +-
.../streaming/api/datastream/IterativeStream.java | 5 +-
.../api/datastream/SingleOutputStreamOperator.java | 5 +-
.../functions/sink/TwoPhaseCommitSinkFunction.java | 6 +-
.../InternalTimersSnapshotReaderWriters.java | 9 +-
.../apache/flink/streaming/api/DataStreamTest.java | 6 +-
.../api/StreamExecutionEnvironmentTest.java | 3 +-
.../source/InputFormatSourceFunctionTest.java | 4 +-
.../StreamGraphGeneratorBatchExecutionTest.java | 7 +-
...amGraphGeneratorExecutionModeDetectionTest.java | 4 +-
.../api/graph/StreamingJobGraphGeneratorTest.java | 8 +-
.../api/operators/co/IntervalJoinOperatorTest.java | 13 +-
.../windowing/EvictingWindowOperatorTest.java | 3 +-
.../windowing/WindowOperatorMigrationTest.java | 11 +-
.../operators/windowing/WindowOperatorTest.java | 3 +-
...ToStreamOperatorRecipientExactlyOnceITCase.java | 6 +-
.../util/ProcessFunctionTestHarnessesTest.java | 6 +-
.../util/typeutils/FieldAccessorTest.java | 5 +-
.../flink/table/dataview/ListViewTypeInfo.java | 6 +-
.../flink/table/dataview/MapViewTypeInfo.java | 8 +-
.../apache/flink/table/types/logical/RawType.java | 6 +-
.../table/typeutils/TimeIndicatorTypeInfo.java | 4 +-
.../table/typeutils/TimeIntervalTypeInfo.java | 3 +-
.../table/types/TypeInfoDataTypeConverterTest.java | 10 +-
.../runtime/stream/sql/DataStreamJavaITCase.java | 6 +-
.../runtime/stream/sql/join/JoinReorderITCase.java | 4 +-
.../runtime/typeutils/AbstractMapTypeInfo.java | 5 +-
.../runtime/typeutils/DecimalDataTypeInfo.java | 4 +-
.../table/runtime/typeutils/ExternalTypeInfo.java | 4 +-
.../table/runtime/typeutils/InternalTypeInfo.java | 4 +-
.../table/runtime/typeutils/SortedMapTypeInfo.java | 8 +-
.../runtime/typeutils/StringDataTypeInfo.java | 4 +-
.../runtime/typeutils/TimestampDataTypeInfo.java | 4 +-
.../formats/raw/RawFormatSerDeSchemaTest.java | 4 +-
.../java/org/apache/flink/types/PojoTestUtils.java | 5 +-
.../operators/lifecycle/graph/TestJobBuilders.java | 12 +-
.../IncrementalStateReuseAfterFailureITCase.java | 6 +-
.../NotifyCheckpointAbortedITCase.java | 9 +-
.../test/checkpointing/RegionFailoverITCase.java | 4 +-
.../checkpointing/UnalignedCheckpointITCase.java | 4 +-
.../scheduling/SpeculativeSchedulerITCase.java | 4 +-
.../restore/StreamOperatorSnapshotRestoreTest.java | 6 +-
.../ReinterpretDataStreamAsKeyedStreamITCase.java | 3 +-
.../streaming/runtime/LatencyMarkerITCase.java | 4 +-
.../flink/yarn/testjob/YarnTestArchiveJob.java | 3 +-
.../flink/yarn/testjob/YarnTestCacheJob.java | 5 +-
223 files changed, 1363 insertions(+), 661 deletions(-)
diff --git a/flink-connectors/flink-connector-files/src/main/java/org/apache/flink/connector/file/sink/compactor/operator/CompactorRequestTypeInfo.java b/flink-connectors/flink-connector-files/src/main/java/org/apache/flink/connector/file/sink/compactor/operator/CompactorRequestTypeInfo.java
index b9bbf87f890..1810e8ee834 100644
--- a/flink-connectors/flink-connector-files/src/main/java/org/apache/flink/connector/file/sink/compactor/operator/CompactorRequestTypeInfo.java
+++ b/flink-connectors/flink-connector-files/src/main/java/org/apache/flink/connector/file/sink/compactor/operator/CompactorRequestTypeInfo.java
@@ -19,7 +19,7 @@
package org.apache.flink.connector.file.sink.compactor.operator;
import org.apache.flink.annotation.Internal;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.connector.file.sink.FileSinkCommittable;
@@ -76,7 +76,7 @@ public class CompactorRequestTypeInfo extends TypeInformation<CompactorRequest>
}
@Override
- public TypeSerializer<CompactorRequest> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<CompactorRequest> createSerializer(SerializerContext serializerContext) {
return new SimpleVersionedSerializerTypeSerializerProxy<>(
() -> new CompactorRequestSerializer(createCommittableSerializer()));
}
diff --git a/flink-connectors/flink-connector-files/src/main/java/org/apache/flink/connector/file/table/batch/BatchSink.java b/flink-connectors/flink-connector-files/src/main/java/org/apache/flink/connector/file/table/batch/BatchSink.java
index 43f49a7910b..94187c941a5 100644
--- a/flink-connectors/flink-connector-files/src/main/java/org/apache/flink/connector/file/table/batch/BatchSink.java
+++ b/flink-connectors/flink-connector-files/src/main/java/org/apache/flink/connector/file/table/batch/BatchSink.java
@@ -19,7 +19,7 @@
package org.apache.flink.connector.file.table.batch;
import org.apache.flink.annotation.Internal;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.connector.file.table.FileSystemFactory;
import org.apache.flink.connector.file.table.FileSystemOutputFormat;
import org.apache.flink.connector.file.table.PartitionCommitPolicyFactory;
@@ -106,14 +106,14 @@ public class BatchSink {
dataStream
.transform(
COORDINATOR_OP_NAME,
- TypeInformation.of(CompactMessages.CoordinatorOutput.class),
+ TypeInformationUtils.of(CompactMessages.CoordinatorOutput.class),
new BatchCompactCoordinator(
fsSupplier, compactAverageSize, compactTargetSize))
.setParallelism(1)
.setMaxParallelism(1)
.transform(
COMPACT_OP_NAME,
- TypeInformation.of(CompactMessages.CompactOutput.class),
+ TypeInformationUtils.of(CompactMessages.CompactOutput.class),
new BatchCompactOperator<>(fsSupplier, readFactory, writerFactory));
transform
.getTransformation()
diff --git a/flink-connectors/flink-connector-files/src/main/java/org/apache/flink/connector/file/table/stream/StreamingSink.java b/flink-connectors/flink-connector-files/src/main/java/org/apache/flink/connector/file/table/stream/StreamingSink.java
index a18d7b16ab9..b3c210930f3 100644
--- a/flink-connectors/flink-connector-files/src/main/java/org/apache/flink/connector/file/table/stream/StreamingSink.java
+++ b/flink-connectors/flink-connector-files/src/main/java/org/apache/flink/connector/file/table/stream/StreamingSink.java
@@ -19,7 +19,7 @@
package org.apache.flink.connector.file.table.stream;
import org.apache.flink.annotation.Internal;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeinfo.Types;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.connector.file.table.FileSystemFactory;
@@ -75,7 +75,7 @@ public class StreamingSink {
SingleOutputStreamOperator<PartitionCommitInfo> writerStream =
inputStream.transform(
StreamingFileWriter.class.getSimpleName(),
- TypeInformation.of(PartitionCommitInfo.class),
+ TypeInformationUtils.of(PartitionCommitInfo.class),
fileWriter);
writerStream.getTransformation().setParallelism(parallelism, parallelismConfigured);
providerContext.generateUid("streaming-writer").ifPresent(writerStream::uid);
@@ -109,7 +109,9 @@ public class StreamingSink {
SingleOutputStreamOperator<CoordinatorInput> writerStream =
inputStream.transform(
- "streaming-writer", TypeInformation.of(CoordinatorInput.class), writer);
+ "streaming-writer",
+ TypeInformationUtils.of(CoordinatorInput.class),
+ writer);
writerStream.getTransformation().setParallelism(parallelism, parallelismConfigured);
providerContext.generateUid("streaming-writer").ifPresent(writerStream::uid);
@@ -118,7 +120,7 @@ public class StreamingSink {
writerStream
.transform(
"compact-coordinator",
- TypeInformation.of(CoordinatorOutput.class),
+ TypeInformationUtils.of(CoordinatorOutput.class),
coordinator)
.setParallelism(1)
.setMaxParallelism(1);
@@ -137,7 +139,7 @@ public class StreamingSink {
.broadcast()
.transform(
"compact-operator",
- TypeInformation.of(PartitionCommitInfo.class),
+ TypeInformationUtils.of(PartitionCommitInfo.class),
compacter);
operatorStream.getTransformation().setParallelism(parallelism, parallelismConfigured);
providerContext.generateUid("compact-operator").ifPresent(operatorStream::uid);
diff --git a/flink-connectors/flink-connector-files/src/test/java/org/apache/flink/connector/file/table/stream/PartitionCommitInfoTest.java b/flink-connectors/flink-connector-files/src/test/java/org/apache/flink/connector/file/table/stream/PartitionCommitInfoTest.java
index 1b2ee1f6fbf..b77cf5c21a9 100644
--- a/flink-connectors/flink-connector-files/src/test/java/org/apache/flink/connector/file/table/stream/PartitionCommitInfoTest.java
+++ b/flink-connectors/flink-connector-files/src/test/java/org/apache/flink/connector/file/table/stream/PartitionCommitInfoTest.java
@@ -19,7 +19,7 @@
package org.apache.flink.connector.file.table.stream;
import org.apache.flink.api.common.ExecutionConfig;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.junit.jupiter.api.Test;
@@ -32,6 +32,7 @@ public class PartitionCommitInfoTest {
ExecutionConfig executionConfig = new ExecutionConfig();
executionConfig.disableGenericTypes();
assertNotNull(
- TypeInformation.of(PartitionCommitInfo.class).createSerializer(executionConfig));
+ TypeInformationUtils.of(PartitionCommitInfo.class)
+ .createSerializer(executionConfig));
}
}
diff --git a/flink-connectors/flink-connector-hive/src/main/java/org/apache/flink/connectors/hive/HiveTableSink.java b/flink-connectors/flink-connector-hive/src/main/java/org/apache/flink/connectors/hive/HiveTableSink.java
index 7bc16fc58fd..59b52070e8d 100644
--- a/flink-connectors/flink-connector-hive/src/main/java/org/apache/flink/connectors/hive/HiveTableSink.java
+++ b/flink-connectors/flink-connector-hive/src/main/java/org/apache/flink/connectors/hive/HiveTableSink.java
@@ -20,7 +20,7 @@ package org.apache.flink.connectors.hive;
import org.apache.flink.annotation.VisibleForTesting;
import org.apache.flink.api.common.serialization.BulkWriter;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.configuration.ReadableConfig;
import org.apache.flink.connector.file.table.EmptyMetaStoreFactory;
import org.apache.flink.connector.file.table.FileSystemConnectorOptions;
@@ -481,7 +481,7 @@ public class HiveTableSink implements DynamicTableSink, SupportsPartitioning, Su
DataStream<CoordinatorInput> writerDataStream =
map.transform(
BATCH_COMPACT_WRITER_OP_NAME,
- TypeInformation.of(CoordinatorInput.class),
+ TypeInformationUtils.of(CoordinatorInput.class),
new BatchFileWriter<>(
fsFactory,
tmpPath,
diff --git a/flink-connectors/flink-connector-kafka/src/main/java/org/apache/flink/streaming/connectors/kafka/FlinkKafkaProducer.java b/flink-connectors/flink-connector-kafka/src/main/java/org/apache/flink/streaming/connectors/kafka/FlinkKafkaProducer.java
index ca81cc8e391..6d185002e80 100644
--- a/flink-connectors/flink-connector-kafka/src/main/java/org/apache/flink/streaming/connectors/kafka/FlinkKafkaProducer.java
+++ b/flink-connectors/flink-connector-kafka/src/main/java/org/apache/flink/streaming/connectors/kafka/FlinkKafkaProducer.java
@@ -27,7 +27,7 @@ import org.apache.flink.api.common.serialization.SerializationSchema;
import org.apache.flink.api.common.state.ListState;
import org.apache.flink.api.common.state.ListStateDescriptor;
import org.apache.flink.api.common.time.Time;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeutils.SimpleTypeSerializerSnapshot;
import org.apache.flink.api.common.typeutils.TypeSerializerSnapshot;
import org.apache.flink.api.common.typeutils.base.TypeSerializerSingleton;
@@ -197,7 +197,7 @@ public class FlinkKafkaProducer<IN>
NEXT_TRANSACTIONAL_ID_HINT_DESCRIPTOR =
new ListStateDescriptor<>(
"next-transactional-id-hint",
- TypeInformation.of(NextTransactionalIdHint.class));
+ TypeInformationUtils.of(NextTransactionalIdHint.class));
private static final ListStateDescriptor<FlinkKafkaProducer.NextTransactionalIdHint>
NEXT_TRANSACTIONAL_ID_HINT_DESCRIPTOR_V2 =
diff --git a/flink-connectors/flink-connector-kafka/src/test/java/org/apache/flink/connector/kafka/sink/testutils/KafkaSinkExternalContext.java b/flink-connectors/flink-connector-kafka/src/test/java/org/apache/flink/connector/kafka/sink/testutils/KafkaSinkExternalContext.java
index ae260489ef0..a8a568ad13f 100644
--- a/flink-connectors/flink-connector-kafka/src/test/java/org/apache/flink/connector/kafka/sink/testutils/KafkaSinkExternalContext.java
+++ b/flink-connectors/flink-connector-kafka/src/test/java/org/apache/flink/connector/kafka/sink/testutils/KafkaSinkExternalContext.java
@@ -20,6 +20,7 @@ package org.apache.flink.connector.kafka.sink.testutils;
import org.apache.flink.api.common.serialization.SimpleStringSchema;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.connector.sink2.Sink;
import org.apache.flink.connector.base.DeliveryGuarantee;
import org.apache.flink.connector.kafka.sink.KafkaRecordSerializationSchema;
@@ -245,7 +246,7 @@ public class KafkaSinkExternalContext implements DataStreamSinkV2ExternalContext
@Override
public TypeInformation<String> getProducedType() {
- return TypeInformation.of(String.class);
+ return TypeInformationUtils.of(String.class);
}
private DeliveryGuarantee toDeliveryGuarantee(CheckpointingMode checkpointingMode) {
diff --git a/flink-connectors/flink-connector-kafka/src/test/java/org/apache/flink/connector/kafka/source/KafkaSourceITCase.java b/flink-connectors/flink-connector-kafka/src/test/java/org/apache/flink/connector/kafka/source/KafkaSourceITCase.java
index e37aefe0e0b..5aae0983c69 100644
--- a/flink-connectors/flink-connector-kafka/src/test/java/org/apache/flink/connector/kafka/source/KafkaSourceITCase.java
+++ b/flink-connectors/flink-connector-kafka/src/test/java/org/apache/flink/connector/kafka/source/KafkaSourceITCase.java
@@ -26,6 +26,7 @@ import org.apache.flink.api.common.eventtime.WatermarkOutput;
import org.apache.flink.api.common.eventtime.WatermarkStrategy;
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.connector.kafka.source.enumerator.initializer.OffsetsInitializer;
import org.apache.flink.connector.kafka.source.reader.deserializer.KafkaRecordDeserializationSchema;
@@ -136,7 +137,7 @@ public class KafkaSourceITCase {
// Verify that the timestamp and watermark are working fine.
stream.transform(
"timestampVerifier",
- TypeInformation.of(PartitionAndValue.class),
+ TypeInformationUtils.of(PartitionAndValue.class),
new WatermarkVerifyingOperator(v -> v));
stream.addSink(new DiscardingSink<>());
JobExecutionResult result = env.execute();
@@ -454,7 +455,7 @@ public class KafkaSourceITCase {
@Override
public TypeInformation<PartitionAndValue> getProducedType() {
- return TypeInformation.of(PartitionAndValue.class);
+ return TypeInformationUtils.of(PartitionAndValue.class);
}
}
diff --git a/flink-connectors/flink-connector-kafka/src/test/java/org/apache/flink/connector/kafka/testutils/KafkaSourceExternalContext.java b/flink-connectors/flink-connector-kafka/src/test/java/org/apache/flink/connector/kafka/testutils/KafkaSourceExternalContext.java
index 658a1c90f93..af3b8b15051 100644
--- a/flink-connectors/flink-connector-kafka/src/test/java/org/apache/flink/connector/kafka/testutils/KafkaSourceExternalContext.java
+++ b/flink-connectors/flink-connector-kafka/src/test/java/org/apache/flink/connector/kafka/testutils/KafkaSourceExternalContext.java
@@ -19,6 +19,7 @@
package org.apache.flink.connector.kafka.testutils;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.connector.source.Boundedness;
import org.apache.flink.api.connector.source.Source;
import org.apache.flink.connector.kafka.source.KafkaSource;
@@ -146,7 +147,7 @@ public class KafkaSourceExternalContext implements DataStreamSourceExternalConte
@Override
public TypeInformation<String> getProducedType() {
- return TypeInformation.of(String.class);
+ return TypeInformationUtils.of(String.class);
}
@Override
diff --git a/flink-connectors/flink-connector-kafka/src/test/java/org/apache/flink/streaming/connectors/kafka/KafkaConsumerTestBase.java b/flink-connectors/flink-connector-kafka/src/test/java/org/apache/flink/streaming/connectors/kafka/KafkaConsumerTestBase.java
index a8596ee7cc6..8831a89f55f 100644
--- a/flink-connectors/flink-connector-kafka/src/test/java/org/apache/flink/streaming/connectors/kafka/KafkaConsumerTestBase.java
+++ b/flink-connectors/flink-connector-kafka/src/test/java/org/apache/flink/streaming/connectors/kafka/KafkaConsumerTestBase.java
@@ -34,6 +34,7 @@ import org.apache.flink.api.common.state.CheckpointListener;
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
import org.apache.flink.api.common.typeinfo.TypeHint;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.java.tuple.Tuple1;
import org.apache.flink.api.java.tuple.Tuple2;
@@ -447,7 +448,7 @@ public abstract class KafkaConsumerTestBase extends KafkaTestBaseWithFlink {
// serialization / deserialization schemas for writing and consuming the extra records
final TypeInformation<Tuple2<Integer, Integer>> resultType =
- TypeInformation.of(new TypeHint<Tuple2<Integer, Integer>>() {});
+ TypeInformationUtils.of(new TypeHint<Tuple2<Integer, Integer>>() {});
final SerializationSchema<Tuple2<Integer, Integer>> serSchema =
new TypeInformationSerializationSchema<>(resultType, new ExecutionConfig());
@@ -824,7 +825,7 @@ public abstract class KafkaConsumerTestBase extends KafkaTestBaseWithFlink {
env.setRestartStrategy(RestartStrategies.noRestart()); // fail immediately
TypeInformation<Tuple2<Long, String>> longStringType =
- TypeInformation.of(new TypeHint<Tuple2<Long, String>>() {});
+ TypeInformationUtils.of(new TypeHint<Tuple2<Long, String>>() {});
TypeInformationSerializationSchema<Tuple2<Long, String>> sourceSchema =
new TypeInformationSerializationSchema<>(longStringType, env.getConfig());
@@ -1349,7 +1350,7 @@ public abstract class KafkaConsumerTestBase extends KafkaTestBaseWithFlink {
createTestTopic(topic, parallelism, 1);
final TypeInformation<Tuple2<Long, byte[]>> longBytesInfo =
- TypeInformation.of(new TypeHint<Tuple2<Long, byte[]>>() {});
+ TypeInformationUtils.of(new TypeHint<Tuple2<Long, byte[]>>() {});
final TypeInformationSerializationSchema<Tuple2<Long, byte[]>> serSchema =
new TypeInformationSerializationSchema<>(longBytesInfo, new ExecutionConfig());
@@ -1806,7 +1807,7 @@ public abstract class KafkaConsumerTestBase extends KafkaTestBaseWithFlink {
TypeInformationSerializationSchema<Tuple2<Integer, Integer>> schema =
new TypeInformationSerializationSchema<>(
- TypeInformation.of(new TypeHint<Tuple2<Integer, Integer>>() {}),
+ TypeInformationUtils.of(new TypeHint<Tuple2<Integer, Integer>>() {}),
env1.getConfig());
DataStream<Tuple2<Integer, Integer>> fromKafka =
@@ -1925,9 +1926,9 @@ public abstract class KafkaConsumerTestBase extends KafkaTestBaseWithFlink {
final int finalCount;
TypeInformation<Tuple2<Integer, String>> ti =
- TypeInformation.of(new TypeHint<Tuple2<Integer, String>>() {});
+ TypeInformationUtils.of(new TypeHint<Tuple2<Integer, String>>() {});
TypeSerializer<Tuple2<Integer, Integer>> ser =
- TypeInformation.of(new TypeHint<Tuple2<Integer, Integer>>() {})
+ TypeInformationUtils.of(new TypeHint<Tuple2<Integer, Integer>>() {})
.createSerializer(new ExecutionConfig());
public CollectingDeserializationSchema(int finalCount) {
@@ -1969,7 +1970,7 @@ public abstract class KafkaConsumerTestBase extends KafkaTestBaseWithFlink {
int count = 0;
TypeInformation<Tuple2<Integer, Integer>> ti =
- TypeInformation.of(new TypeHint<Tuple2<Integer, Integer>>() {});
+ TypeInformationUtils.of(new TypeHint<Tuple2<Integer, Integer>>() {});
TypeSerializer<Tuple2<Integer, Integer>> ser = ti.createSerializer(new ExecutionConfig());
public FixedNumberDeserializationSchema(int finalCount) {
@@ -2022,7 +2023,7 @@ public abstract class KafkaConsumerTestBase extends KafkaTestBaseWithFlink {
final int finalCount = finalCountTmp;
final TypeInformation<Tuple2<Integer, Integer>> intIntTupleType =
- TypeInformation.of(new TypeHint<Tuple2<Integer, Integer>>() {});
+ TypeInformationUtils.of(new TypeHint<Tuple2<Integer, Integer>>() {});
final TypeInformationSerializationSchema<Tuple2<Integer, Integer>> deser =
new TypeInformationSerializationSchema<>(intIntTupleType, env.getConfig());
@@ -2230,7 +2231,7 @@ public abstract class KafkaConsumerTestBase extends KafkaTestBaseWithFlink {
+ "===================================");
final TypeInformation<Tuple2<Integer, Integer>> resultType =
- TypeInformation.of(new TypeHint<Tuple2<Integer, Integer>>() {});
+ TypeInformationUtils.of(new TypeHint<Tuple2<Integer, Integer>>() {});
final SerializationSchema<Tuple2<Integer, Integer>> serSchema =
new TypeInformationSerializationSchema<>(resultType, new ExecutionConfig());
@@ -2343,7 +2344,7 @@ public abstract class KafkaConsumerTestBase extends KafkaTestBaseWithFlink {
+ "===================================");
final TypeInformation<Tuple2<Integer, Integer>> resultType =
- TypeInformation.of(new TypeHint<Tuple2<Integer, Integer>>() {});
+ TypeInformationUtils.of(new TypeHint<Tuple2<Integer, Integer>>() {});
final SerializationSchema<Tuple2<Integer, Integer>> serSchema =
new TypeInformationSerializationSchema<>(resultType, new ExecutionConfig());
@@ -2649,7 +2650,7 @@ public abstract class KafkaConsumerTestBase extends KafkaTestBaseWithFlink {
public AbstractTestDeserializer(ExecutionConfig ec) {
ts =
- TypeInformation.of(new TypeHint<Tuple2<Integer, Integer>>() {})
+ TypeInformationUtils.of(new TypeHint<Tuple2<Integer, Integer>>() {})
.createSerializer(ec);
}
@@ -2669,7 +2670,7 @@ public abstract class KafkaConsumerTestBase extends KafkaTestBaseWithFlink {
@Override
public TypeInformation<Tuple3<Integer, Integer, String>> getProducedType() {
- return TypeInformation.of(new TypeHint<Tuple3<Integer, Integer, String>>() {});
+ return TypeInformationUtils.of(new TypeHint<Tuple3<Integer, Integer, String>>() {});
}
}
diff --git a/flink-connectors/flink-connector-kafka/src/test/java/org/apache/flink/streaming/connectors/kafka/KafkaProducerTestBase.java b/flink-connectors/flink-connector-kafka/src/test/java/org/apache/flink/streaming/connectors/kafka/KafkaProducerTestBase.java
index 62438106825..072ce5b5338 100644
--- a/flink-connectors/flink-connector-kafka/src/test/java/org/apache/flink/streaming/connectors/kafka/KafkaProducerTestBase.java
+++ b/flink-connectors/flink-connector-kafka/src/test/java/org/apache/flink/streaming/connectors/kafka/KafkaProducerTestBase.java
@@ -26,6 +26,7 @@ import org.apache.flink.api.common.serialization.TypeInformationSerializationSch
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
import org.apache.flink.api.common.typeinfo.TypeHint;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
@@ -105,7 +106,7 @@ public abstract class KafkaProducerTestBase extends KafkaTestBaseWithFlink {
expectedTopicsToNumPartitions.put(dynamicTopic, dynamicTopicPartitions);
TypeInformation<Tuple2<Long, String>> longStringInfo =
- TypeInformation.of(new TypeHint<Tuple2<Long, String>>() {});
+ TypeInformationUtils.of(new TypeHint<Tuple2<Long, String>>() {});
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setRestartStrategy(RestartStrategies.noRestart());
diff --git a/flink-connectors/flink-hadoop-compatibility/src/main/java/org/apache/flink/api/java/typeutils/WritableTypeInfo.java b/flink-connectors/flink-hadoop-compatibility/src/main/java/org/apache/flink/api/java/typeutils/WritableTypeInfo.java
index 76fab8a9f91..223d2650e09 100644
--- a/flink-connectors/flink-hadoop-compatibility/src/main/java/org/apache/flink/api/java/typeutils/WritableTypeInfo.java
+++ b/flink-connectors/flink-hadoop-compatibility/src/main/java/org/apache/flink/api/java/typeutils/WritableTypeInfo.java
@@ -21,6 +21,7 @@ package org.apache.flink.api.java.typeutils;
import org.apache.flink.annotation.Public;
import org.apache.flink.annotation.PublicEvolving;
import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.functions.InvalidTypesException;
import org.apache.flink.api.common.typeinfo.AtomicType;
import org.apache.flink.api.common.typeinfo.TypeInformation;
@@ -112,7 +113,7 @@ public class WritableTypeInfo<T extends Writable> extends TypeInformation<T>
@Override
@PublicEvolving
- public TypeSerializer<T> createSerializer(ExecutionConfig executionConfig) {
+ public TypeSerializer<T> createSerializer(SerializerContext executionConfig) {
return new WritableSerializer<T>(typeClass);
}
diff --git a/flink-core-api/pom.xml b/flink-core-api/pom.xml
index d597c50bc1f..7cee5c92060 100644
--- a/flink-core-api/pom.xml
+++ b/flink-core-api/pom.xml
@@ -41,5 +41,12 @@
<artifactId>flink-annotations</artifactId>
<version>${project.version}</version>
</dependency>
+
+ <!-- for the fallback generic serializer -->
+ <dependency>
+ <groupId>com.esotericsoftware.kryo</groupId>
+ <artifactId>kryo</artifactId>
+ <!-- managed version -->
+ </dependency>
</dependencies>
</project>
diff --git a/flink-connectors/flink-connector-files/src/test/java/org/apache/flink/connector/file/table/stream/PartitionCommitInfoTest.java b/flink-core-api/src/main/java/org/apache/flink/api/common/SerializableSerializer.java
similarity index 56%
copy from flink-connectors/flink-connector-files/src/test/java/org/apache/flink/connector/file/table/stream/PartitionCommitInfoTest.java
copy to flink-core-api/src/main/java/org/apache/flink/api/common/SerializableSerializer.java
index 1b2ee1f6fbf..85e2daf7459 100644
--- a/flink-connectors/flink-connector-files/src/test/java/org/apache/flink/connector/file/table/stream/PartitionCommitInfoTest.java
+++ b/flink-core-api/src/main/java/org/apache/flink/api/common/SerializableSerializer.java
@@ -16,22 +16,23 @@
* limitations under the License.
*/
-package org.apache.flink.connector.file.table.stream;
+package org.apache.flink.api.common;
-import org.apache.flink.api.common.ExecutionConfig;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import com.esotericsoftware.kryo.Serializer;
-import org.junit.jupiter.api.Test;
+import java.io.Serializable;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
+public class SerializableSerializer<T extends Serializer<?> & Serializable>
+ implements Serializable {
+ private static final long serialVersionUID = 4687893502781067189L;
-/** Tests for partition commit info. */
-public class PartitionCommitInfoTest {
- @Test
- public void testPartitionCommitSerializer() {
- ExecutionConfig executionConfig = new ExecutionConfig();
- executionConfig.disableGenericTypes();
- assertNotNull(
- TypeInformation.of(PartitionCommitInfo.class).createSerializer(executionConfig));
+ private T serializer;
+
+ public SerializableSerializer(T serializer) {
+ this.serializer = serializer;
+ }
+
+ public T getSerializer() {
+ return serializer;
}
}
diff --git a/flink-core-api/src/main/java/org/apache/flink/api/common/SerializerContext.java b/flink-core-api/src/main/java/org/apache/flink/api/common/SerializerContext.java
new file mode 100644
index 00000000000..67f8811dbe6
--- /dev/null
+++ b/flink-core-api/src/main/java/org/apache/flink/api/common/SerializerContext.java
@@ -0,0 +1,59 @@
+/*
+ * 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.
+ */
+
+package org.apache.flink.api.common;
+
+import com.esotericsoftware.kryo.Serializer;
+
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+
+public interface SerializerContext {
+
+ /** Returns the registered default Kryo Serializers. */
+ LinkedHashMap<Class<?>, SerializableSerializer<?>> getDefaultKryoSerializers();
+
+ /** Returns the registered default Kryo Serializer classes. */
+ LinkedHashMap<Class<?>, Class<? extends Serializer<?>>> getDefaultKryoSerializerClasses();
+
+ /** Returns the registered Kryo types. */
+ LinkedHashSet<Class<?>> getRegisteredKryoTypes();
+
+ /** Returns the registered types with their Kryo Serializer classes. */
+ LinkedHashMap<Class<?>, Class<? extends Serializer<?>>>
+ getRegisteredTypesWithKryoSerializerClasses();
+
+ /** Returns the registered types with Kryo Serializers. */
+ LinkedHashMap<Class<?>, SerializableSerializer<?>> getRegisteredTypesWithKryoSerializers();
+
+ /** Returns the registered POJO types. */
+ LinkedHashSet<Class<?>> getRegisteredPojoTypes();
+
+ boolean isForceKryoEnabled();
+
+ /** Returns whether the Apache Avro is the default serializer for POJOs. */
+ boolean isForceAvroEnabled();
+
+ /**
+ * Checks whether generic types are supported. Generic types are types that go through Kryo
+ * during serialization.
+ *
+ * <p>Generic types are enabled by default.
+ */
+ boolean hasGenericTypesDisabled();
+}
diff --git a/flink-connectors/flink-connector-files/src/test/java/org/apache/flink/connector/file/table/stream/PartitionCommitInfoTest.java b/flink-core-api/src/main/java/org/apache/flink/api/common/typeinfo/BasicTypeDescriptor.java
similarity index 56%
copy from flink-connectors/flink-connector-files/src/test/java/org/apache/flink/connector/file/table/stream/PartitionCommitInfoTest.java
copy to flink-core-api/src/main/java/org/apache/flink/api/common/typeinfo/BasicTypeDescriptor.java
index 1b2ee1f6fbf..1f3199ca000 100644
--- a/flink-connectors/flink-connector-files/src/test/java/org/apache/flink/connector/file/table/stream/PartitionCommitInfoTest.java
+++ b/flink-core-api/src/main/java/org/apache/flink/api/common/typeinfo/BasicTypeDescriptor.java
@@ -16,22 +16,17 @@
* limitations under the License.
*/
-package org.apache.flink.connector.file.table.stream;
+package org.apache.flink.api.common.typeinfo;
-import org.apache.flink.api.common.ExecutionConfig;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+public class BasicTypeDescriptor<T> implements TypeDescriptor<T> {
+ private final Class<T> innerClazz;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertNotNull;
+ public BasicTypeDescriptor(Class<T> innerClazz) {
+ this.innerClazz = innerClazz;
+ }
-/** Tests for partition commit info. */
-public class PartitionCommitInfoTest {
- @Test
- public void testPartitionCommitSerializer() {
- ExecutionConfig executionConfig = new ExecutionConfig();
- executionConfig.disableGenericTypes();
- assertNotNull(
- TypeInformation.of(PartitionCommitInfo.class).createSerializer(executionConfig));
+ @Override
+ public Class<T> getTypeClass() {
+ return innerClazz;
}
}
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple0Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/common/typeinfo/PojoDescriptor.java
similarity index 52%
copy from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple0Builder.java
copy to flink-core-api/src/main/java/org/apache/flink/api/common/typeinfo/PojoDescriptor.java
index 2bec778a085..82a7c04c367 100644
--- a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple0Builder.java
+++ b/flink-core-api/src/main/java/org/apache/flink/api/common/typeinfo/PojoDescriptor.java
@@ -16,31 +16,37 @@
* limitations under the License.
*/
-// --------------------------------------------------------------
-// THIS IS A GENERATED SOURCE FILE. DO NOT EDIT!
-// GENERATED FROM org.apache.flink.api.java.tuple.TupleGenerator.
-// --------------------------------------------------------------
+package org.apache.flink.api.common.typeinfo;
-package org.apache.flink.api.java.tuple.builder;
+import javax.annotation.Nullable;
-import org.apache.flink.annotation.Public;
-import org.apache.flink.api.java.tuple.Tuple0;
+import java.util.Map;
-import java.util.ArrayList;
-import java.util.List;
+public class PojoDescriptor<T> implements TypeDescriptor<T> {
+ private final Class<T> pojoClass;
-/** A builder class for {@link Tuple0}. */
-@Public
-public class Tuple0Builder {
+ @Nullable private final Map<String, TypeDescriptor<?>> fields;
- private List<Tuple0> tuples = new ArrayList<Tuple0>();
+ public PojoDescriptor(Class<T> pojoClass, @Nullable Map<String, TypeDescriptor<?>> fields) {
+ this.pojoClass = pojoClass;
+ this.fields = fields;
+ }
+
+ public PojoDescriptor(Class<T> pojoClass) {
+ this(pojoClass, null);
+ }
+
+ public Class<T> getPojoClass() {
+ return pojoClass;
+ }
- public Tuple0Builder add() {
- tuples.add(Tuple0.INSTANCE);
- return this;
+ @Nullable
+ public Map<String, TypeDescriptor<?>> getFields() {
+ return fields;
}
- public Tuple0[] build() {
- return tuples.toArray(new Tuple0[tuples.size()]);
+ @Override
+ public Class<T> getTypeClass() {
+ return pojoClass;
}
}
diff --git a/flink-connectors/flink-connector-files/src/test/java/org/apache/flink/connector/file/table/stream/PartitionCommitInfoTest.java b/flink-core-api/src/main/java/org/apache/flink/api/common/typeinfo/TupleTypeDescriptor.java
similarity index 56%
copy from flink-connectors/flink-connector-files/src/test/java/org/apache/flink/connector/file/table/stream/PartitionCommitInfoTest.java
copy to flink-core-api/src/main/java/org/apache/flink/api/common/typeinfo/TupleTypeDescriptor.java
index 1b2ee1f6fbf..f933b9dac2d 100644
--- a/flink-connectors/flink-connector-files/src/test/java/org/apache/flink/connector/file/table/stream/PartitionCommitInfoTest.java
+++ b/flink-core-api/src/main/java/org/apache/flink/api/common/typeinfo/TupleTypeDescriptor.java
@@ -16,22 +16,23 @@
* limitations under the License.
*/
-package org.apache.flink.connector.file.table.stream;
+package org.apache.flink.api.common.typeinfo;
-import org.apache.flink.api.common.ExecutionConfig;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.java.tuple.Tuple;
-import org.junit.jupiter.api.Test;
+public class TupleTypeDescriptor<T extends Tuple> implements TypeDescriptor<T> {
+ private final TypeDescriptor<?>[] typeDescriptors;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
+ public TupleTypeDescriptor(TypeDescriptor<?>... typeDescriptors) {
+ this.typeDescriptors = typeDescriptors;
+ }
+
+ public TypeDescriptor<?>[] getTypeDescriptors() {
+ return typeDescriptors;
+ }
-/** Tests for partition commit info. */
-public class PartitionCommitInfoTest {
- @Test
- public void testPartitionCommitSerializer() {
- ExecutionConfig executionConfig = new ExecutionConfig();
- executionConfig.disableGenericTypes();
- assertNotNull(
- TypeInformation.of(PartitionCommitInfo.class).createSerializer(executionConfig));
+ @Override
+ public Class<T> getTypeClass() {
+ return null;
}
}
diff --git a/flink-connectors/flink-connector-files/src/test/java/org/apache/flink/connector/file/table/stream/PartitionCommitInfoTest.java b/flink-core-api/src/main/java/org/apache/flink/api/common/typeinfo/TypeDescriptor.java
similarity index 55%
copy from flink-connectors/flink-connector-files/src/test/java/org/apache/flink/connector/file/table/stream/PartitionCommitInfoTest.java
copy to flink-core-api/src/main/java/org/apache/flink/api/common/typeinfo/TypeDescriptor.java
index 1b2ee1f6fbf..158abbdf06a 100644
--- a/flink-connectors/flink-connector-files/src/test/java/org/apache/flink/connector/file/table/stream/PartitionCommitInfoTest.java
+++ b/flink-core-api/src/main/java/org/apache/flink/api/common/typeinfo/TypeDescriptor.java
@@ -16,22 +16,14 @@
* limitations under the License.
*/
-package org.apache.flink.connector.file.table.stream;
+package org.apache.flink.api.common.typeinfo;
-import org.apache.flink.api.common.ExecutionConfig;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
-
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-/** Tests for partition commit info. */
-public class PartitionCommitInfoTest {
- @Test
- public void testPartitionCommitSerializer() {
- ExecutionConfig executionConfig = new ExecutionConfig();
- executionConfig.disableGenericTypes();
- assertNotNull(
- TypeInformation.of(PartitionCommitInfo.class).createSerializer(executionConfig));
- }
+/** Descriptor for type information. */
+public interface TypeDescriptor<T> {
+ /**
+ * Gets the class of the type represented by this type descriptor.
+ *
+ * @return The class of the type represented by this type descriptor.
+ */
+ Class<T> getTypeClass();
}
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple0Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/common/typeinfo/TypeDescriptors.java
similarity index 50%
copy from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple0Builder.java
copy to flink-core-api/src/main/java/org/apache/flink/api/common/typeinfo/TypeDescriptors.java
index 2bec778a085..fde3a4d9778 100644
--- a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple0Builder.java
+++ b/flink-core-api/src/main/java/org/apache/flink/api/common/typeinfo/TypeDescriptors.java
@@ -16,31 +16,28 @@
* limitations under the License.
*/
-// --------------------------------------------------------------
-// THIS IS A GENERATED SOURCE FILE. DO NOT EDIT!
-// GENERATED FROM org.apache.flink.api.java.tuple.TupleGenerator.
-// --------------------------------------------------------------
+package org.apache.flink.api.common.typeinfo;
-package org.apache.flink.api.java.tuple.builder;
+import org.apache.flink.api.java.tuple.Tuple;
-import org.apache.flink.annotation.Public;
-import org.apache.flink.api.java.tuple.Tuple0;
+import java.util.Map;
-import java.util.ArrayList;
-import java.util.List;
+public class TypeDescriptors {
+ public static BasicTypeDescriptor<String> STRING = new BasicTypeDescriptor<>(String.class);
-/** A builder class for {@link Tuple0}. */
-@Public
-public class Tuple0Builder {
+ public static BasicTypeDescriptor<Long> LONG = new BasicTypeDescriptor<>(Long.class);
- private List<Tuple0> tuples = new ArrayList<Tuple0>();
+ public static <T extends Tuple> TupleTypeDescriptor<T> TUPLE(
+ TypeDescriptor<?>... typeDescriptors) {
+ return new TupleTypeDescriptor<>(typeDescriptors);
+ }
- public Tuple0Builder add() {
- tuples.add(Tuple0.INSTANCE);
- return this;
+ public static <T> PojoDescriptor<T> POJO(
+ Class<T> pojoClass, Map<String, TypeDescriptor<?>> fields) {
+ return new PojoDescriptor<>(pojoClass, fields);
}
- public Tuple0[] build() {
- return tuples.toArray(new Tuple0[tuples.size()]);
+ public static <T> PojoDescriptor<T> POJO(Class<T> pojoClass) {
+ return new PojoDescriptor<>(pojoClass);
}
}
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/TypeInfo.java b/flink-core-api/src/main/java/org/apache/flink/api/common/typeinfo/TypeInfo.java
similarity index 90%
rename from flink-core/src/main/java/org/apache/flink/api/common/typeinfo/TypeInfo.java
rename to flink-core-api/src/main/java/org/apache/flink/api/common/typeinfo/TypeInfo.java
index 84980beee76..a763b522d63 100644
--- a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/TypeInfo.java
+++ b/flink-core-api/src/main/java/org/apache/flink/api/common/typeinfo/TypeInfo.java
@@ -19,20 +19,18 @@
package org.apache.flink.api.common.typeinfo;
import org.apache.flink.annotation.Public;
-import org.apache.flink.api.java.typeutils.TypeExtractor;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
-import java.lang.reflect.Type;
/**
* Annotation for specifying a corresponding {@link TypeInfoFactory} that can produce {@link
* TypeInformation} for the annotated type. In a hierarchy of types the closest annotation that
* defines a factory will be chosen while traversing upwards, however, a globally registered factory
- * has highest precedence (see {@link TypeExtractor#registerFactory(Type, Class)}).
+ * has highest precedence.
*/
@Documented
@Target({ElementType.TYPE, ElementType.FIELD})
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/TypeInfoFactory.java b/flink-core-api/src/main/java/org/apache/flink/api/common/typeinfo/TypeInfoFactory.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/common/typeinfo/TypeInfoFactory.java
rename to flink-core-api/src/main/java/org/apache/flink/api/common/typeinfo/TypeInfoFactory.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/TypeInformation.java b/flink-core-api/src/main/java/org/apache/flink/api/common/typeinfo/TypeInformation.java
similarity index 74%
rename from flink-core/src/main/java/org/apache/flink/api/common/typeinfo/TypeInformation.java
rename to flink-core-api/src/main/java/org/apache/flink/api/common/typeinfo/TypeInformation.java
index 443db4728be..f4ea59e660c 100644
--- a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/TypeInformation.java
+++ b/flink-core-api/src/main/java/org/apache/flink/api/common/typeinfo/TypeInformation.java
@@ -20,12 +20,8 @@ package org.apache.flink.api.common.typeinfo;
import org.apache.flink.annotation.Public;
import org.apache.flink.annotation.PublicEvolving;
-import org.apache.flink.api.common.ExecutionConfig;
-import org.apache.flink.api.common.functions.InvalidTypesException;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeutils.TypeSerializer;
-import org.apache.flink.api.java.tuple.Tuple2;
-import org.apache.flink.api.java.typeutils.TypeExtractor;
-import org.apache.flink.util.FlinkRuntimeException;
import java.io.Serializable;
import java.util.Collections;
@@ -82,8 +78,8 @@ public abstract class TypeInformation<T> implements Serializable {
private static final long serialVersionUID = -7742311969684489493L;
/**
- * Checks if this type information represents a basic type. Basic types are defined in {@link
- * BasicTypeInfo} and are primitives, their boxing types, Strings, Date, Void, ...
+ * Checks if this type information represents a basic type. Basic types are primitives, their
+ * boxing types, Strings, Date, Void, ...
*
* @return True, if this type information describes a basic type, false otherwise.
*/
@@ -132,7 +128,7 @@ public abstract class TypeInformation<T> implements Serializable {
* generic type parameter to the type information of a subtype. This information is necessary in
* cases where type information should be deduced from an input type.
*
- * <p>For instance, a method for a {@link Tuple2} would look like this: <code>
+ * <p>For instance, a method for a {@code Tuple2} would look like this: <code>
* Map m = new HashMap();
* m.put("T0", this.getTypeAt(0));
* m.put("T1", this.getTypeAt(1));
@@ -170,11 +166,11 @@ public abstract class TypeInformation<T> implements Serializable {
* Creates a serializer for the type. The serializer may use the ExecutionConfig for
* parameterization.
*
- * @param config The config used to parameterize the serializer.
+ * @param serializerContext The config used to parameterize the serializer.
* @return A serializer for this type.
*/
@PublicEvolving
- public abstract TypeSerializer<T> createSerializer(ExecutionConfig config);
+ public abstract TypeSerializer<T> createSerializer(SerializerContext serializerContext);
@Override
public abstract String toString();
@@ -192,44 +188,4 @@ public abstract class TypeInformation<T> implements Serializable {
* @return true if obj can be equaled with this, otherwise false
*/
public abstract boolean canEqual(Object obj);
-
- // ------------------------------------------------------------------------
-
- /**
- * Creates a TypeInformation for the type described by the given class.
- *
- * <p>This method only works for non-generic types. For generic types, use the {@link
- * #of(TypeHint)} method.
- *
- * @param typeClass The class of the type.
- * @param <T> The generic type.
- * @return The TypeInformation object for the type described by the hint.
- */
- public static <T> TypeInformation<T> of(Class<T> typeClass) {
- try {
- return TypeExtractor.createTypeInfo(typeClass);
- } catch (InvalidTypesException e) {
- throw new FlinkRuntimeException(
- "Cannot extract TypeInformation from Class alone, because generic parameters are missing. "
- + "Please use TypeInformation.of(TypeHint) instead, or another equivalent method in the API that "
- + "accepts a TypeHint instead of a Class. "
- + "For example for a Tuple2<Long, String> pass a 'new TypeHint<Tuple2<Long, String>>(){}'.");
- }
- }
-
- /**
- * Creates a TypeInformation for a generic type via a utility "type hint". This method can be
- * used as follows:
- *
- * <pre>{@code
- * TypeInformation<Tuple2<String, Long>> info = TypeInformation.of(new TypeHint<Tuple2<String, Long>>(){});
- * }</pre>
- *
- * @param typeHint The hint for the generic type.
- * @param <T> The generic type.
- * @return The TypeInformation object for the type described by the hint.
- */
- public static <T> TypeInformation<T> of(TypeHint<T> typeHint) {
- return typeHint.getTypeInfo();
- }
}
diff --git a/flink-core-api/src/main/java/org/apache/flink/api/common/typeutils/TypeSerializer.java b/flink-core-api/src/main/java/org/apache/flink/api/common/typeutils/TypeSerializer.java
new file mode 100644
index 00000000000..184bfc6a0ba
--- /dev/null
+++ b/flink-core-api/src/main/java/org/apache/flink/api/common/typeutils/TypeSerializer.java
@@ -0,0 +1,198 @@
+/*
+ * 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.
+ */
+
+package org.apache.flink.api.common.typeutils;
+
+import org.apache.flink.annotation.PublicEvolving;
+import org.apache.flink.core.memory.DataInputView;
+import org.apache.flink.core.memory.DataOutputView;
+
+import java.io.IOException;
+import java.io.Serializable;
+
+/**
+ * This interface describes the methods that are required for a data type to be handled by the Flink
+ * runtime. Specifically, this interface contains the serialization and copying methods.
+ *
+ * <p>The methods in this class are not necessarily thread safe. To avoid unpredictable side
+ * effects, it is recommended to call {@code duplicate()} method and use one serializer instance per
+ * thread.
+ *
+ * <p><b>Upgrading TypeSerializers to the new TypeSerializerSnapshot model</b>
+ *
+ * <p>This section is relevant if you implemented a TypeSerializer in Flink versions up to 1.6 and
+ * want to adapt that implementation to the new interfaces that support proper state schema
+ * evolution, while maintaining backwards compatibility. Please follow these steps:
+ *
+ * <ul>
+ * <li>Change the type serializer's config snapshot to implement {@link TypeSerializerSnapshot},
+ * rather than extending {@code TypeSerializerConfigSnapshot} (as previously).
+ * <li>If the above step was completed, then the upgrade is done. Otherwise, if changing to
+ * implement {@link TypeSerializerSnapshot} directly in-place as the same class isn't possible
+ * (perhaps because the new snapshot is intended to have completely different written contents
+ * or intended to have a different class name), retain the old serializer snapshot class
+ * (extending {@code TypeSerializerConfigSnapshot}) under the same name and give the updated
+ * serializer snapshot class (the one extending {@code TypeSerializerSnapshot}) a new name.
+ * <li>Override the {@code
+ * TypeSerializerConfigSnapshot#resolveSchemaCompatibility(TypeSerializer)} method to perform
+ * the compatibility check based on configuration written by the old serializer snapshot
+ * class.
+ * </ul>
+ *
+ * @param <T> The data type that the serializer serializes.
+ */
+@PublicEvolving
+public abstract class TypeSerializer<T> implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ // --------------------------------------------------------------------------------------------
+ // General information about the type and the serializer
+ // --------------------------------------------------------------------------------------------
+
+ /**
+ * Gets whether the type is an immutable type.
+ *
+ * @return True, if the type is immutable.
+ */
+ public abstract boolean isImmutableType();
+
+ /**
+ * Creates a deep copy of this serializer if it is necessary, i.e. if it is stateful. This can
+ * return itself if the serializer is not stateful.
+ *
+ * <p>We need this because Serializers might be used in several threads. Stateless serializers
+ * are inherently thread-safe while stateful serializers might not be thread-safe.
+ */
+ public abstract TypeSerializer<T> duplicate();
+
+ // --------------------------------------------------------------------------------------------
+ // Instantiation & Cloning
+ // --------------------------------------------------------------------------------------------
+
+ /**
+ * Creates a new instance of the data type.
+ *
+ * @return A new instance of the data type.
+ */
+ public abstract T createInstance();
+
+ /**
+ * Creates a deep copy of the given element in a new element.
+ *
+ * @param from The element reuse be copied.
+ * @return A deep copy of the element.
+ */
+ public abstract T copy(T from);
+
+ /**
+ * Creates a copy from the given element. The method makes an attempt to store the copy in the
+ * given reuse element, if the type is mutable. This is, however, not guaranteed.
+ *
+ * @param from The element to be copied.
+ * @param reuse The element to be reused. May or may not be used.
+ * @return A deep copy of the element.
+ */
+ public abstract T copy(T from, T reuse);
+
+ // --------------------------------------------------------------------------------------------
+
+ /**
+ * Gets the length of the data type, if it is a fix length data type.
+ *
+ * @return The length of the data type, or <code>-1</code> for variable length data types.
+ */
+ public abstract int getLength();
+
+ // --------------------------------------------------------------------------------------------
+
+ /**
+ * Serializes the given record to the given target output view.
+ *
+ * @param record The record to serialize.
+ * @param target The output view to write the serialized data to.
+ * @throws IOException Thrown, if the serialization encountered an I/O related error. Typically
+ * raised by the output view, which may have an underlying I/O channel to which it
+ * delegates.
+ */
+ public abstract void serialize(T record, DataOutputView target) throws IOException;
+
+ /**
+ * De-serializes a record from the given source input view.
+ *
+ * @param source The input view from which to read the data.
+ * @return The deserialized element.
+ * @throws IOException Thrown, if the de-serialization encountered an I/O related error.
+ * Typically raised by the input view, which may have an underlying I/O channel from which
+ * it reads.
+ */
+ public abstract T deserialize(DataInputView source) throws IOException;
+
+ /**
+ * De-serializes a record from the given source input view into the given reuse record instance
+ * if mutable.
+ *
+ * @param reuse The record instance into which to de-serialize the data.
+ * @param source The input view from which to read the data.
+ * @return The deserialized element.
+ * @throws IOException Thrown, if the de-serialization encountered an I/O related error.
+ * Typically raised by the input view, which may have an underlying I/O channel from which
+ * it reads.
+ */
+ public abstract T deserialize(T reuse, DataInputView source) throws IOException;
+
+ /**
+ * Copies exactly one record from the source input view to the target output view. Whether this
+ * operation works on binary data or partially de-serializes the record to determine its length
+ * (such as for records of variable length) is up to the implementer. Binary copies are
+ * typically faster. A copy of a record containing two integer numbers (8 bytes total) is most
+ * efficiently implemented as {@code target.write(source, 8);}.
+ *
+ * @param source The input view from which to read the record.
+ * @param target The target output view to which to write the record.
+ * @throws IOException Thrown if any of the two views raises an exception.
+ */
+ public abstract void copy(DataInputView source, DataOutputView target) throws IOException;
+
+ public abstract boolean equals(Object obj);
+
+ public abstract int hashCode();
+
+ // --------------------------------------------------------------------------------------------
+ // Serializer configuration snapshot for checkpoints/savepoints
+ // --------------------------------------------------------------------------------------------
+
+ /**
+ * Snapshots the configuration of this TypeSerializer. This method is only relevant if the
+ * serializer is used to state stored in checkpoints/savepoints.
+ *
+ * <p>The snapshot of the TypeSerializer is supposed to contain all information that affects the
+ * serialization format of the serializer. The snapshot serves two purposes: First, to reproduce
+ * the serializer when the checkpoint/savepoint is restored, and second, to check whether the
+ * serialization format is compatible with the serializer used in the restored program.
+ *
+ * <p><b>IMPORTANT:</b> TypeSerializerSnapshots changed after Flink 1.6. Serializers implemented
+ * against Flink versions up to 1.6 should still work, but adjust to new model to enable state
+ * evolution and be future-proof. See the class-level comments, section "Upgrading
+ * TypeSerializers to the new TypeSerializerSnapshot model" for details.
+ *
+ * @see TypeSerializerSnapshot#resolveSchemaCompatibility(TypeSerializer)
+ * @return snapshot of the serializer's current configuration (cannot be {@code null}).
+ */
+ public abstract TypeSerializerSnapshot<T> snapshotConfiguration();
+}
diff --git a/flink-core-api/src/main/java/org/apache/flink/api/common/typeutils/TypeSerializerSchemaCompatibility.java b/flink-core-api/src/main/java/org/apache/flink/api/common/typeutils/TypeSerializerSchemaCompatibility.java
new file mode 100644
index 00000000000..b5694c4e28b
--- /dev/null
+++ b/flink-core-api/src/main/java/org/apache/flink/api/common/typeutils/TypeSerializerSchemaCompatibility.java
@@ -0,0 +1,195 @@
+/*
+ * 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.
+ */
+
+package org.apache.flink.api.common.typeutils;
+
+import org.apache.flink.annotation.PublicEvolving;
+import org.apache.flink.util.Preconditions;
+
+import javax.annotation.Nullable;
+
+/**
+ * A {@code TypeSerializerSchemaCompatibility} represents information about whether or not a {@link
+ * TypeSerializer} can be safely used to read data written by a previous type serializer.
+ *
+ * <p>Typically, the compatibility of the new serializer is resolved by checking the serializer
+ * against the {@link TypeSerializerSnapshot} of the previous serializer. Depending on the type of
+ * the resolved compatibility result, migration (i.e., reading bytes with the previous serializer
+ * and then writing it again with the new serializer) may be required before the new serializer can
+ * be used.
+ *
+ * @param <T> the type of data serialized by the serializer that was being checked.
+ * @see TypeSerializer
+ * @see TypeSerializerSnapshot#resolveSchemaCompatibility(TypeSerializer)
+ */
+@PublicEvolving
+public class TypeSerializerSchemaCompatibility<T> {
+
+ /** Enum for the type of the compatibility. */
+ enum Type {
+
+ /** This indicates that the new serializer continued to be used as is. */
+ COMPATIBLE_AS_IS,
+
+ /**
+ * This indicates that it is possible to use the new serializer after performing a full-scan
+ * migration over all state, by reading bytes with the previous serializer and then writing
+ * it again with the new serializer, effectively converting the serialization schema to
+ * correspond to the new serializer.
+ */
+ COMPATIBLE_AFTER_MIGRATION,
+
+ /**
+ * This indicates that a reconfigured version of the new serializer is compatible, and
+ * should be used instead of the original new serializer.
+ */
+ COMPATIBLE_WITH_RECONFIGURED_SERIALIZER,
+
+ /**
+ * This indicates that the new serializer is incompatible, even with migration. This
+ * normally implies that the deserialized Java class can not be commonly recognized by the
+ * previous and new serializer.
+ */
+ INCOMPATIBLE
+ }
+
+ /** The type of the compatibility. */
+ private final Type resultType;
+
+ private final TypeSerializer<T> reconfiguredNewSerializer;
+
+ /**
+ * Returns a result that indicates that the new serializer is compatible and no migration is
+ * required. The new serializer can continued to be used as is.
+ *
+ * @return a result that indicates migration is not required for the new serializer.
+ */
+ public static <T> TypeSerializerSchemaCompatibility<T> compatibleAsIs() {
+ return new TypeSerializerSchemaCompatibility<>(Type.COMPATIBLE_AS_IS, null);
+ }
+
+ /**
+ * Returns a result that indicates that the new serializer can be used after migrating the
+ * written bytes, i.e. reading it with the old serializer and then writing it again with the new
+ * serializer.
+ *
+ * @return a result that indicates that the new serializer can be used after migrating the
+ * written bytes.
+ */
+ public static <T> TypeSerializerSchemaCompatibility<T> compatibleAfterMigration() {
+ return new TypeSerializerSchemaCompatibility<>(Type.COMPATIBLE_AFTER_MIGRATION, null);
+ }
+
+ /**
+ * Returns a result that indicates a reconfigured version of the new serializer is compatible,
+ * and should be used instead of the original new serializer.
+ *
+ * @param reconfiguredSerializer the reconfigured version of the new serializer.
+ * @return a result that indicates a reconfigured version of the new serializer is compatible,
+ * and should be used instead of the original new serializer.
+ */
+ public static <T> TypeSerializerSchemaCompatibility<T> compatibleWithReconfiguredSerializer(
+ TypeSerializer<T> reconfiguredSerializer) {
+ return new TypeSerializerSchemaCompatibility<>(
+ Type.COMPATIBLE_WITH_RECONFIGURED_SERIALIZER,
+ Preconditions.checkNotNull(reconfiguredSerializer));
+ }
+
+ /**
+ * Returns a result that indicates there is no possible way for the new serializer to be
+ * use-able. This normally indicates that there is no common Java class between what the
+ * previous bytes can be deserialized into and what can be written by the new serializer.
+ *
+ * <p>In this case, there is no possible way for the new serializer to continue to be used, even
+ * with migration. Recovery of the Flink job will fail.
+ *
+ * @return a result that indicates incompatibility between the new and previous serializer.
+ */
+ public static <T> TypeSerializerSchemaCompatibility<T> incompatible() {
+ return new TypeSerializerSchemaCompatibility<>(Type.INCOMPATIBLE, null);
+ }
+
+ private TypeSerializerSchemaCompatibility(
+ Type resultType, @Nullable TypeSerializer<T> reconfiguredNewSerializer) {
+ this.resultType = Preconditions.checkNotNull(resultType);
+ this.reconfiguredNewSerializer = reconfiguredNewSerializer;
+ }
+
+ /**
+ * Returns whether or not the type of the compatibility is {@link Type#COMPATIBLE_AS_IS}.
+ *
+ * @return whether or not the type of the compatibility is {@link Type#COMPATIBLE_AS_IS}.
+ */
+ public boolean isCompatibleAsIs() {
+ return resultType == Type.COMPATIBLE_AS_IS;
+ }
+
+ /**
+ * Returns whether or not the type of the compatibility is {@link
+ * Type#COMPATIBLE_AFTER_MIGRATION}.
+ *
+ * @return whether or not the type of the compatibility is {@link
+ * Type#COMPATIBLE_AFTER_MIGRATION}.
+ */
+ public boolean isCompatibleAfterMigration() {
+ return resultType == Type.COMPATIBLE_AFTER_MIGRATION;
+ }
+
+ /**
+ * Returns whether or not the type of the compatibility is {@link
+ * Type#COMPATIBLE_WITH_RECONFIGURED_SERIALIZER}.
+ *
+ * @return whether or not the type of the compatibility is {@link
+ * Type#COMPATIBLE_WITH_RECONFIGURED_SERIALIZER}.
+ */
+ public boolean isCompatibleWithReconfiguredSerializer() {
+ return resultType == Type.COMPATIBLE_WITH_RECONFIGURED_SERIALIZER;
+ }
+
+ /**
+ * Gets the reconfigured serializer. This throws an exception if {@link
+ * #isCompatibleWithReconfiguredSerializer()} is {@code false}.
+ */
+ public TypeSerializer<T> getReconfiguredSerializer() {
+ Preconditions.checkState(
+ isCompatibleWithReconfiguredSerializer(),
+ "It is only possible to get a reconfigured serializer if the compatibility type is %s, but the type is %s",
+ Type.COMPATIBLE_WITH_RECONFIGURED_SERIALIZER,
+ resultType);
+ return reconfiguredNewSerializer;
+ }
+
+ /**
+ * Returns whether or not the type of the compatibility is {@link Type#INCOMPATIBLE}.
+ *
+ * @return whether or not the type of the compatibility is {@link Type#INCOMPATIBLE}.
+ */
+ public boolean isIncompatible() {
+ return resultType == Type.INCOMPATIBLE;
+ }
+
+ @Override
+ public String toString() {
+ return "TypeSerializerSchemaCompatibility{"
+ + "resultType="
+ + resultType
+ + ", reconfiguredNewSerializer="
+ + reconfiguredNewSerializer
+ + '}';
+ }
+}
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/typeutils/TypeSerializerSnapshot.java b/flink-core-api/src/main/java/org/apache/flink/api/common/typeutils/TypeSerializerSnapshot.java
similarity index 81%
rename from flink-core/src/main/java/org/apache/flink/api/common/typeutils/TypeSerializerSnapshot.java
rename to flink-core-api/src/main/java/org/apache/flink/api/common/typeutils/TypeSerializerSnapshot.java
index 01789b83624..4278a36f389 100644
--- a/flink-core/src/main/java/org/apache/flink/api/common/typeutils/TypeSerializerSnapshot.java
+++ b/flink-core-api/src/main/java/org/apache/flink/api/common/typeutils/TypeSerializerSnapshot.java
@@ -84,7 +84,6 @@ public interface TypeSerializerSnapshot<T> {
*
* @param out the {@link DataOutputView} to write the snapshot to.
* @throws IOException Thrown if the snapshot data could not be written.
- * @see #writeVersionedSnapshot(DataOutputView, TypeSerializerSnapshot)
*/
void writeSnapshot(DataOutputView out) throws IOException;
@@ -97,7 +96,6 @@ public interface TypeSerializerSnapshot<T> {
* @param in the {@link DataInputView} to read the snapshot from.
* @param userCodeClassLoader the user code classloader
* @throws IOException Thrown if the snapshot data could be read or parsed.
- * @see #readVersionedSnapshot(DataInputView, ClassLoader)
*/
void readSnapshot(int readVersion, DataInputView in, ClassLoader userCodeClassLoader)
throws IOException;
@@ -129,38 +127,4 @@ public interface TypeSerializerSnapshot<T> {
*/
TypeSerializerSchemaCompatibility<T> resolveSchemaCompatibility(
TypeSerializer<T> newSerializer);
-
- // ------------------------------------------------------------------------
- // read / write utilities
- // ------------------------------------------------------------------------
-
- /**
- * Writes the given snapshot to the out stream. One should always use this method to write
- * snapshots out, rather than directly calling {@link #writeSnapshot(DataOutputView)}.
- *
- * <p>The snapshot written with this method can be read via {@link
- * #readVersionedSnapshot(DataInputView, ClassLoader)}.
- */
- static void writeVersionedSnapshot(DataOutputView out, TypeSerializerSnapshot<?> snapshot)
- throws IOException {
- out.writeUTF(snapshot.getClass().getName());
- out.writeInt(snapshot.getCurrentVersion());
- snapshot.writeSnapshot(out);
- }
-
- /**
- * Reads a snapshot from the stream, performing resolving
- *
- * <p>This method reads snapshots written by {@link #writeVersionedSnapshot(DataOutputView,
- * TypeSerializerSnapshot)}.
- */
- static <T> TypeSerializerSnapshot<T> readVersionedSnapshot(DataInputView in, ClassLoader cl)
- throws IOException {
- final TypeSerializerSnapshot<T> snapshot =
- TypeSerializerSnapshotSerializationUtil.readAndInstantiateSnapshotClass(in, cl);
-
- int version = in.readInt();
- snapshot.readSnapshot(version, in, cl);
- return snapshot;
- }
}
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple0.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple0.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple0.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple0.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple1.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple1.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple1.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple1.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple10.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple10.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple10.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple10.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple11.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple11.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple11.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple11.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple12.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple12.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple12.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple12.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple13.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple13.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple13.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple13.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple14.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple14.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple14.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple14.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple15.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple15.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple15.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple15.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple16.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple16.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple16.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple16.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple17.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple17.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple17.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple17.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple18.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple18.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple18.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple18.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple19.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple19.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple19.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple19.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple2.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple2.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple2.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple2.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple20.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple20.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple20.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple20.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple21.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple21.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple21.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple21.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple22.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple22.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple22.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple22.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple23.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple23.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple23.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple23.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple24.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple24.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple24.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple24.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple25.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple25.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple25.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple25.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple3.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple3.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple3.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple3.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple4.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple4.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple4.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple4.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple5.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple5.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple5.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple5.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple6.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple6.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple6.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple6.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple7.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple7.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple7.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple7.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple8.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple8.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple8.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple8.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple9.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple9.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/Tuple9.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/Tuple9.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple0Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple0Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple0Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple0Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple10Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple10Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple10Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple10Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple11Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple11Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple11Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple11Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple12Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple12Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple12Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple12Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple13Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple13Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple13Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple13Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple14Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple14Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple14Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple14Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple15Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple15Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple15Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple15Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple16Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple16Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple16Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple16Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple17Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple17Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple17Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple17Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple18Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple18Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple18Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple18Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple19Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple19Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple19Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple19Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple1Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple1Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple1Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple1Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple20Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple20Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple20Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple20Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple21Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple21Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple21Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple21Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple22Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple22Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple22Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple22Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple23Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple23Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple23Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple23Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple24Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple24Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple24Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple24Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple25Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple25Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple25Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple25Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple2Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple2Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple2Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple2Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple3Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple3Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple3Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple3Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple4Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple4Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple4Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple4Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple5Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple5Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple5Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple5Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple6Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple6Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple6Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple6Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple7Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple7Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple7Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple7Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple8Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple8Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple8Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple8Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple9Builder.java b/flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple9Builder.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple9Builder.java
rename to flink-core-api/src/main/java/org/apache/flink/api/java/tuple/builder/Tuple9Builder.java
diff --git a/flink-core/src/main/java/org/apache/flink/core/memory/DataInputView.java b/flink-core-api/src/main/java/org/apache/flink/core/memory/DataInputView.java
similarity index 99%
rename from flink-core/src/main/java/org/apache/flink/core/memory/DataInputView.java
rename to flink-core-api/src/main/java/org/apache/flink/core/memory/DataInputView.java
index 58d5c634aed..49a9863c7e3 100644
--- a/flink-core/src/main/java/org/apache/flink/core/memory/DataInputView.java
+++ b/flink-core-api/src/main/java/org/apache/flink/core/memory/DataInputView.java
@@ -18,10 +18,9 @@
package org.apache.flink.core.memory;
-import org.apache.flink.annotation.Public;
-
import java.io.DataInput;
import java.io.IOException;
+import org.apache.flink.annotation.Public;
/**
* This interface defines a view over some memory that can be used to sequentially read the contents
diff --git a/flink-core/src/main/java/org/apache/flink/core/memory/DataOutputView.java b/flink-core-api/src/main/java/org/apache/flink/core/memory/DataOutputView.java
similarity index 99%
rename from flink-core/src/main/java/org/apache/flink/core/memory/DataOutputView.java
rename to flink-core-api/src/main/java/org/apache/flink/core/memory/DataOutputView.java
index 894c721a4e9..f54ac73315a 100644
--- a/flink-core/src/main/java/org/apache/flink/core/memory/DataOutputView.java
+++ b/flink-core-api/src/main/java/org/apache/flink/core/memory/DataOutputView.java
@@ -18,10 +18,9 @@
package org.apache.flink.core.memory;
-import org.apache.flink.annotation.Public;
-
import java.io.DataOutput;
import java.io.IOException;
+import org.apache.flink.annotation.Public;
/**
* This interface defines a view over some memory that can be used to sequentially write contents to
diff --git a/flink-core/src/main/java/org/apache/flink/types/NullFieldException.java b/flink-core-api/src/main/java/org/apache/flink/types/NullFieldException.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/types/NullFieldException.java
rename to flink-core-api/src/main/java/org/apache/flink/types/NullFieldException.java
diff --git a/flink-core/src/main/java/org/apache/flink/util/Preconditions.java b/flink-core-api/src/main/java/org/apache/flink/util/Preconditions.java
similarity index 100%
rename from flink-core/src/main/java/org/apache/flink/util/Preconditions.java
rename to flink-core-api/src/main/java/org/apache/flink/util/Preconditions.java
diff --git a/flink-connectors/flink-connector-files/src/test/java/org/apache/flink/connector/file/table/stream/PartitionCommitInfoTest.java b/flink-core-api/src/main/java/org/apache/flink/util/StringUtils.java
similarity index 56%
copy from flink-connectors/flink-connector-files/src/test/java/org/apache/flink/connector/file/table/stream/PartitionCommitInfoTest.java
copy to flink-core-api/src/main/java/org/apache/flink/util/StringUtils.java
index 1b2ee1f6fbf..c69f648b404 100644
--- a/flink-connectors/flink-connector-files/src/test/java/org/apache/flink/connector/file/table/stream/PartitionCommitInfoTest.java
+++ b/flink-core-api/src/main/java/org/apache/flink/util/StringUtils.java
@@ -16,22 +16,20 @@
* limitations under the License.
*/
-package org.apache.flink.connector.file.table.stream;
+package org.apache.flink.util;
-import org.apache.flink.api.common.ExecutionConfig;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import java.util.Arrays;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-/** Tests for partition commit info. */
-public class PartitionCommitInfoTest {
- @Test
- public void testPartitionCommitSerializer() {
- ExecutionConfig executionConfig = new ExecutionConfig();
- executionConfig.disableGenericTypes();
- assertNotNull(
- TypeInformation.of(PartitionCommitInfo.class).createSerializer(executionConfig));
+/** Utils to handle String. */
+public class StringUtils {
+ /**
+ * Converts the given object into a string representation by calling {@link Object#toString()}
+ * and formatting (possibly nested) arrays and {@code null}.
+ *
+ * <p>See {@link Arrays#deepToString(Object[])} for more information about the used format.
+ */
+ public static String arrayAwareToString(Object o) {
+ final String arrayString = Arrays.deepToString(new Object[] {o});
+ return arrayString.substring(1, arrayString.length() - 1);
}
}
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/ExecutionConfig.java b/flink-core/src/main/java/org/apache/flink/api/common/ExecutionConfig.java
index e09cd74a8a8..2adda71187e 100644
--- a/flink-core/src/main/java/org/apache/flink/api/common/ExecutionConfig.java
+++ b/flink-core/src/main/java/org/apache/flink/api/common/ExecutionConfig.java
@@ -76,8 +76,8 @@ import static org.apache.flink.util.Preconditions.checkArgument;
* </ul>
*/
@Public
-public class ExecutionConfig implements Serializable, Archiveable<ArchivedExecutionConfig> {
-
+public class ExecutionConfig
+ implements Serializable, Archiveable<ArchivedExecutionConfig>, SerializerContext {
// NOTE TO IMPLEMENTERS:
// Please do not add further fields to this class. Use the ConfigOption stack instead!
// It is currently very tricky to keep this kind of POJO classes in sync with instances of
@@ -1010,21 +1010,6 @@ public class ExecutionConfig implements Serializable, Archiveable<ArchivedExecut
// ------------------------------ Utilities ----------------------------------
- public static class SerializableSerializer<T extends Serializer<?> & Serializable>
- implements Serializable {
- private static final long serialVersionUID = 4687893502781067189L;
-
- private T serializer;
-
- public SerializableSerializer(T serializer) {
- this.serializer = serializer;
- }
-
- public T getSerializer() {
- return serializer;
- }
- }
-
/**
* Abstract class for a custom user configuration object registered at the execution config.
*
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/serialization/AbstractDeserializationSchema.java b/flink-core/src/main/java/org/apache/flink/api/common/serialization/AbstractDeserializationSchema.java
index 0b08828bbeb..0250bdf1c87 100644
--- a/flink-core/src/main/java/org/apache/flink/api/common/serialization/AbstractDeserializationSchema.java
+++ b/flink-core/src/main/java/org/apache/flink/api/common/serialization/AbstractDeserializationSchema.java
@@ -22,6 +22,7 @@ import org.apache.flink.annotation.PublicEvolving;
import org.apache.flink.api.common.functions.InvalidTypesException;
import org.apache.flink.api.common.typeinfo.TypeHint;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.java.typeutils.TypeExtractor;
import org.apache.flink.util.FlinkRuntimeException;
@@ -126,7 +127,7 @@ public abstract class AbstractDeserializationSchema<T> implements Deserializatio
*/
protected AbstractDeserializationSchema(Class<T> type) {
checkNotNull(type, "type");
- this.type = TypeInformation.of(type);
+ this.type = TypeInformationUtils.of(type);
}
/**
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/BasicArrayTypeInfo.java b/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/BasicArrayTypeInfo.java
index 8fbe693beaa..5487b75c56e 100644
--- a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/BasicArrayTypeInfo.java
+++ b/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/BasicArrayTypeInfo.java
@@ -20,7 +20,7 @@ package org.apache.flink.api.common.typeinfo;
import org.apache.flink.annotation.Public;
import org.apache.flink.annotation.PublicEvolving;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.functions.InvalidTypesException;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.common.typeutils.base.GenericArraySerializer;
@@ -124,7 +124,7 @@ public final class BasicArrayTypeInfo<T, C> extends TypeInformation<T> {
@Override
@SuppressWarnings("unchecked")
@PublicEvolving
- public TypeSerializer<T> createSerializer(ExecutionConfig executionConfig) {
+ public TypeSerializer<T> createSerializer(SerializerContext executionConfig) {
// special case the string array
if (componentInfo.getTypeClass().equals(String.class)) {
return (TypeSerializer<T>) StringArraySerializer.INSTANCE;
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/BasicTypeInfo.java b/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/BasicTypeInfo.java
index bc9aea51d76..5fffa34cdba 100644
--- a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/BasicTypeInfo.java
+++ b/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/BasicTypeInfo.java
@@ -21,6 +21,7 @@ package org.apache.flink.api.common.typeinfo;
import org.apache.flink.annotation.Public;
import org.apache.flink.annotation.PublicEvolving;
import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.functions.InvalidTypesException;
import org.apache.flink.api.common.typeutils.TypeComparator;
import org.apache.flink.api.common.typeutils.TypeSerializer;
@@ -236,7 +237,7 @@ public class BasicTypeInfo<T> extends TypeInformation<T> implements AtomicType<T
@Override
@PublicEvolving
- public TypeSerializer<T> createSerializer(ExecutionConfig executionConfig) {
+ public TypeSerializer<T> createSerializer(SerializerContext executionConfig) {
return this.serializer;
}
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/LocalTimeTypeInfo.java b/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/LocalTimeTypeInfo.java
index 67465e510d8..de9913e03d1 100644
--- a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/LocalTimeTypeInfo.java
+++ b/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/LocalTimeTypeInfo.java
@@ -20,6 +20,7 @@ package org.apache.flink.api.common.typeinfo;
import org.apache.flink.annotation.PublicEvolving;
import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeutils.TypeComparator;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.common.typeutils.base.LocalDateComparator;
@@ -107,7 +108,7 @@ public class LocalTimeTypeInfo<T extends Temporal> extends TypeInformation<T>
}
@Override
- public TypeSerializer<T> createSerializer(ExecutionConfig executionConfig) {
+ public TypeSerializer<T> createSerializer(SerializerContext executionConfig) {
return serializer;
}
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/NothingTypeInfo.java b/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/NothingTypeInfo.java
index c14810006bf..d523822c6d1 100644
--- a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/NothingTypeInfo.java
+++ b/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/NothingTypeInfo.java
@@ -20,7 +20,7 @@ package org.apache.flink.api.common.typeinfo;
import org.apache.flink.annotation.Public;
import org.apache.flink.annotation.PublicEvolving;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.types.Nothing;
@@ -68,7 +68,7 @@ public class NothingTypeInfo extends TypeInformation<Nothing> {
@Override
@PublicEvolving
- public TypeSerializer<Nothing> createSerializer(ExecutionConfig executionConfig) {
+ public TypeSerializer<Nothing> createSerializer(SerializerContext executionConfig) {
throw new RuntimeException("The Nothing type cannot have a serializer.");
}
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/PrimitiveArrayTypeInfo.java b/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/PrimitiveArrayTypeInfo.java
index cc257283158..ec9739bf37a 100644
--- a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/PrimitiveArrayTypeInfo.java
+++ b/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/PrimitiveArrayTypeInfo.java
@@ -21,6 +21,7 @@ package org.apache.flink.api.common.typeinfo;
import org.apache.flink.annotation.Public;
import org.apache.flink.annotation.PublicEvolving;
import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.functions.InvalidTypesException;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.common.typeutils.base.array.BooleanPrimitiveArrayComparator;
@@ -171,7 +172,7 @@ public class PrimitiveArrayTypeInfo<T> extends TypeInformation<T> implements Ato
@Override
@PublicEvolving
- public TypeSerializer<T> createSerializer(ExecutionConfig executionConfig) {
+ public TypeSerializer<T> createSerializer(SerializerContext executionConfig) {
return this.serializer;
}
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/SqlTimeTypeInfo.java b/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/SqlTimeTypeInfo.java
index a5a482d1fb5..ff716fc56f9 100644
--- a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/SqlTimeTypeInfo.java
+++ b/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/SqlTimeTypeInfo.java
@@ -20,6 +20,7 @@ package org.apache.flink.api.common.typeinfo;
import org.apache.flink.annotation.PublicEvolving;
import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeutils.TypeComparator;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.common.typeutils.base.DateComparator;
@@ -107,7 +108,7 @@ public class SqlTimeTypeInfo<T> extends TypeInformation<T> implements AtomicType
}
@Override
- public TypeSerializer<T> createSerializer(ExecutionConfig executionConfig) {
+ public TypeSerializer<T> createSerializer(SerializerContext executionConfig) {
return serializer;
}
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/TypeInformationUtils.java b/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/TypeInformationUtils.java
new file mode 100644
index 00000000000..1c04ee5c4bb
--- /dev/null
+++ b/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/TypeInformationUtils.java
@@ -0,0 +1,122 @@
+/*
+ * 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.
+ */
+
+package org.apache.flink.api.common.typeinfo;
+
+import org.apache.flink.api.common.functions.InvalidTypesException;
+import org.apache.flink.api.java.tuple.Tuple;
+import org.apache.flink.api.java.typeutils.TupleTypeInfo;
+import org.apache.flink.api.java.typeutils.TypeExtractor;
+import org.apache.flink.util.FlinkRuntimeException;
+
+import java.util.Arrays;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/** Utils for {@link TypeInformation}. */
+public class TypeInformationUtils {
+ // ------------------------------------------------------------------------
+
+ /**
+ * Creates a TypeInformation for the type described by the given class.
+ *
+ * <p>This method only works for non-generic types. For generic types, use the {@link
+ * #of(TypeHint)} method.
+ *
+ * @param typeClass The class of the type.
+ * @param <T> The generic type.
+ * @return The TypeInformation object for the type described by the hint.
+ */
+ public static <T> TypeInformation<T> of(Class<T> typeClass) {
+ try {
+ return TypeExtractor.createTypeInfo(typeClass);
+ } catch (InvalidTypesException e) {
+ throw new FlinkRuntimeException(
+ "Cannot extract TypeInformation from Class alone, because generic parameters are missing. "
+ + "Please use TypeInformationUtils.of(TypeHint) instead, or another equivalent method in the API that "
+ + "accepts a TypeHint instead of a Class. "
+ + "For example for a Tuple2<Long, String> pass a 'new TypeHint<Tuple2<Long, String>>(){}'.");
+ }
+ }
+
+ /**
+ * Creates a TypeInformation for a generic type via a utility "type hint". This method can be
+ * used as follows:
+ *
+ * <pre>{@code
+ * TypeInformation<Tuple2<String, Long>> info = TypeInformationUtils.of(new TypeHint<Tuple2<String, Long>>(){});
+ * }</pre>
+ *
+ * @param typeHint The hint for the generic type.
+ * @param <T> The generic type.
+ * @return The TypeInformation object for the type described by the hint.
+ */
+ public static <T> TypeInformation<T> of(TypeHint<T> typeHint) {
+ return typeHint.getTypeInfo();
+ }
+
+ public static TypeInformation<?> fromTypeDescriptor(TypeDescriptor<?> typeDescriptor) {
+ if (typeDescriptor instanceof BasicTypeDescriptor) {
+ return fromBasicTypeDescriptor((BasicTypeDescriptor<?>) typeDescriptor);
+ } else if (typeDescriptor instanceof TupleTypeDescriptor) {
+ TupleTypeDescriptor<?> tupleTypeDescriptor = (TupleTypeDescriptor<?>) typeDescriptor;
+ return fromTupleDescriptor(tupleTypeDescriptor);
+ } else if (typeDescriptor instanceof PojoDescriptor) {
+ PojoDescriptor<?> pojoDescriptor = (PojoDescriptor<?>) typeDescriptor;
+ return fromPojoDescriptor(pojoDescriptor);
+ }
+ throw new IllegalArgumentException(
+ String.format("unsupported type descriptor %s.", typeDescriptor));
+ }
+
+ private static TupleTypeInfo<Tuple> fromTupleDescriptor(
+ TupleTypeDescriptor tupleTypeDescriptor) {
+ TypeDescriptor[] typeDescriptors = tupleTypeDescriptor.getTypeDescriptors();
+ TypeInformation<?>[] typeInformations =
+ Arrays.stream(typeDescriptors)
+ .map(TypeInformationUtils::fromTypeDescriptor)
+ .toArray(TypeInformation[]::new);
+ return new TupleTypeInfo<>(typeInformations);
+ }
+
+ private static TypeInformation<?> fromPojoDescriptor(PojoDescriptor<?> pojoDescriptor) {
+ Class<?> pojoClass = pojoDescriptor.getPojoClass();
+ Map<String, TypeDescriptor<?>> fields = pojoDescriptor.getFields();
+ if (fields == null) {
+ // try extracts from class
+ return Types.POJO(pojoClass);
+ }
+ Map<String, TypeInformation<?>> typeInformationMap =
+ fields.entrySet().stream()
+ .collect(
+ Collectors.toMap(
+ Map.Entry::getKey,
+ (e) -> fromTypeDescriptor(e.getValue())));
+ return Types.POJO(pojoClass, typeInformationMap);
+ }
+
+ private static TypeInformation<?> fromBasicTypeDescriptor(
+ BasicTypeDescriptor<?> typeDescriptors) {
+ if (String.class.equals(typeDescriptors.getTypeClass())) {
+ return Types.STRING;
+ } else if (Long.class.equals(typeDescriptors.getTypeClass())) {
+ return Types.LONG;
+ }
+ throw new RuntimeException("unsupported basic class.");
+ }
+}
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/Types.java b/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/Types.java
index a5c509b9ad0..f4eae539948 100644
--- a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/Types.java
+++ b/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/Types.java
@@ -65,8 +65,9 @@ import java.util.Map;
*
* <p>A more convenient alternative might be a {@link TypeHint}.
*
- * @see TypeInformation#of(Class) specify type information based on a class that will be analyzed
- * @see TypeInformation#of(TypeHint) specify type information based on a {@link TypeHint}
+ * @see TypeInformationUtils#of(Class) specify type information based on a class that will be
+ * analyzed
+ * @see TypeInformationUtils#of(TypeHint) specify type information based on a {@link TypeHint}
*/
@PublicEvolving
public class Types {
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/typeutils/NestedSerializersSnapshotDelegate.java b/flink-core/src/main/java/org/apache/flink/api/common/typeutils/NestedSerializersSnapshotDelegate.java
index c5bf14354ce..7e487eda48a 100644
--- a/flink-core/src/main/java/org/apache/flink/api/common/typeutils/NestedSerializersSnapshotDelegate.java
+++ b/flink-core/src/main/java/org/apache/flink/api/common/typeutils/NestedSerializersSnapshotDelegate.java
@@ -148,7 +148,7 @@ public class NestedSerializersSnapshotDelegate {
out.writeInt(nestedSnapshots.length);
for (TypeSerializerSnapshot<?> snap : nestedSnapshots) {
- TypeSerializerSnapshot.writeVersionedSnapshot(out, snap);
+ TypeSerializerSnapshotUtils.writeVersionedSnapshot(out, snap);
}
}
@@ -173,7 +173,7 @@ public class NestedSerializersSnapshotDelegate {
new TypeSerializerSnapshot<?>[numSnapshots];
for (int i = 0; i < numSnapshots; i++) {
- nestedSnapshots[i] = TypeSerializerSnapshot.readVersionedSnapshot(in, cl);
+ nestedSnapshots[i] = TypeSerializerSnapshotUtils.readVersionedSnapshot(in, cl);
}
return new NestedSerializersSnapshotDelegate(nestedSnapshots);
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/typeutils/TypeSerializerSnapshotSerializationUtil.java b/flink-core/src/main/java/org/apache/flink/api/common/typeutils/TypeSerializerSnapshotSerializationUtil.java
index 10c8ff73001..7c3cef502ab 100644
--- a/flink-core/src/main/java/org/apache/flink/api/common/typeutils/TypeSerializerSnapshotSerializationUtil.java
+++ b/flink-core/src/main/java/org/apache/flink/api/common/typeutils/TypeSerializerSnapshotSerializationUtil.java
@@ -108,7 +108,7 @@ public class TypeSerializerSnapshotSerializationUtil {
// write the format version of this utils format
super.write(out);
- TypeSerializerSnapshot.writeVersionedSnapshot(out, serializerSnapshot);
+ TypeSerializerSnapshotUtils.writeVersionedSnapshot(out, serializerSnapshot);
}
@SuppressWarnings("unchecked")
@@ -159,7 +159,7 @@ public class TypeSerializerSnapshotSerializationUtil {
@VisibleForTesting
static <T> TypeSerializerSnapshot<T> deserializeV2(DataInputView in, ClassLoader cl)
throws IOException {
- return TypeSerializerSnapshot.readVersionedSnapshot(in, cl);
+ return TypeSerializerSnapshotUtils.readVersionedSnapshot(in, cl);
}
}
}
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/typeutils/TypeSerializerSnapshotUtils.java b/flink-core/src/main/java/org/apache/flink/api/common/typeutils/TypeSerializerSnapshotUtils.java
new file mode 100644
index 00000000000..5b02ef7185a
--- /dev/null
+++ b/flink-core/src/main/java/org/apache/flink/api/common/typeutils/TypeSerializerSnapshotUtils.java
@@ -0,0 +1,61 @@
+/*
+ * 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.
+ */
+
+package org.apache.flink.api.common.typeutils;
+
+import org.apache.flink.core.memory.DataInputView;
+import org.apache.flink.core.memory.DataOutputView;
+
+import java.io.IOException;
+
+/** Utils for {@link TypeSerializerSnapshot}. */
+public class TypeSerializerSnapshotUtils {
+ // ------------------------------------------------------------------------
+ // read / write utilities
+ // ------------------------------------------------------------------------
+ /**
+ * Writes the given snapshot to the out stream. One should always use this method to write
+ * snapshots out, rather than directly calling {@link
+ * TypeSerializerSnapshot#writeSnapshot(DataOutputView)}.
+ *
+ * <p>The snapshot written with this method can be read via {@link
+ * #readVersionedSnapshot(DataInputView, ClassLoader)}.
+ */
+ public static void writeVersionedSnapshot(
+ DataOutputView out, TypeSerializerSnapshot<?> snapshot) throws IOException {
+ out.writeUTF(snapshot.getClass().getName());
+ out.writeInt(snapshot.getCurrentVersion());
+ snapshot.writeSnapshot(out);
+ }
+
+ /**
+ * Reads a snapshot from the stream, performing resolving
+ *
+ * <p>This method reads snapshots written by {@link #writeVersionedSnapshot(DataOutputView,
+ * TypeSerializerSnapshot)}.
+ */
+ public static <T> TypeSerializerSnapshot<T> readVersionedSnapshot(
+ DataInputView in, ClassLoader cl) throws IOException {
+ final TypeSerializerSnapshot<T> snapshot =
+ TypeSerializerSnapshotSerializationUtil.readAndInstantiateSnapshotClass(in, cl);
+
+ int version = in.readInt();
+ snapshot.readSnapshot(version, in, cl);
+ return snapshot;
+ }
+}
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/EitherTypeInfo.java b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/EitherTypeInfo.java
index e5f1c139578..502bb4d0752 100644
--- a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/EitherTypeInfo.java
+++ b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/EitherTypeInfo.java
@@ -20,7 +20,7 @@ package org.apache.flink.api.java.typeutils;
import org.apache.flink.annotation.Public;
import org.apache.flink.annotation.PublicEvolving;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.java.typeutils.runtime.EitherSerializer;
@@ -100,9 +100,10 @@ public class EitherTypeInfo<L, R> extends TypeInformation<Either<L, R>> {
@Override
@PublicEvolving
- public TypeSerializer<Either<L, R>> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<Either<L, R>> createSerializer(SerializerContext serializerContext) {
return new EitherSerializer<L, R>(
- leftType.createSerializer(config), rightType.createSerializer(config));
+ leftType.createSerializer(serializerContext), rightType.createSerializer(
+ serializerContext));
}
@Override
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/EnumTypeInfo.java b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/EnumTypeInfo.java
index d4355c592e0..ddfe05bacd5 100644
--- a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/EnumTypeInfo.java
+++ b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/EnumTypeInfo.java
@@ -21,6 +21,7 @@ package org.apache.flink.api.java.typeutils;
import org.apache.flink.annotation.Public;
import org.apache.flink.annotation.PublicEvolving;
import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.AtomicType;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.TypeComparator;
@@ -99,7 +100,7 @@ public class EnumTypeInfo<T extends Enum<T>> extends TypeInformation<T> implemen
@Override
@PublicEvolving
- public TypeSerializer<T> createSerializer(ExecutionConfig executionConfig) {
+ public TypeSerializer<T> createSerializer(SerializerContext executionConfig) {
return new EnumSerializer<T>(typeClass);
}
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/GenericTypeInfo.java b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/GenericTypeInfo.java
index 9344f3037c8..5d02b6d9984 100644
--- a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/GenericTypeInfo.java
+++ b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/GenericTypeInfo.java
@@ -21,6 +21,7 @@ package org.apache.flink.api.java.typeutils;
import org.apache.flink.annotation.Public;
import org.apache.flink.annotation.PublicEvolving;
import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.AtomicType;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.TypeComparator;
@@ -80,15 +81,15 @@ public class GenericTypeInfo<T> extends TypeInformation<T> implements AtomicType
@Override
@PublicEvolving
- public TypeSerializer<T> createSerializer(ExecutionConfig config) {
- if (config.hasGenericTypesDisabled()) {
+ public TypeSerializer<T> createSerializer(SerializerContext serializerContext) {
+ if (serializerContext.hasGenericTypesDisabled()) {
throw new UnsupportedOperationException(
"Generic types have been disabled in the ExecutionConfig and type "
+ this.typeClass.getName()
+ " is treated as a generic type.");
}
- return new KryoSerializer<T>(this.typeClass, config);
+ return new KryoSerializer<T>(this.typeClass, serializerContext);
}
@SuppressWarnings("unchecked")
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/ListTypeInfo.java b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/ListTypeInfo.java
index 203cfe970a7..b43825520e4 100644
--- a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/ListTypeInfo.java
+++ b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/ListTypeInfo.java
@@ -19,8 +19,9 @@
package org.apache.flink.api.java.typeutils;
import org.apache.flink.annotation.PublicEvolving;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.common.typeutils.base.ListSerializer;
@@ -41,7 +42,8 @@ public final class ListTypeInfo<T> extends TypeInformation<List<T>> {
private final TypeInformation<T> elementTypeInfo;
public ListTypeInfo(Class<T> elementTypeClass) {
- this.elementTypeInfo = of(checkNotNull(elementTypeClass, "elementTypeClass"));
+ this.elementTypeInfo =
+ TypeInformationUtils.of(checkNotNull(elementTypeClass, "elementTypeClass"));
}
public ListTypeInfo(TypeInformation<T> elementTypeInfo) {
@@ -95,8 +97,8 @@ public final class ListTypeInfo<T> extends TypeInformation<List<T>> {
}
@Override
- public TypeSerializer<List<T>> createSerializer(ExecutionConfig config) {
- TypeSerializer<T> elementTypeSerializer = elementTypeInfo.createSerializer(config);
+ public TypeSerializer<List<T>> createSerializer(SerializerContext serializerContext) {
+ TypeSerializer<T> elementTypeSerializer = elementTypeInfo.createSerializer(serializerContext);
return new ListSerializer<>(elementTypeSerializer);
}
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/MapTypeInfo.java b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/MapTypeInfo.java
index c5f7a21309f..fb2e4b17b0c 100644
--- a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/MapTypeInfo.java
+++ b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/MapTypeInfo.java
@@ -19,8 +19,9 @@
package org.apache.flink.api.java.typeutils;
import org.apache.flink.annotation.PublicEvolving;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.common.typeutils.base.MapSerializer;
import org.apache.flink.util.Preconditions;
@@ -54,8 +55,11 @@ public class MapTypeInfo<K, V> extends TypeInformation<Map<K, V>> {
}
public MapTypeInfo(Class<K> keyClass, Class<V> valueClass) {
- this.keyTypeInfo = of(checkNotNull(keyClass, "The key class cannot be null."));
- this.valueTypeInfo = of(checkNotNull(valueClass, "The value class cannot be null."));
+ this.keyTypeInfo =
+ TypeInformationUtils.of(checkNotNull(keyClass, "The key class cannot be null."));
+ this.valueTypeInfo =
+ TypeInformationUtils.of(
+ checkNotNull(valueClass, "The value class cannot be null."));
}
// ------------------------------------------------------------------------
@@ -108,9 +112,9 @@ public class MapTypeInfo<K, V> extends TypeInformation<Map<K, V>> {
}
@Override
- public TypeSerializer<Map<K, V>> createSerializer(ExecutionConfig config) {
- TypeSerializer<K> keyTypeSerializer = keyTypeInfo.createSerializer(config);
- TypeSerializer<V> valueTypeSerializer = valueTypeInfo.createSerializer(config);
+ public TypeSerializer<Map<K, V>> createSerializer(SerializerContext serializerContext) {
+ TypeSerializer<K> keyTypeSerializer = keyTypeInfo.createSerializer(serializerContext);
+ TypeSerializer<V> valueTypeSerializer = valueTypeInfo.createSerializer(serializerContext);
return new MapSerializer<>(keyTypeSerializer, valueTypeSerializer);
}
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/MissingTypeInfo.java b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/MissingTypeInfo.java
index 15300e27715..e1f51f8c968 100644
--- a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/MissingTypeInfo.java
+++ b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/MissingTypeInfo.java
@@ -18,7 +18,7 @@
package org.apache.flink.api.java.typeutils;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.functions.InvalidTypesException;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.TypeSerializer;
@@ -86,7 +86,7 @@ public class MissingTypeInfo extends TypeInformation<InvalidTypesException> {
}
@Override
- public TypeSerializer<InvalidTypesException> createSerializer(ExecutionConfig executionConfig) {
+ public TypeSerializer<InvalidTypesException> createSerializer(SerializerContext executionConfig) {
throw new UnsupportedOperationException(
"The missing type information cannot be used as a type information.");
}
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/ObjectArrayTypeInfo.java b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/ObjectArrayTypeInfo.java
index e88f57035f6..a723a352d77 100644
--- a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/ObjectArrayTypeInfo.java
+++ b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/ObjectArrayTypeInfo.java
@@ -20,7 +20,7 @@ package org.apache.flink.api.java.typeutils;
import org.apache.flink.annotation.Public;
import org.apache.flink.annotation.PublicEvolving;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.common.typeutils.base.GenericArraySerializer;
@@ -90,7 +90,7 @@ public class ObjectArrayTypeInfo<T, C> extends TypeInformation<T> {
@SuppressWarnings("unchecked")
@Override
@PublicEvolving
- public TypeSerializer<T> createSerializer(ExecutionConfig executionConfig) {
+ public TypeSerializer<T> createSerializer(SerializerContext executionConfig) {
return (TypeSerializer<T>)
new GenericArraySerializer<C>(
componentInfo.getTypeClass(),
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/PojoTypeInfo.java b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/PojoTypeInfo.java
index 021f9dfe333..7ed64334a90 100644
--- a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/PojoTypeInfo.java
+++ b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/PojoTypeInfo.java
@@ -21,6 +21,7 @@ package org.apache.flink.api.java.typeutils;
import org.apache.flink.annotation.Public;
import org.apache.flink.annotation.PublicEvolving;
import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.operators.Keys.ExpressionKeys;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.CompositeType;
@@ -330,28 +331,28 @@ public class PojoTypeInfo<T> extends CompositeType<T> {
@Override
@PublicEvolving
@SuppressWarnings("unchecked")
- public TypeSerializer<T> createSerializer(ExecutionConfig config) {
- if (config.isForceKryoEnabled()) {
- return new KryoSerializer<>(getTypeClass(), config);
+ public TypeSerializer<T> createSerializer(SerializerContext serializerContext) {
+ if (serializerContext.isForceKryoEnabled()) {
+ return new KryoSerializer<>(getTypeClass(), serializerContext);
}
- if (config.isForceAvroEnabled()) {
+ if (serializerContext.isForceAvroEnabled()) {
return AvroUtils.getAvroUtils().createAvroSerializer(getTypeClass());
}
- return createPojoSerializer(config);
+ return createPojoSerializer(serializerContext);
}
- public PojoSerializer<T> createPojoSerializer(ExecutionConfig config) {
+ public PojoSerializer<T> createPojoSerializer(SerializerContext context) {
TypeSerializer<?>[] fieldSerializers = new TypeSerializer<?>[fields.length];
Field[] reflectiveFields = new Field[fields.length];
for (int i = 0; i < fields.length; i++) {
- fieldSerializers[i] = fields[i].getTypeInformation().createSerializer(config);
+ fieldSerializers[i] = fields[i].getTypeInformation().createSerializer(context);
reflectiveFields[i] = fields[i].getField();
}
- return new PojoSerializer<T>(getTypeClass(), fieldSerializers, reflectiveFields, config);
+ return new PojoSerializer<T>(getTypeClass(), fieldSerializers, reflectiveFields, context);
}
@Override
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/RowTypeInfo.java b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/RowTypeInfo.java
index 9c5b174ae21..fa6ae0de451 100644
--- a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/RowTypeInfo.java
+++ b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/RowTypeInfo.java
@@ -19,6 +19,7 @@ package org.apache.flink.api.java.typeutils;
import org.apache.flink.annotation.PublicEvolving;
import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.operators.Keys.ExpressionKeys;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.CompositeType;
@@ -248,11 +249,11 @@ public class RowTypeInfo extends TupleTypeInfoBase<Row> {
}
@Override
- public TypeSerializer<Row> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<Row> createSerializer(SerializerContext serializerContext) {
int len = getArity();
TypeSerializer<?>[] fieldSerializers = new TypeSerializer[len];
for (int i = 0; i < len; i++) {
- fieldSerializers[i] = types[i].createSerializer(config);
+ fieldSerializers[i] = types[i].createSerializer(serializerContext);
}
final LinkedHashMap<String, Integer> positionByName = new LinkedHashMap<>();
for (int i = 0; i < fieldNames.length; i++) {
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/TupleTypeInfo.java b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/TupleTypeInfo.java
index bd28f3a3828..3b78b3b5303 100644
--- a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/TupleTypeInfo.java
+++ b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/TupleTypeInfo.java
@@ -21,12 +21,14 @@ package org.apache.flink.api.java.typeutils;
import org.apache.flink.annotation.Public;
import org.apache.flink.annotation.PublicEvolving;
import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.functions.InvalidTypesException;
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.TypeComparator;
import org.apache.flink.api.common.typeutils.TypeSerializer;
-import org.apache.flink.api.java.tuple.*;
+import org.apache.flink.api.java.tuple.Tuple;
+import org.apache.flink.api.java.tuple.Tuple0;
import org.apache.flink.api.java.typeutils.runtime.Tuple0Serializer;
import org.apache.flink.api.java.typeutils.runtime.TupleComparator;
import org.apache.flink.api.java.typeutils.runtime.TupleSerializer;
@@ -94,7 +96,7 @@ public final class TupleTypeInfo<T extends Tuple> extends TupleTypeInfoBase<T> {
@SuppressWarnings("unchecked")
@Override
@PublicEvolving
- public TupleSerializer<T> createSerializer(ExecutionConfig executionConfig) {
+ public TupleSerializer<T> createSerializer(SerializerContext executionConfig) {
if (getTypeClass() == Tuple0.class) {
return (TupleSerializer<T>) Tuple0Serializer.INSTANCE;
}
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/ValueTypeInfo.java b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/ValueTypeInfo.java
index c8fad1fc7cd..9dd857dab64 100644
--- a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/ValueTypeInfo.java
+++ b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/ValueTypeInfo.java
@@ -21,6 +21,7 @@ package org.apache.flink.api.java.typeutils;
import org.apache.flink.annotation.Public;
import org.apache.flink.annotation.PublicEvolving;
import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.functions.InvalidTypesException;
import org.apache.flink.api.common.typeinfo.AtomicType;
import org.apache.flink.api.common.typeinfo.TypeInformation;
@@ -163,7 +164,7 @@ public class ValueTypeInfo<T extends Value> extends TypeInformation<T> implement
@Override
@SuppressWarnings("unchecked")
@PublicEvolving
- public TypeSerializer<T> createSerializer(ExecutionConfig executionConfig) {
+ public TypeSerializer<T> createSerializer(SerializerContext executionConfig) {
if (BooleanValue.class.isAssignableFrom(type)) {
return (TypeSerializer<T>) BooleanValueSerializer.INSTANCE;
} else if (ByteValue.class.isAssignableFrom(type)) {
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/KryoRegistration.java b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/KryoRegistration.java
index afd15c0ed89..d45146e91be 100644
--- a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/KryoRegistration.java
+++ b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/KryoRegistration.java
@@ -19,7 +19,7 @@
package org.apache.flink.api.java.typeutils.runtime;
import org.apache.flink.annotation.Internal;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializableSerializer;
import org.apache.flink.util.Preconditions;
import com.esotericsoftware.kryo.Kryo;
@@ -60,8 +60,7 @@ public class KryoRegistration implements Serializable {
* serializer definition type is {@link SerializerDefinitionType#INSTANCE}.
*/
@Nullable
- private final ExecutionConfig.SerializableSerializer<? extends Serializer<?>>
- serializableSerializerInstance;
+ private final SerializableSerializer<? extends Serializer<?>> serializableSerializerInstance;
private final SerializerDefinitionType serializerDefinitionType;
@@ -86,8 +85,7 @@ public class KryoRegistration implements Serializable {
public KryoRegistration(
Class<?> registeredClass,
- ExecutionConfig.SerializableSerializer<? extends Serializer<?>>
- serializableSerializerInstance) {
+ SerializableSerializer<? extends Serializer<?>> serializableSerializerInstance) {
this.registeredClass = Preconditions.checkNotNull(registeredClass);
this.serializerClass = null;
@@ -111,8 +109,7 @@ public class KryoRegistration implements Serializable {
}
@Nullable
- public ExecutionConfig.SerializableSerializer<? extends Serializer<?>>
- getSerializableSerializerInstance() {
+ public SerializableSerializer<? extends Serializer<?>> getSerializableSerializerInstance() {
return serializableSerializerInstance;
}
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/PojoSerializer.java b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/PojoSerializer.java
index b3b793e430a..3bee82b7b84 100644
--- a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/PojoSerializer.java
+++ b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/PojoSerializer.java
@@ -19,7 +19,7 @@
package org.apache.flink.api.java.typeutils.runtime;
import org.apache.flink.annotation.Internal;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.java.typeutils.TypeExtractor;
import org.apache.flink.core.memory.DataInputView;
@@ -84,7 +84,7 @@ public final class PojoSerializer<T> extends TypeSerializer<T> {
// --------------------------------------------------------------------------------------------
/** Configuration of the current execution. */
- private final ExecutionConfig executionConfig;
+ private final SerializerContext serializerContext;
private transient ClassLoader cl;
@@ -94,13 +94,13 @@ public final class PojoSerializer<T> extends TypeSerializer<T> {
Class<T> clazz,
TypeSerializer<?>[] fieldSerializers,
Field[] fields,
- ExecutionConfig executionConfig) {
+ SerializerContext context) {
this.clazz = checkNotNull(clazz);
this.fieldSerializers = (TypeSerializer<Object>[]) checkNotNull(fieldSerializers);
this.fields = checkNotNull(fields);
this.numFields = fieldSerializers.length;
- this.executionConfig = checkNotNull(executionConfig);
+ this.serializerContext = checkNotNull(context);
for (int i = 0; i < numFields; i++) {
this.fields[i].setAccessible(true);
@@ -110,11 +110,11 @@ public final class PojoSerializer<T> extends TypeSerializer<T> {
// We only want those classes that are not our own class and are actually sub-classes.
LinkedHashSet<Class<?>> registeredSubclasses =
- getRegisteredSubclassesFromExecutionConfig(clazz, executionConfig);
+ getRegisteredSubclassesFromExecutionConfig(clazz, serializerContext);
this.registeredClasses = createRegisteredSubclassTags(registeredSubclasses);
this.registeredSerializers =
- createRegisteredSubclassSerializers(registeredSubclasses, executionConfig);
+ createRegisteredSubclassSerializers(registeredSubclasses, serializerContext);
this.subclassSerializerCache = new HashMap<>();
}
@@ -130,7 +130,7 @@ public final class PojoSerializer<T> extends TypeSerializer<T> {
LinkedHashMap<Class<?>, Integer> registeredClasses,
TypeSerializer<?>[] registeredSerializers,
Map<Class<?>, TypeSerializer<?>> subclassSerializerCache,
- ExecutionConfig executionConfig) {
+ SerializerContext serializerContext) {
this.clazz = checkNotNull(clazz);
this.fields = checkNotNull(fields);
@@ -139,7 +139,7 @@ public final class PojoSerializer<T> extends TypeSerializer<T> {
this.registeredClasses = checkNotNull(registeredClasses);
this.registeredSerializers = checkNotNull(registeredSerializers);
this.subclassSerializerCache = checkNotNull(subclassSerializerCache);
- this.executionConfig = checkNotNull(executionConfig);
+ this.serializerContext = checkNotNull(serializerContext);
this.cl = Thread.currentThread().getContextClassLoader();
}
@@ -163,7 +163,7 @@ public final class PojoSerializer<T> extends TypeSerializer<T> {
subclassSerializerCache.entrySet().stream()
.collect(
Collectors.toMap(Map.Entry::getKey, e -> e.getValue().duplicate())),
- executionConfig);
+ serializerContext);
}
@SuppressWarnings("unchecked")
@@ -642,8 +642,8 @@ public final class PojoSerializer<T> extends TypeSerializer<T> {
return fieldSerializers[fieldIndex];
}
- ExecutionConfig getExecutionConfig() {
- return executionConfig;
+ public SerializerContext getSerializerContext() {
+ return serializerContext;
}
LinkedHashMap<Class<?>, Integer> getRegisteredClasses() {
@@ -672,11 +672,11 @@ public final class PojoSerializer<T> extends TypeSerializer<T> {
/** Extracts the subclasses of the base POJO class registered in the execution config. */
private static LinkedHashSet<Class<?>> getRegisteredSubclassesFromExecutionConfig(
- Class<?> basePojoClass, ExecutionConfig executionConfig) {
+ Class<?> basePojoClass, SerializerContext serializerContext) {
LinkedHashSet<Class<?>> subclassesInRegistrationOrder =
- new LinkedHashSet<>(executionConfig.getRegisteredPojoTypes().size());
- for (Class<?> registeredClass : executionConfig.getRegisteredPojoTypes()) {
+ new LinkedHashSet<>(serializerContext.getRegisteredPojoTypes().size());
+ for (Class<?> registeredClass : serializerContext.getRegisteredPojoTypes()) {
if (registeredClass.equals(basePojoClass)) {
continue;
}
@@ -711,7 +711,7 @@ public final class PojoSerializer<T> extends TypeSerializer<T> {
* serializers will correspond to order of provided subclasses.
*/
private static TypeSerializer<?>[] createRegisteredSubclassSerializers(
- LinkedHashSet<Class<?>> registeredSubclasses, ExecutionConfig executionConfig) {
+ LinkedHashSet<Class<?>> registeredSubclasses, SerializerContext serializerContext) {
final TypeSerializer<?>[] subclassSerializers =
new TypeSerializer[registeredSubclasses.size()];
@@ -719,7 +719,8 @@ public final class PojoSerializer<T> extends TypeSerializer<T> {
int i = 0;
for (Class<?> registeredClass : registeredSubclasses) {
subclassSerializers[i] =
- TypeExtractor.createTypeInfo(registeredClass).createSerializer(executionConfig);
+ TypeExtractor.createTypeInfo(registeredClass)
+ .createSerializer(serializerContext);
i++;
}
@@ -743,7 +744,7 @@ public final class PojoSerializer<T> extends TypeSerializer<T> {
private TypeSerializer<?> createSubclassSerializer(Class<?> subclass) {
TypeSerializer<?> serializer =
- TypeExtractor.createTypeInfo(subclass).createSerializer(executionConfig);
+ TypeExtractor.createTypeInfo(subclass).createSerializer(serializerContext);
if (serializer instanceof PojoSerializer) {
PojoSerializer<?> subclassSerializer = (PojoSerializer<?>) serializer;
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/PojoSerializerSnapshot.java b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/PojoSerializerSnapshot.java
index 3606d63625c..23d02eb10eb 100644
--- a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/PojoSerializerSnapshot.java
+++ b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/PojoSerializerSnapshot.java
@@ -511,7 +511,7 @@ public class PojoSerializerSnapshot<T> implements TypeSerializerSnapshot<T> {
reconfiguredSubclassRegistry.f0,
reconfiguredSubclassRegistry.f1,
restoreSerializers(nonRegisteredSubclassSerializerSnapshots.unwrapOptionals()),
- originalNewPojoSerializer.getExecutionConfig());
+ originalNewPojoSerializer.getSerializerContext());
}
private static TypeSerializer[] constructReconfiguredFieldSerializers(
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/PojoSerializerSnapshotData.java b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/PojoSerializerSnapshotData.java
index 25170deeb27..5f5c78c2125 100644
--- a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/PojoSerializerSnapshotData.java
+++ b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/PojoSerializerSnapshotData.java
@@ -21,6 +21,7 @@ package org.apache.flink.api.java.typeutils.runtime;
import org.apache.flink.annotation.Internal;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.common.typeutils.TypeSerializerSnapshot;
+import org.apache.flink.api.common.typeutils.TypeSerializerSnapshotUtils;
import org.apache.flink.core.memory.DataInputView;
import org.apache.flink.core.memory.DataOutputView;
import org.apache.flink.util.InstantiationUtil;
@@ -190,17 +191,17 @@ final class PojoSerializerSnapshotData<T> {
out,
fieldSerializerSnapshots,
PojoFieldUtils::writeField,
- TypeSerializerSnapshot::writeVersionedSnapshot);
+ TypeSerializerSnapshotUtils::writeVersionedSnapshot);
writeOptionalMap(
out,
registeredSubclassSerializerSnapshots,
NoOpWriter.noopWriter(),
- TypeSerializerSnapshot::writeVersionedSnapshot);
+ TypeSerializerSnapshotUtils::writeVersionedSnapshot);
writeOptionalMap(
out,
nonRegisteredSubclassSerializerSnapshots,
NoOpWriter.noopWriter(),
- TypeSerializerSnapshot::writeVersionedSnapshot);
+ TypeSerializerSnapshotUtils::writeVersionedSnapshot);
}
private static <T> PojoSerializerSnapshotData<T> readSnapshotData(
@@ -290,7 +291,7 @@ final class PojoSerializerSnapshotData<T> {
snapshotReader(ClassLoader cl) {
return (input, unused) -> {
try {
- return TypeSerializerSnapshot.readVersionedSnapshot(input, cl);
+ return TypeSerializerSnapshotUtils.readVersionedSnapshot(input, cl);
} catch (Throwable t) {
LOG.warn("Exception while reading serializer snapshot.", t);
return null;
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/kryo/KryoSerializer.java b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/kryo/KryoSerializer.java
index 594236f59ad..ef03e353f7a 100644
--- a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/kryo/KryoSerializer.java
+++ b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/kryo/KryoSerializer.java
@@ -19,8 +19,8 @@
package org.apache.flink.api.java.typeutils.runtime.kryo;
import org.apache.flink.annotation.VisibleForTesting;
-import org.apache.flink.api.common.ExecutionConfig;
-import org.apache.flink.api.common.ExecutionConfig.SerializableSerializer;
+import org.apache.flink.api.common.SerializableSerializer;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.common.typeutils.TypeSerializerSnapshot;
import org.apache.flink.api.java.typeutils.AvroUtils;
@@ -134,8 +134,7 @@ public class KryoSerializer<T> extends TypeSerializer<T> {
// ------------------------------------------------------------------------
- private final LinkedHashMap<Class<?>, ExecutionConfig.SerializableSerializer<?>>
- defaultSerializers;
+ private final LinkedHashMap<Class<?>, SerializableSerializer<?>> defaultSerializers;
private final LinkedHashMap<Class<?>, Class<? extends Serializer<?>>> defaultSerializerClasses;
/**
@@ -163,8 +162,7 @@ public class KryoSerializer<T> extends TypeSerializer<T> {
// ------------------------------------------------------------------------
// legacy fields; these fields cannot yet be removed to retain backwards compatibility
- private LinkedHashMap<Class<?>, ExecutionConfig.SerializableSerializer<?>>
- registeredTypesWithSerializers;
+ private LinkedHashMap<Class<?>, SerializableSerializer<?>> registeredTypesWithSerializers;
private LinkedHashMap<Class<?>, Class<? extends Serializer<?>>>
registeredTypesWithSerializerClasses;
private LinkedHashSet<Class<?>> registeredTypes;
@@ -174,18 +172,18 @@ public class KryoSerializer<T> extends TypeSerializer<T> {
// ------------------------------------------------------------------------
- public KryoSerializer(Class<T> type, ExecutionConfig executionConfig) {
+ public KryoSerializer(Class<T> type, SerializerContext serializerContext) {
this.type = checkNotNull(type);
- this.defaultSerializers = executionConfig.getDefaultKryoSerializers();
- this.defaultSerializerClasses = executionConfig.getDefaultKryoSerializerClasses();
+ this.defaultSerializers = serializerContext.getDefaultKryoSerializers();
+ this.defaultSerializerClasses = serializerContext.getDefaultKryoSerializerClasses();
this.kryoRegistrations =
buildKryoRegistrations(
this.type,
- executionConfig.getRegisteredKryoTypes(),
- executionConfig.getRegisteredTypesWithKryoSerializerClasses(),
- executionConfig.getRegisteredTypesWithKryoSerializers());
+ serializerContext.getRegisteredKryoTypes(),
+ serializerContext.getRegisteredTypesWithKryoSerializerClasses(),
+ serializerContext.getRegisteredTypesWithKryoSerializers());
}
/**
@@ -199,7 +197,7 @@ public class KryoSerializer<T> extends TypeSerializer<T> {
this.kryoRegistrations = new LinkedHashMap<>(toCopy.kryoRegistrations.size());
// deep copy the serializer instances in defaultSerializers
- for (Map.Entry<Class<?>, ExecutionConfig.SerializableSerializer<?>> entry :
+ for (Map.Entry<Class<?>, SerializableSerializer<?>> entry :
toCopy.defaultSerializers.entrySet()) {
this.defaultSerializers.put(entry.getKey(), deepCopySerializer(entry.getValue()));
@@ -213,7 +211,7 @@ public class KryoSerializer<T> extends TypeSerializer<T> {
if (kryoRegistration.getSerializerDefinitionType()
== KryoRegistration.SerializerDefinitionType.INSTANCE) {
- ExecutionConfig.SerializableSerializer<? extends Serializer<?>> serializerInstance =
+ SerializableSerializer<? extends Serializer<?>> serializerInstance =
kryoRegistration.getSerializableSerializerInstance();
if (serializerInstance != null) {
@@ -529,7 +527,7 @@ public class KryoSerializer<T> extends TypeSerializer<T> {
// Add default serializers first, so that the type registrations without a serializer
// are registered with a default serializer
- for (Map.Entry<Class<?>, ExecutionConfig.SerializableSerializer<?>> entry :
+ for (Map.Entry<Class<?>, SerializableSerializer<?>> entry :
defaultSerializers.entrySet()) {
kryo.addDefaultSerializer(entry.getKey(), entry.getValue().getSerializer());
}
@@ -574,8 +572,7 @@ public class KryoSerializer<T> extends TypeSerializer<T> {
LinkedHashSet<Class<?>> registeredTypes,
LinkedHashMap<Class<?>, Class<? extends Serializer<?>>>
registeredTypesWithSerializerClasses,
- LinkedHashMap<Class<?>, ExecutionConfig.SerializableSerializer<?>>
- registeredTypesWithSerializers) {
+ LinkedHashMap<Class<?>, SerializableSerializer<?>> registeredTypesWithSerializers) {
final LinkedHashMap<String, KryoRegistration> kryoRegistrations = new LinkedHashMap<>();
@@ -596,9 +593,8 @@ public class KryoSerializer<T> extends TypeSerializer<T> {
registeredTypeWithSerializerClassEntry.getValue()));
}
- for (Map.Entry<Class<?>, ExecutionConfig.SerializableSerializer<?>>
- registeredTypeWithSerializerEntry :
- checkNotNull(registeredTypesWithSerializers).entrySet()) {
+ for (Map.Entry<Class<?>, SerializableSerializer<?>> registeredTypeWithSerializerEntry :
+ checkNotNull(registeredTypesWithSerializers).entrySet()) {
kryoRegistrations.put(
registeredTypeWithSerializerEntry.getKey().getName(),
@@ -639,8 +635,8 @@ public class KryoSerializer<T> extends TypeSerializer<T> {
}
}
- private ExecutionConfig.SerializableSerializer<? extends Serializer<?>> deepCopySerializer(
- ExecutionConfig.SerializableSerializer<? extends Serializer<?>> original) {
+ private SerializableSerializer<? extends Serializer<?>> deepCopySerializer(
+ SerializableSerializer<? extends Serializer<?>> original) {
try {
return InstantiationUtil.clone(
original, Thread.currentThread().getContextClassLoader());
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/kryo/KryoSerializerSnapshot.java b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/kryo/KryoSerializerSnapshot.java
index 9696b1ef712..a3d434e8308 100644
--- a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/kryo/KryoSerializerSnapshot.java
+++ b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/kryo/KryoSerializerSnapshot.java
@@ -18,7 +18,7 @@
package org.apache.flink.api.java.typeutils.runtime.kryo;
-import org.apache.flink.api.common.ExecutionConfig.SerializableSerializer;
+import org.apache.flink.api.common.SerializableSerializer;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.common.typeutils.TypeSerializerSchemaCompatibility;
import org.apache.flink.api.common.typeutils.TypeSerializerSnapshot;
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/kryo/KryoSerializerSnapshotData.java b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/kryo/KryoSerializerSnapshotData.java
index 45a93c1d470..b527d8abd27 100644
--- a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/kryo/KryoSerializerSnapshotData.java
+++ b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/kryo/KryoSerializerSnapshotData.java
@@ -18,7 +18,7 @@
package org.apache.flink.api.java.typeutils.runtime.kryo;
-import org.apache.flink.api.common.ExecutionConfig.SerializableSerializer;
+import org.apache.flink.api.common.SerializableSerializer;
import org.apache.flink.api.java.typeutils.runtime.DataInputViewStream;
import org.apache.flink.api.java.typeutils.runtime.DataOutputViewStream;
import org.apache.flink.api.java.typeutils.runtime.KryoRegistration;
diff --git a/flink-core/src/test/java/org/apache/flink/api/common/serialization/AbstractDeserializationSchemaTest.java b/flink-core/src/test/java/org/apache/flink/api/common/serialization/AbstractDeserializationSchemaTest.java
index 653c9087cc1..3966737ad16 100644
--- a/flink-core/src/test/java/org/apache/flink/api/common/serialization/AbstractDeserializationSchemaTest.java
+++ b/flink-core/src/test/java/org/apache/flink/api/common/serialization/AbstractDeserializationSchemaTest.java
@@ -21,6 +21,7 @@ package org.apache.flink.api.common.serialization;
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
import org.apache.flink.api.common.typeinfo.TypeHint;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.util.FlinkRuntimeException;
@@ -41,7 +42,7 @@ public class AbstractDeserializationSchemaTest {
public void testTypeExtractionTuple() {
TypeInformation<Tuple2<byte[], byte[]>> type = new TupleSchema().getProducedType();
TypeInformation<Tuple2<byte[], byte[]>> expected =
- TypeInformation.of(new TypeHint<Tuple2<byte[], byte[]>>() {});
+ TypeInformationUtils.of(new TypeHint<Tuple2<byte[], byte[]>>() {});
assertEquals(expected, type);
}
@@ -56,14 +57,15 @@ public class AbstractDeserializationSchemaTest {
}.getProducedType();
TypeInformation<Tuple2<byte[], byte[]>> expected =
- TypeInformation.of(new TypeHint<Tuple2<byte[], byte[]>>() {});
+ TypeInformationUtils.of(new TypeHint<Tuple2<byte[], byte[]>>() {});
assertEquals(expected, type);
}
@Test
public void testTypeExtractionGeneric() {
TypeInformation<JSONPObject> type = new JsonSchema().getProducedType();
- TypeInformation<JSONPObject> expected = TypeInformation.of(new TypeHint<JSONPObject>() {});
+ TypeInformation<JSONPObject> expected =
+ TypeInformationUtils.of(new TypeHint<JSONPObject>() {});
assertEquals(expected, type);
}
@@ -77,7 +79,8 @@ public class AbstractDeserializationSchemaTest {
}
}.getProducedType();
- TypeInformation<JSONPObject> expected = TypeInformation.of(new TypeHint<JSONPObject>() {});
+ TypeInformation<JSONPObject> expected =
+ TypeInformationUtils.of(new TypeHint<JSONPObject>() {});
assertEquals(expected, type);
}
diff --git a/flink-core/src/test/java/org/apache/flink/api/common/typeinfo/TypeDescriptorToTypeInformationTest.java b/flink-core/src/test/java/org/apache/flink/api/common/typeinfo/TypeDescriptorToTypeInformationTest.java
new file mode 100644
index 00000000000..4dc3a6bf0ef
--- /dev/null
+++ b/flink-core/src/test/java/org/apache/flink/api/common/typeinfo/TypeDescriptorToTypeInformationTest.java
@@ -0,0 +1,76 @@
+/*
+ * 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.
+ */
+
+package org.apache.flink.api.common.typeinfo;
+
+import org.apache.flink.api.java.tuple.Tuple;
+import org.apache.flink.api.java.tuple.Tuple2;
+
+import org.junit.jupiter.api.Test;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/** Tests for {@link TypeDescriptor} convert to {@link TypeInformation}. */
+class TypeDescriptorToTypeInformationTest {
+ @Test
+ void testBasicDescriptor() {
+ assertType(TypeDescriptors.LONG, Types.LONG);
+ assertType(TypeDescriptors.STRING, Types.STRING);
+ }
+
+ @Test
+ void testTupleDescriptor() {
+ TupleTypeDescriptor<Tuple> tupleType =
+ TypeDescriptors.TUPLE(TypeDescriptors.LONG, TypeDescriptors.STRING);
+ assertType(tupleType, Types.TUPLE(Types.LONG, Types.STRING));
+ }
+
+ @Test
+ void testPojoDescriptor() {
+ assertType(TypeDescriptors.POJO(TestPojo.class), Types.POJO(TestPojo.class));
+
+ Map<String, TypeDescriptor<?>> typeDescriptorMap = new HashMap<>();
+ typeDescriptorMap.put("a", TypeDescriptors.LONG);
+ typeDescriptorMap.put(
+ "c", TypeDescriptors.TUPLE(TypeDescriptors.STRING, TypeDescriptors.LONG));
+ TypeDescriptor<TestPojo> pojoType = TypeDescriptors.POJO(TestPojo.class, typeDescriptorMap);
+ assertType(pojoType, Types.POJO(TestPojo.class));
+ }
+
+ private static <T> void assertType(
+ TypeDescriptor<T> typeDescriptors, TypeInformation<T> typeInformation) {
+ assertThat(TypeInformationUtils.fromTypeDescriptor(typeDescriptors))
+ .isEqualTo(typeInformation);
+ }
+
+ public static class TestPojo {
+ public long a;
+
+ public Tuple2<String, Long> c;
+
+ public TestPojo() {}
+
+ public TestPojo(int a, Tuple2<String, Long> c) {
+ this.a = a;
+ this.c = c;
+ }
+ }
+}
diff --git a/flink-core/src/test/java/org/apache/flink/api/common/typeinfo/TypeInformationTest.java b/flink-core/src/test/java/org/apache/flink/api/common/typeinfo/TypeInformationTest.java
index 21100abf4ad..d5e0827a2b0 100644
--- a/flink-core/src/test/java/org/apache/flink/api/common/typeinfo/TypeInformationTest.java
+++ b/flink-core/src/test/java/org/apache/flink/api/common/typeinfo/TypeInformationTest.java
@@ -36,13 +36,13 @@ public class TypeInformationTest {
@Test
public void testOfClass() {
- assertEquals(BasicTypeInfo.STRING_TYPE_INFO, TypeInformation.of(String.class));
+ assertEquals(BasicTypeInfo.STRING_TYPE_INFO, TypeInformationUtils.of(String.class));
}
@Test
public void testOfGenericClassForFlink() {
try {
- TypeInformation.of(Tuple3.class);
+ TypeInformationUtils.of(Tuple3.class);
fail("should fail with an exception");
} catch (FlinkRuntimeException e) {
// check that the error message mentions the TypeHint
@@ -52,13 +52,14 @@ public class TypeInformationTest {
@Test
public void testOfGenericClassForGenericType() {
- assertEquals(new GenericTypeInfo<>(List.class), TypeInformation.of(List.class));
+ assertEquals(new GenericTypeInfo<>(List.class), TypeInformationUtils.of(List.class));
}
@Test
public void testOfTypeHint() {
- assertEquals(BasicTypeInfo.STRING_TYPE_INFO, TypeInformation.of(String.class));
- assertEquals(BasicTypeInfo.STRING_TYPE_INFO, TypeInformation.of(new TypeHint<String>() {}));
+ assertEquals(BasicTypeInfo.STRING_TYPE_INFO, TypeInformationUtils.of(String.class));
+ assertEquals(
+ BasicTypeInfo.STRING_TYPE_INFO, TypeInformationUtils.of(new TypeHint<String>() {}));
TypeInformation<Tuple3<String, Double, Boolean>> tupleInfo =
new TupleTypeInfo<>(
@@ -67,6 +68,7 @@ public class TypeInformationTest {
BasicTypeInfo.BOOLEAN_TYPE_INFO);
assertEquals(
- tupleInfo, TypeInformation.of(new TypeHint<Tuple3<String, Double, Boolean>>() {}));
+ tupleInfo,
+ TypeInformationUtils.of(new TypeHint<Tuple3<String, Double, Boolean>>() {}));
}
}
diff --git a/flink-core/src/test/java/org/apache/flink/api/common/typeutils/CompositeSerializerTest.java b/flink-core/src/test/java/org/apache/flink/api/common/typeutils/CompositeSerializerTest.java
index b640e4d38c2..718a8d13415 100644
--- a/flink-core/src/test/java/org/apache/flink/api/common/typeutils/CompositeSerializerTest.java
+++ b/flink-core/src/test/java/org/apache/flink/api/common/typeutils/CompositeSerializerTest.java
@@ -19,7 +19,7 @@
package org.apache.flink.api.common.typeutils;
import org.apache.flink.api.common.ExecutionConfig;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeutils.base.BooleanSerializer;
import org.apache.flink.api.common.typeutils.base.LongSerializer;
import org.apache.flink.api.common.typeutils.base.StringSerializer;
@@ -49,7 +49,7 @@ class CompositeSerializerTest {
Tuple2.of(LongSerializer.INSTANCE, new Object[] {1L, 23L}),
Tuple2.of(StringSerializer.INSTANCE, new Object[] {"teststr1", "teststr2"}),
Tuple2.of(
- TypeInformation.of(Pojo.class).createSerializer(execConf),
+ TypeInformationUtils.of(Pojo.class).createSerializer(execConf),
new Object[] {
new Pojo(3, new String[] {"123", "456"}),
new Pojo(6, new String[] {})
diff --git a/flink-core/src/test/java/org/apache/flink/api/common/typeutils/CompositeTypeSerializerSnapshotTest.java b/flink-core/src/test/java/org/apache/flink/api/common/typeutils/CompositeTypeSerializerSnapshotTest.java
index 622a99b69b1..1ef28339253 100644
--- a/flink-core/src/test/java/org/apache/flink/api/common/typeutils/CompositeTypeSerializerSnapshotTest.java
+++ b/flink-core/src/test/java/org/apache/flink/api/common/typeutils/CompositeTypeSerializerSnapshotTest.java
@@ -187,11 +187,11 @@ public class CompositeTypeSerializerSnapshotTest {
testSerializer.snapshotConfiguration();
DataOutputSerializer out = new DataOutputSerializer(128);
- TypeSerializerSnapshot.writeVersionedSnapshot(out, testSerializerSnapshot);
+ TypeSerializerSnapshotUtils.writeVersionedSnapshot(out, testSerializerSnapshot);
DataInputDeserializer in = new DataInputDeserializer(out.getCopyOfBuffer());
testSerializerSnapshot =
- TypeSerializerSnapshot.readVersionedSnapshot(
+ TypeSerializerSnapshotUtils.readVersionedSnapshot(
in, Thread.currentThread().getContextClassLoader());
TestCompositeTypeSerializer newTestSerializer =
@@ -221,11 +221,11 @@ public class CompositeTypeSerializerSnapshotTest {
testSerializer.snapshotConfiguration();
DataOutputSerializer out = new DataOutputSerializer(128);
- TypeSerializerSnapshot.writeVersionedSnapshot(out, testSerializerSnapshot);
+ TypeSerializerSnapshotUtils.writeVersionedSnapshot(out, testSerializerSnapshot);
DataInputDeserializer in = new DataInputDeserializer(out.getCopyOfBuffer());
testSerializerSnapshot =
- TypeSerializerSnapshot.readVersionedSnapshot(
+ TypeSerializerSnapshotUtils.readVersionedSnapshot(
in, Thread.currentThread().getContextClassLoader());
// now, restore the composite type serializer;
diff --git a/flink-core/src/test/java/org/apache/flink/api/common/typeutils/TypeInformationTestBase.java b/flink-core/src/test/java/org/apache/flink/api/common/typeutils/TypeInformationTestBase.java
index d4ae3f2b5b3..59e95c01332 100644
--- a/flink-core/src/test/java/org/apache/flink/api/common/typeutils/TypeInformationTestBase.java
+++ b/flink-core/src/test/java/org/apache/flink/api/common/typeutils/TypeInformationTestBase.java
@@ -18,7 +18,7 @@
package org.apache.flink.api.common.typeutils;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.util.InstantiationUtil;
import org.apache.flink.util.TestLoggerExtension;
@@ -151,7 +151,7 @@ public abstract class TypeInformationTestBase<T extends TypeInformation<?>> {
}
@Override
- public TypeSerializer<Object> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<Object> createSerializer(SerializerContext serializerContext) {
return null;
}
diff --git a/flink-core/src/test/java/org/apache/flink/api/java/typeutils/PojoTypeExtractionTest.java b/flink-core/src/test/java/org/apache/flink/api/java/typeutils/PojoTypeExtractionTest.java
index b8f6af5c55b..01a0e37f0c1 100644
--- a/flink-core/src/test/java/org/apache/flink/api/java/typeutils/PojoTypeExtractionTest.java
+++ b/flink-core/src/test/java/org/apache/flink/api/java/typeutils/PojoTypeExtractionTest.java
@@ -23,6 +23,7 @@ import org.apache.flink.api.common.typeinfo.BasicArrayTypeInfo;
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
import org.apache.flink.api.common.typeinfo.TypeHint;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeutils.CompositeType.FlatFieldDescriptor;
import org.apache.flink.api.java.tuple.Tuple1;
import org.apache.flink.api.java.tuple.Tuple2;
@@ -624,7 +625,7 @@ public class PojoTypeExtractionTest {
TypeInformation<?> ti =
TypeExtractor.getMapReturnTypes(
function,
- TypeInformation.of(new TypeHint<PojoWithGenerics<Long, String>>() {}));
+ TypeInformationUtils.of(new TypeHint<PojoWithGenerics<Long, String>>() {}));
Assert.assertTrue(ti instanceof PojoTypeInfo<?>);
PojoTypeInfo<?> pti = (PojoTypeInfo<?>) ti;
@@ -666,7 +667,7 @@ public class PojoTypeExtractionTest {
TypeInformation<?> ti =
TypeExtractor.getMapReturnTypes(
function,
- TypeInformation.of(new TypeHint<Tuple2<Character, Boolean>>() {}));
+ TypeInformationUtils.of(new TypeHint<Tuple2<Character, Boolean>>() {}));
Assert.assertTrue(ti instanceof PojoTypeInfo<?>);
PojoTypeInfo<?> pti = (PojoTypeInfo<?>) ti;
@@ -704,7 +705,7 @@ public class PojoTypeExtractionTest {
TypeInformation<?> ti =
TypeExtractor.getMapReturnTypes(
function,
- TypeInformation.of(
+ TypeInformationUtils.of(
new TypeHint<PojoTuple<Character, Boolean, Boolean>>() {}));
Assert.assertTrue(ti instanceof TupleTypeInfo<?>);
@@ -734,7 +735,8 @@ public class PojoTypeExtractionTest {
TypeInformation<?> ti =
TypeExtractor.getMapReturnTypes(
function,
- TypeInformation.of(new TypeHint<PojoWithParameterizedFields1<Byte>>() {}));
+ TypeInformationUtils.of(
+ new TypeHint<PojoWithParameterizedFields1<Byte>>() {}));
Assert.assertEquals(BasicTypeInfo.BYTE_TYPE_INFO, ti);
}
@@ -759,7 +761,8 @@ public class PojoTypeExtractionTest {
TypeInformation<?> ti =
TypeExtractor.getMapReturnTypes(
function,
- TypeInformation.of(new TypeHint<PojoWithParameterizedFields2<Byte>>() {}));
+ TypeInformationUtils.of(
+ new TypeHint<PojoWithParameterizedFields2<Byte>>() {}));
Assert.assertEquals(BasicTypeInfo.BYTE_TYPE_INFO, ti);
}
@@ -784,7 +787,7 @@ public class PojoTypeExtractionTest {
TypeInformation<?> ti =
TypeExtractor.getMapReturnTypes(
function,
- TypeInformation.of(
+ TypeInformationUtils.of(
new TypeHint<PojoWithParameterizedFields3<Integer>>() {}));
Assert.assertEquals(BasicTypeInfo.INT_TYPE_INFO, ti);
}
@@ -810,7 +813,7 @@ public class PojoTypeExtractionTest {
TypeInformation<?> ti =
TypeExtractor.getMapReturnTypes(
function,
- TypeInformation.of(
+ TypeInformationUtils.of(
new TypeHint<PojoWithParameterizedFields4<Integer>>() {}));
Assert.assertEquals(BasicTypeInfo.INT_TYPE_INFO, ti);
diff --git a/flink-core/src/test/java/org/apache/flink/api/java/typeutils/TupleTypeInfoTest.java b/flink-core/src/test/java/org/apache/flink/api/java/typeutils/TupleTypeInfoTest.java
index 1af8e8c3852..a4f64eb5b55 100644
--- a/flink-core/src/test/java/org/apache/flink/api/java/typeutils/TupleTypeInfoTest.java
+++ b/flink-core/src/test/java/org/apache/flink/api/java/typeutils/TupleTypeInfoTest.java
@@ -18,7 +18,7 @@
package org.apache.flink.api.java.typeutils;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.TypeInformationTestBase;
@@ -52,7 +52,7 @@ class TupleTypeInfoTest extends TypeInformationTestBase<TupleTypeInfo<?>> {
private static final long serialVersionUID = -7985593598027660836L;
@Override
- public TypeSerializer<Tuple1> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<Tuple1> createSerializer(SerializerContext serializerContext) {
return null;
}
diff --git a/flink-core/src/test/java/org/apache/flink/api/java/typeutils/TypeExtractorTest.java b/flink-core/src/test/java/org/apache/flink/api/java/typeutils/TypeExtractorTest.java
index 3faa149ad12..f31c422251c 100644
--- a/flink-core/src/test/java/org/apache/flink/api/java/typeutils/TypeExtractorTest.java
+++ b/flink-core/src/test/java/org/apache/flink/api/java/typeutils/TypeExtractorTest.java
@@ -18,7 +18,7 @@
package org.apache.flink.api.java.typeutils;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.functions.InvalidTypesException;
import org.apache.flink.api.common.functions.JoinFunction;
import org.apache.flink.api.common.functions.MapFunction;
@@ -36,6 +36,7 @@ import org.apache.flink.api.common.typeinfo.PrimitiveArrayTypeInfo;
import org.apache.flink.api.common.typeinfo.SqlTimeTypeInfo;
import org.apache.flink.api.common.typeinfo.TypeHint;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeinfo.Types;
import org.apache.flink.api.common.typeutils.CompositeType.FlatFieldDescriptor;
import org.apache.flink.api.common.typeutils.TypeSerializer;
@@ -161,7 +162,7 @@ public class TypeExtractorTest {
TypeExtractor.getMapReturnTypes(
function,
(TypeInformation)
- TypeInformation.of(
+ TypeInformationUtils.of(
new TypeHint<
Tuple9<
Integer,
@@ -250,7 +251,7 @@ public class TypeExtractorTest {
TypeExtractor.getFlatMapReturnTypes(
function,
(TypeInformation)
- TypeInformation.of(
+ TypeInformationUtils.of(
new TypeHint<
Tuple3<
Tuple1<String>,
@@ -338,7 +339,8 @@ public class TypeExtractorTest {
TypeInformation<?> ti =
TypeExtractor.getFlatMapReturnTypes(
- function, (TypeInformation) TypeInformation.of(new TypeHint<Tuple0>() {}));
+ function,
+ (TypeInformation) TypeInformationUtils.of(new TypeHint<Tuple0>() {}));
Assert.assertTrue(ti.isTupleType());
Assert.assertEquals(0, ti.getArity());
@@ -364,7 +366,7 @@ public class TypeExtractorTest {
TypeExtractor.getFlatJoinReturnTypes(
function,
(TypeInformation)
- TypeInformation.of(new TypeHint<Tuple2<String, Integer>>() {}),
+ TypeInformationUtils.of(new TypeHint<Tuple2<String, Integer>>() {}),
(TypeInformation) Types.STRING);
Assert.assertTrue(ti.isTupleType());
@@ -423,7 +425,7 @@ public class TypeExtractorTest {
TypeInformation<?> ti =
TypeExtractor.getCrossReturnTypes(
function,
- (TypeInformation) TypeInformation.of(new TypeHint<CustomType>() {}),
+ (TypeInformation) TypeInformationUtils.of(new TypeHint<CustomType>() {}),
(TypeInformation) Types.INT);
Assert.assertFalse(ti.isBasicType());
@@ -535,7 +537,8 @@ public class TypeExtractorTest {
TypeExtractor.getMapReturnTypes(
function,
(TypeInformation)
- TypeInformation.of(new TypeHint<Tuple2<Long, CustomType>>() {}));
+ TypeInformationUtils.of(
+ new TypeHint<Tuple2<Long, CustomType>>() {}));
Assert.assertTrue(ti.isTupleType());
Assert.assertEquals(2, ti.getArity());
@@ -594,7 +597,7 @@ public class TypeExtractorTest {
TypeInformation<?> ti =
TypeExtractor.getKeySelectorTypes(
function,
- (TypeInformation) TypeInformation.of(new TypeHint<StringValue>() {}));
+ (TypeInformation) TypeInformationUtils.of(new TypeHint<StringValue>() {}));
Assert.assertFalse(ti.isBasicType());
Assert.assertFalse(ti.isTupleType());
@@ -632,7 +635,7 @@ public class TypeExtractorTest {
TypeExtractor.getMapReturnTypes(
function,
(TypeInformation)
- TypeInformation.of(
+ TypeInformationUtils.of(
new TypeHint<Tuple2<StringValue, IntValue>>() {}));
Assert.assertFalse(ti.isBasicType());
@@ -679,7 +682,7 @@ public class TypeExtractorTest {
TypeExtractor.getMapReturnTypes(
function,
(TypeInformation)
- TypeInformation.of(new TypeHint<Tuple2<Long, String>>() {}));
+ TypeInformationUtils.of(new TypeHint<Tuple2<Long, String>>() {}));
Assert.assertTrue(ti.isTupleType());
Assert.assertEquals(2, ti.getArity());
@@ -727,7 +730,7 @@ public class TypeExtractorTest {
TypeExtractor.getMapReturnTypes(
function,
(TypeInformation)
- TypeInformation.of(
+ TypeInformationUtils.of(
new TypeHint<Tuple3<String, Long, Integer>>() {}));
Assert.assertTrue(ti.isTupleType());
@@ -775,7 +778,7 @@ public class TypeExtractorTest {
TypeExtractor.getMapReturnTypes(
function,
(TypeInformation)
- TypeInformation.of(
+ TypeInformationUtils.of(
new TypeHint<Tuple3<String, Long, String>>() {}));
Assert.assertTrue(ti.isTupleType());
@@ -807,7 +810,7 @@ public class TypeExtractorTest {
TypeExtractor.getMapReturnTypes(
function,
(TypeInformation)
- TypeInformation.of(
+ TypeInformationUtils.of(
new TypeHint<Tuple3<String, Long, String>>() {}));
Assert.assertTrue(ti.isTupleType());
@@ -899,7 +902,7 @@ public class TypeExtractorTest {
TypeExtractor.getMapReturnTypes(
function,
(TypeInformation)
- TypeInformation.of(new TypeHint<Tuple2<String, String>>() {}));
+ TypeInformationUtils.of(new TypeHint<Tuple2<String, String>>() {}));
Assert.assertTrue(ti.isTupleType());
Assert.assertEquals(2, ti.getArity());
@@ -937,7 +940,7 @@ public class TypeExtractorTest {
TypeExtractor.getMapReturnTypes(
function,
(TypeInformation)
- TypeInformation.of(
+ TypeInformationUtils.of(
new TypeHint<
Tuple2<String, Tuple2<Integer, Integer>>>() {}));
@@ -983,7 +986,7 @@ public class TypeExtractorTest {
TypeExtractor.getMapReturnTypes(
function,
(TypeInformation)
- TypeInformation.of(
+ TypeInformationUtils.of(
new TypeHint<
Tuple2<
Boolean,
@@ -1129,7 +1132,7 @@ public class TypeExtractorTest {
TypeExtractor.getMapReturnTypes(
function,
(TypeInformation)
- TypeInformation.of(new TypeHint<Tuple2<String, String>>() {}));
+ TypeInformationUtils.of(new TypeHint<Tuple2<String, String>>() {}));
Assert.assertTrue(ti.isTupleType());
Assert.assertEquals(2, ti.getArity());
@@ -1248,7 +1251,7 @@ public class TypeExtractorTest {
TypeInformation<?> ti =
TypeExtractor.getMapReturnTypes(
function,
- (TypeInformation) TypeInformation.of(new TypeHint<DoubleValue>() {}));
+ (TypeInformation) TypeInformationUtils.of(new TypeHint<DoubleValue>() {}));
Assert.assertTrue(ti.isTupleType());
Assert.assertEquals(2, ti.getArity());
@@ -1404,14 +1407,15 @@ public class TypeExtractorTest {
TypeInformation<?> ti =
TypeExtractor.getMapReturnTypes(
function,
- (TypeInformation) TypeInformation.of(new TypeHint<StringValue>() {}),
+ (TypeInformation) TypeInformationUtils.of(new TypeHint<StringValue>() {}),
"name",
true);
Assert.assertTrue(ti instanceof MissingTypeInfo);
try {
TypeExtractor.getMapReturnTypes(
- function, (TypeInformation) TypeInformation.of(new TypeHint<StringValue>() {}));
+ function,
+ (TypeInformation) TypeInformationUtils.of(new TypeHint<StringValue>() {}));
Assert.fail("Expected an exception");
} catch (InvalidTypesException e) {
// expected
@@ -1439,8 +1443,8 @@ public class TypeExtractorTest {
TypeInformation<?> ti =
TypeExtractor.getCoGroupReturnTypes(
function,
- (TypeInformation) TypeInformation.of(new TypeHint<String[]>() {}),
- (TypeInformation) TypeInformation.of(new TypeHint<String[]>() {}));
+ (TypeInformation) TypeInformationUtils.of(new TypeHint<String[]>() {}),
+ (TypeInformation) TypeInformationUtils.of(new TypeHint<String[]>() {}));
Assert.assertFalse(ti.isBasicType());
Assert.assertFalse(ti.isTupleType());
@@ -1491,7 +1495,7 @@ public class TypeExtractorTest {
TypeExtractor.getMapReturnTypes(
function,
(TypeInformation)
- TypeInformation.of(new TypeHint<CustomArrayObject[]>() {}));
+ TypeInformationUtils.of(new TypeHint<CustomArrayObject[]>() {}));
Assert.assertTrue(ti instanceof ObjectArrayTypeInfo<?, ?>);
Assert.assertEquals(
@@ -1517,7 +1521,8 @@ public class TypeExtractorTest {
TypeExtractor.getMapReturnTypes(
function,
(TypeInformation)
- TypeInformation.of(new TypeHint<Tuple2<String, String>[]>() {}));
+ TypeInformationUtils.of(
+ new TypeHint<Tuple2<String, String>[]>() {}));
Assert.assertTrue(ti instanceof ObjectArrayTypeInfo<?, ?>);
ObjectArrayTypeInfo<?, ?> oati = (ObjectArrayTypeInfo<?, ?>) ti;
@@ -1540,7 +1545,8 @@ public class TypeExtractorTest {
TypeInformation<?> ti =
TypeExtractor.getMapReturnTypes(
function,
- (TypeInformation) TypeInformation.of(new TypeHint<Tuple1<Boolean>[]>() {}));
+ (TypeInformation)
+ TypeInformationUtils.of(new TypeHint<Tuple1<Boolean>[]>() {}));
Assert.assertTrue(ti instanceof ObjectArrayTypeInfo<?, ?>);
ObjectArrayTypeInfo<?, ?> oati = (ObjectArrayTypeInfo<?, ?>) ti;
@@ -1569,7 +1575,7 @@ public class TypeExtractorTest {
TypeInformation<?> ti =
TypeExtractor.getMapReturnTypes(
function,
- (TypeInformation) TypeInformation.of(new TypeHint<Boolean[]>() {}));
+ (TypeInformation) TypeInformationUtils.of(new TypeHint<Boolean[]>() {}));
Assert.assertTrue(ti instanceof ObjectArrayTypeInfo<?, ?>);
ObjectArrayTypeInfo<?, ?> oati = (ObjectArrayTypeInfo<?, ?>) ti;
Assert.assertEquals(BasicTypeInfo.BOOLEAN_TYPE_INFO, oati.getComponentInfo());
@@ -1635,7 +1641,7 @@ public class TypeExtractorTest {
TypeExtractor.getMapReturnTypes(
function,
(TypeInformation)
- TypeInformation.of(new TypeHint<Tuple2<Integer, String>>() {}));
+ TypeInformationUtils.of(new TypeHint<Tuple2<Integer, String>>() {}));
Assert.fail("exception expected");
} catch (InvalidTypesException e) {
// right
@@ -1645,7 +1651,8 @@ public class TypeExtractorTest {
TypeExtractor.getMapReturnTypes(
function,
(TypeInformation)
- TypeInformation.of(new TypeHint<Tuple3<String, String, String>>() {}));
+ TypeInformationUtils.of(
+ new TypeHint<Tuple3<String, String, String>>() {}));
Assert.fail("exception expected");
} catch (InvalidTypesException e) {
// right
@@ -1663,7 +1670,8 @@ public class TypeExtractorTest {
try {
TypeExtractor.getMapReturnTypes(
- function2, (TypeInformation) TypeInformation.of(new TypeHint<IntValue>() {}));
+ function2,
+ (TypeInformation) TypeInformationUtils.of(new TypeHint<IntValue>() {}));
Assert.fail("exception expected");
} catch (InvalidTypesException e) {
// right
@@ -1681,7 +1689,8 @@ public class TypeExtractorTest {
try {
TypeExtractor.getMapReturnTypes(
- function3, (TypeInformation) TypeInformation.of(new TypeHint<Integer[]>() {}));
+ function3,
+ (TypeInformation) TypeInformationUtils.of(new TypeHint<Integer[]>() {}));
Assert.fail("exception expected");
} catch (InvalidTypesException e) {
// right
@@ -1703,7 +1712,7 @@ public class TypeExtractorTest {
TypeExtractor.getFlatMapReturnTypes(
new DummyFlatMapFunction<String, Integer, String, Boolean>(),
(TypeInformation)
- TypeInformation.of(new TypeHint<Tuple2<String, Integer>>() {}),
+ TypeInformationUtils.of(new TypeHint<Tuple2<String, Integer>>() {}),
"name",
true);
Assert.assertTrue(ti instanceof MissingTypeInfo);
@@ -1712,7 +1721,7 @@ public class TypeExtractorTest {
TypeExtractor.getFlatMapReturnTypes(
new DummyFlatMapFunction<String, Integer, String, Boolean>(),
(TypeInformation)
- TypeInformation.of(new TypeHint<Tuple2<String, Integer>>() {}));
+ TypeInformationUtils.of(new TypeHint<Tuple2<String, Integer>>() {}));
Assert.fail("Expected an exception");
} catch (InvalidTypesException e) {
@@ -1924,7 +1933,7 @@ public class TypeExtractorTest {
TypeInformation<?> ti =
TypeExtractor.getMapReturnTypes(
(MapFunction) new DuplicateValue<String>(),
- TypeInformation.of(new TypeHint<Tuple1<String>>() {}));
+ TypeInformationUtils.of(new TypeHint<Tuple1<String>>() {}));
Assert.assertTrue(ti.isTupleType());
Assert.assertEquals(2, ti.getArity());
TupleTypeInfo<?> tti = (TupleTypeInfo<?>) ti;
@@ -1948,7 +1957,7 @@ public class TypeExtractorTest {
TypeInformation<?> ti =
TypeExtractor.getMapReturnTypes(
(MapFunction) new DuplicateValueNested<String>(),
- TypeInformation.of(new TypeHint<Tuple1<Tuple1<String>>>() {}));
+ TypeInformationUtils.of(new TypeHint<Tuple1<Tuple1<String>>>() {}));
Assert.assertTrue(ti.isTupleType());
Assert.assertEquals(2, ti.getArity());
TupleTypeInfo<?> tti = (TupleTypeInfo<?>) ti;
@@ -1976,7 +1985,7 @@ public class TypeExtractorTest {
TypeInformation<?> ti =
TypeExtractor.getMapReturnTypes(
(MapFunction) em,
- TypeInformation.of(new TypeHint<Tuple3<String, String, Double>>() {}));
+ TypeInformationUtils.of(new TypeHint<Tuple3<String, String, Double>>() {}));
Assert.assertTrue(ti.isTupleType());
Assert.assertEquals(3, ti.getArity());
TupleTypeInfo<?> tti = (TupleTypeInfo<?>) ti;
@@ -2023,7 +2032,8 @@ public class TypeExtractorTest {
TypeInformation<?> ti =
TypeExtractor.getMapReturnTypes(
(MapFunction) em,
- TypeInformation.of(new TypeHint<Tuple3<Boolean, Boolean, String>>() {}));
+ TypeInformationUtils.of(
+ new TypeHint<Tuple3<Boolean, Boolean, String>>() {}));
Assert.assertTrue(ti.isBasicType());
Assert.assertEquals(BasicTypeInfo.STRING_TYPE_INFO, ti);
}
@@ -2044,7 +2054,8 @@ public class TypeExtractorTest {
TypeInformation<?> ti =
TypeExtractor.getMapReturnTypes(
(MapFunction) em,
- TypeInformation.of(new TypeHint<Tuple3<Boolean, Boolean, String>[]>() {}));
+ TypeInformationUtils.of(
+ new TypeHint<Tuple3<Boolean, Boolean, String>[]>() {}));
Assert.assertTrue(ti.isBasicType());
Assert.assertEquals(BasicTypeInfo.STRING_TYPE_INFO, ti);
}
@@ -2142,7 +2153,7 @@ public class TypeExtractorTest {
TypeInformation<?> ti =
TypeExtractor.getMapReturnTypes(
(MapFunction) function,
- TypeInformation.of(new TypeHint<Tuple2<Integer, Double>[][]>() {}));
+ TypeInformationUtils.of(new TypeHint<Tuple2<Integer, Double>[][]>() {}));
Assert.assertEquals(
"ObjectArrayTypeInfo<ObjectArrayTypeInfo<Java Tuple2<Integer, Double>>>",
ti.toString());
@@ -2159,7 +2170,8 @@ public class TypeExtractorTest {
};
ti =
TypeExtractor.getMapReturnTypes(
- (MapFunction) function, TypeInformation.of(new TypeHint<int[][][]>() {}));
+ (MapFunction) function,
+ TypeInformationUtils.of(new TypeHint<int[][][]>() {}));
Assert.assertEquals("ObjectArrayTypeInfo<ObjectArrayTypeInfo<int[]>>", ti.toString());
// basic array
@@ -2175,7 +2187,7 @@ public class TypeExtractorTest {
ti =
TypeExtractor.getMapReturnTypes(
(MapFunction) function,
- TypeInformation.of(new TypeHint<Integer[][][]>() {}));
+ TypeInformationUtils.of(new TypeHint<Integer[][][]>() {}));
Assert.assertEquals(
"ObjectArrayTypeInfo<ObjectArrayTypeInfo<BasicArrayTypeInfo<Integer>>>",
ti.toString());
@@ -2193,7 +2205,7 @@ public class TypeExtractorTest {
ti =
TypeExtractor.getMapReturnTypes(
(MapFunction) function,
- TypeInformation.of(new TypeHint<CustomType[][][]>() {}));
+ TypeInformationUtils.of(new TypeHint<CustomType[][][]>() {}));
Assert.assertEquals(
"ObjectArrayTypeInfo<ObjectArrayTypeInfo<ObjectArrayTypeInfo<"
@@ -2205,7 +2217,7 @@ public class TypeExtractorTest {
ti =
TypeExtractor.getMapReturnTypes(
(MapFunction) new MapperWithMultiDimGenericArray<String>(),
- TypeInformation.of(new TypeHint<String[][][]>() {}));
+ TypeInformationUtils.of(new TypeHint<String[][][]>() {}));
Assert.assertEquals(
"ObjectArrayTypeInfo<ObjectArrayTypeInfo<ObjectArrayTypeInfo<Java Tuple1<String>>>>",
ti.toString());
@@ -2403,7 +2415,7 @@ public class TypeExtractorTest {
}
@Override
- public TypeSerializer<Object> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<Object> createSerializer(SerializerContext serializerContext) {
return null;
}
@@ -2456,7 +2468,7 @@ public class TypeExtractorTest {
TypeExtractor.getMapReturnTypes(
function,
(TypeInformation)
- TypeInformation.of(
+ TypeInformationUtils.of(
new TypeHint<Tuple2<BigInteger, BigDecimal>>() {}));
Assert.assertTrue(ti.isTupleType());
@@ -2494,7 +2506,7 @@ public class TypeExtractorTest {
TypeExtractor.getMapReturnTypes(
function,
(TypeInformation)
- TypeInformation.of(
+ TypeInformationUtils.of(
new TypeHint<Tuple3<Date, Time, Timestamp>>() {}));
Assert.assertTrue(ti.isTupleType());
diff --git a/flink-core/src/test/java/org/apache/flink/api/java/typeutils/TypeInfoFactoryTest.java b/flink-core/src/test/java/org/apache/flink/api/java/typeutils/TypeInfoFactoryTest.java
index b23245e4f15..ef0faf7dae6 100644
--- a/flink-core/src/test/java/org/apache/flink/api/java/typeutils/TypeInfoFactoryTest.java
+++ b/flink-core/src/test/java/org/apache/flink/api/java/typeutils/TypeInfoFactoryTest.java
@@ -18,13 +18,14 @@
package org.apache.flink.api.java.typeutils;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.functions.InvalidTypesException;
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.api.common.typeinfo.TypeHint;
import org.apache.flink.api.common.typeinfo.TypeInfo;
import org.apache.flink.api.common.typeinfo.TypeInfoFactory;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.java.tuple.Tuple1;
import org.apache.flink.api.java.tuple.Tuple2;
@@ -134,9 +135,10 @@ public class TypeInfoFactoryTest {
@Test
public void testWithFieldTypeInfoAnnotation() {
TypeInformation<WithFieldTypeInfoAnnotation<Double, String>> typeWithAnnotation =
- TypeInformation.of(new TypeHint<WithFieldTypeInfoAnnotation<Double, String>>() {});
+ TypeInformationUtils.of(
+ new TypeHint<WithFieldTypeInfoAnnotation<Double, String>>() {});
TypeInformation<WithoutFieldTypeInfoAnnotation<Double, String>> typeWithoutAnnotation =
- TypeInformation.of(
+ TypeInformationUtils.of(
new TypeHint<WithoutFieldTypeInfoAnnotation<Double, String>>() {});
assertTrue(typeWithAnnotation instanceof PojoTypeInfo);
@@ -257,7 +259,7 @@ public class TypeInfoFactoryTest {
}
@Override
- public TypeSerializer<MyFaulty> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<MyFaulty> createSerializer(SerializerContext serializerContext) {
return null;
}
@@ -356,7 +358,7 @@ public class TypeInfoFactoryTest {
}
@Override
- public TypeSerializer<MyTuple<T0, T1>> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<MyTuple<T0, T1>> createSerializer(SerializerContext serializerContext) {
return null;
}
@@ -454,7 +456,7 @@ public class TypeInfoFactoryTest {
}
@Override
- public TypeSerializer<MyOption<T>> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<MyOption<T>> createSerializer(SerializerContext serializerContext) {
return null;
}
diff --git a/flink-core/src/test/java/org/apache/flink/api/java/typeutils/runtime/MultidimensionalArraySerializerTest.java b/flink-core/src/test/java/org/apache/flink/api/java/typeutils/runtime/MultidimensionalArraySerializerTest.java
index a626caf52e0..4672dd6bb41 100644
--- a/flink-core/src/test/java/org/apache/flink/api/java/typeutils/runtime/MultidimensionalArraySerializerTest.java
+++ b/flink-core/src/test/java/org/apache/flink/api/java/typeutils/runtime/MultidimensionalArraySerializerTest.java
@@ -21,6 +21,7 @@ package org.apache.flink.api.java.typeutils.runtime;
import org.apache.flink.api.common.ExecutionConfig;
import org.apache.flink.api.common.typeinfo.TypeHint;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeutils.SerializerTestInstance;
import org.apache.flink.api.java.typeutils.TypeExtractor;
@@ -135,7 +136,7 @@ public class MultidimensionalArraySerializerTest {
};
TypeInformation<MyGenericPojo<String>[][]> ti =
- TypeInformation.of(new TypeHint<MyGenericPojo<String>[][]>() {});
+ TypeInformationUtils.of(new TypeHint<MyGenericPojo<String>[][]>() {});
SerializerTestInstance testInstance =
new SerializerTestInstance(
diff --git a/flink-core/src/test/java/org/apache/flink/api/java/typeutils/runtime/kryo/KryoSerializerSnapshotTest.java b/flink-core/src/test/java/org/apache/flink/api/java/typeutils/runtime/kryo/KryoSerializerSnapshotTest.java
index c1761ce802e..56580075bee 100644
--- a/flink-core/src/test/java/org/apache/flink/api/java/typeutils/runtime/kryo/KryoSerializerSnapshotTest.java
+++ b/flink-core/src/test/java/org/apache/flink/api/java/typeutils/runtime/kryo/KryoSerializerSnapshotTest.java
@@ -22,6 +22,7 @@ import org.apache.flink.api.common.ExecutionConfig;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.common.typeutils.TypeSerializerSchemaCompatibility;
import org.apache.flink.api.common.typeutils.TypeSerializerSnapshot;
+import org.apache.flink.api.common.typeutils.TypeSerializerSnapshotUtils;
import org.apache.flink.api.java.typeutils.runtime.kryo.KryoPojosForMigrationTests.Animal;
import org.apache.flink.api.java.typeutils.runtime.kryo.KryoPojosForMigrationTests.Dog;
import org.apache.flink.api.java.typeutils.runtime.kryo.KryoPojosForMigrationTests.DogKryoSerializer;
@@ -117,7 +118,7 @@ public class KryoSerializerSnapshotTest {
throws IOException {
DataInputView in = new DataInputDeserializer(unLoadableSnapshotBytes());
- return TypeSerializerSnapshot.readVersionedSnapshot(
+ return TypeSerializerSnapshotUtils.readVersionedSnapshot(
in, KryoSerializerSnapshotTest.class.getClassLoader());
}
@@ -142,7 +143,7 @@ public class KryoSerializerSnapshotTest {
previousSerializer.snapshotConfiguration();
DataOutputSerializer out = new DataOutputSerializer(4096);
- TypeSerializerSnapshot.writeVersionedSnapshot(out, previousSnapshot);
+ TypeSerializerSnapshotUtils.writeVersionedSnapshot(out, previousSnapshot);
return out.getCopyOfBuffer();
} finally {
Thread.currentThread().setContextClassLoader(originalClassLoader);
diff --git a/flink-end-to-end-tests/flink-datastream-allround-test/src/main/java/org/apache/flink/streaming/tests/SingleThreadAccessCheckingTypeInfo.java b/flink-end-to-end-tests/flink-datastream-allround-test/src/main/java/org/apache/flink/streaming/tests/SingleThreadAccessCheckingTypeInfo.java
index cde175dd3aa..a812c8b3b88 100644
--- a/flink-end-to-end-tests/flink-datastream-allround-test/src/main/java/org/apache/flink/streaming/tests/SingleThreadAccessCheckingTypeInfo.java
+++ b/flink-end-to-end-tests/flink-datastream-allround-test/src/main/java/org/apache/flink/streaming/tests/SingleThreadAccessCheckingTypeInfo.java
@@ -18,8 +18,9 @@
package org.apache.flink.streaming.tests;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeutils.SingleThreadAccessCheckingTypeSerializer;
import org.apache.flink.api.common.typeutils.TypeSerializer;
@@ -30,7 +31,7 @@ public class SingleThreadAccessCheckingTypeInfo<T> extends TypeInformation<T> {
private final TypeInformation<T> originalTypeInformation;
SingleThreadAccessCheckingTypeInfo(Class<T> clazz) {
- this(TypeInformation.of(clazz));
+ this(TypeInformationUtils.of(clazz));
}
private SingleThreadAccessCheckingTypeInfo(TypeInformation<T> originalTypeInformation) {
@@ -68,9 +69,9 @@ public class SingleThreadAccessCheckingTypeInfo<T> extends TypeInformation<T> {
}
@Override
- public TypeSerializer<T> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<T> createSerializer(SerializerContext serializerContext) {
return new SingleThreadAccessCheckingTypeSerializer<>(
- originalTypeInformation.createSerializer(config));
+ originalTypeInformation.createSerializer(serializerContext));
}
@Override
diff --git a/flink-end-to-end-tests/flink-datastream-allround-test/src/main/java/org/apache/flink/streaming/tests/SlidingWindowCheckMapper.java b/flink-end-to-end-tests/flink-datastream-allround-test/src/main/java/org/apache/flink/streaming/tests/SlidingWindowCheckMapper.java
index efd339fee9e..724943e9bc0 100644
--- a/flink-end-to-end-tests/flink-datastream-allround-test/src/main/java/org/apache/flink/streaming/tests/SlidingWindowCheckMapper.java
+++ b/flink-end-to-end-tests/flink-datastream-allround-test/src/main/java/org/apache/flink/streaming/tests/SlidingWindowCheckMapper.java
@@ -22,7 +22,7 @@ import org.apache.flink.api.common.functions.RichFlatMapFunction;
import org.apache.flink.api.common.state.ValueState;
import org.apache.flink.api.common.state.ValueStateDescriptor;
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.api.java.typeutils.ListTypeInfo;
import org.apache.flink.api.java.typeutils.TupleTypeInfo;
@@ -65,7 +65,7 @@ public class SlidingWindowCheckMapper
"eventsSeenSoFar",
new ListTypeInfo<>(
new TupleTypeInfo<>(
- TypeInformation.of(Event.class),
+ TypeInformationUtils.of(Event.class),
BasicTypeInfo.INT_TYPE_INFO)));
eventsSeenSoFar = getRuntimeContext().getState(previousWindowDescriptor);
diff --git a/flink-end-to-end-tests/flink-queryable-state-test/src/main/java/org/apache/flink/streaming/tests/queryablestate/QsStateClient.java b/flink-end-to-end-tests/flink-queryable-state-test/src/main/java/org/apache/flink/streaming/tests/queryablestate/QsStateClient.java
index 10eaa0dfd03..95b32bbfc38 100644
--- a/flink-end-to-end-tests/flink-queryable-state-test/src/main/java/org/apache/flink/streaming/tests/queryablestate/QsStateClient.java
+++ b/flink-end-to-end-tests/flink-queryable-state-test/src/main/java/org/apache/flink/streaming/tests/queryablestate/QsStateClient.java
@@ -23,7 +23,7 @@ import org.apache.flink.api.common.state.MapState;
import org.apache.flink.api.common.state.MapStateDescriptor;
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
import org.apache.flink.api.common.typeinfo.TypeHint;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.java.utils.ParameterTool;
import org.apache.flink.queryablestate.client.QueryableStateClient;
import org.apache.flink.queryablestate.exceptions.UnknownKeyOrNamespaceException;
@@ -58,8 +58,8 @@ public class QsStateClient {
MapStateDescriptor<EmailId, EmailInformation> stateDescriptor =
new MapStateDescriptor<>(
QsConstants.STATE_NAME,
- TypeInformation.of(new TypeHint<EmailId>() {}),
- TypeInformation.of(new TypeHint<EmailInformation>() {}));
+ TypeInformationUtils.of(new TypeHint<EmailId>() {}),
+ TypeInformationUtils.of(new TypeHint<EmailInformation>() {}));
System.out.println("Wait until the state can be queried.");
diff --git a/flink-end-to-end-tests/flink-queryable-state-test/src/main/java/org/apache/flink/streaming/tests/queryablestate/QsStateProducer.java b/flink-end-to-end-tests/flink-queryable-state-test/src/main/java/org/apache/flink/streaming/tests/queryablestate/QsStateProducer.java
index 25281dcf281..7a228659697 100644
--- a/flink-end-to-end-tests/flink-queryable-state-test/src/main/java/org/apache/flink/streaming/tests/queryablestate/QsStateProducer.java
+++ b/flink-end-to-end-tests/flink-queryable-state-test/src/main/java/org/apache/flink/streaming/tests/queryablestate/QsStateProducer.java
@@ -22,7 +22,7 @@ import org.apache.flink.api.common.state.CheckpointListener;
import org.apache.flink.api.common.state.MapState;
import org.apache.flink.api.common.state.MapStateDescriptor;
import org.apache.flink.api.common.typeinfo.TypeHint;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.java.functions.KeySelector;
import org.apache.flink.api.java.utils.ParameterTool;
import org.apache.flink.configuration.Configuration;
@@ -156,8 +156,8 @@ public class QsStateProducer {
MapStateDescriptor<EmailId, EmailInformation> stateDescriptor =
new MapStateDescriptor<>(
QsConstants.STATE_NAME,
- TypeInformation.of(new TypeHint<EmailId>() {}),
- TypeInformation.of(new TypeHint<EmailInformation>() {}));
+ TypeInformationUtils.of(new TypeHint<EmailId>() {}),
+ TypeInformationUtils.of(new TypeHint<EmailInformation>() {}));
stateDescriptor.setQueryable(QsConstants.QUERY_NAME);
state = getRuntimeContext().getMapState(stateDescriptor);
diff --git a/flink-end-to-end-tests/flink-state-evolution-test/src/main/java/org/apache/flink/test/StatefulStreamingJob.java b/flink-end-to-end-tests/flink-state-evolution-test/src/main/java/org/apache/flink/test/StatefulStreamingJob.java
index 1665a5e36e3..674a39c8a85 100644
--- a/flink-end-to-end-tests/flink-state-evolution-test/src/main/java/org/apache/flink/test/StatefulStreamingJob.java
+++ b/flink-end-to-end-tests/flink-state-evolution-test/src/main/java/org/apache/flink/test/StatefulStreamingJob.java
@@ -23,7 +23,7 @@ import org.apache.flink.api.common.restartstrategy.RestartStrategies;
import org.apache.flink.api.common.state.ValueState;
import org.apache.flink.api.common.state.ValueStateDescriptor;
import org.apache.flink.api.common.typeinfo.TypeHint;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.api.java.utils.ParameterTool;
import org.apache.flink.avro.generated.Address;
@@ -87,12 +87,12 @@ public class StatefulStreamingJob {
private static final ValueStateDescriptor<Tuple2<String, Integer>> TUPLE_DESCRIPTOR =
new ValueStateDescriptor<>(
"tuple-state",
- TypeInformation.of(new TypeHint<Tuple2<String, Integer>>() {}));
+ TypeInformationUtils.of(new TypeHint<Tuple2<String, Integer>>() {}));
private static final ValueStateDescriptor<Either<String, Boolean>> EITHER_DESCRIPTOR =
new ValueStateDescriptor<>(
"either-state",
- TypeInformation.of(new TypeHint<Either<String, Boolean>>() {}));
+ TypeInformationUtils.of(new TypeHint<Either<String, Boolean>>() {}));
private transient ValueState<Address> avroState;
private transient ValueState<Tuple2<String, Integer>> tupleState;
diff --git a/flink-end-to-end-tests/flink-streaming-kafka-test-base/src/main/java/org/apache/flink/streaming/kafka/test/base/KafkaEventSchema.java b/flink-end-to-end-tests/flink-streaming-kafka-test-base/src/main/java/org/apache/flink/streaming/kafka/test/base/KafkaEventSchema.java
index ef9a3d04084..1347e05d9fd 100644
--- a/flink-end-to-end-tests/flink-streaming-kafka-test-base/src/main/java/org/apache/flink/streaming/kafka/test/base/KafkaEventSchema.java
+++ b/flink-end-to-end-tests/flink-streaming-kafka-test-base/src/main/java/org/apache/flink/streaming/kafka/test/base/KafkaEventSchema.java
@@ -20,6 +20,7 @@ package org.apache.flink.streaming.kafka.test.base;
import org.apache.flink.api.common.serialization.DeserializationSchema;
import org.apache.flink.api.common.serialization.SerializationSchema;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import java.io.IOException;
@@ -49,6 +50,6 @@ public class KafkaEventSchema
@Override
public TypeInformation<KafkaEvent> getProducedType() {
- return TypeInformation.of(KafkaEvent.class);
+ return TypeInformationUtils.of(KafkaEvent.class);
}
}
diff --git a/flink-examples/flink-examples-streaming/src/main/java/org/apache/flink/streaming/examples/join/WindowJoinSampleData.java b/flink-examples/flink-examples-streaming/src/main/java/org/apache/flink/streaming/examples/join/WindowJoinSampleData.java
index fbaec8e64de..cf155ab22d8 100644
--- a/flink-examples/flink-examples-streaming/src/main/java/org/apache/flink/streaming/examples/join/WindowJoinSampleData.java
+++ b/flink-examples/flink-examples-streaming/src/main/java/org/apache/flink/streaming/examples/join/WindowJoinSampleData.java
@@ -19,7 +19,7 @@
package org.apache.flink.streaming.examples.join;
import org.apache.flink.api.common.typeinfo.TypeHint;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
@@ -61,7 +61,7 @@ public class WindowJoinSampleData {
StreamExecutionEnvironment env, long rate) {
return env.fromCollection(
new ThrottledIterator<>(new GradeSource(), rate),
- TypeInformation.of(new TypeHint<Tuple2<String, Integer>>() {}));
+ TypeInformationUtils.of(new TypeHint<Tuple2<String, Integer>>() {}));
}
}
@@ -89,7 +89,7 @@ public class WindowJoinSampleData {
StreamExecutionEnvironment env, long rate) {
return env.fromCollection(
new ThrottledIterator<>(new SalarySource(), rate),
- TypeInformation.of(new TypeHint<Tuple2<String, Integer>>() {}));
+ TypeInformationUtils.of(new TypeHint<Tuple2<String, Integer>>() {}));
}
}
}
diff --git a/flink-examples/flink-examples-streaming/src/main/java/org/apache/flink/streaming/examples/statemachine/kafka/EventDeSerializationSchema.java b/flink-examples/flink-examples-streaming/src/main/java/org/apache/flink/streaming/examples/statemachine/kafka/EventDeSerializationSchema.java
index 42bd67500a8..0ee4427cc9b 100644
--- a/flink-examples/flink-examples-streaming/src/main/java/org/apache/flink/streaming/examples/statemachine/kafka/EventDeSerializationSchema.java
+++ b/flink-examples/flink-examples-streaming/src/main/java/org/apache/flink/streaming/examples/statemachine/kafka/EventDeSerializationSchema.java
@@ -21,6 +21,7 @@ package org.apache.flink.streaming.examples.statemachine.kafka;
import org.apache.flink.api.common.serialization.DeserializationSchema;
import org.apache.flink.api.common.serialization.SerializationSchema;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.streaming.examples.statemachine.event.Event;
import org.apache.flink.streaming.examples.statemachine.event.EventType;
@@ -57,6 +58,6 @@ public class EventDeSerializationSchema
@Override
public TypeInformation<Event> getProducedType() {
- return TypeInformation.of(Event.class);
+ return TypeInformationUtils.of(Event.class);
}
}
diff --git a/flink-formats/flink-avro/src/main/java/org/apache/flink/formats/avro/typeutils/AvroTypeInfo.java b/flink-formats/flink-avro/src/main/java/org/apache/flink/formats/avro/typeutils/AvroTypeInfo.java
index 5797be5d0fa..6ce1466bd34 100644
--- a/flink-formats/flink-avro/src/main/java/org/apache/flink/formats/avro/typeutils/AvroTypeInfo.java
+++ b/flink-formats/flink-avro/src/main/java/org/apache/flink/formats/avro/typeutils/AvroTypeInfo.java
@@ -19,7 +19,7 @@
package org.apache.flink.formats.avro.typeutils;
import org.apache.flink.annotation.Internal;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.java.typeutils.GenericTypeInfo;
@@ -56,7 +56,7 @@ public class AvroTypeInfo<T extends SpecificRecordBase> extends PojoTypeInfo<T>
}
@Override
- public TypeSerializer<T> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<T> createSerializer(SerializerContext serializerContext) {
return new AvroSerializer<>(getTypeClass());
}
diff --git a/flink-formats/flink-avro/src/main/java/org/apache/flink/formats/avro/typeutils/GenericRecordAvroTypeInfo.java b/flink-formats/flink-avro/src/main/java/org/apache/flink/formats/avro/typeutils/GenericRecordAvroTypeInfo.java
index 28332db5a46..165768c8352 100644
--- a/flink-formats/flink-avro/src/main/java/org/apache/flink/formats/avro/typeutils/GenericRecordAvroTypeInfo.java
+++ b/flink-formats/flink-avro/src/main/java/org/apache/flink/formats/avro/typeutils/GenericRecordAvroTypeInfo.java
@@ -18,7 +18,7 @@
package org.apache.flink.formats.avro.typeutils;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.TypeSerializer;
@@ -75,7 +75,7 @@ public class GenericRecordAvroTypeInfo extends TypeInformation<GenericRecord> {
}
@Override
- public TypeSerializer<GenericRecord> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<GenericRecord> createSerializer(SerializerContext serializerContext) {
return new AvroSerializer<>(GenericRecord.class, schema);
}
diff --git a/flink-formats/flink-avro/src/main/java/org/apache/flink/formats/avro/utils/AvroKryoSerializerUtils.java b/flink-formats/flink-avro/src/main/java/org/apache/flink/formats/avro/utils/AvroKryoSerializerUtils.java
index 3cac288cf3b..29856752d12 100644
--- a/flink-formats/flink-avro/src/main/java/org/apache/flink/formats/avro/utils/AvroKryoSerializerUtils.java
+++ b/flink-formats/flink-avro/src/main/java/org/apache/flink/formats/avro/utils/AvroKryoSerializerUtils.java
@@ -19,6 +19,7 @@
package org.apache.flink.formats.avro.utils;
import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializableSerializer;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.java.typeutils.AvroUtils;
@@ -69,7 +70,7 @@ public class AvroKryoSerializerUtils extends AvroUtils {
GenericData.Array.class.getName(),
new KryoRegistration(
GenericData.Array.class,
- new ExecutionConfig.SerializableSerializer<>(
+ new SerializableSerializer<>(
new Serializers
.SpecificInstanceCollectionSerializerForArrayList())));
}
diff --git a/flink-formats/flink-avro/src/test/java/org/apache/flink/formats/avro/AvroBulkFormatITCase.java b/flink-formats/flink-avro/src/test/java/org/apache/flink/formats/avro/AvroBulkFormatITCase.java
index 964b464e6e8..79b6b2fd971 100644
--- a/flink-formats/flink-avro/src/test/java/org/apache/flink/formats/avro/AvroBulkFormatITCase.java
+++ b/flink-formats/flink-avro/src/test/java/org/apache/flink/formats/avro/AvroBulkFormatITCase.java
@@ -19,6 +19,7 @@
package org.apache.flink.formats.avro;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.connector.source.Boundedness;
import org.apache.flink.api.connector.source.Source;
import org.apache.flink.connector.file.src.FileSource;
@@ -150,7 +151,7 @@ class AvroBulkFormatITCase extends SourceTestSuiteBase<RowData> {
@Override
public TypeInformation<RowData> getProducedType() {
- return TypeInformation.of(RowData.class);
+ return TypeInformationUtils.of(RowData.class);
}
@Override
diff --git a/flink-formats/flink-avro/src/test/java/org/apache/flink/formats/avro/AvroStreamingFileSinkITCase.java b/flink-formats/flink-avro/src/test/java/org/apache/flink/formats/avro/AvroStreamingFileSinkITCase.java
index e2752aa75e5..693c4d9bbaf 100644
--- a/flink-formats/flink-avro/src/test/java/org/apache/flink/formats/avro/AvroStreamingFileSinkITCase.java
+++ b/flink-formats/flink-avro/src/test/java/org/apache/flink/formats/avro/AvroStreamingFileSinkITCase.java
@@ -18,7 +18,7 @@
package org.apache.flink.formats.avro;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.core.fs.Path;
import org.apache.flink.formats.avro.generated.Address;
import org.apache.flink.formats.avro.typeutils.GenericRecordAvroTypeInfo;
@@ -77,7 +77,7 @@ public class AvroStreamingFileSinkITCase extends AbstractTestBase {
AvroWriterFactory<Address> avroWriterFactory = AvroWriters.forSpecificRecord(Address.class);
DataStream<Address> stream =
- env.addSource(new FiniteTestSource<>(data), TypeInformation.of(Address.class));
+ env.addSource(new FiniteTestSource<>(data), TypeInformationUtils.of(Address.class));
stream.addSink(
StreamingFileSink.forBulkFormat(Path.fromLocalFile(folder), avroWriterFactory)
.withBucketAssigner(new UniqueBucketAssigner<>("test"))
@@ -122,7 +122,7 @@ public class AvroStreamingFileSinkITCase extends AbstractTestBase {
AvroWriterFactory<Datum> avroWriterFactory = AvroWriters.forReflectRecord(Datum.class);
DataStream<Datum> stream =
- env.addSource(new FiniteTestSource<>(data), TypeInformation.of(Datum.class));
+ env.addSource(new FiniteTestSource<>(data), TypeInformationUtils.of(Datum.class));
stream.addSink(
StreamingFileSink.forBulkFormat(Path.fromLocalFile(folder), avroWriterFactory)
.withBucketAssigner(new UniqueBucketAssigner<>("test"))
diff --git a/flink-formats/flink-compress/src/test/java/org/apache/flink/formats/compress/CompressionFactoryITCase.java b/flink-formats/flink-compress/src/test/java/org/apache/flink/formats/compress/CompressionFactoryITCase.java
index c2d08112f67..25117e26aa7 100644
--- a/flink-formats/flink-compress/src/test/java/org/apache/flink/formats/compress/CompressionFactoryITCase.java
+++ b/flink-formats/flink-compress/src/test/java/org/apache/flink/formats/compress/CompressionFactoryITCase.java
@@ -18,7 +18,7 @@
package org.apache.flink.formats.compress;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.core.fs.Path;
import org.apache.flink.formats.compress.extractor.DefaultExtractor;
import org.apache.flink.streaming.api.datastream.DataStream;
@@ -68,7 +68,8 @@ class CompressionFactoryITCase {
env.enableCheckpointing(100);
DataStream<String> stream =
- env.addSource(new FiniteTestSource<>(testData), TypeInformation.of(String.class));
+ env.addSource(
+ new FiniteTestSource<>(testData), TypeInformationUtils.of(String.class));
stream.map(str -> str)
.addSink(
diff --git a/flink-formats/flink-csv/src/main/java/org/apache/flink/formats/csv/CsvReaderFormat.java b/flink-formats/flink-csv/src/main/java/org/apache/flink/formats/csv/CsvReaderFormat.java
index 83da0a01ddb..50e5c6741bd 100644
--- a/flink-formats/flink-csv/src/main/java/org/apache/flink/formats/csv/CsvReaderFormat.java
+++ b/flink-formats/flink-csv/src/main/java/org/apache/flink/formats/csv/CsvReaderFormat.java
@@ -20,6 +20,7 @@ package org.apache.flink.formats.csv;
import org.apache.flink.annotation.PublicEvolving;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.connector.file.src.reader.SimpleStreamFormat;
import org.apache.flink.connector.file.src.reader.StreamFormat;
@@ -166,7 +167,7 @@ public class CsvReaderFormat<T> extends SimpleStreamFormat<T> {
return forSchema(
JacksonMapperFactory::createCsvMapper,
mapper -> mapper.schemaFor(pojoType).withoutQuoteChar(),
- TypeInformation.of(pojoType));
+ TypeInformationUtils.of(pojoType));
}
/**
diff --git a/flink-formats/flink-csv/src/test/java/org/apache/flink/formats/csv/CsvReaderFormatTest.java b/flink-formats/flink-csv/src/test/java/org/apache/flink/formats/csv/CsvReaderFormatTest.java
index f6b04748f98..ff3719bbeb7 100644
--- a/flink-formats/flink-csv/src/test/java/org/apache/flink/formats/csv/CsvReaderFormatTest.java
+++ b/flink-formats/flink-csv/src/test/java/org/apache/flink/formats/csv/CsvReaderFormatTest.java
@@ -18,7 +18,7 @@
package org.apache.flink.formats.csv;
import org.apache.flink.api.common.io.InputStreamFSInputWrapper;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.util.InstantiationUtil;
@@ -48,7 +48,7 @@ class CsvReaderFormatTest {
void testForSchemaSerializability() throws IOException, ClassNotFoundException {
final CsvSchema schema = new CsvMapper().schemaFor(Pojo.class);
final CsvReaderFormat<Pojo> format =
- CsvReaderFormat.forSchema(schema, TypeInformation.of(Pojo.class));
+ CsvReaderFormat.forSchema(schema, TypeInformationUtils.of(Pojo.class));
final byte[] bytes = InstantiationUtil.serializeObject(format);
InstantiationUtil.deserializeObject(bytes, CsvReaderFormatTest.class.getClassLoader());
@@ -60,7 +60,7 @@ class CsvReaderFormatTest {
CsvReaderFormat.forSchema(
() -> new CsvMapper(),
mapper -> mapper.schemaFor(Pojo.class),
- TypeInformation.of(Pojo.class));
+ TypeInformationUtils.of(Pojo.class));
final byte[] bytes = InstantiationUtil.serializeObject(format);
InstantiationUtil.deserializeObject(bytes, CsvReaderFormatTest.class.getClassLoader());
@@ -82,7 +82,7 @@ class CsvReaderFormatTest {
return csvMapper;
},
mapper -> mapper.schemaFor(Pojo.class),
- TypeInformation.of(Pojo.class));
+ TypeInformationUtils.of(Pojo.class));
final byte[] bytes = InstantiationUtil.serializeObject(format);
InstantiationUtil.deserializeObject(bytes, CsvReaderFormatTest.class.getClassLoader());
@@ -101,7 +101,7 @@ class CsvReaderFormatTest {
passedMapper.set(csvMapper);
return mapper.schemaFor(Pojo.class);
},
- TypeInformation.of(Pojo.class));
+ TypeInformationUtils.of(Pojo.class));
format.createReader(
new Configuration(),
diff --git a/flink-formats/flink-csv/src/test/java/org/apache/flink/formats/csv/DataStreamCsvITCase.java b/flink-formats/flink-csv/src/test/java/org/apache/flink/formats/csv/DataStreamCsvITCase.java
index 363a17afdef..650c55fc37d 100644
--- a/flink-formats/flink-csv/src/test/java/org/apache/flink/formats/csv/DataStreamCsvITCase.java
+++ b/flink-formats/flink-csv/src/test/java/org/apache/flink/formats/csv/DataStreamCsvITCase.java
@@ -21,7 +21,7 @@ package org.apache.flink.formats.csv;
import org.apache.flink.api.common.eventtime.WatermarkStrategy;
import org.apache.flink.api.common.restartstrategy.RestartStrategies;
import org.apache.flink.api.common.serialization.BulkWriter;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.connector.file.sink.FileSink;
import org.apache.flink.connector.file.src.FileSource;
import org.apache.flink.connector.file.src.reader.StreamFormat;
@@ -171,7 +171,7 @@ public class DataStreamCsvITCase {
mapper.schemaFor(CityPojo.class)
.withoutQuoteChar()
.withColumnSeparator('|'),
- TypeInformation.of(CityPojo.class));
+ TypeInformationUtils.of(CityPojo.class));
final List<CityPojo> result = initializeSourceAndReadData(outDir, csvFormat);
assertThat(Arrays.asList(POJOS)).isEqualTo(result);
diff --git a/flink-formats/flink-hadoop-bulk/src/test/java/org/apache/flink/formats/hadoop/bulk/HadoopPathBasedPartFileWriterITCase.java b/flink-formats/flink-hadoop-bulk/src/test/java/org/apache/flink/formats/hadoop/bulk/HadoopPathBasedPartFileWriterITCase.java
index ee476fa1c7f..a07f5c26182 100644
--- a/flink-formats/flink-hadoop-bulk/src/test/java/org/apache/flink/formats/hadoop/bulk/HadoopPathBasedPartFileWriterITCase.java
+++ b/flink-formats/flink-hadoop-bulk/src/test/java/org/apache/flink/formats/hadoop/bulk/HadoopPathBasedPartFileWriterITCase.java
@@ -18,7 +18,7 @@
package org.apache.flink.formats.hadoop.bulk;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.functions.sink.filesystem.HadoopPathBasedBulkFormatBuilder;
@@ -82,7 +82,7 @@ public class HadoopPathBasedPartFileWriterITCase extends AbstractTestBase {
// FiniteTestSource will generate two elements with a checkpoint trigger in between the two
// elements
DataStream<String> stream =
- env.addSource(new FiniteTestSource<>(data), TypeInformation.of(String.class));
+ env.addSource(new FiniteTestSource<>(data), TypeInformationUtils.of(String.class));
Configuration configuration = new Configuration();
// Elements from source are going to be assigned to one bucket
HadoopPathBasedBulkFormatBuilder<String, String, ?> builder =
diff --git a/flink-formats/flink-orc/src/test/java/org/apache/flink/orc/writer/OrcBulkWriterITCase.java b/flink-formats/flink-orc/src/test/java/org/apache/flink/orc/writer/OrcBulkWriterITCase.java
index aefcf188b23..da4a56e2dbc 100644
--- a/flink-formats/flink-orc/src/test/java/org/apache/flink/orc/writer/OrcBulkWriterITCase.java
+++ b/flink-formats/flink-orc/src/test/java/org/apache/flink/orc/writer/OrcBulkWriterITCase.java
@@ -18,7 +18,7 @@
package org.apache.flink.orc.writer;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.core.fs.Path;
import org.apache.flink.orc.data.Record;
import org.apache.flink.orc.util.OrcBulkWriterTestUtil;
@@ -59,7 +59,8 @@ class OrcBulkWriterITCase {
env.enableCheckpointing(100);
DataStream<Record> stream =
- env.addSource(new FiniteTestSource<>(testData), TypeInformation.of(Record.class));
+ env.addSource(
+ new FiniteTestSource<>(testData), TypeInformationUtils.of(Record.class));
stream.map(str -> str)
.addSink(
StreamingFileSink.forBulkFormat(new Path(outDir.toURI()), factory)
diff --git a/flink-formats/flink-parquet/src/test/java/org/apache/flink/formats/parquet/avro/AvroParquetStreamingFileSinkITCase.java b/flink-formats/flink-parquet/src/test/java/org/apache/flink/formats/parquet/avro/AvroParquetStreamingFileSinkITCase.java
index 91de5fbc4fe..f66458d1eb0 100644
--- a/flink-formats/flink-parquet/src/test/java/org/apache/flink/formats/parquet/avro/AvroParquetStreamingFileSinkITCase.java
+++ b/flink-formats/flink-parquet/src/test/java/org/apache/flink/formats/parquet/avro/AvroParquetStreamingFileSinkITCase.java
@@ -18,7 +18,7 @@
package org.apache.flink.formats.parquet.avro;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.core.fs.Path;
import org.apache.flink.formats.avro.typeutils.GenericRecordAvroTypeInfo;
import org.apache.flink.formats.parquet.generated.Address;
@@ -76,7 +76,7 @@ class AvroParquetStreamingFileSinkITCase {
env.enableCheckpointing(100);
DataStream<Address> stream =
- env.addSource(new FiniteTestSource<>(data), TypeInformation.of(Address.class));
+ env.addSource(new FiniteTestSource<>(data), TypeInformationUtils.of(Address.class));
stream.addSink(
StreamingFileSink.forBulkFormat(
@@ -132,7 +132,7 @@ class AvroParquetStreamingFileSinkITCase {
env.enableCheckpointing(100);
DataStream<Datum> stream =
- env.addSource(new FiniteTestSource<>(data), TypeInformation.of(Datum.class));
+ env.addSource(new FiniteTestSource<>(data), TypeInformationUtils.of(Datum.class));
stream.addSink(
StreamingFileSink.forBulkFormat(
diff --git a/flink-formats/flink-parquet/src/test/java/org/apache/flink/formats/parquet/protobuf/ParquetProtoStreamingFileSinkITCase.java b/flink-formats/flink-parquet/src/test/java/org/apache/flink/formats/parquet/protobuf/ParquetProtoStreamingFileSinkITCase.java
index 3b70aa158c3..b9df39a1598 100644
--- a/flink-formats/flink-parquet/src/test/java/org/apache/flink/formats/parquet/protobuf/ParquetProtoStreamingFileSinkITCase.java
+++ b/flink-formats/flink-parquet/src/test/java/org/apache/flink/formats/parquet/protobuf/ParquetProtoStreamingFileSinkITCase.java
@@ -18,7 +18,7 @@
package org.apache.flink.formats.parquet.protobuf;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.core.fs.Path;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
@@ -67,7 +67,8 @@ class ParquetProtoStreamingFileSinkITCase {
DataStream<SimpleProtoRecord> stream =
env.addSource(
- new FiniteTestSource<>(data), TypeInformation.of(SimpleProtoRecord.class));
+ new FiniteTestSource<>(data),
+ TypeInformationUtils.of(SimpleProtoRecord.class));
stream.addSink(
StreamingFileSink.forBulkFormat(
diff --git a/flink-formats/flink-sequence-file/src/test/java/org/apache/flink/formats/sequencefile/SequenceStreamingFileSinkITCase.java b/flink-formats/flink-sequence-file/src/test/java/org/apache/flink/formats/sequencefile/SequenceStreamingFileSinkITCase.java
index 8b8ba2f3ef3..d9956f88893 100644
--- a/flink-formats/flink-sequence-file/src/test/java/org/apache/flink/formats/sequencefile/SequenceStreamingFileSinkITCase.java
+++ b/flink-formats/flink-sequence-file/src/test/java/org/apache/flink/formats/sequencefile/SequenceStreamingFileSinkITCase.java
@@ -20,7 +20,7 @@ package org.apache.flink.formats.sequencefile;
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.api.common.typeinfo.TypeHint;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.core.fs.Path;
import org.apache.flink.streaming.api.datastream.DataStream;
@@ -69,7 +69,7 @@ class SequenceStreamingFileSinkITCase {
DataStream<Tuple2<Long, String>> stream =
env.addSource(
new FiniteTestSource<>(testData),
- TypeInformation.of(new TypeHint<Tuple2<Long, String>>() {}));
+ TypeInformationUtils.of(new TypeHint<Tuple2<Long, String>>() {}));
stream.map(
new MapFunction<Tuple2<Long, String>, Tuple2<LongWritable, Text>>() {
diff --git a/flink-java/src/main/java/org/apache/flink/api/java/operators/SingleInputUdfOperator.java b/flink-java/src/main/java/org/apache/flink/api/java/operators/SingleInputUdfOperator.java
index b1c5e934386..31d03477f63 100644
--- a/flink-java/src/main/java/org/apache/flink/api/java/operators/SingleInputUdfOperator.java
+++ b/flink-java/src/main/java/org/apache/flink/api/java/operators/SingleInputUdfOperator.java
@@ -26,6 +26,7 @@ import org.apache.flink.api.common.operators.SemanticProperties;
import org.apache.flink.api.common.operators.SingleInputSemanticProperties;
import org.apache.flink.api.common.typeinfo.TypeHint;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.java.DataSet;
import org.apache.flink.api.java.functions.FunctionAnnotation;
import org.apache.flink.api.java.functions.SemanticPropUtil;
@@ -218,7 +219,7 @@ public abstract class SingleInputUdfOperator<IN, OUT, O extends SingleInputUdfOp
requireNonNull(typeClass, "type class must not be null");
try {
- return returns(TypeInformation.of(typeClass));
+ return returns(TypeInformationUtils.of(typeClass));
} catch (InvalidTypesException e) {
throw new InvalidTypesException(
"Cannot infer the type information from the class alone."
@@ -249,7 +250,7 @@ public abstract class SingleInputUdfOperator<IN, OUT, O extends SingleInputUdfOp
requireNonNull(typeHint, "TypeHint must not be null");
try {
- return returns(TypeInformation.of(typeHint));
+ return returns(TypeInformationUtils.of(typeHint));
} catch (InvalidTypesException e) {
throw new InvalidTypesException(
"Cannot infer the type information from the type hint. "
diff --git a/flink-java/src/main/java/org/apache/flink/api/java/operators/TwoInputUdfOperator.java b/flink-java/src/main/java/org/apache/flink/api/java/operators/TwoInputUdfOperator.java
index a7e813011b4..fc00b004d1d 100644
--- a/flink-java/src/main/java/org/apache/flink/api/java/operators/TwoInputUdfOperator.java
+++ b/flink-java/src/main/java/org/apache/flink/api/java/operators/TwoInputUdfOperator.java
@@ -26,6 +26,7 @@ import org.apache.flink.api.common.operators.DualInputSemanticProperties;
import org.apache.flink.api.common.operators.SemanticProperties;
import org.apache.flink.api.common.typeinfo.TypeHint;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.java.DataSet;
import org.apache.flink.api.java.functions.FunctionAnnotation;
import org.apache.flink.api.java.functions.SemanticPropUtil;
@@ -317,7 +318,7 @@ public abstract class TwoInputUdfOperator<
requireNonNull(typeClass, "type class must not be null");
try {
- return returns(TypeInformation.of(typeClass));
+ return returns(TypeInformationUtils.of(typeClass));
} catch (InvalidTypesException e) {
throw new InvalidTypesException(
"Cannot infer the type information from the class alone."
@@ -349,7 +350,7 @@ public abstract class TwoInputUdfOperator<
requireNonNull(typeHint, "TypeHint must not be null");
try {
- return returns(TypeInformation.of(typeHint));
+ return returns(TypeInformationUtils.of(typeHint));
} catch (InvalidTypesException e) {
throw new InvalidTypesException(
"Cannot infer the type information from the type hint. "
diff --git a/flink-java/src/test/java/org/apache/flink/api/common/operators/base/CoGroupOperatorCollectionTest.java b/flink-java/src/test/java/org/apache/flink/api/common/operators/base/CoGroupOperatorCollectionTest.java
index 2f0a18bb329..f254204275e 100644
--- a/flink-java/src/test/java/org/apache/flink/api/common/operators/base/CoGroupOperatorCollectionTest.java
+++ b/flink-java/src/test/java/org/apache/flink/api/common/operators/base/CoGroupOperatorCollectionTest.java
@@ -28,6 +28,7 @@ import org.apache.flink.api.common.functions.util.RuntimeUDFContext;
import org.apache.flink.api.common.operators.BinaryOperatorInformation;
import org.apache.flink.api.common.typeinfo.TypeHint;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.api.java.tuple.builder.Tuple2Builder;
import org.apache.flink.configuration.Configuration;
@@ -215,7 +216,7 @@ class CoGroupOperatorCollectionTest implements Serializable {
udf) {
TypeInformation<Tuple2<String, Integer>> tuple2Info =
- TypeInformation.of(new TypeHint<Tuple2<String, Integer>>() {});
+ TypeInformationUtils.of(new TypeHint<Tuple2<String, Integer>>() {});
return new CoGroupOperatorBase<>(
udf,
diff --git a/flink-java/src/test/java/org/apache/flink/api/common/operators/base/GroupReduceOperatorTest.java b/flink-java/src/test/java/org/apache/flink/api/common/operators/base/GroupReduceOperatorTest.java
index ada8c5d6e82..f10e01d854d 100644
--- a/flink-java/src/test/java/org/apache/flink/api/common/operators/base/GroupReduceOperatorTest.java
+++ b/flink-java/src/test/java/org/apache/flink/api/common/operators/base/GroupReduceOperatorTest.java
@@ -27,6 +27,7 @@ import org.apache.flink.api.common.functions.util.RuntimeUDFContext;
import org.apache.flink.api.common.operators.UnaryOperatorInformation;
import org.apache.flink.api.common.typeinfo.TypeHint;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.metrics.groups.UnregisteredMetricsGroup;
@@ -52,7 +53,7 @@ import static org.assertj.core.api.Assertions.fail;
class GroupReduceOperatorTest implements Serializable {
private static final TypeInformation<Tuple2<String, Integer>> STRING_INT_TUPLE =
- TypeInformation.of(new TypeHint<Tuple2<String, Integer>>() {});
+ TypeInformationUtils.of(new TypeHint<Tuple2<String, Integer>>() {});
@Test
void testGroupReduceCollection() {
diff --git a/flink-java/src/test/java/org/apache/flink/api/common/operators/base/ReduceOperatorTest.java b/flink-java/src/test/java/org/apache/flink/api/common/operators/base/ReduceOperatorTest.java
index 69dfdf08a71..01f4ec8d4c3 100644
--- a/flink-java/src/test/java/org/apache/flink/api/common/operators/base/ReduceOperatorTest.java
+++ b/flink-java/src/test/java/org/apache/flink/api/common/operators/base/ReduceOperatorTest.java
@@ -27,6 +27,7 @@ import org.apache.flink.api.common.functions.util.RuntimeUDFContext;
import org.apache.flink.api.common.operators.UnaryOperatorInformation;
import org.apache.flink.api.common.typeinfo.TypeHint;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.java.operators.ReduceOperator;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.configuration.Configuration;
@@ -51,7 +52,7 @@ import static org.assertj.core.api.Assertions.fail;
class ReduceOperatorTest implements Serializable {
private static final TypeInformation<Tuple2<String, Integer>> STRING_INT_TUPLE =
- TypeInformation.of(new TypeHint<Tuple2<String, Integer>>() {});
+ TypeInformationUtils.of(new TypeHint<Tuple2<String, Integer>>() {});
@Test
void testReduceCollection() {
diff --git a/flink-libraries/flink-cep/src/test/java/org/apache/flink/cep/operator/CEPOperatorTest.java b/flink-libraries/flink-cep/src/test/java/org/apache/flink/cep/operator/CEPOperatorTest.java
index 2f2f31eeeea..b3d384383cb 100644
--- a/flink-libraries/flink-cep/src/test/java/org/apache/flink/cep/operator/CEPOperatorTest.java
+++ b/flink-libraries/flink-cep/src/test/java/org/apache/flink/cep/operator/CEPOperatorTest.java
@@ -21,7 +21,7 @@ package org.apache.flink.cep.operator;
import org.apache.flink.api.common.ExecutionConfig;
import org.apache.flink.api.common.state.ValueState;
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.java.functions.KeySelector;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.api.java.typeutils.runtime.kryo.KryoSerializer;
@@ -779,7 +779,7 @@ public class CEPOperatorTest extends TestLogger {
Event middle1Event3 = new Event(41, "a", 4.0);
OutputTag<Event> lateDataTag =
- new OutputTag<Event>("late-data", TypeInformation.of(Event.class));
+ new OutputTag<Event>("late-data", TypeInformationUtils.of(Event.class));
CepOperator<Event, Integer, Map<String, List<Event>>> operator =
CepOperatorTestUtilities.getKeyedCepOperator(
diff --git a/flink-libraries/flink-state-processing-api/src/main/java/org/apache/flink/state/api/SavepointWriter.java b/flink-libraries/flink-state-processing-api/src/main/java/org/apache/flink/state/api/SavepointWriter.java
index 99f73fa524b..6b409fdbc7f 100644
--- a/flink-libraries/flink-state-processing-api/src/main/java/org/apache/flink/state/api/SavepointWriter.java
+++ b/flink-libraries/flink-state-processing-api/src/main/java/org/apache/flink/state/api/SavepointWriter.java
@@ -20,7 +20,7 @@ package org.apache.flink.state.api;
import org.apache.flink.annotation.PublicEvolving;
import org.apache.flink.api.common.functions.RichMapFunction;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.configuration.ConfigOption;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.core.fs.Path;
@@ -334,7 +334,7 @@ public class SavepointWriter {
path)
.transform(
"reduce(OperatorState)",
- TypeInformation.of(CheckpointMetadata.class),
+ TypeInformationUtils.of(CheckpointMetadata.class),
new GroupReduceOperator<>(
new MergeOperatorStates(metadata.getMasterStates())))
.forceNonParallel()
diff --git a/flink-libraries/flink-state-processing-api/src/main/java/org/apache/flink/state/api/StateBootstrapTransformation.java b/flink-libraries/flink-state-processing-api/src/main/java/org/apache/flink/state/api/StateBootstrapTransformation.java
index 70afd8c5169..8bb7480db70 100644
--- a/flink-libraries/flink-state-processing-api/src/main/java/org/apache/flink/state/api/StateBootstrapTransformation.java
+++ b/flink-libraries/flink-state-processing-api/src/main/java/org/apache/flink/state/api/StateBootstrapTransformation.java
@@ -22,6 +22,7 @@ import org.apache.flink.annotation.PublicEvolving;
import org.apache.flink.annotation.VisibleForTesting;
import org.apache.flink.api.common.ExecutionConfig;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.java.functions.KeySelector;
import org.apache.flink.configuration.Configuration;
@@ -134,7 +135,7 @@ public class StateBootstrapTransformation<T> {
operatorID, stateBackend, config, savepointPath, localMaxParallelism)
.transform(
"reduce(OperatorSubtaskState)",
- TypeInformation.of(OperatorState.class),
+ TypeInformationUtils.of(OperatorState.class),
new GroupReduceOperator<>(
new OperatorSubtaskStateReducer(operatorID, localMaxParallelism)))
.forceNonParallel();
@@ -174,7 +175,7 @@ public class StateBootstrapTransformation<T> {
SingleOutputStreamOperator<TaggedOperatorSubtaskState> subtaskStates =
input.transform(
operatorID.toHexString(),
- TypeInformation.of(TaggedOperatorSubtaskState.class),
+ TypeInformationUtils.of(TaggedOperatorSubtaskState.class),
operatorRunner)
.setMaxParallelism(localMaxParallelism);
diff --git a/flink-python/src/main/java/org/apache/flink/streaming/api/typeinfo/python/PickledByteArrayTypeInfo.java b/flink-python/src/main/java/org/apache/flink/streaming/api/typeinfo/python/PickledByteArrayTypeInfo.java
index 4d20b899544..1546d0db02c 100644
--- a/flink-python/src/main/java/org/apache/flink/streaming/api/typeinfo/python/PickledByteArrayTypeInfo.java
+++ b/flink-python/src/main/java/org/apache/flink/streaming/api/typeinfo/python/PickledByteArrayTypeInfo.java
@@ -18,7 +18,7 @@
package org.apache.flink.streaming.api.typeinfo.python;
import org.apache.flink.annotation.Internal;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.common.typeutils.base.array.BytePrimitiveArraySerializer;
@@ -68,7 +68,7 @@ public class PickledByteArrayTypeInfo extends TypeInformation<byte[]> {
}
@Override
- public TypeSerializer<byte[]> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<byte[]> createSerializer(SerializerContext serializerContext) {
return BytePrimitiveArraySerializer.INSTANCE;
}
diff --git a/flink-queryable-state/flink-queryable-state-client-java/src/main/java/org/apache/flink/queryablestate/client/VoidNamespaceTypeInfo.java b/flink-queryable-state/flink-queryable-state-client-java/src/main/java/org/apache/flink/queryablestate/client/VoidNamespaceTypeInfo.java
index e3a27d5ff01..24eea452f0a 100644
--- a/flink-queryable-state/flink-queryable-state-client-java/src/main/java/org/apache/flink/queryablestate/client/VoidNamespaceTypeInfo.java
+++ b/flink-queryable-state/flink-queryable-state-client-java/src/main/java/org/apache/flink/queryablestate/client/VoidNamespaceTypeInfo.java
@@ -19,7 +19,7 @@
package org.apache.flink.queryablestate.client;
import org.apache.flink.annotation.Internal;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.TypeSerializer;
@@ -66,7 +66,7 @@ public class VoidNamespaceTypeInfo extends TypeInformation<VoidNamespace> {
}
@Override
- public TypeSerializer<VoidNamespace> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<VoidNamespace> createSerializer(SerializerContext serializerContext) {
return VoidNamespaceSerializer.INSTANCE;
}
diff --git a/flink-runtime/src/main/java/org/apache/flink/runtime/state/VoidNamespaceTypeInfo.java b/flink-runtime/src/main/java/org/apache/flink/runtime/state/VoidNamespaceTypeInfo.java
index 66e13b078ac..7e15e1aa7b0 100644
--- a/flink-runtime/src/main/java/org/apache/flink/runtime/state/VoidNamespaceTypeInfo.java
+++ b/flink-runtime/src/main/java/org/apache/flink/runtime/state/VoidNamespaceTypeInfo.java
@@ -20,7 +20,7 @@ package org.apache.flink.runtime.state;
import org.apache.flink.annotation.Public;
import org.apache.flink.annotation.PublicEvolving;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.TypeSerializer;
@@ -70,7 +70,7 @@ public class VoidNamespaceTypeInfo extends TypeInformation<VoidNamespace> {
@Override
@PublicEvolving
- public TypeSerializer<VoidNamespace> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<VoidNamespace> createSerializer(SerializerContext serializerContext) {
return VoidNamespaceSerializer.INSTANCE;
}
diff --git a/flink-runtime/src/test/java/org/apache/flink/runtime/operators/sort/LargeRecordHandlerTest.java b/flink-runtime/src/test/java/org/apache/flink/runtime/operators/sort/LargeRecordHandlerTest.java
index 2ac6657cac2..5e6cf33c55e 100644
--- a/flink-runtime/src/test/java/org/apache/flink/runtime/operators/sort/LargeRecordHandlerTest.java
+++ b/flink-runtime/src/test/java/org/apache/flink/runtime/operators/sort/LargeRecordHandlerTest.java
@@ -20,7 +20,7 @@ package org.apache.flink.runtime.operators.sort;
import org.apache.flink.api.common.ExecutionConfig;
import org.apache.flink.api.common.typeinfo.TypeHint;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeutils.TypeComparator;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.java.tuple.Tuple2;
@@ -62,7 +62,7 @@ public class LargeRecordHandlerTest {
final TupleTypeInfo<Tuple2<Long, String>> typeInfo =
(TupleTypeInfo<Tuple2<Long, String>>)
- TypeInformation.of(new TypeHint<Tuple2<Long, String>>() {});
+ TypeInformationUtils.of(new TypeHint<Tuple2<Long, String>>() {});
final TypeSerializer<Tuple2<Long, String>> serializer =
typeInfo.createSerializer(new ExecutionConfig());
@@ -122,7 +122,7 @@ public class LargeRecordHandlerTest {
final TupleTypeInfo<Tuple2<Long, String>> typeInfo =
(TupleTypeInfo<Tuple2<Long, String>>)
- TypeInformation.of(new TypeHint<Tuple2<Long, String>>() {});
+ TypeInformationUtils.of(new TypeHint<Tuple2<Long, String>>() {});
final TypeSerializer<Tuple2<Long, String>> serializer =
typeInfo.createSerializer(new ExecutionConfig());
@@ -215,7 +215,7 @@ public class LargeRecordHandlerTest {
final TupleTypeInfo<Tuple3<Long, String, Byte>> typeInfo =
(TupleTypeInfo<Tuple3<Long, String, Byte>>)
- TypeInformation.of(new TypeHint<Tuple3<Long, String, Byte>>() {});
+ TypeInformationUtils.of(new TypeHint<Tuple3<Long, String, Byte>>() {});
final TypeSerializer<Tuple3<Long, String, Byte>> serializer =
typeInfo.createSerializer(new ExecutionConfig());
diff --git a/flink-scala/src/main/scala/org/apache/flink/api/scala/codegen/TypeInformationGen.scala b/flink-scala/src/main/scala/org/apache/flink/api/scala/codegen/TypeInformationGen.scala
index fcfad230ced..86ffd552868 100644
--- a/flink-scala/src/main/scala/org/apache/flink/api/scala/codegen/TypeInformationGen.scala
+++ b/flink-scala/src/main/scala/org/apache/flink/api/scala/codegen/TypeInformationGen.scala
@@ -18,7 +18,7 @@
package org.apache.flink.api.scala.codegen
import org.apache.flink.annotation.Internal
-import org.apache.flink.api.common.ExecutionConfig
+import org.apache.flink.api.common.SerializerContext
import org.apache.flink.api.common.typeinfo._
import org.apache.flink.api.common.typeutils._
import org.apache.flink.api.java.typeutils._
@@ -26,7 +26,6 @@ import org.apache.flink.api.scala.typeutils._
import org.apache.flink.types.Value
import java.lang.reflect.{Field, Modifier}
-
import scala.collection.JavaConverters._
import scala.collection.mutable
import scala.language.postfixOps
@@ -137,7 +136,7 @@ private[flink] trait TypeInformationGen[C <: Context] {
fieldsExpr.splice,
fieldNamesExpr.splice) {
- override def createSerializer(executionConfig: ExecutionConfig): TypeSerializer[T] = {
+ override def createSerializer(executionConfig: SerializerContext): TypeSerializer[T] = {
val fieldSerializers: Array[TypeSerializer[_]] = new Array[TypeSerializer[_]](getArity)
for (i <- 0 until getArity) {
fieldSerializers(i) = types(i).createSerializer(executionConfig)
@@ -263,11 +262,11 @@ private[flink] trait TypeInformationGen[C <: Context] {
import scala.collection.generic.CanBuildFrom
import org.apache.flink.api.scala.typeutils.TraversableTypeInfo
import org.apache.flink.api.scala.typeutils.TraversableSerializer
- import org.apache.flink.api.common.ExecutionConfig
+ import org.apache.flink.api.common.SerializerContext
val elementTpe = $elementTypeInfo
new TraversableTypeInfo($collectionClass, elementTpe) {
- def createSerializer(executionConfig: ExecutionConfig) = {
+ def createSerializer(executionConfig: SerializerContext) = {
// -------------------------------------------------------------------------------------
// NOTE:
diff --git a/flink-scala/src/main/scala/org/apache/flink/api/scala/package.scala b/flink-scala/src/main/scala/org/apache/flink/api/scala/package.scala
index 1760490fbdc..78ac6e8d409 100644
--- a/flink-scala/src/main/scala/org/apache/flink/api/scala/package.scala
+++ b/flink-scala/src/main/scala/org/apache/flink/api/scala/package.scala
@@ -18,7 +18,7 @@
package org.apache.flink.api
import org.apache.flink.annotation.Internal
-import org.apache.flink.api.common.ExecutionConfig
+import org.apache.flink.api.common.{ExecutionConfig, SerializerContext}
import org.apache.flink.api.common.typeinfo.TypeInformation
import org.apache.flink.api.common.typeutils._
import org.apache.flink.api.java.{DataSet => JavaDataSet}
@@ -134,7 +134,7 @@ package object scala {
Seq(t1, t2),
Array("_1", "_2")) {
- override def createSerializer(executionConfig: ExecutionConfig): TypeSerializer[(T1, T2)] = {
+ override def createSerializer(executionConfig: SerializerContext): TypeSerializer[(T1, T2)] = {
val fieldSerializers: Array[TypeSerializer[_]] = new Array[TypeSerializer[_]](getArity)
for (i <- 0 until getArity) {
fieldSerializers(i) = types(i).createSerializer(executionConfig)
diff --git a/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/EitherTypeInfo.scala b/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/EitherTypeInfo.scala
index 477eabf220b..e5bb613f09b 100644
--- a/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/EitherTypeInfo.scala
+++ b/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/EitherTypeInfo.scala
@@ -18,7 +18,7 @@
package org.apache.flink.api.scala.typeutils
import org.apache.flink.annotation.{Public, PublicEvolving}
-import org.apache.flink.api.common.ExecutionConfig
+import org.apache.flink.api.common.{ExecutionConfig, SerializerContext}
import org.apache.flink.api.common.typeinfo.TypeInformation
import org.apache.flink.api.common.typeutils.TypeSerializer
@@ -49,7 +49,7 @@ class EitherTypeInfo[A, B, T <: Either[A, B]](
Map[String, TypeInformation[_]]("A" -> leftTypeInfo, "B" -> rightTypeInfo).asJava
@PublicEvolving
- def createSerializer(executionConfig: ExecutionConfig): TypeSerializer[T] = {
+ def createSerializer(executionConfig: SerializerContext): TypeSerializer[T] = {
val leftSerializer: TypeSerializer[A] = if (leftTypeInfo != null) {
leftTypeInfo.createSerializer(executionConfig)
} else {
diff --git a/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/EnumValueTypeInfo.scala b/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/EnumValueTypeInfo.scala
index 51c5d3ccd6b..a957a798bcb 100644
--- a/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/EnumValueTypeInfo.scala
+++ b/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/EnumValueTypeInfo.scala
@@ -18,7 +18,7 @@
package org.apache.flink.api.scala.typeutils
import org.apache.flink.annotation.{Public, PublicEvolving}
-import org.apache.flink.api.common.ExecutionConfig
+import org.apache.flink.api.common.{ExecutionConfig, SerializerContext}
import org.apache.flink.api.common.typeinfo.{AtomicType, TypeInformation}
import org.apache.flink.api.common.typeutils.{TypeComparator, TypeSerializer}
@@ -48,7 +48,7 @@ class EnumValueTypeInfo[E <: Enumeration](val enum: E, val clazz: Class[E#Value]
override def getGenericParameters = Map.empty[String, TypeInformation[_]].asJava
@PublicEvolving
- def createSerializer(executionConfig: ExecutionConfig): TypeSerializer[T] = {
+ def createSerializer(executionConfig: SerializerContext): TypeSerializer[T] = {
new EnumValueSerializer[E](enum)
}
diff --git a/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/OptionTypeInfo.scala b/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/OptionTypeInfo.scala
index 53c7a0b107f..f85ede56924 100644
--- a/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/OptionTypeInfo.scala
+++ b/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/OptionTypeInfo.scala
@@ -18,7 +18,7 @@
package org.apache.flink.api.scala.typeutils
import org.apache.flink.annotation.{Public, PublicEvolving, VisibleForTesting}
-import org.apache.flink.api.common.ExecutionConfig
+import org.apache.flink.api.common.{ExecutionConfig, SerializerContext}
import org.apache.flink.api.common.typeinfo.{AtomicType, TypeInformation}
import org.apache.flink.api.common.typeutils.{TypeComparator, TypeSerializer}
@@ -58,7 +58,7 @@ class OptionTypeInfo[A, T <: Option[A]](private val elemTypeInfo: TypeInformatio
}
@PublicEvolving
- def createSerializer(executionConfig: ExecutionConfig): TypeSerializer[T] = {
+ def createSerializer(executionConfig: SerializerContext): TypeSerializer[T] = {
if (elemTypeInfo == null) {
// this happens when the type of a DataSet is None, i.e. DataSet[None]
new OptionSerializer(new NothingSerializer).asInstanceOf[TypeSerializer[T]]
diff --git a/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/ScalaNothingTypeInfo.scala b/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/ScalaNothingTypeInfo.scala
index 3e8f8040b31..fa11ee1e922 100644
--- a/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/ScalaNothingTypeInfo.scala
+++ b/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/ScalaNothingTypeInfo.scala
@@ -18,7 +18,7 @@
package org.apache.flink.api.scala.typeutils
import org.apache.flink.annotation.{Public, PublicEvolving}
-import org.apache.flink.api.common.ExecutionConfig
+import org.apache.flink.api.common.{ExecutionConfig, SerializerContext}
import org.apache.flink.api.common.typeinfo.TypeInformation
import org.apache.flink.api.common.typeutils.TypeSerializer
@@ -39,7 +39,7 @@ class ScalaNothingTypeInfo extends TypeInformation[Nothing] {
override def isKeyType: Boolean = false
@PublicEvolving
- override def createSerializer(config: ExecutionConfig): TypeSerializer[Nothing] =
+ override def createSerializer(serializerContext: SerializerContext): TypeSerializer[Nothing] =
(new NothingSerializer).asInstanceOf[TypeSerializer[Nothing]]
override def hashCode(): Int = classOf[ScalaNothingTypeInfo].hashCode
diff --git a/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/TraversableTypeInfo.scala b/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/TraversableTypeInfo.scala
index 3cdb742a905..1a0ce9f0cdc 100644
--- a/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/TraversableTypeInfo.scala
+++ b/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/TraversableTypeInfo.scala
@@ -18,7 +18,7 @@
package org.apache.flink.api.scala.typeutils
import org.apache.flink.annotation.{Public, PublicEvolving}
-import org.apache.flink.api.common.ExecutionConfig
+import org.apache.flink.api.common.SerializerContext
import org.apache.flink.api.common.typeinfo.TypeInformation
import org.apache.flink.api.common.typeutils.TypeSerializer
@@ -48,7 +48,7 @@ abstract class TraversableTypeInfo[T <: TraversableOnce[E], E](
Map[String, TypeInformation[_]]("A" -> elementTypeInfo).asJava
@PublicEvolving
- def createSerializer(executionConfig: ExecutionConfig): TypeSerializer[T]
+ def createSerializer(executionConfig: SerializerContext): TypeSerializer[T]
override def equals(other: Any): Boolean = {
other match {
diff --git a/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/TrySerializer.scala b/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/TrySerializer.scala
index c859e94f3e6..f4556190af2 100644
--- a/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/TrySerializer.scala
+++ b/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/TrySerializer.scala
@@ -18,7 +18,7 @@
package org.apache.flink.api.scala.typeutils
import org.apache.flink.annotation.Internal
-import org.apache.flink.api.common.ExecutionConfig
+import org.apache.flink.api.common.SerializerContext
import org.apache.flink.api.common.typeutils._
import org.apache.flink.api.java.typeutils.runtime.kryo.KryoSerializer
import org.apache.flink.core.memory.{DataInputView, DataOutputView}
@@ -35,7 +35,7 @@ class TrySerializer[A](
private[typeutils] def this(
elemSerializer: TypeSerializer[A],
- executionConfig: ExecutionConfig) = {
+ executionConfig: SerializerContext) = {
this(
elemSerializer,
new KryoSerializer[Throwable](classOf[Throwable], executionConfig)
diff --git a/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/TryTypeInfo.scala b/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/TryTypeInfo.scala
index c683eeef5bb..9c6d73a74a2 100644
--- a/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/TryTypeInfo.scala
+++ b/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/TryTypeInfo.scala
@@ -18,7 +18,7 @@
package org.apache.flink.api.scala.typeutils
import org.apache.flink.annotation.{Public, PublicEvolving}
-import org.apache.flink.api.common.ExecutionConfig
+import org.apache.flink.api.common.{ExecutionConfig, SerializerContext}
import org.apache.flink.api.common.typeinfo.TypeInformation
import org.apache.flink.api.common.typeutils.TypeSerializer
@@ -45,7 +45,7 @@ class TryTypeInfo[A, T <: Try[A]](val elemTypeInfo: TypeInformation[A]) extends
override def getGenericParameters = Map[String, TypeInformation[_]]("T" -> elemTypeInfo).asJava
@PublicEvolving
- def createSerializer(executionConfig: ExecutionConfig): TypeSerializer[T] = {
+ def createSerializer(executionConfig: SerializerContext): TypeSerializer[T] = {
if (elemTypeInfo == null) {
// this happens when the type of a DataSet is None, i.e. DataSet[Failure]
new TrySerializer(new NothingSerializer, executionConfig).asInstanceOf[TypeSerializer[T]]
diff --git a/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/UnitTypeInfo.scala b/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/UnitTypeInfo.scala
index 1fe29062f5f..9442642ada0 100644
--- a/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/UnitTypeInfo.scala
+++ b/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/UnitTypeInfo.scala
@@ -18,7 +18,7 @@
package org.apache.flink.api.scala.typeutils
import org.apache.flink.annotation.{Public, PublicEvolving}
-import org.apache.flink.api.common.ExecutionConfig
+import org.apache.flink.api.common.{ExecutionConfig, SerializerContext}
import org.apache.flink.api.common.typeinfo.TypeInformation
import org.apache.flink.api.common.typeutils.TypeSerializer
@@ -38,7 +38,7 @@ class UnitTypeInfo extends TypeInformation[Unit] {
override def isKeyType(): Boolean = false
@PublicEvolving
- override def createSerializer(config: ExecutionConfig): TypeSerializer[Unit] =
+ override def createSerializer(serializerContext: SerializerContext): TypeSerializer[Unit] =
(new UnitSerializer).asInstanceOf[TypeSerializer[Unit]]
override def canEqual(obj: scala.Any): Boolean = {
diff --git a/flink-scala/src/test/scala/org/apache/flink/api/scala/typeutils/CaseClassTypeInfoTest.scala b/flink-scala/src/test/scala/org/apache/flink/api/scala/typeutils/CaseClassTypeInfoTest.scala
index a8a6216abe9..d57f06510f2 100644
--- a/flink-scala/src/test/scala/org/apache/flink/api/scala/typeutils/CaseClassTypeInfoTest.scala
+++ b/flink-scala/src/test/scala/org/apache/flink/api/scala/typeutils/CaseClassTypeInfoTest.scala
@@ -17,7 +17,7 @@
*/
package org.apache.flink.api.scala.typeutils
-import org.apache.flink.api.common.ExecutionConfig
+import org.apache.flink.api.common.{ExecutionConfig, SerializerContext}
import org.apache.flink.api.common.typeinfo.BasicTypeInfo
import org.apache.flink.api.common.typeutils.{TypeInformationTestBase, TypeSerializer}
@@ -30,14 +30,14 @@ class CaseClassTypeInfoTest extends TypeInformationTestBase[CaseClassTypeInfo[_]
Array(),
Array(BasicTypeInfo.INT_TYPE_INFO, BasicTypeInfo.STRING_TYPE_INFO),
Array("_1", "_2")) {
- override def createSerializer(config: ExecutionConfig): TypeSerializer[(Int, String)] = ???
+ override def createSerializer(serializerContext: SerializerContext): TypeSerializer[(Int, String)] = ???
},
new CaseClassTypeInfo[(Int, Boolean)](
classOf[(Int, Boolean)],
Array(),
Array(BasicTypeInfo.INT_TYPE_INFO, BasicTypeInfo.BOOLEAN_TYPE_INFO),
Array("_1", "_2")) {
- override def createSerializer(config: ExecutionConfig): TypeSerializer[(Int, Boolean)] = ???
+ override def createSerializer(serializerContext: SerializerContext): TypeSerializer[(Int, Boolean)] = ???
}
)
}
diff --git a/flink-scala/src/test/scala/org/apache/flink/api/scala/typeutils/TraversableTypeInfoTest.scala b/flink-scala/src/test/scala/org/apache/flink/api/scala/typeutils/TraversableTypeInfoTest.scala
index 24fdd625074..d01a5c9a4c3 100644
--- a/flink-scala/src/test/scala/org/apache/flink/api/scala/typeutils/TraversableTypeInfoTest.scala
+++ b/flink-scala/src/test/scala/org/apache/flink/api/scala/typeutils/TraversableTypeInfoTest.scala
@@ -17,7 +17,7 @@
*/
package org.apache.flink.api.scala.typeutils
-import org.apache.flink.api.common.ExecutionConfig
+import org.apache.flink.api.common.SerializerContext
import org.apache.flink.api.common.typeinfo.{BasicTypeInfo, TypeInformation}
import org.apache.flink.api.common.typeutils.{TypeInformationTestBase, TypeSerializer}
@@ -28,13 +28,13 @@ class TraversableTypeInfoTest extends TypeInformationTestBase[TraversableTypeInf
new TraversableTypeInfo[Seq[Int], Int](
classOf[Seq[Int]],
BasicTypeInfo.INT_TYPE_INFO.asInstanceOf[TypeInformation[Int]]) {
- override def createSerializer(executionConfig: ExecutionConfig): TypeSerializer[Seq[Int]] =
+ override def createSerializer(executionConfig: SerializerContext): TypeSerializer[Seq[Int]] =
???
},
new TraversableTypeInfo[List[Int], Int](
classOf[List[Int]],
BasicTypeInfo.INT_TYPE_INFO.asInstanceOf[TypeInformation[Int]]) {
- override def createSerializer(executionConfig: ExecutionConfig): TypeSerializer[List[Int]] =
+ override def createSerializer(executionConfig: SerializerContext): TypeSerializer[List[Int]] =
???
}
)
diff --git a/flink-scala/src/test/scala/org/apache/flink/api/scala/typeutils/TypeInfoFactoryTest.scala b/flink-scala/src/test/scala/org/apache/flink/api/scala/typeutils/TypeInfoFactoryTest.scala
index b2b9643b35f..0f95a2291bf 100644
--- a/flink-scala/src/test/scala/org/apache/flink/api/scala/typeutils/TypeInfoFactoryTest.scala
+++ b/flink-scala/src/test/scala/org/apache/flink/api/scala/typeutils/TypeInfoFactoryTest.scala
@@ -17,7 +17,7 @@
*/
package org.apache.flink.api.scala.typeutils
-import org.apache.flink.api.common.ExecutionConfig
+import org.apache.flink.api.common.{ExecutionConfig, SerializerContext}
import org.apache.flink.api.common.typeinfo.{TypeInfo, TypeInfoFactory, TypeInformation}
import org.apache.flink.api.common.typeinfo.BasicTypeInfo._
import org.apache.flink.api.common.typeutils.TypeSerializer
@@ -26,7 +26,6 @@ import org.apache.flink.api.java.typeutils.TypeInfoFactoryTest._
import org.apache.flink.api.scala._
import org.apache.flink.api.scala.typeutils.TypeInfoFactoryTest._
import org.apache.flink.util.TestLogger
-
import org.junit.Assert._
import org.junit.Test
import org.scalatest.junit.JUnitSuiteLike
@@ -143,7 +142,7 @@ object TypeInfoFactoryTest {
override def isKeyType: Boolean = ???
- override def createSerializer(config: ExecutionConfig): TypeSerializer[MyOption[_]] = ???
+ override def createSerializer(serializerContext: SerializerContext): TypeSerializer[MyOption[_]] = ???
override def canEqual(obj: scala.Any): Boolean = ???
diff --git a/flink-state-backends/flink-statebackend-changelog/src/test/java/org/apache/flink/state/changelog/ChangelogListStateTest.java b/flink-state-backends/flink-statebackend-changelog/src/test/java/org/apache/flink/state/changelog/ChangelogListStateTest.java
index 9a7420b80e4..eb17f281a6a 100644
--- a/flink-state-backends/flink-statebackend-changelog/src/test/java/org/apache/flink/state/changelog/ChangelogListStateTest.java
+++ b/flink-state-backends/flink-statebackend-changelog/src/test/java/org/apache/flink/state/changelog/ChangelogListStateTest.java
@@ -18,7 +18,7 @@
package org.apache.flink.state.changelog;
import org.apache.flink.api.common.ExecutionConfig;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.common.typeutils.base.ListSerializer;
import org.apache.flink.runtime.state.KeyGroupRange;
@@ -124,7 +124,8 @@ public class ChangelogListStateTest {
private final List<String> list;
public TestingInternalListState(List<String> stringStringList) {
- serializer = TypeInformation.of(String.class).createSerializer(new ExecutionConfig());
+ serializer =
+ TypeInformationUtils.of(String.class).createSerializer(new ExecutionConfig());
listSerializer = new ListSerializer<>(serializer);
list = new ArrayList<>(stringStringList);
}
diff --git a/flink-state-backends/flink-statebackend-changelog/src/test/java/org/apache/flink/state/changelog/ChangelogMapStateTest.java b/flink-state-backends/flink-statebackend-changelog/src/test/java/org/apache/flink/state/changelog/ChangelogMapStateTest.java
index f28befc060f..1aea4d40299 100644
--- a/flink-state-backends/flink-statebackend-changelog/src/test/java/org/apache/flink/state/changelog/ChangelogMapStateTest.java
+++ b/flink-state-backends/flink-statebackend-changelog/src/test/java/org/apache/flink/state/changelog/ChangelogMapStateTest.java
@@ -18,7 +18,7 @@
package org.apache.flink.state.changelog;
import org.apache.flink.api.common.ExecutionConfig;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.common.typeutils.base.MapSerializer;
import org.apache.flink.runtime.state.KeyGroupRange;
@@ -151,7 +151,8 @@ public class ChangelogMapStateTest {
private final Map<String, String> map;
public TestingInternalMapState(Map<String, String> stringStringMap) {
- serializer = TypeInformation.of(String.class).createSerializer(new ExecutionConfig());
+ serializer =
+ TypeInformationUtils.of(String.class).createSerializer(new ExecutionConfig());
mapSerializer = new MapSerializer<>(serializer, serializer);
map = new HashMap<>(stringStringMap);
}
diff --git a/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/connector/sink2/CommittableMessageTypeInfo.java b/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/connector/sink2/CommittableMessageTypeInfo.java
index f13f6d3146e..9b0e2ceb430 100644
--- a/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/connector/sink2/CommittableMessageTypeInfo.java
+++ b/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/connector/sink2/CommittableMessageTypeInfo.java
@@ -19,7 +19,7 @@
package org.apache.flink.streaming.api.connector.sink2;
import org.apache.flink.annotation.Experimental;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.core.io.SimpleVersionedSerializer;
@@ -96,7 +96,7 @@ public class CommittableMessageTypeInfo<CommT> extends TypeInformation<Committab
}
@Override
- public TypeSerializer<CommittableMessage<CommT>> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<CommittableMessage<CommT>> createSerializer(SerializerContext serializerContext) {
// no copy, so that data from writer is directly going into committer while chaining
return new SimpleVersionedSerializerTypeSerializerProxy<CommittableMessage<CommT>>(
() -> new CommittableMessageSerializer<>(committableSerializerFactory.get())) {
diff --git a/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/CoGroupedStreams.java b/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/CoGroupedStreams.java
index ce328dc26d7..a87850f612e 100644
--- a/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/CoGroupedStreams.java
+++ b/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/CoGroupedStreams.java
@@ -21,7 +21,7 @@ import org.apache.flink.annotation.Internal;
import org.apache.flink.annotation.Public;
import org.apache.flink.annotation.PublicEvolving;
import org.apache.flink.annotation.VisibleForTesting;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.functions.CoGroupFunction;
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.api.common.typeinfo.TypeInformation;
@@ -529,9 +529,10 @@ public class CoGroupedStreams<T1, T2> {
}
@Override
- public TypeSerializer<TaggedUnion<T1, T2>> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<TaggedUnion<T1, T2>> createSerializer(SerializerContext serializerContext) {
return new UnionSerializer<>(
- oneType.createSerializer(config), twoType.createSerializer(config));
+ oneType.createSerializer(serializerContext), twoType.createSerializer(
+ serializerContext));
}
@Override
diff --git a/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/IterativeStream.java b/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/IterativeStream.java
index 21031858b1f..0cac58c3964 100644
--- a/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/IterativeStream.java
+++ b/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/IterativeStream.java
@@ -21,6 +21,7 @@ import org.apache.flink.annotation.Public;
import org.apache.flink.annotation.PublicEvolving;
import org.apache.flink.api.common.typeinfo.TypeHint;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.dag.Transformation;
import org.apache.flink.api.java.functions.KeySelector;
import org.apache.flink.streaming.api.functions.ProcessFunction;
@@ -89,7 +90,7 @@ public class IterativeStream<T> extends SingleOutputStreamOperator<T> {
* @return A {@link ConnectedIterativeStreams}.
*/
public <F> ConnectedIterativeStreams<T, F> withFeedbackType(Class<F> feedbackTypeClass) {
- return withFeedbackType(TypeInformation.of(feedbackTypeClass));
+ return withFeedbackType(TypeInformationUtils.of(feedbackTypeClass));
}
/**
@@ -102,7 +103,7 @@ public class IterativeStream<T> extends SingleOutputStreamOperator<T> {
* @return A {@link ConnectedIterativeStreams}.
*/
public <F> ConnectedIterativeStreams<T, F> withFeedbackType(TypeHint<F> feedbackTypeHint) {
- return withFeedbackType(TypeInformation.of(feedbackTypeHint));
+ return withFeedbackType(TypeInformationUtils.of(feedbackTypeHint));
}
/**
diff --git a/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/SingleOutputStreamOperator.java b/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/SingleOutputStreamOperator.java
index 4141a31d85c..765c7d8d5dd 100644
--- a/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/SingleOutputStreamOperator.java
+++ b/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/SingleOutputStreamOperator.java
@@ -25,6 +25,7 @@ import org.apache.flink.api.common.operators.SlotSharingGroup;
import org.apache.flink.api.common.operators.util.OperatorValidationUtils;
import org.apache.flink.api.common.typeinfo.TypeHint;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.dag.Transformation;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.operators.ChainingStrategy;
@@ -295,7 +296,7 @@ public class SingleOutputStreamOperator<T> extends DataStream<T> {
requireNonNull(typeClass, "type class must not be null.");
try {
- return returns(TypeInformation.of(typeClass));
+ return returns(TypeInformationUtils.of(typeClass));
} catch (InvalidTypesException e) {
throw new InvalidTypesException(
"Cannot infer the type information from the class alone."
@@ -325,7 +326,7 @@ public class SingleOutputStreamOperator<T> extends DataStream<T> {
requireNonNull(typeHint, "TypeHint must not be null");
try {
- return returns(TypeInformation.of(typeHint));
+ return returns(TypeInformationUtils.of(typeHint));
} catch (InvalidTypesException e) {
throw new InvalidTypesException(
"Cannot infer the type information from the type hint. "
diff --git a/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/functions/sink/TwoPhaseCommitSinkFunction.java b/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/functions/sink/TwoPhaseCommitSinkFunction.java
index 3cd766df128..35def02d8c5 100644
--- a/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/functions/sink/TwoPhaseCommitSinkFunction.java
+++ b/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/functions/sink/TwoPhaseCommitSinkFunction.java
@@ -24,7 +24,7 @@ import org.apache.flink.api.common.state.CheckpointListener;
import org.apache.flink.api.common.state.ListState;
import org.apache.flink.api.common.state.ListStateDescriptor;
import org.apache.flink.api.common.typeinfo.TypeHint;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeutils.CompositeTypeSerializerSnapshot;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.core.memory.DataInputView;
@@ -112,8 +112,8 @@ public abstract class TwoPhaseCommitSinkFunction<IN, TXN, CONTEXT> extends RichS
/**
* Use default {@link ListStateDescriptor} for internal state serialization. Helpful utilities
- * for using this constructor are {@link TypeInformation#of(Class)}, {@link
- * org.apache.flink.api.common.typeinfo.TypeHint} and {@link TypeInformation#of(TypeHint)}.
+ * for using this constructor are {@link TypeInformationUtils#of(Class)}, {@link
+ * org.apache.flink.api.common.typeinfo.TypeHint} and {@link TypeInformationUtils#of(TypeHint)}.
* Example:
*
* <pre>{@code
diff --git a/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/operators/InternalTimersSnapshotReaderWriters.java b/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/operators/InternalTimersSnapshotReaderWriters.java
index d3dde2c5d32..d38c5ae6676 100644
--- a/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/operators/InternalTimersSnapshotReaderWriters.java
+++ b/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/operators/InternalTimersSnapshotReaderWriters.java
@@ -21,6 +21,7 @@ package org.apache.flink.streaming.api.operators;
import org.apache.flink.annotation.Internal;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.common.typeutils.TypeSerializerSnapshot;
+import org.apache.flink.api.common.typeutils.TypeSerializerSnapshotUtils;
import org.apache.flink.api.common.typeutils.base.LongSerializer;
import org.apache.flink.core.memory.DataInputView;
import org.apache.flink.core.memory.DataOutputView;
@@ -149,9 +150,9 @@ public class InternalTimersSnapshotReaderWriters {
@Override
protected void writeKeyAndNamespaceSerializers(DataOutputView out) throws IOException {
- TypeSerializerSnapshot.writeVersionedSnapshot(
+ TypeSerializerSnapshotUtils.writeVersionedSnapshot(
out, timersSnapshot.getKeySerializerSnapshot());
- TypeSerializerSnapshot.writeVersionedSnapshot(
+ TypeSerializerSnapshotUtils.writeVersionedSnapshot(
out, timersSnapshot.getNamespaceSerializerSnapshot());
}
}
@@ -264,9 +265,9 @@ public class InternalTimersSnapshotReaderWriters {
throws IOException {
restoredTimersSnapshot.setKeySerializerSnapshot(
- TypeSerializerSnapshot.readVersionedSnapshot(in, userCodeClassLoader));
+ TypeSerializerSnapshotUtils.readVersionedSnapshot(in, userCodeClassLoader));
restoredTimersSnapshot.setNamespaceSerializerSnapshot(
- TypeSerializerSnapshot.readVersionedSnapshot(in, userCodeClassLoader));
+ TypeSerializerSnapshotUtils.readVersionedSnapshot(in, userCodeClassLoader));
}
}
diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/DataStreamTest.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/DataStreamTest.java
index ea61b1888eb..d93e6d8cdc8 100644
--- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/DataStreamTest.java
+++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/DataStreamTest.java
@@ -32,11 +32,11 @@ import org.apache.flink.api.common.typeinfo.BasicArrayTypeInfo;
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
import org.apache.flink.api.common.typeinfo.PrimitiveArrayTypeInfo;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeinfo.Types;
import org.apache.flink.api.java.functions.KeySelector;
import org.apache.flink.api.java.tuple.Tuple1;
import org.apache.flink.api.java.tuple.Tuple2;
-import org.apache.flink.api.java.typeutils.EnumTypeInfo;
import org.apache.flink.api.java.typeutils.GenericTypeInfo;
import org.apache.flink.api.java.typeutils.ObjectArrayTypeInfo;
import org.apache.flink.api.java.typeutils.TupleTypeInfo;
@@ -1581,7 +1581,9 @@ public class DataStreamTest extends TestLogger {
expectedException.expect(InvalidProgramException.class);
expectedException.expectMessage(
new StringStartsWith(
- "Type " + EnumTypeInfo.of(TestEnum.class) + " cannot be used as key."));
+ "Type "
+ + TypeInformationUtils.of(TestEnum.class)
+ + " cannot be used as key."));
input.keyBy(keySelector);
}
diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/StreamExecutionEnvironmentTest.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/StreamExecutionEnvironmentTest.java
index 20906461ab0..72c8df8a802 100644
--- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/StreamExecutionEnvironmentTest.java
+++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/StreamExecutionEnvironmentTest.java
@@ -22,6 +22,7 @@ import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.common.operators.SlotSharingGroup;
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeinfo.Types;
import org.apache.flink.api.java.typeutils.GenericTypeInfo;
import org.apache.flink.api.java.typeutils.ResultTypeQueryable;
@@ -525,7 +526,7 @@ public class StreamExecutionEnvironmentTest {
@Override
public TypeInformation<Row> getProducedType() {
- return TypeInformation.of(Row.class);
+ return TypeInformationUtils.of(Row.class);
}
@Override
diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/functions/source/InputFormatSourceFunctionTest.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/functions/source/InputFormatSourceFunctionTest.java
index 821249405e8..4fd656ee550 100644
--- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/functions/source/InputFormatSourceFunctionTest.java
+++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/functions/source/InputFormatSourceFunctionTest.java
@@ -22,7 +22,7 @@ import org.apache.flink.api.common.ExecutionConfig;
import org.apache.flink.api.common.accumulators.Accumulator;
import org.apache.flink.api.common.io.RichInputFormat;
import org.apache.flink.api.common.io.statistics.BaseStatistics;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.core.io.InputSplit;
import org.apache.flink.core.io.InputSplitAssigner;
@@ -64,7 +64,7 @@ public class InputFormatSourceFunctionTest {
final LifeCycleTestInputFormat format = new LifeCycleTestInputFormat();
final InputFormatSourceFunction<Integer> reader =
- new InputFormatSourceFunction<>(format, TypeInformation.of(Integer.class));
+ new InputFormatSourceFunction<>(format, TypeInformationUtils.of(Integer.class));
try (MockEnvironment environment =
new MockEnvironmentBuilder()
diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/graph/StreamGraphGeneratorBatchExecutionTest.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/graph/StreamGraphGeneratorBatchExecutionTest.java
index 8e88549b47f..ba2a299b598 100644
--- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/graph/StreamGraphGeneratorBatchExecutionTest.java
+++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/graph/StreamGraphGeneratorBatchExecutionTest.java
@@ -23,8 +23,7 @@ import org.apache.flink.api.common.ExecutionConfig;
import org.apache.flink.api.common.RuntimeExecutionMode;
import org.apache.flink.api.common.eventtime.WatermarkStrategy;
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
-import org.apache.flink.api.common.typeinfo.IntegerTypeInfo;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.connector.source.Boundedness;
import org.apache.flink.api.connector.source.mocks.MockSource;
import org.apache.flink.api.dag.Transformation;
@@ -475,7 +474,7 @@ public class StreamGraphGeneratorBatchExecutionTest extends TestLogger {
"Bounded Source",
new MockSource(Boundedness.BOUNDED, 100),
WatermarkStrategy.noWatermarks(),
- IntegerTypeInfo.of(Integer.class),
+ TypeInformationUtils.of(Integer.class),
1);
final FeedbackTransformation<Integer> feedbackTransformation =
@@ -487,7 +486,7 @@ public class StreamGraphGeneratorBatchExecutionTest extends TestLogger {
@Test
public void testCoFeedbackThrowsExceptionInBatch() {
final CoFeedbackTransformation<Integer> coFeedbackTransformation =
- new CoFeedbackTransformation<>(2, TypeInformation.of(Integer.TYPE), 5L);
+ new CoFeedbackTransformation<>(2, TypeInformationUtils.of(Integer.TYPE), 5L);
testNoSupportForIterationsInBatchHelper(coFeedbackTransformation);
}
diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/graph/StreamGraphGeneratorExecutionModeDetectionTest.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/graph/StreamGraphGeneratorExecutionModeDetectionTest.java
index c95f22738db..9822616f84e 100644
--- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/graph/StreamGraphGeneratorExecutionModeDetectionTest.java
+++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/graph/StreamGraphGeneratorExecutionModeDetectionTest.java
@@ -22,7 +22,7 @@ import org.apache.flink.api.common.ExecutionConfig;
import org.apache.flink.api.common.RuntimeExecutionMode;
import org.apache.flink.api.common.eventtime.WatermarkStrategy;
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
-import org.apache.flink.api.common.typeinfo.IntegerTypeInfo;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.connector.source.Boundedness;
import org.apache.flink.api.connector.source.mocks.MockSource;
import org.apache.flink.api.dag.Transformation;
@@ -278,7 +278,7 @@ public class StreamGraphGeneratorExecutionModeDetectionTest extends TestLogger {
name,
new MockSource(boundedness, 100),
WatermarkStrategy.noWatermarks(),
- IntegerTypeInfo.of(Integer.class),
+ TypeInformationUtils.of(Integer.class),
1);
}
diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/graph/StreamingJobGraphGeneratorTest.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/graph/StreamingJobGraphGeneratorTest.java
index a58d83c152e..28675d9aa8c 100644
--- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/graph/StreamingJobGraphGeneratorTest.java
+++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/graph/StreamingJobGraphGeneratorTest.java
@@ -32,7 +32,7 @@ import org.apache.flink.api.common.operators.MailboxExecutor;
import org.apache.flink.api.common.operators.ResourceSpec;
import org.apache.flink.api.common.operators.util.UserCodeWrapper;
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeinfo.Types;
import org.apache.flink.api.connector.sink2.Committer;
import org.apache.flink.api.connector.sink2.TwoPhaseCommittingSink;
@@ -678,9 +678,9 @@ class StreamingJobGraphGeneratorTest {
env.addSource(
new InputFormatSourceFunction<>(
new TypeSerializerInputFormat<>(
- TypeInformation.of(Long.class)),
- TypeInformation.of(Long.class)),
- TypeInformation.of(Long.class))
+ TypeInformationUtils.of(Long.class)),
+ TypeInformationUtils.of(Long.class)),
+ TypeInformationUtils.of(Long.class))
.name("source");
source.writeUsingOutputFormat(new DiscardingOutputFormat<>()).name("sink1");
diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/operators/co/IntervalJoinOperatorTest.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/operators/co/IntervalJoinOperatorTest.java
index 20859781041..e643a48b5ac 100644
--- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/operators/co/IntervalJoinOperatorTest.java
+++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/api/operators/co/IntervalJoinOperatorTest.java
@@ -22,6 +22,7 @@ import org.apache.flink.api.common.ExecutionConfig;
import org.apache.flink.api.common.state.MapState;
import org.apache.flink.api.common.typeinfo.TypeHint;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.java.functions.KeySelector;
import org.apache.flink.api.java.tuple.Tuple2;
@@ -412,7 +413,7 @@ public class IntervalJoinOperatorTest {
op,
(elem) -> elem.key,
(elem) -> elem.key,
- TypeInformation.of(String.class))) {
+ TypeInformationUtils.of(String.class))) {
testHarness.setup();
testHarness.open();
@@ -454,7 +455,7 @@ public class IntervalJoinOperatorTest {
op,
(elem) -> elem.key,
(elem) -> elem.key,
- TypeInformation.of(String.class))) {
+ TypeInformationUtils.of(String.class))) {
testHarness.setup();
testHarness.open();
@@ -493,7 +494,7 @@ public class IntervalJoinOperatorTest {
op,
(elem) -> elem.key,
(elem) -> elem.key,
- TypeInformation.of(String.class))) {
+ TypeInformationUtils.of(String.class))) {
testHarness.setup();
testHarness.open();
@@ -652,7 +653,7 @@ public class IntervalJoinOperatorTest {
operator,
(elem) -> elem.key, // key
(elem) -> elem.key, // key
- TypeInformation.of(String.class));
+ TypeInformationUtils.of(String.class));
}
private JoinTestBuilder setupHarness(
@@ -681,7 +682,7 @@ public class IntervalJoinOperatorTest {
operator,
(elem) -> elem.key, // key
(elem) -> elem.key, // key
- TypeInformation.of(String.class));
+ TypeInformationUtils.of(String.class));
return new JoinTestBuilder(t, operator);
}
@@ -900,7 +901,7 @@ public class IntervalJoinOperatorTest {
}
public static TypeSerializer<TestElem> serializer() {
- return TypeInformation.of(new TypeHint<TestElem>() {})
+ return TypeInformationUtils.of(new TypeHint<TestElem>() {})
.createSerializer(new ExecutionConfig());
}
}
diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/EvictingWindowOperatorTest.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/EvictingWindowOperatorTest.java
index 7ce4511abe6..c84d2e3a67b 100644
--- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/EvictingWindowOperatorTest.java
+++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/EvictingWindowOperatorTest.java
@@ -24,6 +24,7 @@ import org.apache.flink.api.common.state.ListStateDescriptor;
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
import org.apache.flink.api.common.typeinfo.TypeHint;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.java.functions.KeySelector;
import org.apache.flink.api.java.tuple.Tuple2;
@@ -64,7 +65,7 @@ import java.util.concurrent.atomic.AtomicInteger;
public class EvictingWindowOperatorTest {
private static final TypeInformation<Tuple2<String, Integer>> STRING_INT_TUPLE =
- TypeInformation.of(new TypeHint<Tuple2<String, Integer>>() {});
+ TypeInformationUtils.of(new TypeHint<Tuple2<String, Integer>>() {});
/** Tests CountEvictor evictAfter behavior. */
@Test
diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperatorMigrationTest.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperatorMigrationTest.java
index fbf8437551f..fc42fca5ea0 100644
--- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperatorMigrationTest.java
+++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperatorMigrationTest.java
@@ -26,6 +26,7 @@ import org.apache.flink.api.common.state.ReducingStateDescriptor;
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
import org.apache.flink.api.common.typeinfo.TypeHint;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.java.functions.KeySelector;
import org.apache.flink.api.java.tuple.Tuple2;
@@ -86,7 +87,7 @@ public class WindowOperatorMigrationTest implements MigrationTest {
}
private static final TypeInformation<Tuple2<String, Integer>> STRING_INT_TUPLE =
- TypeInformation.of(new TypeHint<Tuple2<String, Integer>>() {});
+ TypeInformationUtils.of(new TypeHint<Tuple2<String, Integer>>() {});
private final FlinkVersion testMigrateVersion;
@@ -949,7 +950,7 @@ public class WindowOperatorMigrationTest implements MigrationTest {
inputType.createSerializer(new ExecutionConfig()));
TypeSerializer<NonPojoType> keySerializer =
- TypeInformation.of(NonPojoType.class).createSerializer(new ExecutionConfig());
+ TypeInformationUtils.of(NonPojoType.class).createSerializer(new ExecutionConfig());
assertTrue(keySerializer instanceof KryoSerializer);
WindowOperator<
@@ -979,7 +980,7 @@ public class WindowOperatorMigrationTest implements MigrationTest {
new KeyedOneInputStreamOperatorTestHarness<>(
operator,
new TupleKeySelector<>(),
- TypeInformation.of(NonPojoType.class));
+ TypeInformationUtils.of(NonPojoType.class));
testHarness.setup();
testHarness.open();
@@ -1044,7 +1045,7 @@ public class WindowOperatorMigrationTest implements MigrationTest {
inputType.createSerializer(new ExecutionConfig()));
TypeSerializer<NonPojoType> keySerializer =
- TypeInformation.of(NonPojoType.class).createSerializer(new ExecutionConfig());
+ TypeInformationUtils.of(NonPojoType.class).createSerializer(new ExecutionConfig());
assertTrue(keySerializer instanceof KryoSerializer);
WindowOperator<
@@ -1074,7 +1075,7 @@ public class WindowOperatorMigrationTest implements MigrationTest {
new KeyedOneInputStreamOperatorTestHarness<>(
operator,
new TupleKeySelector<>(),
- TypeInformation.of(NonPojoType.class));
+ TypeInformationUtils.of(NonPojoType.class));
testHarness.setup();
diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperatorTest.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperatorTest.java
index 6380c4a6bf2..4958e70f7de 100644
--- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperatorTest.java
+++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperatorTest.java
@@ -25,6 +25,7 @@ import org.apache.flink.api.common.state.ReducingStateDescriptor;
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
import org.apache.flink.api.common.typeinfo.TypeHint;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.java.functions.KeySelector;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.api.java.tuple.Tuple3;
@@ -96,7 +97,7 @@ import static org.mockito.Mockito.when;
public class WindowOperatorTest extends TestLogger {
private static final TypeInformation<Tuple2<String, Integer>> STRING_INT_TUPLE =
- TypeInformation.of(new TypeHint<Tuple2<String, Integer>>() {});
+ TypeInformationUtils.of(new TypeHint<Tuple2<String, Integer>>() {});
// For counting if close() is called the correct number of times on the SumReducer
private static AtomicInteger closeCalled = new AtomicInteger(0);
diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/tasks/CoordinatorEventsToStreamOperatorRecipientExactlyOnceITCase.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/tasks/CoordinatorEventsToStreamOperatorRecipientExactlyOnceITCase.java
index b9d44b30d11..78a271471a2 100644
--- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/tasks/CoordinatorEventsToStreamOperatorRecipientExactlyOnceITCase.java
+++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/tasks/CoordinatorEventsToStreamOperatorRecipientExactlyOnceITCase.java
@@ -23,7 +23,7 @@ import org.apache.flink.api.common.accumulators.ListAccumulator;
import org.apache.flink.api.common.state.ListState;
import org.apache.flink.api.common.state.ListStateDescriptor;
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.runtime.jobgraph.OperatorID;
import org.apache.flink.runtime.jobgraph.tasks.AbstractInvokable;
import org.apache.flink.runtime.operators.coordination.CoordinatorEventsExactlyOnceITCase;
@@ -163,9 +163,9 @@ public class CoordinatorEventsToStreamOperatorRecipientExactlyOnceITCase
// The event receiving operator is not chained together with the source operator, so that
// when checkpoint barriers are injected into sources, the event receiving operator has not
// started checkpoint yet.
- env.addSource(new ManuallyClosedSourceFunction<>(), TypeInformation.of(Long.class))
+ env.addSource(new ManuallyClosedSourceFunction<>(), TypeInformationUtils.of(Long.class))
.disableChaining()
- .transform(factory.name, TypeInformation.of(Long.class), factory)
+ .transform(factory.name, TypeInformationUtils.of(Long.class), factory)
.addSink(new DiscardingSink<>());
JobExecutionResult executionResult =
diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/util/ProcessFunctionTestHarnessesTest.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/util/ProcessFunctionTestHarnessesTest.java
index 40ad6eddec4..149b4f5e83e 100644
--- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/util/ProcessFunctionTestHarnessesTest.java
+++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/util/ProcessFunctionTestHarnessesTest.java
@@ -20,7 +20,7 @@ package org.apache.flink.streaming.util;
import org.apache.flink.api.common.state.MapStateDescriptor;
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.streaming.api.functions.KeyedProcessFunction;
import org.apache.flink.streaming.api.functions.ProcessFunction;
import org.apache.flink.streaming.api.functions.co.BroadcastProcessFunction;
@@ -124,7 +124,7 @@ public class ProcessFunctionTestHarnessesTest extends TestLogger {
KeyedTwoInputStreamOperatorTestHarness<Integer, Integer, Integer, Integer> harness =
ProcessFunctionTestHarnesses.forKeyedCoProcessFunction(
- function, x -> x, x -> x, TypeInformation.of(Integer.class));
+ function, x -> x, x -> x, TypeInformationUtils.of(Integer.class));
harness.processElement1(0, 1);
harness.processElement2(1, 10);
@@ -184,7 +184,7 @@ public class ProcessFunctionTestHarnessesTest extends TestLogger {
KeyedBroadcastOperatorTestHarness<Integer, Integer, String, Integer> harness =
ProcessFunctionTestHarnesses.forKeyedBroadcastProcessFunction(
- function, x -> x, TypeInformation.of(Integer.class), stateDescriptor);
+ function, x -> x, TypeInformationUtils.of(Integer.class), stateDescriptor);
harness.processBroadcastElement("0", 1);
harness.processElement(1, 10);
diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/util/typeutils/FieldAccessorTest.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/util/typeutils/FieldAccessorTest.java
index af1e04e8ec6..6b07b660baa 100644
--- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/util/typeutils/FieldAccessorTest.java
+++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/util/typeutils/FieldAccessorTest.java
@@ -22,6 +22,7 @@ import org.apache.flink.api.common.typeinfo.BasicArrayTypeInfo;
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
import org.apache.flink.api.common.typeinfo.PrimitiveArrayTypeInfo;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeutils.CompositeType;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.api.java.tuple.Tuple3;
@@ -274,7 +275,7 @@ public class FieldAccessorTest {
@Test
public void testPojoInPojo() {
Outer o = new Outer(10, new Inner(4L), (short) 12);
- PojoTypeInfo<Outer> tpeInfo = (PojoTypeInfo<Outer>) TypeInformation.of(Outer.class);
+ PojoTypeInfo<Outer> tpeInfo = (PojoTypeInfo<Outer>) TypeInformationUtils.of(Outer.class);
FieldAccessor<Outer, Long> fix = FieldAccessorFactory.getAccessor(tpeInfo, "i.x", null);
assertEquals(Long.class, fix.getFieldType().getTypeClass());
@@ -346,7 +347,7 @@ public class FieldAccessorTest {
public void testArrayInPojo() {
ArrayInPojo o = new ArrayInPojo(10L, new int[] {3, 4, 5}, 12);
PojoTypeInfo<ArrayInPojo> tpeInfo =
- (PojoTypeInfo<ArrayInPojo>) TypeInformation.of(ArrayInPojo.class);
+ (PojoTypeInfo<ArrayInPojo>) TypeInformationUtils.of(ArrayInPojo.class);
FieldAccessor<ArrayInPojo, Integer> fix =
FieldAccessorFactory.getAccessor(tpeInfo, "arr.1", null);
diff --git a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/dataview/ListViewTypeInfo.java b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/dataview/ListViewTypeInfo.java
index cc7997aa82f..f1c67166439 100644
--- a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/dataview/ListViewTypeInfo.java
+++ b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/dataview/ListViewTypeInfo.java
@@ -19,7 +19,7 @@
package org.apache.flink.table.dataview;
import org.apache.flink.annotation.Internal;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.common.typeutils.base.ListSerializer;
@@ -93,11 +93,11 @@ public class ListViewTypeInfo<T> extends TypeInformation<ListView<T>> {
@SuppressWarnings("unchecked")
@Override
- public TypeSerializer<ListView<T>> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<ListView<T>> createSerializer(SerializerContext serializerContext) {
if (nullSerializer) {
return (TypeSerializer<ListView<T>>) (TypeSerializer<?>) NullSerializer.INSTANCE;
} else {
- TypeSerializer<T> elementSerializer = elementType.createSerializer(config);
+ TypeSerializer<T> elementSerializer = elementType.createSerializer(serializerContext);
return new ListViewSerializer<>(new ListSerializer<>(elementSerializer));
}
}
diff --git a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/dataview/MapViewTypeInfo.java b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/dataview/MapViewTypeInfo.java
index 39c5637a69a..3cb5e8b49c1 100644
--- a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/dataview/MapViewTypeInfo.java
+++ b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/dataview/MapViewTypeInfo.java
@@ -19,7 +19,7 @@
package org.apache.flink.table.dataview;
import org.apache.flink.annotation.Internal;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.common.typeutils.base.MapSerializer;
@@ -113,12 +113,12 @@ public class MapViewTypeInfo<K, V> extends TypeInformation<MapView<K, V>> {
@SuppressWarnings("unchecked")
@Override
- public TypeSerializer<MapView<K, V>> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<MapView<K, V>> createSerializer(SerializerContext serializerContext) {
if (nullSerializer) {
return (TypeSerializer<MapView<K, V>>) (TypeSerializer<?>) NullSerializer.INSTANCE;
} else {
- TypeSerializer<K> keySer = keyType.createSerializer(config);
- TypeSerializer<V> valueSer = valueType.createSerializer(config);
+ TypeSerializer<K> keySer = keyType.createSerializer(serializerContext);
+ TypeSerializer<V> valueSer = valueType.createSerializer(serializerContext);
if (nullAware) {
return new MapViewSerializer<>(new NullAwareMapSerializer<>(keySer, valueSer));
} else {
diff --git a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/RawType.java b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/RawType.java
index 16c603a76f1..86167114622 100644
--- a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/RawType.java
+++ b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/RawType.java
@@ -21,6 +21,7 @@ package org.apache.flink.table.types.logical;
import org.apache.flink.annotation.PublicEvolving;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.common.typeutils.TypeSerializerSnapshot;
+import org.apache.flink.api.common.typeutils.TypeSerializerSnapshotUtils;
import org.apache.flink.core.memory.DataInputDeserializer;
import org.apache.flink.core.memory.DataOutputSerializer;
import org.apache.flink.table.api.TableException;
@@ -150,7 +151,8 @@ public final class RawType<T> extends LogicalType {
final byte[] bytes = EncodingUtils.decodeBase64ToBytes(serializerString);
final DataInputDeserializer inputDeserializer = new DataInputDeserializer(bytes);
final TypeSerializerSnapshot<?> snapshot =
- TypeSerializerSnapshot.readVersionedSnapshot(inputDeserializer, classLoader);
+ TypeSerializerSnapshotUtils.readVersionedSnapshot(
+ inputDeserializer, classLoader);
return (RawType<?>) new RawType(clazz, snapshot.restoreSerializer());
} catch (Throwable t) {
throw new ValidationException(
@@ -168,7 +170,7 @@ public final class RawType<T> extends LogicalType {
if (serializerString == null) {
final DataOutputSerializer outputSerializer = new DataOutputSerializer(128);
try {
- TypeSerializerSnapshot.writeVersionedSnapshot(
+ TypeSerializerSnapshotUtils.writeVersionedSnapshot(
outputSerializer, serializer.snapshotConfiguration());
serializerString =
EncodingUtils.encodeBytesToBase64(outputSerializer.getCopyOfBuffer());
diff --git a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/typeutils/TimeIndicatorTypeInfo.java b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/typeutils/TimeIndicatorTypeInfo.java
index 8020f0fcfb7..92d83c3172d 100644
--- a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/typeutils/TimeIndicatorTypeInfo.java
+++ b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/typeutils/TimeIndicatorTypeInfo.java
@@ -19,7 +19,7 @@
package org.apache.flink.table.typeutils;
import org.apache.flink.annotation.Internal;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.SqlTimeTypeInfo;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.common.typeutils.base.LongSerializer;
@@ -67,7 +67,7 @@ public class TimeIndicatorTypeInfo extends SqlTimeTypeInfo<Timestamp> {
// be compatible with the corresponding SqlTimestampTypeInfo
@Override
@SuppressWarnings("unchecked")
- public TypeSerializer<Timestamp> createSerializer(ExecutionConfig executionConfig) {
+ public TypeSerializer<Timestamp> createSerializer(SerializerContext executionConfig) {
return (TypeSerializer) LongSerializer.INSTANCE;
}
diff --git a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/typeutils/TimeIntervalTypeInfo.java b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/typeutils/TimeIntervalTypeInfo.java
index 2595e1846f2..b07f83966eb 100644
--- a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/typeutils/TimeIntervalTypeInfo.java
+++ b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/typeutils/TimeIntervalTypeInfo.java
@@ -20,6 +20,7 @@ package org.apache.flink.table.typeutils;
import org.apache.flink.annotation.Internal;
import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.AtomicType;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.TypeComparator;
@@ -112,7 +113,7 @@ public final class TimeIntervalTypeInfo<T> extends TypeInformation<T>
}
@Override
- public TypeSerializer<T> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<T> createSerializer(SerializerContext serializerContext) {
return serializer;
}
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/TypeInfoDataTypeConverterTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/TypeInfoDataTypeConverterTest.java
index 75624d4dcf2..aeae01bc93e 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/TypeInfoDataTypeConverterTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/TypeInfoDataTypeConverterTest.java
@@ -18,7 +18,7 @@
package org.apache.flink.table.types;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeinfo.Types;
import org.apache.flink.api.common.typeutils.TypeSerializer;
@@ -28,6 +28,7 @@ import org.apache.flink.table.api.DataTypes;
import org.apache.flink.table.types.utils.DataTypeFactoryMock;
import org.apache.flink.table.types.utils.TypeInfoDataTypeConverter;
+import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
@@ -119,6 +120,11 @@ class TypeInfoDataTypeConverterTest {
.isEqualTo(testSpec.expectedDataType);
}
+ @Test
+ void test1(){
+ Types.POJO(PojoWithFieldOrder.class);
+ }
+
// --------------------------------------------------------------------------------------------
// Test utilities
// --------------------------------------------------------------------------------------------
@@ -231,7 +237,7 @@ class TypeInfoDataTypeConverterTest {
}
@Override
- public TypeSerializer<Object> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<Object> createSerializer(SerializerContext serializerContext) {
return null;
}
diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/runtime/stream/sql/DataStreamJavaITCase.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/runtime/stream/sql/DataStreamJavaITCase.java
index a81b171895d..55e9d27c3ec 100644
--- a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/runtime/stream/sql/DataStreamJavaITCase.java
+++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/runtime/stream/sql/DataStreamJavaITCase.java
@@ -24,6 +24,7 @@ import org.apache.flink.api.common.state.ValueState;
import org.apache.flink.api.common.state.ValueStateDescriptor;
import org.apache.flink.api.common.typeinfo.TypeHint;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeinfo.Types;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.api.java.tuple.Tuple3;
@@ -664,9 +665,10 @@ public class DataStreamJavaITCase extends AbstractTestBase {
tableEnvironment
.toDataStream(resultTable)
.map(row -> (String) row.getField("word"))
- .returns(TypeInformation.of(String.class))
+ .returns(TypeInformationUtils.of(String.class))
.map(s -> new Tuple2<>(s, 1))
- .returns(TypeInformation.of(new TypeHint<Tuple2<String, Integer>>() {}))
+ .returns(
+ TypeInformationUtils.of(new TypeHint<Tuple2<String, Integer>>() {}))
.keyBy(tuple -> tuple.f0)
.sum(1);
diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/runtime/stream/sql/join/JoinReorderITCase.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/runtime/stream/sql/join/JoinReorderITCase.java
index 9e260a6e8cf..e35b1b6813a 100644
--- a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/runtime/stream/sql/join/JoinReorderITCase.java
+++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/runtime/stream/sql/join/JoinReorderITCase.java
@@ -18,7 +18,7 @@
package org.apache.flink.table.planner.runtime.stream.sql.join;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.functions.sink.SinkFunction;
import org.apache.flink.table.api.EnvironmentSettings;
@@ -65,7 +65,7 @@ public class JoinReorderITCase extends JoinReorderITCaseBase {
TestingRetractSink sink = new TestingRetractSink();
streamTableEnvironment
.toRetractStream(table, Row.class)
- .map(JavaScalaConversionUtil::toScala, TypeInformation.of(Tuple2.class))
+ .map(JavaScalaConversionUtil::toScala, TypeInformationUtils.of(Tuple2.class))
.addSink((SinkFunction) sink);
try {
env.execute();
diff --git a/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/AbstractMapTypeInfo.java b/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/AbstractMapTypeInfo.java
index c6ceaea7ada..dc2fc3b779e 100644
--- a/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/AbstractMapTypeInfo.java
+++ b/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/AbstractMapTypeInfo.java
@@ -19,6 +19,7 @@
package org.apache.flink.table.runtime.typeutils;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.util.Preconditions;
import java.util.Map;
@@ -64,8 +65,8 @@ abstract class AbstractMapTypeInfo<K, V, M extends Map<K, V>> extends TypeInform
Preconditions.checkNotNull(keyClass, "The key class cannot be null.");
Preconditions.checkNotNull(valueClass, "The value class cannot be null.");
- this.keyTypeInfo = TypeInformation.of(keyClass);
- this.valueTypeInfo = TypeInformation.of(valueClass);
+ this.keyTypeInfo = TypeInformationUtils.of(keyClass);
+ this.valueTypeInfo = TypeInformationUtils.of(valueClass);
}
// ------------------------------------------------------------------------
diff --git a/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/DecimalDataTypeInfo.java b/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/DecimalDataTypeInfo.java
index e09eb759dc6..e84fcc11a12 100644
--- a/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/DecimalDataTypeInfo.java
+++ b/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/DecimalDataTypeInfo.java
@@ -19,7 +19,7 @@
package org.apache.flink.table.runtime.typeutils;
import org.apache.flink.annotation.Internal;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.table.api.DataTypes;
@@ -84,7 +84,7 @@ public class DecimalDataTypeInfo extends TypeInformation<DecimalData> implements
}
@Override
- public TypeSerializer<DecimalData> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<DecimalData> createSerializer(SerializerContext serializerContext) {
return new DecimalDataSerializer(precision, scale);
}
diff --git a/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/ExternalTypeInfo.java b/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/ExternalTypeInfo.java
index afe48d05801..5075b7ae6fd 100644
--- a/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/ExternalTypeInfo.java
+++ b/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/ExternalTypeInfo.java
@@ -19,7 +19,7 @@
package org.apache.flink.table.runtime.typeutils;
import org.apache.flink.annotation.Internal;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.table.types.DataType;
@@ -138,7 +138,7 @@ public final class ExternalTypeInfo<T> extends TypeInformation<T> implements Dat
}
@Override
- public TypeSerializer<T> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<T> createSerializer(SerializerContext serializerContext) {
return typeSerializer;
}
diff --git a/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/InternalTypeInfo.java b/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/InternalTypeInfo.java
index fa38d290b34..b768fb501fa 100644
--- a/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/InternalTypeInfo.java
+++ b/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/InternalTypeInfo.java
@@ -19,7 +19,7 @@
package org.apache.flink.table.runtime.typeutils;
import org.apache.flink.annotation.Internal;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.table.data.RowData;
@@ -194,7 +194,7 @@ public final class InternalTypeInfo<T> extends TypeInformation<T> implements Dat
}
@Override
- public TypeSerializer<T> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<T> createSerializer(SerializerContext serializerContext) {
return typeSerializer;
}
diff --git a/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/SortedMapTypeInfo.java b/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/SortedMapTypeInfo.java
index 384ce28aa62..4202dfb88de 100644
--- a/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/SortedMapTypeInfo.java
+++ b/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/SortedMapTypeInfo.java
@@ -19,7 +19,7 @@
package org.apache.flink.table.runtime.typeutils;
import org.apache.flink.annotation.PublicEvolving;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.util.Preconditions;
@@ -77,9 +77,9 @@ public class SortedMapTypeInfo<K, V> extends AbstractMapTypeInfo<K, V, SortedMap
}
@Override
- public TypeSerializer<SortedMap<K, V>> createSerializer(ExecutionConfig config) {
- TypeSerializer<K> keyTypeSerializer = keyTypeInfo.createSerializer(config);
- TypeSerializer<V> valueTypeSerializer = valueTypeInfo.createSerializer(config);
+ public TypeSerializer<SortedMap<K, V>> createSerializer(SerializerContext serializerContext) {
+ TypeSerializer<K> keyTypeSerializer = keyTypeInfo.createSerializer(serializerContext);
+ TypeSerializer<V> valueTypeSerializer = valueTypeInfo.createSerializer(serializerContext);
return new SortedMapSerializer<>(comparator, keyTypeSerializer, valueTypeSerializer);
}
diff --git a/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/StringDataTypeInfo.java b/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/StringDataTypeInfo.java
index 54c9824a525..d6cecbc2ea8 100644
--- a/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/StringDataTypeInfo.java
+++ b/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/StringDataTypeInfo.java
@@ -19,7 +19,7 @@
package org.apache.flink.table.runtime.typeutils;
import org.apache.flink.annotation.Internal;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.table.data.StringData;
@@ -64,7 +64,7 @@ public class StringDataTypeInfo extends TypeInformation<StringData> {
}
@Override
- public TypeSerializer<StringData> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<StringData> createSerializer(SerializerContext serializerContext) {
return StringDataSerializer.INSTANCE;
}
diff --git a/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/TimestampDataTypeInfo.java b/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/TimestampDataTypeInfo.java
index 99951663c4e..4d69d409c1e 100644
--- a/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/TimestampDataTypeInfo.java
+++ b/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/typeutils/TimestampDataTypeInfo.java
@@ -19,7 +19,7 @@
package org.apache.flink.table.runtime.typeutils;
import org.apache.flink.annotation.Internal;
-import org.apache.flink.api.common.ExecutionConfig;
+import org.apache.flink.api.common.SerializerContext;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.table.data.TimestampData;
@@ -69,7 +69,7 @@ public class TimestampDataTypeInfo extends TypeInformation<TimestampData> {
}
@Override
- public TypeSerializer<TimestampData> createSerializer(ExecutionConfig config) {
+ public TypeSerializer<TimestampData> createSerializer(SerializerContext serializerContext) {
return new TimestampDataSerializer(precision);
}
diff --git a/flink-table/flink-table-runtime/src/test/java/org/apache/flink/table/formats/raw/RawFormatSerDeSchemaTest.java b/flink-table/flink-table-runtime/src/test/java/org/apache/flink/table/formats/raw/RawFormatSerDeSchemaTest.java
index 10c97497cd3..84d5316073f 100644
--- a/flink-table/flink-table-runtime/src/test/java/org/apache/flink/table/formats/raw/RawFormatSerDeSchemaTest.java
+++ b/flink-table/flink-table-runtime/src/test/java/org/apache/flink/table/formats/raw/RawFormatSerDeSchemaTest.java
@@ -20,7 +20,7 @@ package org.apache.flink.table.formats.raw;
import org.apache.flink.api.common.serialization.DeserializationSchema;
import org.apache.flink.api.common.serialization.SerializationSchema;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeutils.base.LocalDateTimeSerializer;
import org.apache.flink.core.memory.DataOutputSerializer;
import org.apache.flink.formats.raw.RawFormatDeserializationSchema;
@@ -146,7 +146,7 @@ public class RawFormatSerDeSchemaTest {
RawFormatDeserializationSchema deserializationSchema =
new RawFormatDeserializationSchema(
testSpec.type.getLogicalType(),
- TypeInformation.of(RowData.class),
+ TypeInformationUtils.of(RowData.class),
testSpec.charsetName,
testSpec.isBigEndian);
RawFormatSerializationSchema serializationSchema =
diff --git a/flink-test-utils-parent/flink-test-utils/src/main/java/org/apache/flink/types/PojoTestUtils.java b/flink-test-utils-parent/flink-test-utils/src/main/java/org/apache/flink/types/PojoTestUtils.java
index 2cb0830311f..59304e34e40 100644
--- a/flink-test-utils-parent/flink-test-utils/src/main/java/org/apache/flink/types/PojoTestUtils.java
+++ b/flink-test-utils-parent/flink-test-utils/src/main/java/org/apache/flink/types/PojoTestUtils.java
@@ -20,6 +20,7 @@ package org.apache.flink.types;
import org.apache.flink.annotation.PublicEvolving;
import org.apache.flink.api.common.ExecutionConfig;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.api.java.typeutils.TypeExtractor;
import org.apache.flink.api.java.typeutils.runtime.PojoSerializer;
@@ -42,7 +43,7 @@ public class PojoTestUtils {
* @throws AssertionError if instances of the class cannot be serialized as a POJO
*/
public static <T> void assertSerializedAsPojo(Class<T> clazz) throws AssertionError {
- final TypeInformation<T> typeInformation = TypeInformation.of(clazz);
+ final TypeInformation<T> typeInformation = TypeInformationUtils.of(clazz);
final TypeSerializer<T> actualSerializer =
typeInformation.createSerializer(new ExecutionConfig());
@@ -71,7 +72,7 @@ public class PojoTestUtils {
final ExecutionConfig executionConfig = new ExecutionConfig();
executionConfig.disableGenericTypes();
- final TypeInformation<T> typeInformation = TypeInformation.of(clazz);
+ final TypeInformation<T> typeInformation = TypeInformationUtils.of(clazz);
final TypeSerializer<T> actualSerializer;
try {
actualSerializer = typeInformation.createSerializer(executionConfig);
diff --git a/flink-tests/src/test/java/org/apache/flink/runtime/operators/lifecycle/graph/TestJobBuilders.java b/flink-tests/src/test/java/org/apache/flink/runtime/operators/lifecycle/graph/TestJobBuilders.java
index 9ea3963ee28..137add5ca6c 100644
--- a/flink-tests/src/test/java/org/apache/flink/runtime/operators/lifecycle/graph/TestJobBuilders.java
+++ b/flink-tests/src/test/java/org/apache/flink/runtime/operators/lifecycle/graph/TestJobBuilders.java
@@ -22,7 +22,7 @@ import org.apache.flink.api.common.eventtime.Watermark;
import org.apache.flink.api.common.eventtime.WatermarkGenerator;
import org.apache.flink.api.common.eventtime.WatermarkOutput;
import org.apache.flink.api.common.eventtime.WatermarkStrategy;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.runtime.operators.lifecycle.TestJobWithDescription;
import org.apache.flink.runtime.operators.lifecycle.command.TestCommandDispatcher;
@@ -90,7 +90,7 @@ public class TestJobBuilders {
SingleOutputStreamOperator<TestDataElement> forwardTransform =
src.transform(
"transform-1-forward",
- TypeInformation.of(TestDataElement.class),
+ TypeInformationUtils.of(TestDataElement.class),
new OneInputTestStreamOperatorFactory(
mapForward, eventQueue, commandQueue))
.setUidHash(mapForward);
@@ -170,7 +170,7 @@ public class TestJobBuilders {
"MultipleInputOperator",
new MultiInputTestOperatorFactory(
inputs.length, eventQueue, multipleInput),
- TypeInformation.of(TestDataElement.class),
+ TypeInformationUtils.of(TestDataElement.class),
env.getParallelism());
for (DataStream<?> input : inputs) {
multipleInputsTransform.addInput(input.getTransformation());
@@ -188,7 +188,7 @@ public class TestJobBuilders {
.startNewChain()
.transform(
"transform-1-forward",
- TypeInformation.of(TestDataElement.class),
+ TypeInformationUtils.of(TestDataElement.class),
new OneInputTestStreamOperatorFactory(
mapForward, eventQueue, commandQueue))
.setUidHash(mapForward);
@@ -201,7 +201,7 @@ public class TestJobBuilders {
.keyBy(e -> e.seq % 1000)
.transform(
"transform-2-keyed",
- TypeInformation.of(TestDataElement.class),
+ TypeInformationUtils.of(TestDataElement.class),
new OneInputTestStreamOperatorFactory(
mapKeyed, eventQueue, commandQueue))
.setUidHash(mapKeyed);
@@ -218,7 +218,7 @@ public class TestJobBuilders {
.setUidHash(connectedSource))
.transform(
"transform-3-two-input",
- TypeInformation.of(TestDataElement.class),
+ TypeInformationUtils.of(TestDataElement.class),
new TwoInputTestStreamOperator(mapTwoInput, eventQueue))
.setUidHash(mapTwoInput);
diff --git a/flink-tests/src/test/java/org/apache/flink/test/checkpointing/IncrementalStateReuseAfterFailureITCase.java b/flink-tests/src/test/java/org/apache/flink/test/checkpointing/IncrementalStateReuseAfterFailureITCase.java
index 6af9fbae9a7..1dab4c43f58 100644
--- a/flink-tests/src/test/java/org/apache/flink/test/checkpointing/IncrementalStateReuseAfterFailureITCase.java
+++ b/flink-tests/src/test/java/org/apache/flink/test/checkpointing/IncrementalStateReuseAfterFailureITCase.java
@@ -18,7 +18,7 @@
package org.apache.flink.test.checkpointing;
import org.apache.flink.api.common.restartstrategy.RestartStrategies;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.changelog.fs.FsStateChangelogStorageFactory;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.runtime.operators.lifecycle.TestJobExecutor;
@@ -115,7 +115,7 @@ public class IncrementalStateReuseAfterFailureITCase {
src.keyBy(x -> x)
.transform(
"transform-1",
- TypeInformation.of(TestDataElement.class),
+ TypeInformationUtils.of(TestDataElement.class),
new OneInputTestStreamOperatorFactory(UID_OP1, evQueue, cmdQueue))
.setUidHash(UID_OP1);
@@ -124,7 +124,7 @@ public class IncrementalStateReuseAfterFailureITCase {
DataStreamUtils.reinterpretAsKeyedStream(transform1, x -> x)
.transform(
"transform-2",
- TypeInformation.of(TestDataElement.class),
+ TypeInformationUtils.of(TestDataElement.class),
new OneInputTestStreamOperatorFactory(UID_OP2, evQueue, cmdQueue))
.setUidHash(UID_OP2);
diff --git a/flink-tests/src/test/java/org/apache/flink/test/checkpointing/NotifyCheckpointAbortedITCase.java b/flink-tests/src/test/java/org/apache/flink/test/checkpointing/NotifyCheckpointAbortedITCase.java
index 920ec342229..149a3fcfb35 100644
--- a/flink-tests/src/test/java/org/apache/flink/test/checkpointing/NotifyCheckpointAbortedITCase.java
+++ b/flink-tests/src/test/java/org/apache/flink/test/checkpointing/NotifyCheckpointAbortedITCase.java
@@ -23,7 +23,7 @@ import org.apache.flink.api.common.JobID;
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.api.common.state.ValueState;
import org.apache.flink.api.common.state.ValueStateDescriptor;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.java.functions.KeySelector;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.client.program.ClusterClient;
@@ -165,8 +165,11 @@ public class NotifyCheckpointAbortedITCase extends TestLogger {
env.addSource(new NormalSource())
.name("NormalSource")
.keyBy((KeySelector<Tuple2<Integer, Integer>, Integer>) value -> value.f0)
- .transform("NormalMap", TypeInformation.of(Integer.class), new NormalMap())
- .transform(DECLINE_SINK_NAME, TypeInformation.of(Object.class), new DeclineSink());
+ .transform("NormalMap", TypeInformationUtils.of(Integer.class), new NormalMap())
+ .transform(
+ DECLINE_SINK_NAME,
+ TypeInformationUtils.of(Object.class),
+ new DeclineSink());
final ClusterClient<?> clusterClient = cluster.getClusterClient();
JobGraph jobGraph = env.getStreamGraph().getJobGraph();
diff --git a/flink-tests/src/test/java/org/apache/flink/test/checkpointing/RegionFailoverITCase.java b/flink-tests/src/test/java/org/apache/flink/test/checkpointing/RegionFailoverITCase.java
index 0bf295ba324..33746b95d43 100644
--- a/flink-tests/src/test/java/org/apache/flink/test/checkpointing/RegionFailoverITCase.java
+++ b/flink-tests/src/test/java/org/apache/flink/test/checkpointing/RegionFailoverITCase.java
@@ -24,7 +24,7 @@ import org.apache.flink.api.common.state.ListState;
import org.apache.flink.api.common.state.ListStateDescriptor;
import org.apache.flink.api.common.state.ValueState;
import org.apache.flink.api.common.state.ValueStateDescriptor;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.java.functions.KeySelector;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.client.program.ClusterClient;
@@ -186,7 +186,7 @@ public class RegionFailoverITCase extends TestLogger {
.name(MULTI_REGION_SOURCE_NAME)
.setParallelism(NUM_OF_REGIONS),
(KeySelector<Tuple2<Integer, Integer>, Integer>) value -> value.f0,
- TypeInformation.of(Integer.class))
+ TypeInformationUtils.of(Integer.class))
.map(new FailingMapperFunction(NUM_OF_RESTARTS))
.setParallelism(NUM_OF_REGIONS)
.addSink(new ValidatingSink())
diff --git a/flink-tests/src/test/java/org/apache/flink/test/checkpointing/UnalignedCheckpointITCase.java b/flink-tests/src/test/java/org/apache/flink/test/checkpointing/UnalignedCheckpointITCase.java
index dc1b21f07b4..dd47d6b5ede 100644
--- a/flink-tests/src/test/java/org/apache/flink/test/checkpointing/UnalignedCheckpointITCase.java
+++ b/flink-tests/src/test/java/org/apache/flink/test/checkpointing/UnalignedCheckpointITCase.java
@@ -27,7 +27,7 @@ import org.apache.flink.api.common.state.ValueState;
import org.apache.flink.api.common.state.ValueStateDescriptor;
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
import org.apache.flink.api.common.typeinfo.TypeHint;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.runtime.state.FunctionInitializationContext;
@@ -206,7 +206,7 @@ public class UnalignedCheckpointITCase extends UnalignedCheckpointTestBase {
slotSharing ? "default" : ("source" + inputIndex))
.map(i -> new Tuple2<>(finalInputIndex, checkHeader(i)))
.returns(
- TypeInformation.of(
+ TypeInformationUtils.of(
new TypeHint<Tuple2<Integer, Long>>() {}))
.slotSharingGroup(
slotSharing ? "default" : ("source" + inputIndex))
diff --git a/flink-tests/src/test/java/org/apache/flink/test/scheduling/SpeculativeSchedulerITCase.java b/flink-tests/src/test/java/org/apache/flink/test/scheduling/SpeculativeSchedulerITCase.java
index fd493575bfc..fd10ae41940 100644
--- a/flink-tests/src/test/java/org/apache/flink/test/scheduling/SpeculativeSchedulerITCase.java
+++ b/flink-tests/src/test/java/org/apache/flink/test/scheduling/SpeculativeSchedulerITCase.java
@@ -26,7 +26,7 @@ import org.apache.flink.api.common.io.FinalizeOnMaster;
import org.apache.flink.api.common.io.GenericInputFormat;
import org.apache.flink.api.common.io.OutputFormat;
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.connector.sink2.Committer;
import org.apache.flink.api.connector.sink2.TwoPhaseCommittingSink;
import org.apache.flink.api.connector.sink2.TwoPhaseCommittingSink.PrecommittingSinkWriter;
@@ -323,7 +323,7 @@ class SpeculativeSchedulerITCase {
new StreamSource<>(
new InputFormatSourceFunction<>(
new TestingInputFormat(),
- TypeInformation.of(Long.class))),
+ TypeInformationUtils.of(Long.class))),
true,
"source",
Boundedness.BOUNDED)
diff --git a/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/StreamOperatorSnapshotRestoreTest.java b/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/StreamOperatorSnapshotRestoreTest.java
index 69b8ce40260..4df1f7114c9 100644
--- a/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/StreamOperatorSnapshotRestoreTest.java
+++ b/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/StreamOperatorSnapshotRestoreTest.java
@@ -23,7 +23,7 @@ import org.apache.flink.api.common.state.ListState;
import org.apache.flink.api.common.state.ListStateDescriptor;
import org.apache.flink.api.common.state.ValueState;
import org.apache.flink.api.common.state.ValueStateDescriptor;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.common.typeutils.base.IntSerializer;
import org.apache.flink.api.java.functions.KeySelector;
import org.apache.flink.contrib.streaming.state.RocksDBStateBackend;
@@ -203,7 +203,7 @@ public class StreamOperatorSnapshotRestoreTest extends TestLogger {
new KeyedOneInputStreamOperatorTestHarness<>(
op,
(KeySelector<Integer, Integer>) value -> value,
- TypeInformation.of(Integer.class),
+ TypeInformationUtils.of(Integer.class),
mockEnvironment);
testHarness.setStateBackend(stateBackend);
@@ -225,7 +225,7 @@ public class StreamOperatorSnapshotRestoreTest extends TestLogger {
new KeyedOneInputStreamOperatorTestHarness<>(
op,
(KeySelector<Integer, Integer>) value -> value,
- TypeInformation.of(Integer.class),
+ TypeInformationUtils.of(Integer.class),
MAX_PARALLELISM,
1 /* num subtasks */,
0 /* subtask index */);
diff --git a/flink-tests/src/test/java/org/apache/flink/test/streaming/api/datastream/ReinterpretDataStreamAsKeyedStreamITCase.java b/flink-tests/src/test/java/org/apache/flink/test/streaming/api/datastream/ReinterpretDataStreamAsKeyedStreamITCase.java
index c162d2889f6..889671e9883 100644
--- a/flink-tests/src/test/java/org/apache/flink/test/streaming/api/datastream/ReinterpretDataStreamAsKeyedStreamITCase.java
+++ b/flink-tests/src/test/java/org/apache/flink/test/streaming/api/datastream/ReinterpretDataStreamAsKeyedStreamITCase.java
@@ -29,6 +29,7 @@ import org.apache.flink.api.common.state.CheckpointListener;
import org.apache.flink.api.common.state.ListState;
import org.apache.flink.api.common.state.ListStateDescriptor;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.java.functions.KeySelector;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.configuration.Configuration;
@@ -110,7 +111,7 @@ public class ReinterpretDataStreamAsKeyedStreamITCase {
DataStreamUtils.reinterpretAsKeyedStream(
source,
(KeySelector<Tuple2<Integer, Integer>, Integer>) value -> value.f0,
- TypeInformation.of(Integer.class))
+ TypeInformationUtils.of(Integer.class))
.window(
TumblingEventTimeWindows.of(
Time.seconds(
diff --git a/flink-tests/src/test/java/org/apache/flink/test/streaming/runtime/LatencyMarkerITCase.java b/flink-tests/src/test/java/org/apache/flink/test/streaming/runtime/LatencyMarkerITCase.java
index 1340377a519..61a1407346b 100644
--- a/flink-tests/src/test/java/org/apache/flink/test/streaming/runtime/LatencyMarkerITCase.java
+++ b/flink-tests/src/test/java/org/apache/flink/test/streaming/runtime/LatencyMarkerITCase.java
@@ -21,7 +21,7 @@ import org.apache.flink.api.common.JobExecutionResult;
import org.apache.flink.api.common.restartstrategy.RestartStrategies;
import org.apache.flink.api.common.state.MapStateDescriptor;
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
@@ -61,7 +61,7 @@ public class LatencyMarkerITCase {
// broadcast the configurations and create the broadcast state
DataStream<String> streamWithoutData =
- env.fromCollection(Collections.emptyList(), TypeInformation.of(String.class));
+ env.fromCollection(Collections.emptyList(), TypeInformationUtils.of(String.class));
MapStateDescriptor<String, Integer> stateDescriptor =
new MapStateDescriptor<>(
diff --git a/flink-yarn-tests/src/test/java/org/apache/flink/yarn/testjob/YarnTestArchiveJob.java b/flink-yarn-tests/src/test/java/org/apache/flink/yarn/testjob/YarnTestArchiveJob.java
index 0528463326b..b1f31341cc6 100644
--- a/flink-yarn-tests/src/test/java/org/apache/flink/yarn/testjob/YarnTestArchiveJob.java
+++ b/flink-yarn-tests/src/test/java/org/apache/flink/yarn/testjob/YarnTestArchiveJob.java
@@ -19,6 +19,7 @@
package org.apache.flink.yarn.testjob;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.java.typeutils.ResultTypeQueryable;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.runtime.jobgraph.JobGraph;
@@ -109,7 +110,7 @@ public class YarnTestArchiveJob {
env.addSource(
new SourceFunctionWithArchive<>(
- LIST, localizedPath, TypeInformation.of(String.class)))
+ LIST, localizedPath, TypeInformationUtils.of(String.class)))
.addSink(new DiscardingSink<>());
return env.getStreamGraph().getJobGraph();
diff --git a/flink-yarn-tests/src/test/java/org/apache/flink/yarn/testjob/YarnTestCacheJob.java b/flink-yarn-tests/src/test/java/org/apache/flink/yarn/testjob/YarnTestCacheJob.java
index deb136a30a2..a075f9e8b78 100644
--- a/flink-yarn-tests/src/test/java/org/apache/flink/yarn/testjob/YarnTestCacheJob.java
+++ b/flink-yarn-tests/src/test/java/org/apache/flink/yarn/testjob/YarnTestCacheJob.java
@@ -20,6 +20,7 @@ package org.apache.flink.yarn.testjob;
import org.apache.flink.api.common.functions.RichMapFunction;
import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.common.typeinfo.TypeInformationUtils;
import org.apache.flink.api.java.typeutils.ResultTypeQueryable;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.runtime.jobgraph.JobGraph;
@@ -54,9 +55,9 @@ public class YarnTestCacheJob {
env.registerCachedFile(testDirectory.getAbsolutePath(), TEST_DIRECTORY_NAME);
env.registerCachedFile(cacheFilePath, "cacheFile", false);
- env.addSource(new GenericSourceFunction(LIST, TypeInformation.of(String.class)))
+ env.addSource(new GenericSourceFunction(LIST, TypeInformationUtils.of(String.class)))
.setParallelism(1)
- .map(new MapperFunction(), TypeInformation.of(String.class))
+ .map(new MapperFunction(), TypeInformationUtils.of(String.class))
.setParallelism(1)
.addSink(new DiscardingSink<String>())
.setParallelism(1);
[flink] 12/14: Implements process operator to handle user process function.
Posted by gu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
guoweijie pushed a commit to branch process-func-api-poc-weijie
in repository https://gitbox.apache.org/repos/asf/flink.git
commit 28bd60f0f846bd9ba30cee5a3ccfd9eba1d90819
Author: Weijie Guo <re...@163.com>
AuthorDate: Tue Jun 6 11:34:59 2023 +0800
Implements process operator to handle user process function.
---
.../flink/processfunction/api/ProcessFunction.java | 4 +-
.../flink/processfunction/examples/SimpleMap.java | 14 +++-
.../flink/processfunction/DataStreamImpl.java | 55 +++++++++++++++-
.../processfunction/operators/ProcessOperator.java | 76 ++++++++++++++++++++++
4 files changed, 144 insertions(+), 5 deletions(-)
diff --git a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java
index 5448910b641..55919cd8307 100644
--- a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java
+++ b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java
@@ -18,12 +18,14 @@
package org.apache.flink.processfunction.api;
+import org.apache.flink.api.common.functions.Function;
+
import java.util.Collections;
import java.util.Map;
import java.util.function.Consumer;
@FunctionalInterface
-public interface ProcessFunction<IN, OUT> {
+public interface ProcessFunction<IN, OUT> extends Function {
void processRecord(IN record, Consumer<OUT> output, RuntimeContext ctx);
// Explicitly declares states upfront. See FLIP-22.
diff --git a/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java b/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
index 207befab2f5..78b06e881c0 100644
--- a/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
+++ b/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
@@ -19,9 +19,12 @@
package org.apache.flink.processfunction.examples;
import org.apache.flink.processfunction.api.ExecutionEnvironment;
+import org.apache.flink.processfunction.api.ProcessFunction;
+import org.apache.flink.processfunction.api.RuntimeContext;
import java.text.SimpleDateFormat;
import java.util.Date;
+import java.util.function.Consumer;
/** Usage: Must be executed with flink-process-function and flink-dist jar in classpath. */
public class SimpleMap {
@@ -29,10 +32,17 @@ public class SimpleMap {
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.tmpFromSupplierSource(System::currentTimeMillis)
.process(
- (tsLong, output, ctx) ->
+ // Lambda expression can not work here. Due to generic erasure, we cannot
+ // infer the type of Consumer<T> from it.
+ new ProcessFunction<Long, String>() {
+ @Override
+ public void processRecord(
+ Long record, Consumer<String> output, RuntimeContext ctx) {
output.accept(
new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS")
- .format(new Date(tsLong))))
+ .format(new Date(record)));
+ }
+ })
// Don't use Lambda reference as PrintStream is not serializable.
.tmpToConsumerSink((tsStr) -> System.out.println(tsStr));
env.execute();
diff --git a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java b/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
index 98b05356b95..0370a018db9 100644
--- a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
+++ b/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
@@ -18,12 +18,19 @@
package org.apache.flink.processfunction;
+import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.dag.Transformation;
+import org.apache.flink.api.java.Utils;
+import org.apache.flink.api.java.typeutils.TypeExtractor;
import org.apache.flink.processfunction.api.DataStream;
import org.apache.flink.processfunction.api.ProcessFunction;
import org.apache.flink.processfunction.connector.ConsumerSinkFunction;
+import org.apache.flink.processfunction.operators.ProcessOperator;
+import org.apache.flink.streaming.api.operators.OneInputStreamOperator;
+import org.apache.flink.streaming.api.operators.SimpleUdfStreamOperatorFactory;
import org.apache.flink.streaming.api.operators.StreamSink;
import org.apache.flink.streaming.api.transformations.LegacySinkTransformation;
+import org.apache.flink.streaming.api.transformations.OneInputTransformation;
import org.apache.flink.streaming.api.transformations.PhysicalTransformation;
import org.apache.flink.util.Preconditions;
import org.apache.flink.util.function.ConsumerFunction;
@@ -42,8 +49,19 @@ public class DataStreamImpl<T> implements DataStream<T> {
@Override
public <OUT> DataStream<OUT> process(ProcessFunction<T, OUT> processFunction) {
- // TODO: Add implementation that calls processFunction.processRecord() in runtime
- return null;
+ TypeInformation<OUT> outType =
+ TypeExtractor.getUnaryOperatorReturnType(
+ processFunction,
+ ProcessFunction.class,
+ 0,
+ 1,
+ new int[] {1, 0},
+ getType(),
+ Utils.getCallLocationName(),
+ true);
+ ProcessOperator<T, OUT> operator = new ProcessOperator<>(processFunction);
+
+ return transform("Process", outType, operator);
}
@Override
@@ -67,4 +85,37 @@ public class DataStreamImpl<T> implements DataStream<T> {
environment.addOperator(sinkTransformation);
}
+
+ /**
+ * Gets the type of the stream.
+ *
+ * @return The type of the DataStream.
+ */
+ private TypeInformation<T> getType() {
+ return transformation.getOutputType();
+ }
+
+ private <R> DataStream<R> transform(
+ String operatorName,
+ TypeInformation<R> outputTypeInfo,
+ OneInputStreamOperator<T, R> operator) {
+ // read the output type of the input Transform to coax out errors about MissingTypeInfo
+ transformation.getOutputType();
+
+ OneInputTransformation<T, R> resultTransform =
+ new OneInputTransformation<>(
+ this.transformation,
+ operatorName,
+ SimpleUdfStreamOperatorFactory.of(operator),
+ outputTypeInfo,
+ // TODO Supports set parallelism.
+ 1,
+ true);
+
+ DataStream<R> returnStream = new DataStreamImpl<>(environment, resultTransform);
+
+ environment.addOperator(resultTransform);
+
+ return returnStream;
+ }
}
diff --git a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/operators/ProcessOperator.java b/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/operators/ProcessOperator.java
new file mode 100644
index 00000000000..70700ede5eb
--- /dev/null
+++ b/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/operators/ProcessOperator.java
@@ -0,0 +1,76 @@
+/*
+ * 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.
+ */
+
+package org.apache.flink.processfunction.operators;
+
+import org.apache.flink.processfunction.api.ProcessFunction;
+import org.apache.flink.processfunction.api.RuntimeContext;
+import org.apache.flink.processfunction.api.State;
+import org.apache.flink.streaming.api.operators.AbstractUdfStreamOperator;
+import org.apache.flink.streaming.api.operators.ChainingStrategy;
+import org.apache.flink.streaming.api.operators.OneInputStreamOperator;
+import org.apache.flink.streaming.runtime.streamrecord.StreamRecord;
+
+import java.util.function.Consumer;
+
+/** Operator for {@link org.apache.flink.processfunction.api.ProcessFunction}. */
+public class ProcessOperator<IN, OUT>
+ extends AbstractUdfStreamOperator<OUT, ProcessFunction<IN, OUT>>
+ implements OneInputStreamOperator<IN, OUT> {
+
+ private transient RuntimeContext context;
+
+ private transient OutputCollector outputCollector;
+
+ public ProcessOperator(ProcessFunction<IN, OUT> userFunction) {
+ super(userFunction);
+
+ chainingStrategy = ChainingStrategy.ALWAYS;
+ }
+
+ @Override
+ public void open() throws Exception {
+ super.open();
+ context = new ContextImpl();
+ outputCollector = new OutputCollector();
+ }
+
+ @Override
+ public void processElement(StreamRecord<IN> element) {
+ userFunction.processRecord(element.getValue(), outputCollector, context);
+ }
+
+ private class OutputCollector implements Consumer<OUT> {
+
+ private final StreamRecord<OUT> reuse = new StreamRecord<>(null);
+
+ @Override
+ public void accept(OUT outputRecord) {
+ output.collect(reuse.replace(outputRecord));
+ }
+ }
+
+ private static class ContextImpl implements RuntimeContext {
+
+ @Override
+ public State getState(String stateId) {
+ // TODO return state.
+ return null;
+ }
+ }
+}
[flink] 04/14: Introduce flink-process-function-parent module, to make it easy building all related modules at once.
Posted by gu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
guoweijie pushed a commit to branch process-func-api-poc-weijie
in repository https://gitbox.apache.org/repos/asf/flink.git
commit 6b4f8ce596016d0ed6cd8737fc18c8d0cbfcc1ec
Author: Xintong Song <to...@gmail.com>
AuthorDate: Tue May 30 20:26:29 2023 +0800
Introduce flink-process-function-parent module, to make it easy building all related modules at once.
---
.../flink-process-function-api}/pom.xml | 4 +++-
.../java/org/apache/flink/processfunction/api/DataStream.java | 0
.../apache/flink/processfunction/api/ExecutionEnvironment.java | 0
.../flink-process-function-examples}/pom.xml | 4 +++-
.../org/apache/flink/processfunction/examples/SimpleMap.java | 0
.../flink-process-function}/pom.xml | 4 +++-
.../java/org/apache/flink/processfunction/DataStreamImpl.java | 0
.../apache/flink/processfunction/ExecutionEnvironmentImpl.java | 0
.../pom.xml | 9 ++++++++-
pom.xml | 6 ++----
10 files changed, 19 insertions(+), 8 deletions(-)
diff --git a/flink-process-function-api/pom.xml b/flink-process-function-parent/flink-process-function-api/pom.xml
similarity index 94%
copy from flink-process-function-api/pom.xml
copy to flink-process-function-parent/flink-process-function-api/pom.xml
index e7087f3acf1..1812f311ca4 100644
--- a/flink-process-function-api/pom.xml
+++ b/flink-process-function-parent/flink-process-function-api/pom.xml
@@ -23,12 +23,14 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.flink</groupId>
- <artifactId>flink-parent</artifactId>
+ <artifactId>flink-process-function-parent</artifactId>
<version>1.18-SNAPSHOT</version>
</parent>
<artifactId>flink-process-function-api</artifactId>
+ <packaging>jar</packaging>
+
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
diff --git a/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/DataStream.java b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/DataStream.java
similarity index 100%
rename from flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/DataStream.java
rename to flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/DataStream.java
diff --git a/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java
similarity index 100%
rename from flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java
rename to flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ExecutionEnvironment.java
diff --git a/flink-process-function-examples/pom.xml b/flink-process-function-parent/flink-process-function-examples/pom.xml
similarity index 95%
rename from flink-process-function-examples/pom.xml
rename to flink-process-function-parent/flink-process-function-examples/pom.xml
index c821e49443d..a37a7ad21d3 100644
--- a/flink-process-function-examples/pom.xml
+++ b/flink-process-function-parent/flink-process-function-examples/pom.xml
@@ -23,12 +23,14 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.flink</groupId>
- <artifactId>flink-parent</artifactId>
+ <artifactId>flink-process-function-parent</artifactId>
<version>1.18-SNAPSHOT</version>
</parent>
<artifactId>flink-process-function-examples</artifactId>
+ <packaging>jar</packaging>
+
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
diff --git a/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java b/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
similarity index 100%
rename from flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
rename to flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
diff --git a/flink-process-function/pom.xml b/flink-process-function-parent/flink-process-function/pom.xml
similarity index 95%
rename from flink-process-function/pom.xml
rename to flink-process-function-parent/flink-process-function/pom.xml
index 1abe1dae837..92609ba3938 100644
--- a/flink-process-function/pom.xml
+++ b/flink-process-function-parent/flink-process-function/pom.xml
@@ -23,12 +23,14 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.flink</groupId>
- <artifactId>flink-parent</artifactId>
+ <artifactId>flink-process-function-parent</artifactId>
<version>1.18-SNAPSHOT</version>
</parent>
<artifactId>flink-process-function</artifactId>
+ <packaging>jar</packaging>
+
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
diff --git a/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java b/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
similarity index 100%
rename from flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
rename to flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
diff --git a/flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java b/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java
similarity index 100%
rename from flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java
rename to flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/ExecutionEnvironmentImpl.java
diff --git a/flink-process-function-api/pom.xml b/flink-process-function-parent/pom.xml
similarity index 85%
rename from flink-process-function-api/pom.xml
rename to flink-process-function-parent/pom.xml
index e7087f3acf1..984a196e033 100644
--- a/flink-process-function-api/pom.xml
+++ b/flink-process-function-parent/pom.xml
@@ -27,7 +27,9 @@
<version>1.18-SNAPSHOT</version>
</parent>
- <artifactId>flink-process-function-api</artifactId>
+ <artifactId>flink-process-function-parent</artifactId>
+
+ <packaging>pom</packaging>
<properties>
<maven.compiler.source>11</maven.compiler.source>
@@ -35,4 +37,9 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
+ <modules>
+ <module>flink-process-function-api</module>
+ <module>flink-process-function</module>
+ <module>flink-process-function-examples</module>
+ </modules>
</project>
diff --git a/pom.xml b/pom.xml
index 9ccfeacf6a0..3a7ba4f4d65 100644
--- a/pom.xml
+++ b/pom.xml
@@ -102,10 +102,8 @@ under the License.
<module>flink-kubernetes</module>
<module>flink-external-resources</module>
<module>tools/ci/flink-ci-tools</module>
- <module>flink-process-function-api</module>
- <module>flink-process-function</module>
- <module>flink-process-function-examples</module>
- </modules>
+ <module>flink-process-function-parent</module>
+ </modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
[flink] 10/14: Introduce interfaces for declaring and using states.
Posted by gu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
guoweijie pushed a commit to branch process-func-api-poc-weijie
in repository https://gitbox.apache.org/repos/asf/flink.git
commit c6d04280adc3883a69da21bfd4857ee012a5896f
Author: Xintong Song <to...@gmail.com>
AuthorDate: Sun Jun 4 12:29:55 2023 +0800
Introduce interfaces for declaring and using states.
---
.../flink/processfunction/api/ProcessFunction.java | 8 +++
.../flink/processfunction/api/RuntimeContext.java | 4 +-
.../api/{RuntimeContext.java => State.java} | 2 +-
.../{RuntimeContext.java => StateDescriptor.java} | 2 +-
.../examples/SimpleStatefulMap.java | 61 ++++++++++++++++++++++
5 files changed, 74 insertions(+), 3 deletions(-)
diff --git a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java
index bbaa8c4cad2..796305fadb2 100644
--- a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java
+++ b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java
@@ -18,7 +18,15 @@
package org.apache.flink.processfunction.api;
+import java.util.Collections;
+import java.util.Map;
+
@FunctionalInterface
public interface ProcessFunction<IN, OUT> {
OUT processRecord(IN record, RuntimeContext ctx);
+
+ // Explicitly declares states upfront. See FLIP-22.
+ default Map<String, StateDescriptor> usesStates() { // stateId -> stateDescriptor
+ return Collections.emptyMap();
+ }
}
diff --git a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/RuntimeContext.java b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/RuntimeContext.java
index 5a26ea9196a..908eeb8367a 100644
--- a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/RuntimeContext.java
+++ b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/RuntimeContext.java
@@ -18,4 +18,6 @@
package org.apache.flink.processfunction.api;
-public interface RuntimeContext {}
+public interface RuntimeContext {
+ State getState(String stateId);
+}
diff --git a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/RuntimeContext.java b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/State.java
similarity index 96%
copy from flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/RuntimeContext.java
copy to flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/State.java
index 5a26ea9196a..3fc48ab137d 100644
--- a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/RuntimeContext.java
+++ b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/State.java
@@ -18,4 +18,4 @@
package org.apache.flink.processfunction.api;
-public interface RuntimeContext {}
+public interface State {}
diff --git a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/RuntimeContext.java b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/StateDescriptor.java
similarity index 95%
copy from flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/RuntimeContext.java
copy to flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/StateDescriptor.java
index 5a26ea9196a..838de57d9c0 100644
--- a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/RuntimeContext.java
+++ b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/StateDescriptor.java
@@ -18,4 +18,4 @@
package org.apache.flink.processfunction.api;
-public interface RuntimeContext {}
+public interface StateDescriptor {}
diff --git a/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleStatefulMap.java b/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleStatefulMap.java
new file mode 100644
index 00000000000..df759e8eb45
--- /dev/null
+++ b/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleStatefulMap.java
@@ -0,0 +1,61 @@
+/*
+ * 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.
+ */
+
+package org.apache.flink.processfunction.examples;
+
+import org.apache.flink.processfunction.api.ExecutionEnvironment;
+import org.apache.flink.processfunction.api.ProcessFunction;
+import org.apache.flink.processfunction.api.RuntimeContext;
+import org.apache.flink.processfunction.api.State;
+import org.apache.flink.processfunction.api.StateDescriptor;
+
+import java.util.Collections;
+import java.util.Map;
+
+/** Usage: Must be executed with flink-process-function and flink-dist jar in classpath. */
+public class SimpleStatefulMap {
+ public static void main(String[] args) throws Exception {
+ ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
+ env.tmpFromSupplierSource(System::currentTimeMillis)
+ .process(new CalcTimeDiffFunc())
+ // Don't use Lambda reference as PrintStream is not serializable.
+ .tmpToConsumerSink(
+ (timeDiff) -> System.out.println("%d milliseconds since last timestamp."));
+ env.execute();
+ }
+
+ private static class CalcTimeDiffFunc implements ProcessFunction<Long, Long> {
+ static final String STATE_ID = "lastTimestamp";
+
+ @Override
+ public Long processRecord(Long record, RuntimeContext ctx) {
+ State state = ctx.getState(STATE_ID);
+ // TODO:
+ // long diff = record - state.getValue();
+ // state.setValue(record)
+ // return diff;
+ return record;
+ }
+
+ @Override
+ public Map<String, StateDescriptor> usesStates() {
+ // TODO: state descriptor for type LONG
+ return Collections.singletonMap(STATE_ID, null);
+ }
+ }
+}
[flink] 08/14: Introduce ProcessFunction interface.
Posted by gu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
guoweijie pushed a commit to branch process-func-api-poc-weijie
in repository https://gitbox.apache.org/repos/asf/flink.git
commit 8be47a72cab6ce5304920e65e51a521ee5c96103
Author: Xintong Song <to...@gmail.com>
AuthorDate: Sun Jun 4 11:47:36 2023 +0800
Introduce ProcessFunction interface.
---
.../java/org/apache/flink/processfunction/api/DataStream.java | 3 +++
.../api/{DataStream.java => ProcessFunction.java} | 8 +++-----
.../org/apache/flink/processfunction/examples/SimpleMap.java | 9 ++++++++-
.../java/org/apache/flink/processfunction/DataStreamImpl.java | 7 +++++++
4 files changed, 21 insertions(+), 6 deletions(-)
diff --git a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/DataStream.java b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/DataStream.java
index 70a0a5aa040..47646b95bfe 100644
--- a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/DataStream.java
+++ b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/DataStream.java
@@ -21,6 +21,9 @@ package org.apache.flink.processfunction.api;
import org.apache.flink.util.function.ConsumerFunction;
public interface DataStream<T> {
+
+ <OUT> DataStream<OUT> process(ProcessFunction<T, OUT> processFunction);
+
/** TODO: Temporal method. Will revisit sink functions later. */
void tmpToConsumerSink(ConsumerFunction<T> consumer);
}
diff --git a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/DataStream.java b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java
similarity index 79%
copy from flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/DataStream.java
copy to flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java
index 70a0a5aa040..3058727c4df 100644
--- a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/DataStream.java
+++ b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java
@@ -18,9 +18,7 @@
package org.apache.flink.processfunction.api;
-import org.apache.flink.util.function.ConsumerFunction;
-
-public interface DataStream<T> {
- /** TODO: Temporal method. Will revisit sink functions later. */
- void tmpToConsumerSink(ConsumerFunction<T> consumer);
+@FunctionalInterface
+public interface ProcessFunction<IN, OUT> {
+ OUT processRecord(IN record);
}
diff --git a/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java b/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
index 523815b8aec..35f0a94ddf1 100644
--- a/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
+++ b/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
@@ -20,13 +20,20 @@ package org.apache.flink.processfunction.examples;
import org.apache.flink.processfunction.api.ExecutionEnvironment;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
/** Usage: Must be executed with flink-process-function and flink-dist jar in classpath. */
public class SimpleMap {
public static void main(String[] args) throws Exception {
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.tmpFromSupplierSource(System::currentTimeMillis)
+ .process(
+ tsLong ->
+ new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS")
+ .format(new Date(tsLong)))
// Don't use Lambda reference as PrintStream is not serializable.
- .tmpToConsumerSink((data) -> System.out.println(data));
+ .tmpToConsumerSink((tsStr) -> System.out.println(tsStr));
env.execute();
}
}
diff --git a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java b/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
index b926c7e1d60..98b05356b95 100644
--- a/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
+++ b/flink-process-function-parent/flink-process-function/src/main/java/org/apache/flink/processfunction/DataStreamImpl.java
@@ -20,6 +20,7 @@ package org.apache.flink.processfunction;
import org.apache.flink.api.dag.Transformation;
import org.apache.flink.processfunction.api.DataStream;
+import org.apache.flink.processfunction.api.ProcessFunction;
import org.apache.flink.processfunction.connector.ConsumerSinkFunction;
import org.apache.flink.streaming.api.operators.StreamSink;
import org.apache.flink.streaming.api.transformations.LegacySinkTransformation;
@@ -39,6 +40,12 @@ public class DataStreamImpl<T> implements DataStream<T> {
transformation, "Stream Transformation must not be null.");
}
+ @Override
+ public <OUT> DataStream<OUT> process(ProcessFunction<T, OUT> processFunction) {
+ // TODO: Add implementation that calls processFunction.processRecord() in runtime
+ return null;
+ }
+
@Override
public void tmpToConsumerSink(ConsumerFunction<T> consumer) {
// read the output type of the input Transform to coax out errors about MissingTypeInfo
[flink] 09/14: Introduce RuntimeContext interface.
Posted by gu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
guoweijie pushed a commit to branch process-func-api-poc-weijie
in repository https://gitbox.apache.org/repos/asf/flink.git
commit b6c1dc51e864bd7fb9effe6d90c00ab738f3c044
Author: Xintong Song <to...@gmail.com>
AuthorDate: Sun Jun 4 12:01:10 2023 +0800
Introduce RuntimeContext interface.
---
.../java/org/apache/flink/processfunction/api/ProcessFunction.java | 2 +-
.../api/{ProcessFunction.java => RuntimeContext.java} | 5 +----
.../java/org/apache/flink/processfunction/examples/SimpleMap.java | 2 +-
3 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java
index 3058727c4df..bbaa8c4cad2 100644
--- a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java
+++ b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java
@@ -20,5 +20,5 @@ package org.apache.flink.processfunction.api;
@FunctionalInterface
public interface ProcessFunction<IN, OUT> {
- OUT processRecord(IN record);
+ OUT processRecord(IN record, RuntimeContext ctx);
}
diff --git a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/RuntimeContext.java
similarity index 89%
copy from flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java
copy to flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/RuntimeContext.java
index 3058727c4df..5a26ea9196a 100644
--- a/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/ProcessFunction.java
+++ b/flink-process-function-parent/flink-process-function-api/src/main/java/org/apache/flink/processfunction/api/RuntimeContext.java
@@ -18,7 +18,4 @@
package org.apache.flink.processfunction.api;
-@FunctionalInterface
-public interface ProcessFunction<IN, OUT> {
- OUT processRecord(IN record);
-}
+public interface RuntimeContext {}
diff --git a/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java b/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
index 35f0a94ddf1..5bcfe8592a5 100644
--- a/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
+++ b/flink-process-function-parent/flink-process-function-examples/src/main/java/org/apache/flink/processfunction/examples/SimpleMap.java
@@ -29,7 +29,7 @@ public class SimpleMap {
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.tmpFromSupplierSource(System::currentTimeMillis)
.process(
- tsLong ->
+ (tsLong, ctx) ->
new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS")
.format(new Date(tsLong)))
// Don't use Lambda reference as PrintStream is not serializable.