/** * */ package org.minnal.utils.serializer; import java.io.InputStream; import java.io.OutputStream; import java.util.Collection; import java.util.Map; import com.google.common.base.Joiner; import com.google.common.base.Splitter; /** * @author ganeshs * */ public class DefaultFormSerializer extends DefaultTextSerializer { @SuppressWarnings("unchecked") @Override public <T> T deserialize(InputStream stream, Class<T> targetClass) { if (! targetClass.isAssignableFrom(Map.class)) { throw new IllegalArgumentException("Target class is not a map"); } String data = super.deserialize(stream, String.class); return (T) Splitter.on("&").omitEmptyStrings().withKeyValueSeparator("=").split(data); } @Override public <T extends Collection<E>, E> T deserializeCollection(InputStream stream, Class<T> collectionType, Class<E> elementType) { throw new UnsupportedOperationException("Not yet implemented"); } @Override public void serialize(Object object, OutputStream stream) { if (! (object instanceof Map)) { super.serialize(object, stream); } else { String data = Joiner.on("&").withKeyValueSeparator("=").join((Map)object); super.serialize(data, stream); } } }