1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
/* * @(#)AttributeValueExp.java 4.25 05/11/17 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package javax.management; // RI import import javax.management.MBeanServer; /** * Represents attributes used as arguments to relational constraints. * An <CODE>AttributeValueExp</CODE> may be used anywhere a <CODE>ValueExp</CODE> is required. * * @since 1.5 */ public class AttributeValueExp implements ValueExp { /* Serial version */ private static final long serialVersionUID = -7768025046539163385L; /** * @serial The name of the attribute */ private String attr; /** * An <code>AttributeValueExp</code> with a null attribute. * @deprecated An instance created with this constructor cannot be * used in a query. */ @Deprecated public AttributeValueExp() { } /** * Creates a new <CODE>AttributeValueExp</CODE> representing the * specified object attribute, named attr. * * @param attr the name of the attribute whose value is the value * of this {@link ValueExp}. */ public AttributeValueExp(String attr) { this.attr = attr; } /** * Returns a string representation of the name of the attribute. * * @return the attribute name. */ public String getAttributeName() { return attr; } /** * Applies the <CODE>AttributeValueExp</CODE> on an MBean. * * @param name The name of the MBean on which the <CODE>AttributeValueExp</CODE> will be applied. * * @return The <CODE>ValueExp</CODE>. * * @exception BadAttributeValueExpException * @exception InvalidApplicationException * @exception BadStringOperationException * @exception BadBinaryOpValueExpException * */ public ValueExp apply(ObjectName name) throws BadStringOperationException, BadBinaryOpValueExpException, BadAttributeValueExpException, InvalidApplicationException { Object result = getAttribute(name); if (result instanceof Number) { return new NumericValueExp((Number)result); } else if (result instanceof String) { return new StringValueExp((String)result); } else if (result instanceof Boolean) { return new BooleanValueExp((Boolean)result); } else { throw new BadAttributeValueExpException(result); } } /** * Returns the string representing its value. */ public String toString() { return attr; } /** * Sets the MBean server on which the query is to be performed. * * @param s The MBean server on which the query is to be performed. */ /* There is no need for this method, because if a query is being evaluted an AttributeValueExp can only appear inside a QueryExp, and that QueryExp will itself have done setMBeanServer. */ public void setMBeanServer(MBeanServer s) { } /** * Return the value of the given attribute in the named MBean. * If the attempt to access the attribute generates an exception, * return null. * * @param name the name of the MBean whose attribute is to be returned. * * @return the value of the attribute, or null if it could not be * obtained. */ protected Object getAttribute(ObjectName name) { try { // Get the value from the MBeanServer MBeanServer server = QueryEval.getMBeanServer(); return server.getAttribute(name, attr); } catch (Exception re) { return null; } } }