package org.infinispan.tools.jdbc.migrator.marshaller.externalizers; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; import java.util.Collections; import java.util.List; import java.util.Set; import org.infinispan.commons.marshall.AbstractExternalizer; import org.infinispan.commons.util.Util; import net.jcip.annotations.Immutable; /** * @author Ryan Emerson * @since 9.0 */ @Immutable public class SingletonListExternalizer extends AbstractExternalizer<List<?>> { @Override public void writeObject(ObjectOutput output, List<?> list) throws IOException { output.writeObject(list.get(0)); } @Override public List<?> readObject(ObjectInput input) throws IOException, ClassNotFoundException { return Collections.singletonList(input.readObject()); } @Override public Integer getId() { return LegacyIds.SINGLETON_LIST; } @Override public Set<Class<? extends List<?>>> getTypeClasses() { // This is loadable from any classloader return Util.<Class<? extends List<?>>>asSet(Util.<List<?>>loadClass("java.util.Collections$SingletonList", null)); } }