FileDocCategorySizeDatePackage
ELUtil.javaAPI DocGlassfish v2 API6110Tue Mar 20 09:32:54 GMT 2007javax.el

ELUtil

public class ELUtil extends Object

Utility methods for this portion of the EL implementation

Methods on this class use a Map instance stored in ThreadLocal storage to minimize the performance impact on operations that take place multiple times on a single Thread. The keys and values of the Map are implementation private.

author
edburns

Fields Summary
private static ThreadLocal
instance

The ThreadLocal variable used to record the {@link javax.faces.context.FacesContext} instance for each processing thread.

Constructors Summary
private ELUtil()

This class may not be constructed.

    
Methods Summary
private static java.util.MapgetCurrentInstance()

return
a Map stored in ThreadLocal storage. This may be used by methods of this class to minimize the performance impact for operations that may take place multiple times on a given Thread instance.

        
                                            

        
        Map result = (Map) instance.get();
        if (null == result) {
            result = new HashMap();
            setCurrentInstance(result);
        }
        return result;

    
public static java.lang.StringgetExceptionMessageString(javax.el.ELContext context, java.lang.String messageId)

        return getExceptionMessageString(context, messageId, null);
    
public static java.lang.StringgetExceptionMessageString(javax.el.ELContext context, java.lang.String messageId, java.lang.Object[] params)

        String result = "";
        Locale locale = null;
        
        if (null == context || null == messageId) {
            return result;
        }
        
        if (null == (locale = context.getLocale())) {
            locale = Locale.getDefault();
        }
        if (null != locale) {
            Map threadMap = getCurrentInstance();
            ResourceBundle rb = null;
            if (null == (rb = (ResourceBundle)
            threadMap.get(locale.toString()))) {
                rb = ResourceBundle.getBundle("javax.el.PrivateMessages",
                                              locale);
                threadMap.put(locale.toString(), rb);
            }
            if (null != rb) {
                try {
                    result = rb.getString(messageId);
                    if (null != params) {
                        result = MessageFormat.format(result, params);
                    }
                } catch (IllegalArgumentException iae) {
                    result = "Can't get localized message: parameters to message appear to be incorrect.  Message to format: " + messageId;
                } catch (MissingResourceException mre) {
                    result = "Missing Resource in EL implementation: ???" + messageId + "???";
                } catch (Exception e) {
                    result = "Exception resolving message in EL implementation: ???" + messageId + "???";
                }
            }
        }
        
        return result;
    
private static voidsetCurrentInstance(java.util.Map context)

Replace the Map with the argument context.

param
context the Map to be stored in ThreadLocal storage.


        instance.set(context);