javax.el
Class StaticFieldELResolver

java.lang.Object
  extended by javax.el.ELResolver
      extended by javax.el.StaticFieldELResolver

public class StaticFieldELResolver
extends ELResolver

An ELResolver for resolving static fields, enum constants and static methods. Also handles constructor calls as a special case.

The resolver handles base objects of the type ELClass, which is usually generated by an EL implementation.

Since:
EL 3.0
See Also:
ELClass

Field Summary
 
Fields inherited from class javax.el.ELResolver
RESOLVABLE_AT_DESIGN_TIME, TYPE
 
Constructor Summary
StaticFieldELResolver()
           
 
Method Summary
 java.lang.Class<?> getCommonPropertyType(ELContext context, java.lang.Object base)
          Returns the type of the property.
 java.util.Iterator<java.beans.FeatureDescriptor> getFeatureDescriptors(ELContext context, java.lang.Object base)
          Returns the properties that can be resolved.
 java.lang.Class<?> getType(ELContext context, java.lang.Object base, java.lang.Object property)
          Returns the type of a static field.
 java.lang.Object getValue(ELContext context, java.lang.Object base, java.lang.Object property)
          Returns the value of a static field.
 java.lang.Object invoke(ELContext context, java.lang.Object base, java.lang.Object method, java.lang.Class<?>[] paramTypes, java.lang.Object[] params)
          Invokes a public static method or the constructor for a class.
 boolean isReadOnly(ELContext context, java.lang.Object base, java.lang.Object property)
          Inquires whether the static field is writable.
 void setValue(ELContext context, java.lang.Object base, java.lang.Object property, java.lang.Object value)
           Attempts to write to a static field.
 
Methods inherited from class javax.el.ELResolver
convertToType
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StaticFieldELResolver

public StaticFieldELResolver()
Method Detail

getValue

public java.lang.Object getValue(ELContext context,
                                 java.lang.Object base,
                                 java.lang.Object property)

Returns the value of a static field.

If the base object is an instance of ELClass and the property is String, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value.

If the property is the string "class", return the java.lang.Class instance of the class specified in ELClass. If the property is a public static field of class specified in ELClass, return the value of the static field. An Enum constant is a public static field of an Enum object, and is a special case of this.

Specified by:
getValue in class ELResolver
Parameters:
context - The context of this evaluation.
base - An ELClass.
property - The string "class", or a static field name.
Returns:
If the propertyResolved property of ELContext was set to true, then the Class instance for the class or the static field value.
Throws:
java.lang.NullPointerException - if context is null.
PropertyNotFoundException - if the specified class does not exist, or if the field is not a public static filed of the class, or if the field is inacessible.

setValue

public void setValue(ELContext context,
                     java.lang.Object base,
                     java.lang.Object property,
                     java.lang.Object value)

Attempts to write to a static field.

If the base object is an instance of ELClassand the property is String, a PropertyNotWritableException will always be thrown, because writing to a static field is not allowed.

Specified by:
setValue in class ELResolver
Parameters:
context - The context of this evaluation.
base - An ELClass
property - The name of the field
value - The value to set the field of the class to.
Throws:
java.lang.NullPointerException - if context is null
PropertyNotWritableException

invoke

public java.lang.Object invoke(ELContext context,
                               java.lang.Object base,
                               java.lang.Object method,
                               java.lang.Class<?>[] paramTypes,
                               java.lang.Object[] params)

Invokes a public static method or the constructor for a class.

If the base object is an instance of ELClass and the method is a String, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value.

Invoke the public static method specified by method.

The process involved in the method selection is the same as that used in BeanELResolver.

As a special case, if the name of the method is "<init>", the constructor for the class will be invoked.

Overrides:
invoke in class ELResolver
Parameters:
base - An ELClass
method - When coerced to a String, the simple name of the method.
paramTypes - An array of Class objects identifying the method's formal parameter types, in declared order. Use an empty array if the method has no parameters. Can be null, in which case the method's formal parameter types are assumed to be unknown.
params - The parameters to pass to the method, or null if no parameters.
context - The context of this evaluation.
Returns:
The result of the method invocation (null if the method has a void return type).
Throws:
MethodNotFoundException - if no suitable method can be found.
ELException - if an exception was thrown while performing (base, method) resolution. The thrown exception must be included as the cause property of this exception, if available. If the exception thrown is an InvocationTargetException, extract its cause and pass it to the ELException constructor.

getType

public java.lang.Class<?> getType(ELContext context,
                                  java.lang.Object base,
                                  java.lang.Object property)

Returns the type of a static field.

If the base object is an instance of ELClassand the property is a String, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value has been set.

If the property is the string "class", returns java.lang.Class.class. If the property string is a public static field of class specified in ELClass, return the type of the static field.

Specified by:
getType in class ELResolver
Parameters:
context - The context of this evaluation.
base - An ELClass.
property - The name of the field.
Returns:
If the propertyResolved property of ELContext was set to true, then the type of the type of the field.
Throws:
java.lang.NullPointerException - if context is null.
PropertyNotFoundException - if field is not a public static filed of the class, or if the field is inacessible.

isReadOnly

public boolean isReadOnly(ELContext context,
                          java.lang.Object base,
                          java.lang.Object property)

Inquires whether the static field is writable.

If the base object is an instance of ELClassand the property is a String, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value has been set.

Always returns a true because writing to a static field is not allowed.

Specified by:
isReadOnly in class ELResolver
Parameters:
context - The context of this evaluation.
base - An ELClass.
property - The name of the bean.
Returns:
true
Throws:
java.lang.NullPointerException - if context is null.

getFeatureDescriptors

public java.util.Iterator<java.beans.FeatureDescriptor> getFeatureDescriptors(ELContext context,
                                                                              java.lang.Object base)
Returns the properties that can be resolved. Always returns null, since there is no reason to iterate through a list of one element: field name.

Specified by:
getFeatureDescriptors in class ELResolver
Parameters:
context - The context of this evaluation.
base - An ELClass.
Returns:
null.
See Also:
FeatureDescriptor

getCommonPropertyType

public java.lang.Class<?> getCommonPropertyType(ELContext context,
                                                java.lang.Object base)
Returns the type of the property. Always returns String.class, since a field name is a String.

Specified by:
getCommonPropertyType in class ELResolver
Parameters:
context - The context of this evaluation.
base - An ELClass.
Returns:
String.class.


Copyright (c) 1999-2012 Oracle and/or its affiliates. All Rights Reserved. Use is subject to license terms.