/** * Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.engine.management; import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import com.opengamma.OpenGammaRuntimeException; import com.opengamma.engine.view.ViewComputationResultModel; import com.opengamma.engine.view.client.ViewClient; import com.opengamma.engine.view.client.ViewClientState; import com.opengamma.id.UniqueId; import com.opengamma.util.ArgumentChecker; /** * An MBean implementation for those attributes and operations we wish to expose on a {@link com.opengamma.engine.view.client.ViewClient}. */ public class ViewClientMBeanImpl implements ViewClientMBean { /** * Underlying */ private final com.opengamma.engine.view.client.ViewClient _viewClient; private final ObjectName _objectName; /** * Creates a management view client * * @param viewClient the underlying view client * @param splitByViewProcessor should the MBean name differentiate beans by view processor */ public ViewClientMBeanImpl(ViewClient viewClient, boolean splitByViewProcessor) { ArgumentChecker.notNull(viewClient, "viewClient"); _viewClient = viewClient; _objectName = createObjectName(viewClient.getViewProcessor().getName(), viewClient.getUniqueId(), splitByViewProcessor); } /** * Creates an object name using the scheme "com.opengamma:type=ViewClient,ViewProcessor=<viewProcessorName>,name=<viewClientId>" */ /*package*/ static ObjectName createObjectName(String viewProcessorName, UniqueId viewClientId, boolean splitByViewProcessor) { try { String beanNamePrefix = splitByViewProcessor ? "com.opengamma:type=ViewProcessors,ViewProcessor=ViewProcessor " + viewProcessorName : "com.opengamma:type=ViewProcessor"; return new ObjectName(beanNamePrefix + ",ViewClients=ViewClients,name=ViewClient " + viewClientId.getValue()); } catch (MalformedObjectNameException e) { throw new OpenGammaRuntimeException("Error whilst attempting to register JMX Bean", e); } } /** * Gets the objectName field. * * @return the object name for this MBean */ public ObjectName getObjectName() { return _objectName; } //------------------------------------------------------------------------- @Override public UniqueId getUniqueId() { return _viewClient.getUniqueId(); } @Override public String getUser() { return _viewClient.getUser().getUserName(); } @Override public ViewClientState getState() { return _viewClient.getState(); } @Override public boolean isAttached() { return _viewClient.isAttached(); } //------------------------------------------------------------------------- @Override public void setUpdatePeriod(long periodMillis) { _viewClient.setUpdatePeriod(periodMillis); } @Override public void pause() { _viewClient.pause(); } @Override public void resume() { _viewClient.resume(); } @Override public boolean isCompleted() { return _viewClient.isCompleted(); } @Override public boolean isResultAvailable() { return _viewClient.isResultAvailable(); } @Override public ViewComputationResultModel getLatestResult() { return _viewClient.getLatestResult(); } //------------------------------------------------------------------------- @Override public boolean isViewCycleAccessSupported() { return _viewClient.isViewCycleAccessSupported(); } @Override public void setViewCycleAccessSupported(boolean isViewCycleAccessSupported) { _viewClient.setViewCycleAccessSupported(isViewCycleAccessSupported); } //------------------------------------------------------------------------- @Override public void shutdown() { _viewClient.shutdown(); } }