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    }