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

org.nanocontainer.aop..svn.text-base.AspectablePicoContainerFactory.svn-base Maven / Gradle / Ivy

/*****************************************************************************
 * Copyright (c) PicoContainer Organization. All rights reserved.            *
 * ------------------------------------------------------------------------- *
 * The software in this package is published under the terms of the BSD      *
 * style license a copy of which has been included with this distribution in *
 * the LICENSE.txt file.                                                     *
 *                                                                           *
 * Idea by Rachel Davies, Original code by various                           *
 *****************************************************************************/
package org.nanocontainer.aop;

import org.picocontainer.PicoContainer;
import org.picocontainer.defaults.ComponentAdapterFactory;

/**
 * Produces AspectablePicoContainer objects. Mixes in an
 * AspectsContainer with a
 * org.picocontainer.MutablePicoContainer to produce an
 * AspectablePicoContainer.
 *
 * @author Stephen Molitor
 * @author Mauro Talevi
 * @version $Revision$
 */
public interface AspectablePicoContainerFactory {

    /**
     * Creates a new AspectablePicoContainer.
     *
     * @param containerClass          the class of the basic container to delegate to.
     * @param aspectsManager          the aspects manager used to register and apply
     *                                aspects.
     * @param componentAdapterFactory the delegate component adapter factory
     *                                used to produce components.
     * @param parent                  the parent container.
     * @return a new AspectablePicoContainer.
     */
    public AspectablePicoContainer createContainer(Class containerClass, AspectsManager aspectsManager,
                                                   ComponentAdapterFactory componentAdapterFactory, PicoContainer parent);

    /**
     * Creates a new AspectablePicoContainer.
     *
     * @param containerClass          the class of the basic container to delegate to.
     * @param componentAdapterFactory the delegate component adapter factory
     *                                used to produce components.
     * @param parent                  the parent container.
     * @return a new AspectablePicoContainer.
     */
    AspectablePicoContainer createContainer(Class containerClass, ComponentAdapterFactory componentAdapterFactory,
                                            PicoContainer parent);

    /**
     * Creates a new AspectablePicoContainer. Uses
     * org.picocontainer.defaults.DefaultPicoContainer as the
     * delegate container.
     *
     * @param componentAdapterFactory the delegate component adapter factory
     *                                used to produce components.
     * @param parent                  the parent container.
     * @return a new AspectablePicoContainer.
     */
    AspectablePicoContainer createContainer(ComponentAdapterFactory componentAdapterFactory, PicoContainer parent);

    /**
     * Creates a new AspectablePicoContainer. Uses
     * org.picocontainer.defaults.DefaultPicoContainer as the
     * delegate container.
     *
     * @param componentAdapterFactory the delegate component adapter factory
     *                                used to produce components.
     * @return a new AspectablePicoContainer.
     */
    AspectablePicoContainer createContainer(ComponentAdapterFactory componentAdapterFactory);

    /**
     * Creates a new AspectablePicoContainer. Uses
     * org.picocontainer.defaults.DefaultPicoContainer as the
     * delegate container. Uses
     * org.picocontainer.defaults.DefaultComponentAdapterFactory
     * as the delegate component adapter factory.
     *
     * @param parent the parent container.
     * @return a new AspectablePicoContainer.
     */
    AspectablePicoContainer createContainer(PicoContainer parent);

    /**
     * Creates a new AspectablePicoContainer. Uses
     * org.picocontainer.defaults.DefaultPicoContainer as the
     * delegate container. Uses
     * org.picocontainer.defaults.DefaultComponentAdapterFactory
     * as the delegate component adapter factory.
     *
     * @return a new AspectablePicoContainer.
     */
    AspectablePicoContainer createContainer();

    /**
     * Make a child AspectablePicoContainer of a given AspectablePicoContainer.
     * The child container will be obtained aspectifying MutablePicoContainer#makeChildContainer().
     * 
     * @param aspectsManager the aspects manager used to register and apply aspects.
     * @param parent the parent AspectablePicoContainer
     * @return A child AspectablePicoContainer
     */    
    AspectablePicoContainer makeChildContainer(AspectsManager aspectsManager, AspectablePicoContainer parent);

    /**
     * Make a child AspectablePicoContainer of a given AspectablePicoContainer
     * The child container will be obtained aspectifying MutablePicoContainer#makeChildContainer().
     * 
     * @param parent the parent AspectablePicoContainer
     * @return A child AspectablePicoContainer
     */    
    AspectablePicoContainer makeChildContainer(AspectablePicoContainer parent);

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy