Overview Package Class Use Source Tree Index Deprecated About
GNU Classpath (0.95)
Frames | No Frames

Source for java.beans.Expression

 1:  /* java.beans.Expression
 2:  Copyright (C) 2004, 2005 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 java.beans;
 39: 
 40:  /**
 41:  * <p>An Expression captures the execution of an object method
 42:  * that returns a value.</p>
 43:  * 
 44:  * <p>It stores an object, the method to call, and the arguments to pass to
 45:  * the method.</p>
 46:  * 
 47:  * <p>While this class can generally be used to describe method calls it is
 48:  * part of the XML serialization API.</p> 
 49:  * 
 50:  * @author Robert Schuster (robertschuster@fsfe.org)
 51:  * @since 1.4
 52:  */
 53:  public class Expression extends Statement
 54: {
 55:  // This is a placeholder to indicate that value hasn't been set
 56:  // yet;
 57:  private static final Object UNSET = new Object();
 58: 
 59:  // The value to return. This is equal to unset until getValue is called.
 60:  private Object value;
 61: 
 62:  /**
 63:  * Constructor Constructs an Expression representing the invocation of
 64:  * object.methodName(arg[0], arg[1], ...); However, it will never be executed.
 65:  * Instead, value will always be returned.
 66:  * 
 67:  * @param value
 68:  * The value to return.
 69:  * @param target
 70:  * The object to invoke the method on.
 71:  * @param methodName
 72:  * The object method to invoke.
 73:  * @param arguments
 74:  * An array of arguments to pass to the method.
 75:  */
 76:  public Expression(Object value, Object target, String methodName,
 77:  Object[] arguments)
 78:  {
 79:  super(target, methodName, arguments);
 80:  this.value = value;
 81:  }
 82: 
 83:  /**
 84:  * Constructor Constructs an Expression representing the invocation of
 85:  * object.methodName(arg[0], arg[1], ...);
 86:  * 
 87:  * @param target
 88:  * The object to invoke the method on.
 89:  * @param methodName
 90:  * The object method to invoke.
 91:  * @param arguments
 92:  * An array of arguments to pass to the method.
 93:  */
 94:  public Expression(Object target, String methodName, Object[] arguments)
 95:  {
 96:  super(target, methodName, arguments);
 97:  this.value = UNSET;
 98:  }
 99: 
 100:  /**
 101:  * Return the result of executing the method. If the cached value has not yet
 102:  * been set, the method is executed in the same way as Statement.execute(),
 103:  * except that the value is cached, and then returned. If the value has been
 104:  * set, it is returned without executing the method again.
 105:  * 
 106:  * @return the result of executing the method.
 107:  * @exception Exception
 108:  * if an error occurs
 109:  */
 110:  public Object getValue() throws Exception
 111:  {
 112:  if (value == UNSET)
 113:  value = doExecute();
 114:  return value;
 115:  }
 116: 
 117:  /**
 118:  * Set the cached value to be returned by getValue()
 119:  * 
 120:  * @param value
 121:  * the value to cache and return.
 122:  */
 123:  public void setValue(Object value)
 124:  {
 125:  this.value = value;
 126:  }
 127: 
 128:  /**
 129:  * Return a string representation of this expression.
 130:  */
 131:  public String toString()
 132:  {
 133:  String result = super.toString();
 134:  if (value != UNSET)
 135:  return value.getClass().getName() + "=" + result;
 136:  return result;
 137:  }
 138: }
Overview Package Class Use Source Tree Index Deprecated About
GNU Classpath (0.95)

AltStyle によって変換されたページ (->オリジナル) /