| // Copyright (c) 2006- Facebook | 
 | // Distributed under the Thrift Software License | 
 | // | 
 | // See accompanying file LICENSE or visit the Thrift site at: | 
 | // http://developers.facebook.com/thrift/ | 
 |  | 
 | package com.facebook.thrift; | 
 |  | 
 | import java.io.ByteArrayInputStream; | 
 | import java.io.UnsupportedEncodingException; | 
 |  | 
 | import com.facebook.thrift.protocol.TBinaryProtocol; | 
 | import com.facebook.thrift.protocol.TProtocol; | 
 | import com.facebook.thrift.protocol.TProtocolFactory; | 
 | import com.facebook.thrift.transport.TIOStreamTransport; | 
 | import com.facebook.thrift.transport.TTransport; | 
 |  | 
 | /** | 
 |  * Generic utility for easily deserializing objects from a byte array or Java | 
 |  * String. | 
 |  * | 
 |  * @author David Reiss <dreiss@facebook.com> | 
 |  */ | 
 | public class TDeserializer { | 
 |   private final TProtocolFactory protocolFactory_; | 
 |  | 
 |   /** | 
 |    * Create a new TDeserializer that uses the TBinaryProtocol by default. | 
 |    */ | 
 |   public TDeserializer() { | 
 |     this(new TBinaryProtocol.Factory()); | 
 |   } | 
 |  | 
 |   /** | 
 |    * Create a new TDeserializer. It will use the TProtocol specified by the | 
 |    * factory that is passed in. | 
 |    * | 
 |    * @param protocolFactory Factory to create a protocol | 
 |    */ | 
 |   public TDeserializer(TProtocolFactory protocolFactory) { | 
 |     protocolFactory_ = protocolFactory; | 
 |   } | 
 |  | 
 |   /** | 
 |    * Deserialize the Thrift object from a byte array. | 
 |    * | 
 |    * @param base The object to read into | 
 |    * @param bytes The array to read from | 
 |    */ | 
 |   public void deserialize(TBase base, byte[] bytes) throws TException { | 
 |     base.read( | 
 |         protocolFactory_.getProtocol( | 
 |           new TIOStreamTransport( | 
 |             new ByteArrayInputStream(bytes)))); | 
 |   } | 
 |  | 
 |   /** | 
 |    * Deserialize the Thrift object from a Java string, using a specified | 
 |    * character set for decoding. | 
 |    * | 
 |    * @param base The object to read into | 
 |    * @param data The string to read from | 
 |    * @param charset Valid JVM charset | 
 |    */ | 
 |   public void deserialize(TBase base, String data, String charset) throws TException { | 
 |     try { | 
 |       deserialize(base, data.getBytes(charset)); | 
 |     } catch (UnsupportedEncodingException uex) { | 
 |       throw new TException("JVM DOES NOT SUPPORT ENCODING: " + charset); | 
 |     } | 
 |   } | 
 |  | 
 |   /** | 
 |    * Deerialize the Thrift object from a Java string, using the default JVM | 
 |    * charset encoding. | 
 |    * | 
 |    * @param base The object to read into | 
 |    * @param data The string to read from | 
 |    * @return Serialized object as a String | 
 |    */ | 
 |   public void toString(TBase base, String data) throws TException { | 
 |     deserialize(base, data.getBytes()); | 
 |   } | 
 | } | 
 |  |