SmileFactoryBuilder.java

package tools.jackson.dataformat.smile;

import tools.jackson.core.ErrorReportConfiguration;
import tools.jackson.core.StreamReadConstraints;
import tools.jackson.core.StreamWriteConstraints;
import tools.jackson.core.base.DecorableTSFactory.DecorableTSFBuilder;

/**
 * {@link tools.jackson.core.TSFBuilder}
 * implementation for constructing {@link SmileFactory}
 * instances.
 */
public class SmileFactoryBuilder extends DecorableTSFBuilder<SmileFactory, SmileFactoryBuilder>
{
    /*
    /**********************************************************
    /* Life cycle
    /**********************************************************
     */

    protected SmileFactoryBuilder() {
        super(StreamReadConstraints.defaults(), StreamWriteConstraints.defaults(),
                ErrorReportConfiguration.defaults(),
                SmileFactory.DEFAULT_SMILE_PARSER_FEATURE_FLAGS,
                SmileFactory.DEFAULT_SMILE_GENERATOR_FEATURE_FLAGS);
    }

    public SmileFactoryBuilder(SmileFactory base) {
        super(base);
    }

    @Override
    public SmileFactory build() {
        // No special settings beyond base class ones, so:
        return new SmileFactory(this);
    }

    /*
    /**********************************************************
    /* Configuration: on/off features
    /**********************************************************
     */

    // // // Parser features

    public SmileFactoryBuilder enable(SmileReadFeature f) {
        _formatReadFeatures |= f.getMask();
        return _this();
    }

    public SmileFactoryBuilder enable(SmileReadFeature first, SmileReadFeature... other) {
        _formatReadFeatures |= first.getMask();
        for (SmileReadFeature f : other) {
            _formatReadFeatures |= f.getMask();
        }
        return _this();
    }

    public SmileFactoryBuilder disable(SmileReadFeature f) {
        _formatReadFeatures &= ~f.getMask();
        return _this();
    }

    public SmileFactoryBuilder disable(SmileReadFeature first, SmileReadFeature... other) {
        _formatReadFeatures &= ~first.getMask();
        for (SmileReadFeature f : other) {
            _formatReadFeatures &= ~f.getMask();
        }
        return _this();
    }

    public SmileFactoryBuilder configure(SmileReadFeature f, boolean state) {
        return state ? enable(f) : disable(f);
    }

    // // // Generator features

    public SmileFactoryBuilder enable(SmileWriteFeature f) {
        _formatWriteFeatures |= f.getMask();
        return _this();
    }

    public SmileFactoryBuilder enable(SmileWriteFeature first, SmileWriteFeature... other) {
        _formatWriteFeatures |= first.getMask();
        for (SmileWriteFeature f : other) {
            _formatWriteFeatures |= f.getMask();
        }
        return _this();
    }

    public SmileFactoryBuilder disable(SmileWriteFeature f) {
        _formatWriteFeatures &= ~f.getMask();
        return _this();
    }

    public SmileFactoryBuilder disable(SmileWriteFeature first, SmileWriteFeature... other) {
        _formatWriteFeatures &= ~first.getMask();
        for (SmileWriteFeature f : other) {
            _formatWriteFeatures &= ~f.getMask();
        }
        return _this();
    }

    public SmileFactoryBuilder configure(SmileWriteFeature f, boolean state) {
        return state ? enable(f) : disable(f);
    }
}