/*
 * MBeanInvokerHandler.java
 *
 * Created on July 15, 2001, 1:08 PM
 */

package org.apache.avalon.excalibur.component.jmx;

import javax.management.*;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 *
 * @author  Administrator
 * @version 
 */
public class MBeanInvocationHandler implements InvocationHandler {
    
    private MBeanServer server;
    private ObjectName objectName;

    /** Creates new MBeanInvokerHandler */
    public MBeanInvocationHandler(MBeanServer server, ObjectName objectName) {
        this.server = server;
        this.objectName = objectName;
    }

    public Object invoke(Object obj, Method method, Object[] args) 
        throws Throwable {
        
        String[] sigs = new String[args.length];        
        for (int i = 0; i < args.length; i++) {
            sigs[i] = args[i].getClass().getName();
        }                
        
        return this.server.
            invoke(this.objectName, method.getName(), args, sigs);
    }
    
}
