net.sf.jexpel.internal.expr
Class PropertyAccess

java.lang.Object
  extended by net.sf.jexpel.internal.expr.PropertyAccess
All Implemented Interfaces:
Expression, Compilable, MessageCodes, org.objectweb.asm.Opcodes

public class PropertyAccess
extends java.lang.Object
implements Expression, Compilable, MessageCodes


Field Summary
 
Fields inherited from interface org.objectweb.asm.Opcodes
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6
 
Fields inherited from interface net.sf.jexpel.messages.MessageCodes
ARRAY_ACCESS, C_NOT_FOUND, COND_TYPES, CONDITIONAL, CONSTANT, EXPECTED, INVALID, INVALID_ARG, LBRA_WO_RBRA, LPAR_WO_RPAR, M_NOT_FOUND, NEAR_TOKEN, NO_ARRAY, PROP_RO, PROP_WO, READ_ONLY
 
Constructor Summary
PropertyAccess(java.lang.Class<?> root, java.lang.String propName)
           
PropertyAccess(Expression root, java.lang.String propName)
           
 
Method Summary
 void calculeGet(java.util.List<java.lang.String> objects)
           
 void calculeSet(java.util.List<java.lang.String> objects)
           
 void compileGet(org.objectweb.asm.MethodVisitor mv)
           
 void compileSet(org.objectweb.asm.MethodVisitor mv)
           
 java.lang.Object get(java.lang.Object scope)
          Executes the expression and returns its value
 java.lang.Class<?> getType()
          Gets the result type of the Expression
 boolean isConstant()
           
 void set(java.lang.Object scope, java.lang.Object value)
          Executes the expression on set mode.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

PropertyAccess

public PropertyAccess(java.lang.Class<?> root,
                      java.lang.String propName)
               throws ExpressionException
Throws:
ExpressionException

PropertyAccess

public PropertyAccess(Expression root,
                      java.lang.String propName)
               throws ExpressionException
Throws:
ExpressionException
Method Detail

get

public java.lang.Object get(java.lang.Object scope)
                     throws java.lang.Exception
Description copied from interface: Expression
Executes the expression and returns its value

Specified by:
get in interface Expression
Parameters:
scope - the object where the expression will be executed
Returns:
the result
Throws:
java.lang.Exception - all exceptions. No exceptions are treated for better performance.

getType

public java.lang.Class<?> getType()
Description copied from interface: Expression
Gets the result type of the Expression

Specified by:
getType in interface Expression
Returns:
the type

set

public void set(java.lang.Object scope,
                java.lang.Object value)
         throws java.lang.Exception
Description copied from interface: Expression
Executes the expression on set mode. On set mode it won't return value. Not all expressions can be executed on the set mode, the most of them are read only. For eg.

Specified by:
set in interface Expression
Parameters:
scope - the object where the expression will be executed
value - the new value to set
Throws:
java.lang.Exception - all exceptions. No exceptions are treated for better performance.

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

compileGet

public void compileGet(org.objectweb.asm.MethodVisitor mv)
                throws java.lang.Exception
Specified by:
compileGet in interface Compilable
Throws:
java.lang.Exception

compileSet

public void compileSet(org.objectweb.asm.MethodVisitor mv)
                throws java.lang.Exception
Specified by:
compileSet in interface Compilable
Throws:
java.lang.Exception

calculeGet

public void calculeGet(java.util.List<java.lang.String> objects)
                throws java.lang.Exception
Specified by:
calculeGet in interface Compilable
Throws:
java.lang.Exception

calculeSet

public void calculeSet(java.util.List<java.lang.String> objects)
                throws java.lang.Exception
Specified by:
calculeSet in interface Compilable
Throws:
java.lang.Exception

isConstant

public boolean isConstant()
Specified by:
isConstant in interface Compilable