com.feilong.lib.xstream.converters.reflection.LambdaConverter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of feilong Show documentation
Show all versions of feilong Show documentation
feilong is a suite of core and expanded libraries that include utility classes, http, excel,cvs, io classes, and much much more.
/*
* Copyright (C) 2015 XStream Committer.
* All rights reserved.
*
* Created on 17. January 2015 by Joerg Schaible
*/
package com.feilong.lib.xstream.converters.reflection;
import java.io.Serializable;
import com.feilong.lib.xstream.converters.MarshallingContext;
import com.feilong.lib.xstream.core.ClassLoaderReference;
import com.feilong.lib.xstream.core.JVM;
import com.feilong.lib.xstream.core.util.Types;
import com.feilong.lib.xstream.io.HierarchicalStreamWriter;
import com.feilong.lib.xstream.mapper.Mapper;
/**
* Converts a lambda type.
*
* The implementation maps any non-serializable lambda instance to {@code null}.
*
* @author Jörg Schaible
* @since 1.4.8
*/
public class LambdaConverter extends SerializableConverter{
/**
* Constructs a LambdaConverter.
*
* @param mapper
* @param reflectionProvider
* @param classLoaderReference
* @since 1.4.8
*/
public LambdaConverter(final Mapper mapper, final ReflectionProvider reflectionProvider,
final ClassLoaderReference classLoaderReference){
super(mapper, reflectionProvider, classLoaderReference);
}
@Override
public boolean canConvert(final Class type){
return Types.isLambdaType(type) && (JVM.canCreateDerivedObjectOutputStream() || !Serializable.class.isAssignableFrom(type));
}
@Override
public void marshal(final Object original,final HierarchicalStreamWriter writer,final MarshallingContext context){
if (original instanceof Serializable){
super.marshal(original, writer, context);
}
}
}