// Copyright 2012 Citrix Systems, Inc. Licensed under the
// Apache License, Version 2.0 (the "License"); you may not use this
// file except in compliance with the License. Citrix Systems, Inc.
// reserves all rights not expressly granted by the License.
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.utils.mgmt;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.SortedSet;
import java.util.TreeSet;
import javax.management.Attribute;
import javax.management.AttributeList;
import javax.management.AttributeNotFoundException;
import javax.management.DynamicMBean;
import javax.management.InvalidAttributeValueException;
import javax.management.MBeanAttributeInfo;
import javax.management.MBeanException;
import javax.management.MBeanInfo;
import javax.management.ReflectionException;
public class PropertyMapDynamicBean implements DynamicMBean {
private Map<String, Object> _propMap = new HashMap<String, Object>();
public PropertyMapDynamicBean() {
}
public PropertyMapDynamicBean(Map<String, Object> propMap) {
_propMap = propMap;
}
@Override
public synchronized Object getAttribute(String name) throws AttributeNotFoundException, MBeanException, ReflectionException {
if(_propMap != null) {
return _propMap.get(name);
}
throw new AttributeNotFoundException("No such property " + name);
}
@Override
public synchronized AttributeList getAttributes(String[] names) {
AttributeList list = new AttributeList();
for (String name : names) {
Object value = _propMap.get(name);
if (value != null)
list.add(new Attribute(name, value));
}
return list;
}
@Override
public synchronized MBeanInfo getMBeanInfo() {
SortedSet<String> names = new TreeSet<String>();
for (String name : _propMap.keySet())
names.add(name);
MBeanAttributeInfo[] attrs = new MBeanAttributeInfo[names.size()];
Iterator<String> it = names.iterator();
for (int i = 0; i < attrs.length; i++) {
String name = it.next();
attrs[i] = new MBeanAttributeInfo(
name,
"java.lang.String",
name,
true, // isReadable
true, // isWritable
false); // isIs
}
return new MBeanInfo(
this.getClass().getName(),
"Dynamic MBean",
attrs,
null,
null,
null);
}
@Override
public synchronized Object invoke(String name, Object[] args, String[] sig) throws MBeanException, ReflectionException {
throw new ReflectionException(new NoSuchMethodException(name));
}
@Override
public synchronized void setAttribute(Attribute attr) throws AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException {
String name = attr.getName();
if(name != null)
_propMap.put(name, attr.getValue());
}
@Override
public synchronized AttributeList setAttributes(AttributeList list) {
Attribute[] attrs = (Attribute[]) list.toArray(new Attribute[0]);
AttributeList retList = new AttributeList();
for (Attribute attr : attrs) {
String name = attr.getName();
Object value = attr.getValue();
_propMap.put(name, value);
retList.add(new Attribute(name, value));
}
return retList;
}
public synchronized void addProp(String name, Object value) {
_propMap.put(name, value);
}
public synchronized Object getProp(String name) {
return _propMap.get(name);
}
}