package org.oddjob.jmx;
import org.oddjob.arooa.ArooaSession;
import org.oddjob.arooa.convert.ArooaConversionException;
import org.oddjob.arooa.life.ArooaSessionAware;
import org.oddjob.arooa.types.ValueFactory;
import org.oddjob.jmx.handlers.VanillaServerHandlerFactory;
import org.oddjob.jmx.server.ServerInterfaceHandlerFactory;
public class VanillaInterfaceHandler<T>
implements ValueFactory<ServerInterfaceHandlerFactory<T, T>>, ArooaSessionAware {
private ArooaSession session;
private String className;
public void setArooaSession(ArooaSession session) {
this.session = session;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
@SuppressWarnings("unchecked")
public ServerInterfaceHandlerFactory<T, T> toValue() throws ArooaConversionException {
if (className == null) {
throw new ArooaConversionException("No class name." );
}
Class<T> cl = (Class<T>) session.getArooaDescriptor().getClassResolver().findClass(className);
if (cl == null) {
throw new ArooaConversionException("Failed to find class " + className);
}
return new VanillaServerHandlerFactory<T>(cl);
}
}