Frames | No Frames |
1: /* AttributeValueExp.java -- Represents attributes to be passed to queries. 2: Copyright (C) 2007 Free Software Foundation, Inc. 3: 4: This file is part of GNU Classpath. 5: 6: GNU Classpath is free software; you can redistribute it and/or modify 7: it under the terms of the GNU General Public License as published by 8: the Free Software Foundation; either version 2, or (at your option) 9: any later version. 10: 11: GNU Classpath is distributed in the hope that it will be useful, but 12: WITHOUT ANY WARRANTY; without even the implied warranty of 13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14: General Public License for more details. 15: 16: You should have received a copy of the GNU General Public License 17: along with GNU Classpath; see the file COPYING. If not, write to the 18: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19: 02110-1301 USA. 20: 21: Linking this library statically or dynamically with other modules is 22: making a combined work based on this library. Thus, the terms and 23: conditions of the GNU General Public License cover the whole 24: combination. 25: 26: As a special exception, the copyright holders of this library give you 27: permission to link this library with independent modules to produce an 28: executable, regardless of the license terms of these independent 29: modules, and to copy and distribute the resulting executable under 30: terms of your choice, provided that you also meet, for each linked 31: independent module, the terms and conditions of the license of that 32: module. An independent module is a module which is not derived from 33: or based on this library. If you modify this library, you may extend 34: this exception to your version of the library, but you are not 35: obligated to do so. If you do not wish to do so, delete this 36: exception statement from your version. */ 37: 38: package javax.management; 39: 40: /** 41: * Represents an attribute value being used as an argument 42: * to a relational constraint. 43: * 44: * @author Andrew John Hughes (gnu_andrew@member.fsf.org) 45: * @since 1.5 46: */ 47: public class AttributeValueExp 48: implements ValueExp 49: { 50: 51: /** 52: * Compatible with JDK 1.5 53: */ 54: private static final long serialVersionUID = -7768025046539163385L; 55: 56: /** 57: * The name of the attribute. 58: */ 59: private String attr; 60: 61: /** 62: * Constructs a new {@link AttributeValueExp}. 63: * 64: * @deprecated An instance created with a <code>null</code> 65: * attribute name can not be used in a query. 66: */ 67: @Deprecated public AttributeValueExp() 68: { 69: } 70: 71: /** 72: * Constructs a new {@link AttributeValueExp} using the 73: * specified attribute. 74: * 75: * @param attr the name of the attribute whose value 76: * will be used for this expression. 77: */ 78: public AttributeValueExp(String attr) 79: { 80: this.attr = attr; 81: } 82: 83: /** 84: * Applies the {@link AttributeValueExp} to the specified 85: * management bean by obtaining the attribute value from 86: * the {@link MBeanServer} and using it to create a 87: * {@link StringValueExp}. 88: * 89: * @param name the {@link ObjectName} of the bean to obtain 90: * the value from. 91: * @return a {@link StringValueExp} containing the result. 92: * @throws BadStringOperationException if an invalid string 93: * operation is used by 94: * the value expression. 95: * @throws BadBinaryOpValueExpException if an invalid expression 96: * is used by the value expression. 97: * @throws BadAttributeValueExpException if an invalid attribute 98: * is used by the value expression. 99: * @throws InvalidApplicationException if the value expression is applied 100: * to the wrong type of bean. 101: */ 102: public ValueExp apply(ObjectName name) 103: throws BadStringOperationException, BadBinaryOpValueExpException, 104: BadAttributeValueExpException, InvalidApplicationException 105: { 106: Object val = getAttribute(name); 107: if (val == null || !(val instanceof String)) 108: throw new BadAttributeValueExpException(val); 109: return new StringValueExp((String) val); 110: } 111: 112: /** 113: * Returns the value of the attribute by calling the 114: * {@link MBeanServer#getAttribute(ObjectName)} method of 115: * the server returned by {@link QueryEval#getMBeanServer()}. 116: * If an exception occurs, <code>null</code> is returned. 117: * 118: * @param name the {@link ObjectName} of the bean to obtain 119: * the value from. 120: * @return a {@link StringValueExp} containing the result. 121: */ 122: protected Object getAttribute(ObjectName name) 123: { 124: try 125: { 126: return QueryEval.getMBeanServer().getAttribute(name, attr); 127: } 128: catch (NullPointerException e) 129: { 130: return null; 131: } 132: catch (MBeanException e) 133: { 134: return null; 135: } 136: catch (AttributeNotFoundException e) 137: { 138: return null; 139: } 140: catch (InstanceNotFoundException e) 141: { 142: return null; 143: } 144: catch (ReflectionException e) 145: { 146: return null; 147: } 148: } 149: 150: /** 151: * Returns the attribute name. 152: * 153: * @return the attribute name. 154: */ 155: public String getAttributeName() 156: { 157: return attr; 158: } 159: 160: /** 161: * Sets the {@link MBeanServer} on which the query 162: * will be performed. 163: * 164: * @param server the new server. 165: */ 166: public void setMBeanServer(MBeanServer server) 167: { 168: /* This seems to do nothing any more */ 169: } 170: 171: /** 172: * Returns the attribute name, quoted. 173: * 174: * @return the quoted attribute name. 175: */ 176: public String toString() 177: { 178: return "'" + attr + "'"; 179: } 180: 181: }