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 Paul Hammant & Obie Fernandez & Aslak Hellesøy    *
009     *****************************************************************************/
010    
011    package org.picocontainer.monitors;
012    
013    import java.io.Serializable;
014    import java.lang.reflect.Constructor;
015    import java.lang.reflect.Member;
016    import java.lang.reflect.Method;
017    
018    import org.picocontainer.ComponentAdapter;
019    import org.picocontainer.ComponentMonitor;
020    import org.picocontainer.MutablePicoContainer;
021    import org.picocontainer.PicoContainer;
022    import org.picocontainer.PicoLifecycleException;
023    import org.picocontainer.Injector;
024    import org.picocontainer.Behavior;
025    
026    /**
027     * A {@link ComponentMonitor} which does nothing. 
028     * 
029     * @author Paul Hammant
030     * @author Obie Fernandez
031     */
032    @SuppressWarnings("serial")
033    public class NullComponentMonitor implements ComponentMonitor, Serializable {
034    
035        public <T> Constructor<T> instantiating(PicoContainer container, ComponentAdapter<T> componentAdapter,
036                                         Constructor<T> constructor) {
037            return constructor;
038        }
039    
040        public <T> void instantiationFailed(PicoContainer container,
041                                        ComponentAdapter<T> componentAdapter,
042                                        Constructor<T> constructor,
043                                        Exception e) {
044        }
045    
046        public <T> void instantiated(PicoContainer container, ComponentAdapter<T>  componentAdapter,
047                                 Constructor<T>  constructor,
048                                 Object instantiated,
049                                 Object[] injected,
050                                 long duration) {
051        }
052    
053        public void invoking(PicoContainer container,
054                             ComponentAdapter<?> componentAdapter,
055                             Member member,
056                             Object instance) {
057        }
058    
059        public void invoked(PicoContainer container,
060                            ComponentAdapter<?> componentAdapter,
061                            Method method,
062                            Object instance,
063                            long duration) {
064        }
065    
066        public void invocationFailed(Member member, Object instance, Exception e) {
067        }
068    
069        public void lifecycleInvocationFailed(MutablePicoContainer container,
070                                              ComponentAdapter<?> componentAdapter, Method method,
071                                              Object instance,
072                                              RuntimeException cause) {
073            if (cause instanceof PicoLifecycleException) {
074                throw cause;
075            }
076            throw new PicoLifecycleException(method, instance, cause);
077        }
078    
079        public Object noComponentFound(MutablePicoContainer container, Object componentKey) {
080            return null;
081        }
082    
083        public Injector newInjector(Injector injector) {
084            return injector;
085        }
086    
087        /** {@inheritDoc} **/
088        public Behavior newBehavior(Behavior behavior) {
089            return behavior;
090        }
091        
092    
093    }