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    }