Defines property resolution behavior on instances of
| Method from javax.el.ResourceBundleELResolver Detail: |
public Class getCommonPropertyType(ELContext context,
Object base) {
if (base instanceof ResourceBundle) {
return String.class;
}
return null;
}
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. |
public Iterator getFeatureDescriptors(ELContext context,
Object base) {
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;
}
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 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
FeatureDescriptors:
- ELResolver#TYPE -
String.class
- ELResolver#RESOLVABLE_AT_DESIGN_TIME -
true
|
public Class getType(ELContext context,
Object base,
Object property) {
if (context == null) {
throw new NullPointerException();
}
if (base instanceof ResourceBundle) {
context.setPropertyResolved(true);
}
return null;
}
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.
|
public Object getValue(ELContext context,
Object base,
Object property) {
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;
}
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.
|
public boolean isReadOnly(ELContext context,
Object base,
Object property) {
if (context == null) {
throw new NullPointerException();
}
if (base instanceof ResourceBundle) {
context.setPropertyResolved(true);
return true;
}
return false;
}
If the base object is not null and an instanceof ResourceBundle ,
return true. |
public void setValue(ELContext context,
Object base,
Object property,
Object value) {
if (context == null) {
throw new NullPointerException();
}
if (base instanceof ResourceBundle) {
context.setPropertyResolved(true);
throw new PropertyNotWritableException(
"ResourceBundles are immutable");
}
}
|