You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by tz...@apache.org on 2019/02/22 07:45:39 UTC
[flink] 08/17: [FLINK-11485] [core] Move OptionalMap to
org.apache.flink.util
This is an automated email from the ASF dual-hosted git repository.
tzulitai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git
commit a3822f220fc724934b55b9a7994e86afa926a41f
Author: Tzu-Li (Gordon) Tai <tz...@apache.org>
AuthorDate: Thu Jan 31 17:29:26 2019 +0800
[FLINK-11485] [core] Move OptionalMap to org.apache.flink.util
This utility class may commonly be used by the KryoSerializer and the
PojoSerializer. This commit moves the utility to a more suitable package
and adjusts usage access.
---
.../runtime/kryo/KryoSerializerSnapshot.java | 6 ++--
.../runtime/kryo/KryoSerializerSnapshotData.java | 3 +-
.../runtime/kryo => util}/OptionalMap.java | 34 ++++++++++++----------
.../runtime/kryo => util}/OptionalMapTest.java | 4 +--
4 files changed, 26 insertions(+), 21 deletions(-)
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 37a0104..77242e6 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
@@ -23,9 +23,9 @@ 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.java.typeutils.runtime.KryoRegistration;
-import org.apache.flink.api.java.typeutils.runtime.kryo.OptionalMap.MergeResult;
import org.apache.flink.core.memory.DataInputView;
import org.apache.flink.core.memory.DataOutputView;
+import org.apache.flink.util.OptionalMap.MergeResult;
import com.esotericsoftware.kryo.Serializer;
import org.slf4j.Logger;
@@ -36,8 +36,8 @@ import java.util.LinkedHashMap;
import java.util.function.Function;
import static org.apache.flink.api.java.typeutils.runtime.kryo.KryoSerializerSnapshotData.createFrom;
-import static org.apache.flink.api.java.typeutils.runtime.kryo.OptionalMap.mergeRightIntoLeft;
-import static org.apache.flink.api.java.typeutils.runtime.kryo.OptionalMap.optionalMapOf;
+import static org.apache.flink.util.OptionalMap.mergeRightIntoLeft;
+import static org.apache.flink.util.OptionalMap.optionalMapOf;
/**
* {@link TypeSerializerSnapshot} for {@link KryoSerializer}.
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 9587101..40b12a4 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
@@ -25,6 +25,7 @@ import org.apache.flink.api.java.typeutils.runtime.KryoRegistration;
import org.apache.flink.core.memory.DataInputView;
import org.apache.flink.core.memory.DataOutputView;
import org.apache.flink.util.InstantiationUtil;
+import org.apache.flink.util.OptionalMap;
import com.esotericsoftware.kryo.Serializer;
import org.slf4j.Logger;
@@ -36,7 +37,7 @@ import java.util.LinkedHashMap;
import java.util.Map.Entry;
import java.util.function.Function;
-import static org.apache.flink.api.java.typeutils.runtime.kryo.OptionalMap.optionalMapOf;
+import static org.apache.flink.util.OptionalMap.optionalMapOf;
import static org.apache.flink.util.Preconditions.checkNotNull;
final class KryoSerializerSnapshotData<T> {
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/kryo/OptionalMap.java b/flink-core/src/main/java/org/apache/flink/util/OptionalMap.java
similarity index 89%
rename from flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/kryo/OptionalMap.java
rename to flink-core/src/main/java/org/apache/flink/util/OptionalMap.java
index afabb4b..4552102 100644
--- a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/kryo/OptionalMap.java
+++ b/flink-core/src/main/java/org/apache/flink/util/OptionalMap.java
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package org.apache.flink.api.java.typeutils.runtime.kryo;
+package org.apache.flink.util;
import org.apache.flink.annotation.VisibleForTesting;
@@ -36,7 +36,7 @@ import static org.apache.flink.util.Preconditions.checkNotNull;
* An OptionalMap is an order preserving map (like {@link LinkedHashMap}) where keys have a unique string name, but are
* optionally present, and the values are optional.
*/
-final class OptionalMap<K, V> {
+public final class OptionalMap<K, V> {
// --------------------------------------------------------------------------------------------------------
@@ -55,7 +55,7 @@ final class OptionalMap<K, V> {
* @param <V> value type
* @return an {@code OptionalMap} with optional named keys, and optional values.
*/
- static <K, V> OptionalMap<K, V> optionalMapOf(LinkedHashMap<K, V> sourceMap, Function<K, String> keyNameGetter) {
+ public static <K, V> OptionalMap<K, V> optionalMapOf(LinkedHashMap<K, V> sourceMap, Function<K, String> keyNameGetter) {
LinkedHashMap<String, KeyValue<K, V>> underlyingMap = new LinkedHashMap<>(sourceMap.size());
@@ -70,7 +70,7 @@ final class OptionalMap<K, V> {
/**
* Tries to merges the keys and the values of @right into @left.
*/
- static <K, V> MergeResult<K, V> mergeRightIntoLeft(OptionalMap<K, V> left, OptionalMap<K, V> right) {
+ public static <K, V> MergeResult<K, V> mergeRightIntoLeft(OptionalMap<K, V> left, OptionalMap<K, V> right) {
OptionalMap<K, V> merged = new OptionalMap<>(left);
merged.putAll(right);
@@ -83,7 +83,7 @@ final class OptionalMap<K, V> {
private final LinkedHashMap<String, KeyValue<K, V>> underlyingMap;
- OptionalMap() {
+ public OptionalMap() {
this(new LinkedHashMap<>());
}
@@ -100,11 +100,11 @@ final class OptionalMap<K, V> {
// API
// --------------------------------------------------------------------------------------------------------
- int size() {
+ public int size() {
return underlyingMap.size();
}
- void put(String keyName, @Nullable K key, @Nullable V value) {
+ public void put(String keyName, @Nullable K key, @Nullable V value) {
checkNotNull(keyName);
underlyingMap.compute(keyName, (unused, kv) ->
@@ -121,7 +121,7 @@ final class OptionalMap<K, V> {
/**
* Returns the key names of any keys or values that are absent.
*/
- Set<String> absentKeysOrValues() {
+ public Set<String> absentKeysOrValues() {
return underlyingMap.entrySet()
.stream()
.filter(OptionalMap::keyOrValueIsAbsent)
@@ -134,7 +134,7 @@ final class OptionalMap<K, V> {
* a map with these key and values, stripped from their Optional wrappers.
* NOTE: please note that if any of the key or values are absent this method would throw an {@link IllegalStateException}.
*/
- LinkedHashMap<K, V> unwrapOptionals() {
+ public LinkedHashMap<K, V> unwrapOptionals() {
final LinkedHashMap<K, V> unwrapped = new LinkedHashMap<>(underlyingMap.size());
for (Entry<String, KeyValue<K, V>> entry : underlyingMap.entrySet()) {
@@ -155,7 +155,7 @@ final class OptionalMap<K, V> {
/**
* Returns the key names added to this map.
*/
- Set<String> keyNames() {
+ public Set<String> keyNames() {
return underlyingMap.keySet();
}
@@ -215,7 +215,11 @@ final class OptionalMap<K, V> {
// Merge
// --------------------------------------------------------------------------------------------------------
- static final class MergeResult<K, V> {
+ /**
+ * The result of merging two {@link LinkedOptionalMap}s using
+ * {@link #mergeRightIntoLeft(LinkedOptionalMap, LinkedOptionalMap)}.
+ */
+ public static final class MergeResult<K, V> {
private final OptionalMap<K, V> merged;
private final Set<String> missingKeys;
private final boolean isOrderedSubset;
@@ -226,22 +230,22 @@ final class OptionalMap<K, V> {
this.isOrderedSubset = isOrderedSubset;
}
- boolean hasMissingKeys() {
+ public boolean hasMissingKeys() {
return !missingKeys.isEmpty();
}
- Set<String> missingKeys() {
+ public Set<String> missingKeys() {
return missingKeys;
}
- LinkedHashMap<K, V> getMerged() {
+ public LinkedHashMap<K, V> getMerged() {
return merged.unwrapOptionals();
}
/**
* Returns {@code true} if keyNames present at @left, appearing in prefix order at @right.
*/
- boolean isOrderedSubset() {
+ public boolean isOrderedSubset() {
return isOrderedSubset;
}
}
diff --git a/flink-core/src/test/java/org/apache/flink/api/java/typeutils/runtime/kryo/OptionalMapTest.java b/flink-core/src/test/java/org/apache/flink/util/OptionalMapTest.java
similarity index 97%
rename from flink-core/src/test/java/org/apache/flink/api/java/typeutils/runtime/kryo/OptionalMapTest.java
rename to flink-core/src/test/java/org/apache/flink/util/OptionalMapTest.java
index ff7f31f..050dba8 100644
--- a/flink-core/src/test/java/org/apache/flink/api/java/typeutils/runtime/kryo/OptionalMapTest.java
+++ b/flink-core/src/test/java/org/apache/flink/util/OptionalMapTest.java
@@ -16,9 +16,9 @@
* limitations under the License.
*/
-package org.apache.flink.api.java.typeutils.runtime.kryo;
+package org.apache.flink.util;
-import org.apache.flink.api.java.typeutils.runtime.kryo.OptionalMap.MergeResult;
+import org.apache.flink.util.OptionalMap.MergeResult;
import org.junit.Test;