package org.marketcetera.photon.internal.module; import javax.management.Attribute; import javax.management.ObjectName; import org.marketcetera.module.MXBeanOperationException; import org.marketcetera.module.ModuleURN; import org.marketcetera.photon.module.IModuleAttributeDefaults; import org.marketcetera.photon.module.IModuleAttributeSupport; import org.marketcetera.photon.module.ModuleSupport; import org.marketcetera.util.log.I18NBoundMessage2P; import org.marketcetera.util.misc.ClassVersion; /* $License$ */ /** * This implementation of {@link IModuleAttributeSupport} decorates a separate * {@link IModuleAttributeDefaults} provider, adding JMX support. * * @author <a href="mailto:will@marketcetera.com">Will Horn</a> * @version $Id: ModuleAttributeSupport.java 16154 2012-07-14 16:34:05Z colin $ * @since 1.1.0 */ @ClassVersion("$Id: ModuleAttributeSupport.java 16154 2012-07-14 16:34:05Z colin $") public class ModuleAttributeSupport implements IModuleAttributeSupport { private final IModuleAttributeDefaults mModuleAttributeDefaults; /** * Constructor. * * @param moduleAttributeDefaults * default support provider to extend */ public ModuleAttributeSupport(IModuleAttributeDefaults moduleAttributeDefaults) { mModuleAttributeDefaults = moduleAttributeDefaults; } @Override public String getDefaultFor(ModuleURN urn, String attribute) { return mModuleAttributeDefaults.getDefaultFor(urn, attribute); } @Override public void setDefaultFor(ModuleURN urn, String attribute, String value) { mModuleAttributeDefaults.setDefaultFor(urn, attribute, value); } @Override public void setInstanceDefaultFor(ModuleURN urn, String attribute, String value) { mModuleAttributeDefaults.setInstanceDefaultFor(urn, attribute, value); } @Override public void removeDefaultFor(ModuleURN urn, String attribute) { mModuleAttributeDefaults.removeDefaultFor(urn, attribute); } @Override public void removeInstanceDefaultFor(ModuleURN urn, String attribute) { mModuleAttributeDefaults.removeInstanceDefaultFor(urn, attribute); } @Override public void flush() { mModuleAttributeDefaults.flush(); } @Override public Object getModuleAttribute(ModuleURN urn, String attribute) throws MXBeanOperationException { ObjectName objectName = urn.toObjectName(); try { return ModuleSupport.getMBeanServerConnection().getAttribute(objectName, attribute); } catch (Exception e) { throw new MXBeanOperationException(e, new I18NBoundMessage2P( Messages.MODULE_ATTRIBUTE_SUPPORT_FAILED_TO_GET_ATTRIBUTE, attribute, urn)); } } @Override public void setModuleAttribute(ModuleURN urn, String attribute, Object value) throws MXBeanOperationException { ObjectName objectName = urn.toObjectName(); try { ModuleSupport.getMBeanServerConnection().setAttribute(objectName, new Attribute(attribute, value)); } catch (Exception e) { throw new MXBeanOperationException(e, new I18NBoundMessage2P( Messages.MODULE_ATTRIBUTE_SUPPORT_FAILED_TO_SET_ATTRIBUTE, attribute, urn)); } } }