XmlSerializationContexts.java

package tools.jackson.dataformat.xml.ser;

import tools.jackson.core.TokenStreamFactory;

import tools.jackson.databind.*;
import tools.jackson.databind.cfg.GeneratorSettings;
import tools.jackson.databind.cfg.SerializationContexts;
import tools.jackson.databind.ser.SerializationContextExt;
import tools.jackson.databind.ser.SerializerCache;
import tools.jackson.databind.ser.SerializerFactory;
import tools.jackson.dataformat.xml.util.XmlRootNameLookup;

/**
 * Factory implementation we need to provide custom {@link SerializationContext}
 * variants.
 *
 * @since 3.0
 */
public class XmlSerializationContexts extends SerializationContexts
{
    private static final long serialVersionUID = 3L;

    // // Similar to base class, we do NOT want (or need) to JDK serialize anything,
    // // other than ensure right class is unthawed. This because serialization of
    // // ObjectMapper retains MapperState, which has "empty" instance of this object
    // // but will call `forMapper(...)` when JDK deserialized, setting up fields.
    
    protected final transient XmlRootNameLookup _rootNameLookup;
    
    public XmlSerializationContexts() {
        _rootNameLookup = null;
    }

    protected  XmlSerializationContexts(TokenStreamFactory tsf,
            SerializerFactory serializerFactory, SerializerCache cache,
            XmlRootNameLookup roots) {
        super(tsf, serializerFactory, cache);
        _rootNameLookup = roots;
    }

    @Override
    public SerializationContexts forMapper(Object mapper,
            TokenStreamFactory tsf, SerializerFactory serializerFactory,
            SerializerCache cache) {
        return new XmlSerializationContexts(tsf, serializerFactory, cache,
                new XmlRootNameLookup());
    }

    @Override
    public SerializationContextExt createContext(SerializationConfig config,
            GeneratorSettings genSettings) {
        return new XmlSerializationContext(_streamFactory,
                config, genSettings, _serializerFactory, _cache,
                _rootNameLookup);
    }
}