com.mycompany.mavenpails2.ThriftPailStructure.java Source code

Java tutorial

Introduction

Here is the source code for com.mycompany.mavenpails2.ThriftPailStructure.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.mycompany.mavenpails2;

import backtype.hadoop.pail.PailStructure;
import org.apache.thrift.TBase;
import org.apache.thrift.TDeserializer;
import org.apache.thrift.TException;
import org.apache.thrift.TSerializer;

/**
 *
 * @author fedora
 * 
 */

/**
 *
 * @author fedora
 * @param <T>
 */
public abstract class ThriftPailStructure<T extends Comparable> implements PailStructure<T> {

    private transient TSerializer ser;
    private transient TDeserializer des;

    private TSerializer getSerializer() {
        if (ser == null)
            ser = new TSerializer();
        return ser;
    }

    private TDeserializer getDeserializer() {
        if (des == null)
            des = new TDeserializer();
        return des;
    }

    @Override
    public byte[] serialize(T obj) {
        try {
            return getSerializer().serialize((TBase) obj);
        } catch (TException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    public T deserialize(byte[] record) {
        T ret = createThriftObject();
        try {
            getDeserializer().deserialize((TBase) ret, record);
        } catch (TException e) {
            throw new RuntimeException(e);
        }
        return ret;
    }

    protected abstract T createThriftObject();
}