    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     * Idea by Rachel Davies, Original code by various                           *
    009     *****************************************************************************/
    010    package org.nanocontainer.aop.dynaop;
    011
    012    import dynaop.MixinFactory;
    013    import dynaop.Proxy;
    014
    015    import java.util.Properties;
    016
    017    /**
    018     * Produces mixin advice from a mixin instance object.
    019     *
    020     * @author Stephen Molitor
    021     * @version $Revision: 3144 $
    022     */
    023    public class InstanceMixinFactory implements MixinFactory {
    024
    025        private final Object instance;
    026
    027        /**
    028         * Creates a new <code>InstanceMixinFactory</code> with the given mixin
    029         * instance.
    030         *
    031         * @param instance the mixin instance.
    032         */
    033        public InstanceMixinFactory(Object instance) {
    034            this.instance = instance;
    035        }
    036
    037        /**
    038         * Returns the mixin instance passed to the constructor.
    039         *
    040         * @param proxy not used.
    041         * @return the mixin instance object passed to the constructor.
    042         */
    043        public Object create(Proxy proxy) {
    044            return instance;
    045        }
    046
    047        /**
    048         * Used for debugging.
    049         *
    050         * @return a set of properties useful for debugging.
    051         */
    052        public Properties getProperties() {
    053            Properties properties = new Properties();
    054            properties.setProperty("advice", "instance mixin");
    055            return properties;
    056        }
    057
    058    }