package com.rubiconproject.oss.kv.transcoder; import java.io.IOException; import java.io.UnsupportedEncodingException; /** * Encode/decode strings to/from byte arrays using the specified encoding. * Copied from the Tokyo Tyrant StringTranscoder: * * http://bitbucket.org/EP/tokyotyrant-java/src/tip/src/main/java/tokyotyrant/transcoder/StringTranscoder.java * * @author samtingleff * */ public class StringTranscoder implements Transcoder { private String encoding; public StringTranscoder() { this("UTF-8"); } public StringTranscoder(String encoding) { this.encoding = encoding; } public Object decode(byte[] bytes) throws IOException { try { return new String(bytes, encoding); } catch (UnsupportedEncodingException e) { throw new IllegalArgumentException( String .format( "Unable to decode byte array to string using encoding %1$s", encoding), e); } } public byte[] encode(Object value) throws IOException { try { return ((String) value).getBytes(encoding); } catch (UnsupportedEncodingException e) { throw new IllegalArgumentException( String .format( "Unable to encode byte array from object using encoding %1$s", encoding), e); } } }