/* * Seldon -- open source prediction engine * ======================================= * Copyright 2011-2015 Seldon Technologies Ltd and Rummble Ltd (http://www.seldon.io/) * ********************************************************************************************** * * Licensed 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 io.seldon.stream.serializer; import java.util.Map; import org.apache.kafka.common.serialization.Deserializer; import com.google.gson.Gson; /** * Copied from https://github.com/bbejeck/kafka-streams/blob/master/src/main/java/bbejeck/serializer/JsonDeserializer.java */ public class JsonDeserializer<T> implements Deserializer<T> { private Gson gson = new Gson(); private Class<T> deserializedClass; public JsonDeserializer(Class<T> deserializedClass) { this.deserializedClass = deserializedClass; } public JsonDeserializer() { } @Override @SuppressWarnings("unchecked") public void configure(Map<String, ?> map, boolean b) { if(deserializedClass == null) { deserializedClass = (Class<T>) map.get("serializedClass"); } } @Override public T deserialize(String s, byte[] bytes) { if(bytes == null){ return null; } return gson.fromJson(new String(bytes),deserializedClass); } @Override public void close() { } }