/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.exec.jmx;
import javax.management.InstanceAlreadyExistsException;
import javax.management.JMException;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.opengamma.engine.exec.MultipleNodeExecutorFactory;
/**
* MultipleNodeExecutorMBean implementation.
*/
public final class MultipleNodeExecutor implements MultipleNodeExecutorMBean {
private static final Logger s_logger = LoggerFactory.getLogger(MultipleNodeExecutor.class);
private final MultipleNodeExecutorFactory _underlying;
private MultipleNodeExecutor(final MultipleNodeExecutorFactory underlying) {
_underlying = underlying;
}
private MultipleNodeExecutorFactory getUnderlying() {
return _underlying;
}
public static void registerMBeans(final MultipleNodeExecutorFactory executor, final MBeanServer server) throws JMException {
final ObjectName name = new ObjectName("com.opengamma:type=MultipleNodeExecutor,name=" + executor.toString());
final MultipleNodeExecutor instance = new MultipleNodeExecutor(executor);
try {
server.registerMBean(instance, name);
} catch (InstanceAlreadyExistsException e) {
s_logger.warn("JMX MBean {} already exists - replacing", name);
server.unregisterMBean(name);
server.registerMBean(instance, name);
}
}
@Override
public int getMaximumConcurrency() {
return getUnderlying().getMaximumConcurrency();
}
@Override
public long getMaximumJobCost() {
return getUnderlying().getMaximumJobCost();
}
@Override
public int getMaximumJobItems() {
return getUnderlying().getMaximumJobItems();
}
@Override
public long getMinimumJobCost() {
return getUnderlying().getMinimumJobCost();
}
@Override
public int getMinimumJobItems() {
return getUnderlying().getMinimumJobItems();
}
@Override
public void setMaximumConcurrency(int maximumConcurrency) {
getUnderlying().setMaximumConcurrency(maximumConcurrency);
getUnderlying().invalidateCache();
}
@Override
public void setMaximumJobCost(long maximumJobCost) {
getUnderlying().setMaximumJobCost(maximumJobCost);
getUnderlying().invalidateCache();
}
@Override
public void setMaximumJobItems(int maximumJobItems) {
getUnderlying().setMaximumJobItems(maximumJobItems);
getUnderlying().invalidateCache();
}
@Override
public void setMinimumJobCost(long minimumJobCost) {
getUnderlying().setMinimumJobCost(minimumJobCost);
getUnderlying().invalidateCache();
}
@Override
public void setMinimumJobItems(int minimumJobItems) {
getUnderlying().setMinimumJobItems(minimumJobItems);
getUnderlying().invalidateCache();
}
}