public void onEvent(final WorkItem wi)
{
if (wi.getType() == METHOD_CALL)
{
MethodCallWorkItem item = (MethodCallWorkItem)wi;
MethodCallParams methodCallParams = item.getMethodCallParams();
String methodName = methodCallParams.getName();
ObjectId objectId = methodCallParams.getObjectId();
// Look up QmfAgentData by ObjectId from the Agent's internal Object store.
QmfAgentData object = _agent.getObject(objectId);
if (object == null)
{
_agent.raiseException(item.getHandle(), "No object found with ID=" + objectId);
}
else
{
// If we've found a valid QmfAgentData check it's a Broker or Queue and if so call the generic
// invokeMethod on these objects, if not send an Exception as we don't support methods on
// other classes yet.
if (object instanceof org.apache.qpid.server.qmf2.agentdata.Broker)
{
org.apache.qpid.server.qmf2.agentdata.Broker broker =
(org.apache.qpid.server.qmf2.agentdata.Broker) object;
broker.invokeMethod(_agent, item.getHandle(), methodName, methodCallParams.getArgs());
}
else if (object instanceof org.apache.qpid.server.qmf2.agentdata.Queue)
{
org.apache.qpid.server.qmf2.agentdata.Queue queue =
(org.apache.qpid.server.qmf2.agentdata.Queue) object;
queue.invokeMethod(_agent, item.getHandle(), methodName, methodCallParams.getArgs());
}
else
{
_agent.raiseException(item.getHandle(), "Unknown Method " + methodName + " on " +
object.getClass().getSimpleName());