    001    /*****************************************************************************
    002     * Copyright (C) PicoContainer Organization. All rights reserved.            *
    003     * ------------------------------------------------------------------------- *
    004     * The software in this package is published under the terms of the BSD      *
    005     * style license a copy of which has been included with this distribution in *
    006     * the LICENSE.txt file.                                                     *
    007     *                                                                           *
    008     *****************************************************************************/
    009    package org.picocontainer;
    010
    011    /**
    012     * A way to refer to objects that are stored in "awkward" places (for example inside a
    013     * <code>HttpSession</code> or {@link ThreadLocal}).
    014     * <p/>
    015     * This interface is typically implemented by someone integrating Pico into an existing container.
    016     *
    017     * @author Joe Walnes
    018     */
    019    public interface ObjectReference<T> {
    020        /**
    021         * Retrieve an actual reference to the object. Returns null if the reference is not available
    022         * or has not been populated yet.
    023         *
    024         * @return an actual reference to the object.
    025         */
    026        T get();
    027
    028        /**
    029         * Assign an object to the reference.
    030         *
    031         * @param item the object to assign to the reference. May be <code>null</code>.
    032         */
    033        void set(T item);
    034    }