/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.engine.management; import java.util.HashSet; import java.util.Set; import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import com.opengamma.OpenGammaRuntimeException; import com.opengamma.engine.view.ViewProcessor; import com.opengamma.engine.view.impl.ViewProcessorInternal; import com.opengamma.id.UniqueId; import com.opengamma.util.ArgumentChecker; /** * An MBean implementation for those attributes and operations we wish to expose on ViewProcessor. * */ public final class ViewProcessorMBeanImpl implements ViewProcessorMBean { /** * A ViewProcessor backing instance */ private final ViewProcessorInternal _viewProcessor; private final ObjectName _objectName; /** * Create a management ViewProcessor * * @param viewProcessor the underlying ViewProcessor * @param splitByViewProcessor */ public ViewProcessorMBeanImpl(ViewProcessorInternal viewProcessor, boolean splitByViewProcessor) { ArgumentChecker.notNull(viewProcessor, "View Processor"); _viewProcessor = viewProcessor; _objectName = createObjectName(viewProcessor, splitByViewProcessor); } /** * Creates an object name using the scheme "com.opengamma:type=ViewProcessor,name=<viewProcessorName>" */ static ObjectName createObjectName(ViewProcessor viewProcessor, boolean splitByViewProcessor) { try { return new ObjectName(splitByViewProcessor ? "com.opengamma:type=ViewProcessors,ViewProcessor=ViewProcessor " + viewProcessor.getName() + ",name=ViewProcessor " + viewProcessor.getName() : "com.opengamma:type=ViewProcessor,name=ViewProcessor " + viewProcessor.getName()); } catch (MalformedObjectNameException e) { throw new OpenGammaRuntimeException("", e); } } @Override public Set<UniqueId> getViewProcesses() { Set<UniqueId> result = new HashSet<UniqueId>(); for (com.opengamma.engine.view.ViewProcess viewProcess : _viewProcessor.getViewProcesses()) { result.add(viewProcess.getUniqueId()); } return result; } @Override public int getNumberOfViewProcesses() { return _viewProcessor.getViewProcesses().size(); // == getViewProcesses().size(); } /** * Gets the objectName field. * * @return the object name for this MBean */ public ObjectName getObjectName() { return _objectName; } @Override public void start() { _viewProcessor.start(); } @Override public void stop() { _viewProcessor.stop(); } @Override public boolean isRunning() { return _viewProcessor.isRunning(); } }