/** @see #operation(ObjectName, String, Object ...) */ public Object operation(String objectName, String method, Object... arguments) { return operation(createObjectName(objectName), method, arguments); }
@Override public Object call() throws Exception { if (log.isDebugEnabled()) log.debug("jmx operation polling for {} sensors at {} -> {}", new Object[] {getEntity(), getJmxUri(), operationName}); if (signature.size() == params.size()) { return getHelper().operation(objectName, operationName, signature, params); } else { return getHelper().operation(objectName, operationName, params.toArray()); } } },
@Override public void delete() { jmxHelper.operation(brokerMBeanName, "removeTopic", getName()); disconnectSensors(); }
@Override public void delete() { jmxHelper.operation(brokerMBeanName, "removeQueue", getName()); disconnectSensors(); }
@Override public void create() { jmxHelper.operation(brokerMBeanName, "addTopic", getName()); connectSensors(); }
@Override public void create() { log.debug("{} adding queue {} to broker {}", new Object[] {this, getName(), jmxHelper.getAttribute(brokerMBeanName, "BrokerName")}); jmxHelper.operation(brokerMBeanName, "addQueue", getName()); connectSensors(); }
@Test public void testInvokeOperationUsingObjectNameWildcard() throws Exception { final String opReturnVal = "my result"; MBeanOperationInfo opInfo = new MBeanOperationInfo(opName, "my descr", new MBeanParameterInfo[0], String.class.getName(), MBeanOperationInfo.ACTION); Function<Object[], String> opImpl = new Function<Object[], String>() { @Override public String apply(Object[] args) { assertEquals(args.length, 0, "args="+args); return opReturnVal; } }; GeneralisedDynamicMBean mbean = jmxService.registerMBean(ImmutableMap.of(), ImmutableMap.of(opInfo, opImpl), objectName); assertEquals(jmxHelper.operation(objectNameWithWildcard, opName), opReturnVal); }
@Test public void testInvokeOperationWithNoArgs() throws Exception { final String opReturnVal = "my result"; MBeanOperationInfo opInfo = new MBeanOperationInfo(opName, "my descr", new MBeanParameterInfo[0], String.class.getName(), MBeanOperationInfo.ACTION); Function<Object[], String> opImpl = new Function<Object[], String>() { @Override public String apply(Object[] args) { assertEquals(args.length, 0, "args="+args); return opReturnVal; } }; GeneralisedDynamicMBean mbean = jmxService.registerMBean(ImmutableMap.of(), ImmutableMap.of(opInfo, opImpl), objectName); assertEquals(jmxHelper.operation(objectName, opName), opReturnVal); }
@Test public void testInvokeOperationWithArgs() throws Exception { final String opReturnPrefix = "my result prefix/"; String opParam1 = "my param 1"; MBeanOperationInfo opInfo = new MBeanOperationInfo( opName, "my descr", new MBeanParameterInfo[] {new MBeanParameterInfo("myParam1", String.class.getName(), "my param1 descr")}, String.class.getName(), MBeanOperationInfo.ACTION); Function<Object[],String> opImpl = new Function<Object[],String>() { @Override public String apply(Object[] input) { return opReturnPrefix+input[0]; } }; GeneralisedDynamicMBean mbean = jmxService.registerMBean(ImmutableMap.of(), ImmutableMap.of(opInfo, opImpl), objectName); assertEquals(jmxHelper.operation(objectName, opName, opParam1), opReturnPrefix+opParam1); }