All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.netflix.zeno.serializer.FrameworkDeserializer Maven / Gradle / Ivy

There is a newer version: 2.22.3
Show newest version
/*
 *
 *  Copyright 2013 Netflix, Inc.
 *
 *     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 com.netflix.zeno.serializer;

import com.netflix.zeno.hash.HashFrameworkSerializer;
import com.netflix.zeno.hash.HashSerializationFramework;

import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;

/**
 * Mirroring the FrameworkSerializer, FrameworkDeserializer will define the actions which must be taken to decode individual "Zeno native" elements during deserialization
 * of objects.  It will also define the method of traversal of serialized representations of Objects for deserialization
 * via the specification of deserializeObject, deserializeList, deserializeSet, and deserializeMap methods.

* * There may or may not be a "deserialization", which corresponds to every "serialization". For example, one operation which ships with * the zeno framework is a calculation of a hash of a given Object (see {@link HashSerializationFramework}). This is a one-way operation and therefore has no corresponding * "deserialization". In this case, the {@link HashFrameworkSerializer} does not have a corresponding deserializer. * * @author dkoszewnik * * @param */ public abstract class FrameworkDeserializer { protected final SerializationFramework framework; protected FrameworkDeserializer(SerializationFramework framework){ this.framework = framework; } /** * Deserializing java boolean * @param rec * @param fieldName * @param value */ abstract public Boolean deserializeBoolean(D rec, String fieldName); /** * Can be overridden to avoid boxing an int where appropriate */ public boolean deserializePrimitiveBoolean(D rec, String fieldName) { return deserializeBoolean(rec, fieldName).booleanValue(); } /** * Deserializing java integer * @param rec * @param fieldName * @param value */ abstract public Integer deserializeInteger(D rec, String fieldName); /** * Can be overridden to avoid boxing an int where appropriate */ public int deserializePrimitiveInt(D rec, String fieldName) { return deserializeInteger(rec, fieldName).intValue(); } /** * Deserializing java logn * @param rec * @param fieldName * @param value */ abstract public Long deserializeLong(D rec, String fieldName); /** * Can be overridden to avoid boxing a long where appropriate */ public long deserializePrimitiveLong(D rec, String fieldName) { return deserializeLong(rec, fieldName).longValue(); } /** * Deserializing java float * @param rec * @param fieldName * @param value */ abstract public Float deserializeFloat(D rec, String fieldName); /** * Can be overridden to avoid boxing a float where appropriate */ public float deserializePrimitiveFloat(D rec, String fieldName) { return deserializeFloat(rec, fieldName).floatValue(); } /** * Deserializing java double * @param rec * @param fieldName * @param value */ abstract public Double deserializeDouble(D rec, String fieldName); /** * Can be overridden to avoid boxing a double where appropriate */ public double deserializePrimitiveDouble(D rec, String fieldName) { return deserializeDouble(rec, fieldName).doubleValue(); } /** * Deserializing java string * @param rec * @param fieldName * @param value */ abstract public String deserializeString(D rec, String fieldName); /** * Deserializing byte array * @param rec * @param fieldName * @param value */ abstract public byte[] deserializeBytes(D rec, String fieldName); /** * Deserializing class object * @param rec * @param fieldName * @param typeName * @param clazz TODO * @param obj */ abstract public T deserializeObject(D rec, String fieldName, String typeName, Class clazz); /** * Deserializing list * @param rec * @param fieldName * @param typeName * @param obj */ abstract public List deserializeList(D rec, String fieldName, NFTypeSerializer itemSerializer); /** * Deserializing set * @param rec * @param fieldName * @param typeName * @param obj */ abstract public Set deserializeSet(D rec, String fieldName, NFTypeSerializer itemSerializer); /** * Deserializing map * @param rec * @param fieldName * @param typeName * @param obj */ abstract public Map deserializeMap(D rec, String fieldName, NFTypeSerializer keySerializer, NFTypeSerializer valueSerializer); /** * Deserialize sorted map * @param rec * @param fieldName * @param keySerializer * @param valueSerializer */ abstract public SortedMap deserializeSortedMap(D rec, String fieldName, NFTypeSerializer keySerializer, NFTypeSerializer valueSerializer); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy