ResourceBundleELResolverpublic class ResourceBundleELResolver extends ELResolver Defines property resolution behavior on instances of
{@link java.util.ResourceBundle}.
This resolver handles base objects of type
java.util.ResourceBundle . It accepts any object as a property
and coerces it to a java.lang.String for invoking
{@link java.util.ResourceBundle#getObject(java.lang.String)}.
This resolver is read only and will throw a
{@link PropertyNotWritableException} if setValue is called.
ELResolver s are combined together using
{@link CompositeELResolver}s, to define rich semantics for evaluating an
expression. See the javadocs for {@link ELResolver} for details.
|
Methods Summary |
---|
public java.lang.Class | getCommonPropertyType(javax.el.ELContext context, java.lang.Object base)If the base object is a ResourceBundle, returns the most general type
that this resolver accepts for the property argument.
Otherwise, returns null .
Assuming the base is a ResourceBundle , this method will
always return String.class .
if (base instanceof ResourceBundle) {
return String.class;
}
return null;
| public java.util.Iterator | getFeatureDescriptors(javax.el.ELContext context, java.lang.Object base)If the base object is a ResourceBundle, returns an Iterator
containing the set of keys available in the ResourceBundle .
Otherwise, returns null .
The Iterator returned must contain zero or more instances
of {@link java.beans.FeatureDescriptor}. Each info object contains
information about a key in the ResourceBundle, and is initialized as
follows:
displayName - The String key
name - Same as displayName property.
shortDescription - Empty string
expert - false
hidden - false
preferred - true
In addition, the following named attributes must be set in the returned
FeatureDescriptor s:
{@link ELResolver#TYPE} - String.class
{@link ELResolver#RESOLVABLE_AT_DESIGN_TIME} - true
if (base instanceof ResourceBundle) {
ResourceBundle bundle = (ResourceBundle) base;
List features = new ArrayList();
String key = null;
FeatureDescriptor desc = null;
for (Enumeration e = bundle.getKeys(); e.hasMoreElements();) {
key = (String) e.nextElement();
desc = new FeatureDescriptor();
desc.setDisplayName(key);
desc.setExpert(false);
desc.setHidden(false);
desc.setName(key);
desc.setPreferred(true);
desc.setValue(TYPE, String.class);
desc.setValue(RESOLVABLE_AT_DESIGN_TIME, Boolean.TRUE);
features.add(desc);
}
return features.iterator();
}
return null;
| public java.lang.Class | getType(javax.el.ELContext context, java.lang.Object base, java.lang.Object property)If the base object is an instance of ResourceBundle ,
return null , since the resolver is read only.
If the base is ResourceBundle , 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 (context == null) {
throw new NullPointerException();
}
if (base instanceof ResourceBundle) {
context.setPropertyResolved(true);
}
return null;
| public java.lang.Object | getValue(javax.el.ELContext context, java.lang.Object base, java.lang.Object property)If the base object is an instance of ResourceBundle ,
the provided property will first be coerced to a String .
The Object returned by getObject on
the base ResourceBundle will be returned.
If the base is ResourceBundle , 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 (context == null) {
throw new NullPointerException();
}
if (base instanceof ResourceBundle) {
context.setPropertyResolved(true);
if (property != null) {
try {
return ((ResourceBundle) base).getObject(property
.toString());
} catch (MissingResourceException e) {
return "???" + property + "???";
}
}
}
return null;
| public boolean | isReadOnly(javax.el.ELContext context, java.lang.Object base, java.lang.Object property)If the base object is not null and an instanceof {@link ResourceBundle},
return true .
if (context == null) {
throw new NullPointerException();
}
if (base instanceof ResourceBundle) {
context.setPropertyResolved(true);
return true;
}
return false;
| public void | setValue(javax.el.ELContext context, java.lang.Object base, java.lang.Object property, java.lang.Object value)If the base object is a ResourceBundle, throw a
{@link PropertyNotWritableException}.
if (context == null) {
throw new NullPointerException();
}
if (base instanceof ResourceBundle) {
context.setPropertyResolved(true);
throw new PropertyNotWritableException(
"ResourceBundles are immutable");
}
|
|