All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.feilong.lib.xstream.converters.reflection.LambdaConverter Maven / Gradle / Ivy

Go to download

feilong is a suite of core and expanded libraries that include utility classes, http, excel,cvs, io classes, and much much more.

There is a newer version: 4.0.8
Show newest version
/*
 * 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);
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy