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 Hammaant * 009 *****************************************************************************/ 010 011 package org.picocontainer.monitors; 012 013 import java.text.MessageFormat; 014 import java.lang.reflect.Constructor; 015 import java.lang.reflect.Method; 016 017 import org.picocontainer.ComponentMonitor; 018 019 /** 020 * An abstract {@link ComponentMonitor} which supports all the message formats. 021 * 022 * @author Mauro Talevi 023 * @version $Revision: $ 024 */ 025 public abstract class AbstractComponentMonitor implements ComponentMonitor { 026 027 public final static String INSTANTIATING = "PicoContainer: instantiating {0}"; 028 public final static String INSTANTIATED = "PicoContainer: instantiated {0} [{1} ms]"; 029 public final static String INSTANTIATED2 = "PicoContainer: instantiated {0} [{1} ms], component {2}, injected [{3}]"; 030 public final static String INSTANTIATION_FAILED = "PicoContainer: instantiation failed: {0}, reason: {1}"; 031 public final static String INVOKING = "PicoContainer: invoking {0} on {1}"; 032 public final static String INVOKED = "PicoContainer: invoked {0} on {1} [{2} ms]"; 033 public final static String INVOCATION_FAILED = "PicoContainer: invocation failed: {0} on {1}, reason: {2}"; 034 public final static String LIFECYCLE_INVOCATION_FAILED = "PicoContainer: lifecycle invocation failed: {0} on {1}, reason: {2}"; 035 036 public static String format(String template, Object[] arguments) { 037 return MessageFormat.format(template, arguments); 038 } 039 040 public static String toString(Object[] injected) { 041 StringBuffer sb = new StringBuffer(); 042 for (int i = 0; i < injected.length; i++) { 043 String s = injected[i].getClass().getName(); 044 sb.append(s); 045 if (i < injected.length-1) { 046 sb.append(", "); 047 } 048 } 049 return sb.toString(); 050 } 051 052 public static String toString(Constructor constructor) { 053 Class[] params = constructor.getParameterTypes(); 054 StringBuffer sb = new StringBuffer(constructor.getName()); 055 sb.append("("); 056 for (int i = 0; i < params.length; i++) { 057 String s = params[i].getName(); 058 sb.append(s); 059 if (i < params.length-1) { 060 sb.append(", "); 061 } 062 } 063 sb.append(")"); 064 return sb.toString(); 065 } 066 067 public static String toString(Method method) { 068 Class[] params = method.getParameterTypes(); 069 StringBuffer sb = new StringBuffer(method.getName()); 070 sb.append("("); 071 for (int i = 0; i < params.length; i++) { 072 String s = params[i].getName(); 073 sb.append(s); 074 if (i < params.length-1) { 075 sb.append(", "); 076 } 077 } 078 sb.append(")"); 079 return sb.toString(); 080 } 081 082 083 }