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 }