package net.contextfw.web.commons.cloud.internal.serializer; import net.contextfw.web.application.WebApplicationException; import com.google.inject.Key; import com.thoughtworks.xstream.converters.SingleValueConverter; public class KeyConverter implements SingleValueConverter { private ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); @Override public boolean canConvert(@SuppressWarnings("rawtypes") Class type) { return Key.class.isAssignableFrom(type); } @Override public String toString(Object obj) { return ((Key<?>) obj).getTypeLiteral().getRawType().getCanonicalName(); } @Override public Object fromString(String str) { try { return Key.get(classLoader.loadClass(str)); } catch (ClassNotFoundException e) { throw new WebApplicationException(e); } } public void setClassLoader(ClassLoader classLoader) { this.classLoader = classLoader; } }