001: /*
002: * BEGIN_HEADER - DO NOT EDIT
003: *
004: * The contents of this file are subject to the terms
005: * of the Common Development and Distribution License
006: * (the "License"). You may not use this file except
007: * in compliance with the License.
008: *
009: * You can obtain a copy of the license at
010: * https://open-esb.dev.java.net/public/CDDLv1.0.html.
011: * See the License for the specific language governing
012: * permissions and limitations under the License.
013: *
014: * When distributing Covered Code, include this CDDL
015: * HEADER in each file and include the License file at
016: * https://open-esb.dev.java.net/public/CDDLv1.0.html.
017: * If applicable add the following below this CDDL HEADER,
018: * with the fields enclosed by brackets "[]" replaced with
019: * your own identifying information: Portions Copyright
020: * [year] [name of copyright owner]
021: */
022:
023: /*
024: * @(#)RuntimeConfiguration.java
025: * Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
026: *
027: * END_HEADER - DO NOT EDIT
028: */
029: package com.sun.jbi.management.config;
030:
031: import com.sun.jbi.management.ConfigurationCategory;
032: import com.sun.jbi.management.LocalStringKeys;
033: import com.sun.jbi.management.registry.Updater;
034: import com.sun.jbi.management.registry.xml.RegistryDocument;
035: import com.sun.jbi.management.util.StringHelper;
036:
037: import java.util.Map;
038:
039: import javax.management.Attribute;
040: import javax.management.AttributeNotFoundException;
041: import javax.management.InvalidAttributeValueException;
042: import javax.management.MBeanException;
043: import javax.management.ReflectionException;
044:
045: import javax.management.MBeanInfo;
046: import javax.management.MBeanAttributeInfo;
047: import javax.management.modelmbean.ModelMBeanInfo;
048: import javax.management.modelmbean.ModelMBeanAttributeInfo;
049:
050: /**
051: * GlobalConfiguration is a model facade MBean. An instance of this MBean is registered
052: * for each configuration category. The RuntimeConfiguration MBean on the DAS uses the
053: * GlobalConfiguration MBean to configure the instance.
054: *
055: * @author Sun Microsystems, Inc.
056: */
057: public class GlobalConfiguration extends
058: com.sun.jbi.management.config.RuntimeConfiguration {
059: /** Domain literal */
060: private static final String DOMAIN = "domain";
061:
062: /** Creates a new GlobalConfiguration MBean.
063: * @param mbeanInfo metadata returned by the 'real' MBean in the
064: * target instance.
065: */
066: public GlobalConfiguration(ModelMBeanInfo mbeanInfo,
067: ConfigurationCategory category) throws Exception {
068: super (mbeanInfo, category, null);
069: }
070:
071: /*---------------------------------------------------------------------------------*\
072: * Dynamic MBean Attribute getter/setter *
073: \*---------------------------------------------------------------------------------*/
074:
075: /**
076: * Set the value of a specific attribute of the Dynamic MBean.
077: *
078: * @param attribute The identification of the attribute to
079: * be set and the value it is to be set to.
080: * @exception AttributeNotFoundException
081: * @exception InvalidAttributeValueException
082: * @exception MBeanException Wraps a <CODE>java.lang.Exception</CODE>
083: * thrown by the MBean's setter.
084: * @exception ReflectionException Wraps a <CODE>java.lang.Exception</CODE>
085: * thrown while trying to invoke the MBean's setter.
086: * @see #getAttribute
087: */
088: public void setAttribute(Attribute attribute)
089: throws AttributeNotFoundException,
090: InvalidAttributeValueException, MBeanException,
091: ReflectionException {
092:
093: // -- Persist global changes to the registry for all instances except "server"
094: // For the server instance the domain facade persists the domain config and
095: // new attribute override.
096: try {
097: if (!getEnvironmentContext().getPlatformContext()
098: .isAdminServer()) {
099: // If the domain configuration is not persisted, persist it now.
100: persistDomainConfig();
101:
102: Updater updater = getRegistry().getUpdater();
103: String attrValue = (attribute.getValue() == null ? "null"
104: : attribute.getValue().toString());
105: updater.setAttribute(DOMAIN, mCategory, attribute
106: .getName(), attrValue);
107: }
108: } catch (com.sun.jbi.management.registry.RegistryException ex) {
109:
110: String errMsg = getTranslator()
111: .getString(
112: LocalStringKeys.JBI_ADMIN_SET_GLOBAL_CFG_ATTRIB_FAILED,
113: attribute.getName(), mCategory.toString(),
114: ex.getMessage());
115: javax.jbi.JBIException jbiEx = new javax.jbi.JBIException(
116: errMsg);
117: throw new MBeanException(jbiEx, errMsg);
118: }
119: }
120:
121: /**
122: * Persist this configuration in the registry for the current category.
123: */
124: public void persist() throws Exception {
125:
126: super .persist();
127: }
128:
129: /**
130: * This operation is called when a configuration attribute is to use the
131: * global configuration, the overriden attribute needs to be deleted from the
132: * target configiration
133: *
134: * @param attrName - attribute to be deleted
135: */
136: public void deleteOverride(String attrName) throws Exception {
137: // Delete the attribute from the registry
138: Updater updater = getRegistry().getUpdater();
139: updater.deleteAttribute(mCategory, attrName);
140: }
141:
142: }
|