package org.oddjob.jmx.handlers;
import java.lang.reflect.Proxy;
import org.oddjob.framework.Exportable;
import org.oddjob.framework.Transportable;
import org.oddjob.jmx.client.ClientInterfaceHandlerFactory;
import org.oddjob.jmx.client.ClientSideToolkit;
import org.oddjob.jmx.client.HandlerVersion;
/**
* Provide Handlers for the {@link org.oddjob.framework.Exportable} interface.
* <p>
* This is a special handler because Exportable is a
* fake client side interface.
*
* @author rob
*/
public class ExportableHandlerFactory
implements ClientInterfaceHandlerFactory<Exportable> {
public static final HandlerVersion VERSION = new HandlerVersion(1, 0);
/*
* (non-Javadoc)
* @see org.oddjob.jmx.server.ServerInterfaceHandlerFactory#interfaceClass()
*/
public Class<Exportable> interfaceClass() {
return Exportable.class;
}
public HandlerVersion getVersion() {
return VERSION;
}
public Exportable createClientHandler(Exportable proxy, ClientSideToolkit toolkit) {
return new ClientExportableHandler(proxy);
}
class ClientExportableHandler implements Exportable {
private final Exportable invocationHandler;
ClientExportableHandler(Exportable proxy) {
invocationHandler = (Exportable) Proxy.getInvocationHandler(proxy);
}
public Transportable exportTransportable() {
return invocationHandler.exportTransportable();
}
}
}