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

org.commonjava.maven.plugins.monolith.util.TLHolder Maven / Gradle / Ivy

package org.commonjava.maven.plugins.monolith.util;

public class TLHolder
{

    private final ThreadLocal tl = new ThreadLocal();

    private final Initializer initializer;

    public interface Initializer
    {
        C create();
    }

    public TLHolder( final Initializer initializer )
    {
        this.initializer = initializer;
    }

    public void set( final T value )
    {
        tl.set( value );
    }

    public T rawGet()
    {
        return tl.get();
    }

    public T get()
    {
        T value = tl.get();
        if ( value == null )
        {
            value = initializer.create();
            tl.set( value );
        }

        return value;
    }

    public T clear()
    {
        final T value = tl.get();
        System.out.println( "Clearing thread-local value: " + value );
        tl.set( null );

        return value;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy