@SuppressWarnings("unchecked")
  public static <T> T readObjectFromConfAsBase64(String key, Configuration conf) throws IOException {
    String b64 = conf.get(key);
    if (b64 == null) {
      return null;
    }

    byte[] bytes = Base64.decodeBase64(b64.getBytes(Charsets.UTF_8));

    ByteArrayInputStream bais = null;
    GZIPInputStream gis = null;
    ObjectInputStream ois = null;

    try {
      bais = new ByteArrayInputStream(bytes);
      gis = new GZIPInputStream(bais);
      ois = new ObjectInputStream(gis);
      return (T) ois.readObject();
    } catch (ClassNotFoundException e) {
      LOG.error("Could not read object from config with key " + key, e);
      throw new IOException(e);
    } catch (ClassCastException e) {
      LOG.error("Couldn't cast object read from config with key " + key, e);
      throw new IOException(e);
    } finally {
      Closeables.close(ois, false);
      Closeables.close(gis, false);
      Closeables.close(bais, false);
    }
  }
@SuppressWarnings("unchecked")
  public static <T> T readObjectFromConfAsBase64(String key, Configuration conf) throws IOException {
    String b64 = conf.get(key);
    if (b64 == null) {
      return null;
    }

    byte[] bytes = Base64.decodeBase64(b64.getBytes(Charsets.UTF_8));

    ByteArrayInputStream bais = null;
    GZIPInputStream gis = null;
    ObjectInputStream ois = null;

    try {
      bais = new ByteArrayInputStream(bytes);
      gis = new GZIPInputStream(bais);
      ois = new ObjectInputStream(gis);
      return (T) ois.readObject();
    } catch (ClassNotFoundException e) {
      LOG.error("Could not read object from config with key " + key, e);
      throw new IOException(e);
    } catch (ClassCastException e) {
      LOG.error("Couldn't cast object read from config with key " + key, e);
      throw new IOException(e);
    } finally {
      Closeables.close(ois, false);
      Closeables.close(gis, false);
      Closeables.close(bais, false);
    }
  }
@ SuppressWarnings ( "unchecked" ) public static < T > T readObjectFromConfAsBase64 ( String key , Configuration conf ) throws IOException { String b64 = conf . get ( key ) ; if ( b64 == null ) { return null ; } byte [ ] bytes = Base64 . decodeBase64 ( b64 . getBytes ( Charsets . UTF_8 ) ) ; ByteArrayInputStream bais = null ; GZIPInputStream gis = null ; ObjectInputStream ois = null ; try { bais = new ByteArrayInputStream ( bytes ) ; gis = new GZIPInputStream ( bais ) ; ois = new ObjectInputStream ( gis ) ; return ( T ) ois . readObject ( ) ; } catch ( ClassNotFoundException e ) { LOG . error ( "Could not read object from config with key " + key , e ) ; throw new IOException ( e ) ; } catch ( ClassCastException e ) { LOG . error ( "Couldn't cast object read from config with key " + key , e ) ; throw new IOException ( e ) ; } finally { Closeables . close ( ois , false ) ; Closeables . close ( gis , false ) ; Closeables . close ( bais , false ) ; } }
Reads an object (that was written using
{@link #writeObjectToConfAsBase64}) from a configuration.

@param key for the configuration
@param conf to read from
@return the read object, or null if key is not present in conf
@throws IOException
Reads an object ( that was written using { @link #writeObjectToConfAsBase64 } ) from a configuration .