Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* 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.kafka.streams.kstream.internals;
import org.apache.kafka.common.serialization.Deserializer;
import org.apache.kafka.common.serialization.Serde;
import org.apache.kafka.common.serialization.Serializer;
/**
* If a component's serdes are Wrapping serdes, then they require a little extra setup
* to be fully initialized at run time.
*/
public class WrappingNullableUtils {
@SuppressWarnings("unchecked")
private static Deserializer prepareDeserializer(final Deserializer specificDeserializer, final Deserializer> contextKeyDeserializer, final Deserializer> contextValueDeserializer, final boolean isKey) {
Deserializer deserializerToUse = specificDeserializer;
if (deserializerToUse == null) {
deserializerToUse = (Deserializer) (isKey ? contextKeyDeserializer : contextValueDeserializer);
} else {
initNullableDeserializer(deserializerToUse, contextKeyDeserializer, contextValueDeserializer);
}
return deserializerToUse;
}
@SuppressWarnings("unchecked")
private static Serializer prepareSerializer(final Serializer specificSerializer, final Serializer> contextKeySerializer, final Serializer> contextValueSerializer, final boolean isKey) {
Serializer serializerToUse = specificSerializer;
if (serializerToUse == null) {
serializerToUse = (Serializer) (isKey ? contextKeySerializer : contextValueSerializer);
} else {
initNullableSerializer(serializerToUse, contextKeySerializer, contextValueSerializer);
}
return serializerToUse;
}
@SuppressWarnings({"rawtypes", "unchecked"})
private static Serde prepareSerde(final Serde specificSerde, final Serde> contextKeySerde, final Serde> contextValueSerde, final boolean isKey) {
Serde serdeToUse = specificSerde;
if (serdeToUse == null) {
serdeToUse = (Serde) (isKey ? contextKeySerde : contextValueSerde);
} else if (serdeToUse instanceof WrappingNullableSerde) {
((WrappingNullableSerde) serdeToUse).setIfUnset(contextKeySerde, contextValueSerde);
}
return serdeToUse;
}
public static Deserializer prepareKeyDeserializer(final Deserializer specificDeserializer, final Deserializer> contextKeyDeserializer, final Deserializer> contextValueDeserializer) {
return prepareDeserializer(specificDeserializer, contextKeyDeserializer, contextValueDeserializer, true);
}
public static Deserializer prepareValueDeserializer(final Deserializer specificDeserializer, final Deserializer> contextKeyDeserializer, final Deserializer> contextValueDeserializer) {
return prepareDeserializer(specificDeserializer, contextKeyDeserializer, contextValueDeserializer, false);
}
public static Serializer prepareKeySerializer(final Serializer specificSerializer, final Serializer> contextKeySerializer, final Serializer> contextValueSerializer) {
return prepareSerializer(specificSerializer, contextKeySerializer, contextValueSerializer, true);
}
public static Serializer prepareValueSerializer(final Serializer specificSerializer, final Serializer> contextKeySerializer, final Serializer> contextValueSerializer) {
return prepareSerializer(specificSerializer, contextKeySerializer, contextValueSerializer, false);
}
public static Serde prepareKeySerde(final Serde specificSerde, final Serde> keySerde, final Serde> valueSerde) {
return prepareSerde(specificSerde, keySerde, valueSerde, true);
}
public static Serde prepareValueSerde(final Serde specificSerde, final Serde> keySerde, final Serde> valueSerde) {
return prepareSerde(specificSerde, keySerde, valueSerde, false);
}
@SuppressWarnings({"rawtypes", "unchecked"})
public static void initNullableSerializer(final Serializer specificSerializer, final Serializer> contextKeySerializer, final Serializer> contextValueSerializer) {
if (specificSerializer instanceof WrappingNullableSerializer) {
((WrappingNullableSerializer) specificSerializer).setIfUnset(contextKeySerializer, contextValueSerializer);
}
}
@SuppressWarnings({"rawtypes", "unchecked"})
public static void initNullableDeserializer(final Deserializer specificDeserializer, final Deserializer> contextKeyDeserializer, final Deserializer> contextValueDeserializer) {
if (specificDeserializer instanceof WrappingNullableDeserializer) {
((WrappingNullableDeserializer) specificDeserializer).setIfUnset(contextKeyDeserializer, contextValueDeserializer);
}
}
}