    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     * Original code by                                                          *
    009     *****************************************************************************/
    010    package org.picocontainer.gems;
    011
    012    import org.picocontainer.gems.adapters.ThreadLocalizing;
    013    import org.picocontainer.gems.behaviors.AsmImplementationHiding;
    014    import org.picocontainer.gems.behaviors.HotSwapping;
    015    import org.picocontainer.gems.behaviors.Pooling;
    016    import org.picocontainer.gems.jmx.JMXExposing;
    017    import org.picocontainer.gems.monitors.CommonsLoggingComponentMonitor;
    018    import org.picocontainer.gems.monitors.Log4JComponentMonitor;
    019    import org.picocontainer.gems.monitors.Slf4jComponentMonitor;
    020    import org.picocontainer.ComponentMonitor;
    021    import org.picocontainer.BehaviorFactory;
    022
    023
    024    /**
    025     * Provides a series of factory methods to allow an &quot;index&quot; of the capabilities that you may find in
    026     * PicoContainer-Gems.
    027     * @author Paul Hammant
    028     */
    029    public class PicoGemsBuilder {
    030
    031            /**
    032             * Creates an {@link org.picocontainer.gems.behaviors.AsmImplementationHiding AsmImplementationHiding} behavior factory.
    033             * @return a new AsmImplementationHiding() instance.
    034             * @deprecated renamed to ASM_IMPL_HIDING() to better differentiate between JDK Proxy implementation hiding
    035             * and ASM-based implementation hiding.
    036             */
    037            @Deprecated
    038        public static BehaviorFactory IMPL_HIDING() {
    039            return new AsmImplementationHiding();
    040        }
    041
    042        /**
    043             * Creates an {@link org.picocontainer.gems.behaviors.AsmImplementationHiding AsmImplementationHiding} behavior factory.
    044             * @return a new AsmImplementationHiding() instance.
    045             * @since PicoContainer-Gems 2.4
    046         */
    047        public static BehaviorFactory ASM_IMPL_HIDING() {
    048            return new AsmImplementationHiding();
    049        }
    050
    051        /**
    052         * Creates a {@link org.picocontainer.gems.behaviors.HotSwapping HotSwapping} behavior factory.
    053         * @return
    054         */
    055        public static BehaviorFactory HOT_SWAPPING() {
    056            return new HotSwapping();
    057        }
    058
    059        /**
    060         * Only uses the system default mbean server.  See {@link org.picocontainer.gems.jmx.JMXExposing JMXExposing} for other
    061         * constructors that give you more flexibility in exposing your objects.
    062         * @return JMX Exposing behavior factory.
    063         */
    064        public static BehaviorFactory JMX() {
    065            return new JMXExposing();
    066        }
    067
    068        /**
    069         * Creates a thread localizing adapter factory.
    070         * @return
    071         */
    072        public static BehaviorFactory THREAD_LOCAL() {
    073            return new ThreadLocalizing();
    074        }
    075
    076        /**
    077         * Creates an instance pooling adapter factory.
    078         * @return
    079         */
    080        public static BehaviorFactory POOLING() {
    081            return new Pooling();
    082        }
    083
    084        /**
    085         * Creates a log4j component monitor instance.  You will need Log4j in your classpath for this method to work.
    086         * @return Log4j-based component monitor.
    087         */
    088        public static ComponentMonitor LOG4J() {
    089            return new Log4JComponentMonitor();
    090        }
    091
    092        /**
    093         * Creates a slf4j component monitor instance.  You will need SLF4j in your classpath for this method to work
    094         * properly.
    095         * @return SLF4j-based component monitor.
    096         */
    097        public static ComponentMonitor SLF4J() {
    098            return new Slf4jComponentMonitor();
    099        }
    100
    101        /**
    102         * Creates a Commons-Logging based component monitor instance.  You will need Apache Commons-Logging in your classpath
    103         * for this method to work properly.
    104         * @return Commons-Logging based component monitor.
    105         */
    106        public static ComponentMonitor COMMONS_LOGGING() {
    107            return new CommonsLoggingComponentMonitor();
    108        }
    109
    110
    111
    112
    113    }