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 Object invoking(PicoContainer container, 054 ComponentAdapter<?> componentAdapter, 055 Member member, 056 Object instance, Object[] args) { 057 return KEEP; 058 } 059 060 public void invoked(PicoContainer container, 061 ComponentAdapter<?> componentAdapter, 062 Member member, 063 Object instance, 064 long duration, Object[] args, Object retVal) { 065 } 066 067 public void invocationFailed(Member member, Object instance, Exception e) { 068 } 069 070 public void lifecycleInvocationFailed(MutablePicoContainer container, 071 ComponentAdapter<?> componentAdapter, Method method, 072 Object instance, 073 RuntimeException cause) { 074 if (cause instanceof PicoLifecycleException) { 075 throw cause; 076 } 077 throw new PicoLifecycleException(method, instance, cause); 078 } 079 080 public Object noComponentFound(MutablePicoContainer container, Object componentKey) { 081 return null; 082 } 083 084 public Injector newInjector(Injector injector) { 085 return injector; 086 } 087 088 /** {@inheritDoc} **/ 089 public Behavior newBehavior(Behavior behavior) { 090 return behavior; 091 } 092 093 094 }