You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2012/02/02 21:00:44 UTC

svn commit: r1239799 [2/9] - in /myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared: application/ config/ context/flash/ renderkit/ renderkit/html/ renderkit/html/util/ resource/ util/ util/io/ util/xml/

Modified: myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/RendererUtils.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/RendererUtils.java?rev=1239799&r1=1239798&r2=1239799&view=diff
==============================================================================
--- myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/RendererUtils.java (original)
+++ myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/RendererUtils.java Thu Feb  2 20:00:42 2012
@@ -76,17 +76,21 @@ import org.apache.myfaces.shared.util.Se
  */
 public final class RendererUtils
 {
-    private RendererUtils(){
+    private RendererUtils()
+    {
         //nope
     }
-    
+
     //private static final Log log = LogFactory.getLog(RendererUtils.class);
-    private static final Logger log = Logger.getLogger(RendererUtils.class.getName());
-    
-    public static final String SELECT_ITEM_LIST_ATTR = RendererUtils.class.getName() + ".LIST";
+    private static final Logger log = Logger.getLogger(RendererUtils.class
+            .getName());
+
+    public static final String SELECT_ITEM_LIST_ATTR = RendererUtils.class
+            .getName() + ".LIST";
     public static final String EMPTY_STRING = "";
     //This constant is no longer used by UISelectOne/UISelectMany instances
-    public static final Object NOTHING = new Serializable() {
+    public static final Object NOTHING = new Serializable()
+    {
         public boolean equals(final Object o)
         {
             if (o != null)
@@ -98,6 +102,12 @@ public final class RendererUtils
             }
             return false;
         }
+
+        @Override
+        public int hashCode()
+        {
+            return super.hashCode();
+        }
     };
 
     public static final String ACTION_FOR_LIST = "org.apache.myfaces.ActionForList";
@@ -105,27 +115,30 @@ public final class RendererUtils
 
     public static final String SEQUENCE_PARAM = "jsf_sequence";
 
-    private static final String RENDER_KIT_IMPL = RendererUtils.class.getName() + ".RenderKitImpl";
-    
+    private static final String RENDER_KIT_IMPL = RendererUtils.class.getName()
+            + ".RenderKitImpl";
+
     // This nice constant is "specified" 13.1.1.2 The Resource API Approach in Spec as an example
     public static final String RES_NOT_FOUND = "RES_NOT_FOUND";
 
     public static String getPathToComponent(UIComponent component)
     {
-        StringBuffer buf = new StringBuffer();
+        StringBuilder buf = new StringBuilder();
 
-        if(component == null)
+        if (component == null)
         {
             buf.append("{Component-Path : ");
             buf.append("[null]}");
             return buf.toString();
         }
 
-        getPathToComponent(component,buf);
+        getPathToComponent(component, buf);
 
-        buf.insert(0,"{Component-Path : ");
-        Object location = component.getAttributes().get(UIComponent.VIEW_LOCATION_KEY);
-        if (location != null) {
+        buf.insert(0, "{Component-Path : ");
+        Object location = component.getAttributes().get(
+                UIComponent.VIEW_LOCATION_KEY);
+        if (location != null)
+        {
             buf.append(" Location: ").append(location);
         }
         buf.append("}");
@@ -133,16 +146,19 @@ public final class RendererUtils
         return buf.toString();
     }
 
-    private static void getPathToComponent(UIComponent component, StringBuffer buf)
+    private static void getPathToComponent(UIComponent component,
+            StringBuilder buf)
     {
-        if(component == null)
+        if (component == null)
+        {
             return;
+        }
 
-        StringBuffer intBuf = new StringBuffer();
+        StringBuilder intBuf = new StringBuilder();
 
         intBuf.append("[Class: ");
         intBuf.append(component.getClass().getName());
-        if(component instanceof UIViewRoot)
+        if (component instanceof UIViewRoot)
         {
             intBuf.append(",ViewId: ");
             intBuf.append(((UIViewRoot) component).getViewId());
@@ -154,38 +170,44 @@ public final class RendererUtils
         }
         intBuf.append("]");
 
-        buf.insert(0,intBuf.toString());
+        buf.insert(0, intBuf.toString());
 
         getPathToComponent(component.getParent(), buf);
     }
 
-    public static String getConcatenatedId(FacesContext context, UIComponent container,
-                                           String clientId)
+    public static String getConcatenatedId(FacesContext context,
+            UIComponent container, String clientId)
     {
         UIComponent child = container.findComponent(clientId);
 
-        if(child == null)
-                return clientId;
+        if (child == null)
+        {
+            return clientId;
+        }
 
         return getConcatenatedId(context, child);
     }
 
-    public static String getConcatenatedId(FacesContext context, UIComponent component)
+    public static String getConcatenatedId(FacesContext context,
+            UIComponent component)
     {
-        if (context == null) throw new NullPointerException("context");
+        if (context == null)
+        {
+            throw new NullPointerException("context");
+        }
 
-        StringBuffer idBuf = new StringBuffer();
+        StringBuilder idBuf = new StringBuilder();
 
         idBuf.append(component.getId());
 
         UIComponent parent;
 
-        while((parent = component.getParent())!=null)
+        while ((parent = component.getParent()) != null)
         {
-            if(parent instanceof NamingContainer)
+            if (parent instanceof NamingContainer)
             {
-                idBuf.insert(0,UINamingContainer.getSeparatorChar(context));
-                idBuf.insert(0,parent.getId());
+                idBuf.insert(0, UINamingContainer.getSeparatorChar(context));
+                idBuf.insert(0, parent.getId());
             }
         }
 
@@ -196,50 +218,54 @@ public final class RendererUtils
     {
         Object value = getObjectValue(component);
         // Try to convert to Boolean if it is a String
-        if (value instanceof  String) {
-            value = Boolean.valueOf((String)value);
+        if (value instanceof String)
+        {
+            value = Boolean.valueOf((String) value);
         }
-        
-        if (value==null || value instanceof Boolean)
+
+        if (value == null || value instanceof Boolean)
         {
             return (Boolean) value;
         }
 
-        throw new IllegalArgumentException("Expected submitted value of type Boolean for Component : "+
-                    getPathToComponent(component));
-        
+        throw new IllegalArgumentException(
+                "Expected submitted value of type Boolean for Component : "
+                        + getPathToComponent(component));
+
     }
 
     public static Date getDateValue(UIComponent component)
     {
         Object value = getObjectValue(component);
-        if (value==null || value instanceof Date)
+        if (value == null || value instanceof Date)
         {
             return (Date) value;
         }
 
-        throw new IllegalArgumentException("Expected submitted value of type Date for component : "
-                +getPathToComponent(component));
+        throw new IllegalArgumentException(
+                "Expected submitted value of type Date for component : "
+                        + getPathToComponent(component));
     }
 
     public static Object getObjectValue(UIComponent component)
     {
         if (!(component instanceof ValueHolder))
         {
-            throw new IllegalArgumentException("Component : "+
-                    getPathToComponent(component)+"is not a ValueHolder");
+            throw new IllegalArgumentException("Component : "
+                    + getPathToComponent(component) + "is not a ValueHolder");
         }
 
         if (component instanceof EditableValueHolder)
         {
-            Object value = ((EditableValueHolder)component).getSubmittedValue();
+            Object value = ((EditableValueHolder) component)
+                    .getSubmittedValue();
             if (value != null)
             {
                 return value;
             }
         }
 
-        return ((ValueHolder)component).getValue();
+        return ((ValueHolder) component).getValue();
     }
 
     @Deprecated
@@ -264,53 +290,71 @@ public final class RendererUtils
     }
 
     public static String getStringValue(FacesContext facesContext,
-                                        UIComponent component)
+            UIComponent component)
     {
         try
         {
             if (!(component instanceof ValueHolder))
             {
-                throw new IllegalArgumentException("Component : "+getPathToComponent(component)+"is not a ValueHolder");
+                throw new IllegalArgumentException("Component : "
+                        + getPathToComponent(component)
+                        + "is not a ValueHolder");
             }
 
             if (component instanceof EditableValueHolder)
             {
-                Object submittedValue = ((EditableValueHolder)component).getSubmittedValue();
+                Object submittedValue = ((EditableValueHolder) component)
+                        .getSubmittedValue();
                 if (submittedValue != null)
                 {
-                        if (log.isLoggable(Level.FINE)) log.fine("returning 1 '" + submittedValue + "'");
-                        return submittedValue.toString();
+                    if (log.isLoggable(Level.FINE))
+                    {
+                        log.fine("returning 1 '" + submittedValue + "'");
+                    }
+                    return submittedValue.toString();
                 }
             }
 
             Object value;
 
-            if(component instanceof EditableValueHolder) {
+            if (component instanceof EditableValueHolder)
+            {
 
                 EditableValueHolder holder = (EditableValueHolder) component;
-                
-                if(holder.isLocalValueSet()) {
+
+                if (holder.isLocalValueSet())
+                {
                     value = holder.getLocalValue();
-                } else {
+                }
+                else
+                {
                     value = getValue(component);
                 }
             }
-            else {
+            else
+            {
                 value = getValue(component);
             }
 
-            Converter converter = ((ValueHolder)component).getConverter();
-            if (converter == null  && value != null)
+            Converter converter = ((ValueHolder) component).getConverter();
+            if (converter == null && value != null)
             {
 
                 try
                 {
-                    converter = facesContext.getApplication().createConverter(value.getClass());
-                    if (log.isLoggable(Level.FINE)) log.fine("the created converter is " + converter);
+                    converter = facesContext.getApplication().createConverter(
+                            value.getClass());
+                    if (log.isLoggable(Level.FINE))
+                    {
+                        log.fine("the created converter is " + converter);
+                    }
                 }
                 catch (FacesException e)
                 {
-                    log.log(Level.SEVERE, "No converter for class " + value.getClass().getName() + " found (component id=" + component.getId() + ").", e);
+                    log.log(Level.SEVERE, "No converter for class "
+                            + value.getClass().getName()
+                            + " found (component id=" + component.getId()
+                            + ").", e);
                     // converter stays null
                 }
             }
@@ -319,29 +363,39 @@ public final class RendererUtils
             {
                 if (value == null)
                 {
-                    if (log.isLoggable(Level.FINE)) log.fine("returning an empty string");
+                    if (log.isLoggable(Level.FINE))
+                    {
+                        log.fine("returning an empty string");
+                    }
                     return "";
                 }
 
-                if (log.isLoggable(Level.FINE)) log.fine("returning an .toString");
+                if (log.isLoggable(Level.FINE))
+                {
+                    log.fine("returning an .toString");
+                }
                 return value.toString();
-                
+
             }
 
-            if (log.isLoggable(Level.FINE)) log.fine("returning converter get as string " + converter);
+            if (log.isLoggable(Level.FINE))
+            {
+                log.fine("returning converter get as string " + converter);
+            }
             return converter.getAsString(facesContext, component, value);
-            
+
         }
-        catch(PropertyNotFoundException ex)
+        catch (PropertyNotFoundException ex)
         {
-            log.log(Level.SEVERE, "Property not found - called by component : "+getPathToComponent(component),ex);
+            log.log(Level.SEVERE, "Property not found - called by component : "
+                    + getPathToComponent(component), ex);
 
             throw ex;
         }
     }
-    
-    public static String getStringFromSubmittedValueOrLocalValueReturnNull(FacesContext facesContext,
-            UIComponent component)
+
+    public static String getStringFromSubmittedValueOrLocalValueReturnNull(
+            FacesContext facesContext, UIComponent component)
     {
         try
         {
@@ -359,7 +413,9 @@ public final class RendererUtils
                 if (submittedValue != null)
                 {
                     if (log.isLoggable(Level.FINE))
+                    {
                         log.fine("returning 1 '" + submittedValue + "'");
+                    }
                     return submittedValue.toString();
                 }
             }
@@ -394,7 +450,9 @@ public final class RendererUtils
                     converter = facesContext.getApplication().createConverter(
                             value.getClass());
                     if (log.isLoggable(Level.FINE))
+                    {
                         log.fine("the created converter is " + converter);
+                    }
                 }
                 catch (FacesException e)
                 {
@@ -416,13 +474,17 @@ public final class RendererUtils
                 }
 
                 if (log.isLoggable(Level.FINE))
+                {
                     log.fine("returning an .toString");
+                }
                 return value.toString();
 
             }
 
             if (log.isLoggable(Level.FINE))
+            {
                 log.fine("returning converter get as string " + converter);
+            }
             return converter.getAsString(facesContext, component, value);
 
         }
@@ -435,16 +497,18 @@ public final class RendererUtils
         }
     }
 
-    private static Object getValue(UIComponent component) {
+    private static Object getValue(UIComponent component)
+    {
         Object value;
         try
         {
             value = ((ValueHolder) component).getValue();
         }
-        catch(Exception ex)
+        catch (Exception ex)
         {
-            throw new FacesException("Could not retrieve value of component with path : "+
-                    getPathToComponent(component),ex);
+            throw new FacesException(
+                    "Could not retrieve value of component with path : "
+                            + getPathToComponent(component), ex);
         }
         return value;
     }
@@ -468,27 +532,27 @@ public final class RendererUtils
         {
             if (value instanceof Integer)
             {
-                return ((Number)value).intValue() == Integer.MIN_VALUE;
+                return ((Number) value).intValue() == Integer.MIN_VALUE;
             }
             else if (value instanceof Double)
             {
-                return ((Number)value).doubleValue() == Double.MIN_VALUE;
+                return ((Number) value).doubleValue() == Double.MIN_VALUE;
             }
             else if (value instanceof Long)
             {
-                return ((Number)value).longValue() == Long.MIN_VALUE;
+                return ((Number) value).longValue() == Long.MIN_VALUE;
             }
             else if (value instanceof Byte)
             {
-                return ((Number)value).byteValue() == Byte.MIN_VALUE;
+                return ((Number) value).byteValue() == Byte.MIN_VALUE;
             }
             else if (value instanceof Float)
             {
-                return ((Number)value).floatValue() == Float.MIN_VALUE;
+                return ((Number) value).floatValue() == Float.MIN_VALUE;
             }
             else if (value instanceof Short)
             {
-                return ((Number)value).shortValue() == Short.MIN_VALUE;
+                return ((Number) value).shortValue() == Short.MIN_VALUE;
             }
         }
         return false;
@@ -500,25 +564,24 @@ public final class RendererUtils
      * @throws FacesException if the Converter could not be created
      */
     public static Converter findUIOutputConverter(FacesContext facesContext,
-                                                  UIOutput component)
-            throws FacesException
+            UIOutput component) throws FacesException
     {
-        return _SharedRendererUtils.findUIOutputConverter(facesContext, component);
+        return _SharedRendererUtils.findUIOutputConverter(facesContext,
+                component);
     }
 
-
     /**
      * Calls findUISelectManyConverter with considerValueType = false.
      * @param facesContext
      * @param component
      * @return
      */
-    public static Converter findUISelectManyConverter(FacesContext facesContext,
-                                                      UISelectMany component)
+    public static Converter findUISelectManyConverter(
+            FacesContext facesContext, UISelectMany component)
     {
         return findUISelectManyConverter(facesContext, component, false);
     }
-    
+
     /**
      * Find proper Converter for the entries in the associated Collection or array of
      * the given UISelectMany as specified in API Doc of UISelectMany.
@@ -528,88 +591,119 @@ public final class RendererUtils
      * @return the Converter or null if no Converter specified or needed
      * @throws FacesException if the Converter could not be created
      */
-    public static Converter findUISelectManyConverter(FacesContext facesContext,
-            UISelectMany component, boolean considerValueType) 
+    public static Converter findUISelectManyConverter(
+            FacesContext facesContext, UISelectMany component,
+            boolean considerValueType)
     {
         // If the component has an attached Converter, use it.
         Converter converter = component.getConverter();
-        if (converter != null) return converter;
-        
+        if (converter != null)
+        {
+            return converter;
+        }
+
         if (considerValueType)
         {
             // try to get a converter from the valueType attribute
-            converter = _SharedRendererUtils.getValueTypeConverter(facesContext, component);
-            if (converter != null) return converter;
+            converter = _SharedRendererUtils.getValueTypeConverter(
+                    facesContext, component);
+            if (converter != null)
+            {
+                return converter;
+            }
         }
 
         //Try to find out by value expression
         ValueExpression ve = component.getValueExpression("value");
-        if (ve == null) return null;
+        if (ve == null)
+        {
+            return null;
+        }
 
         // Try to get the type from the actual value or,
         // if value == null, obtain the type from the ValueExpression
         Class<?> valueType = null;
-        Object value = ve.getValue(facesContext.getELContext()); 
-        valueType = (value != null) 
-                        ? value.getClass() 
-                        : ve.getType(facesContext.getELContext());
-        
-        if (valueType == null) return null;
-        
+        Object value = ve.getValue(facesContext.getELContext());
+        valueType = (value != null) ? value.getClass() : ve
+                .getType(facesContext.getELContext());
+
+        if (valueType == null)
+        {
+            return null;
+        }
+
         // a valueType of Object is also permitted, in order to support
         // managed bean properties of type Object that resolve to null at this point
-        if (Collection.class.isAssignableFrom(valueType) || Object.class.equals(valueType))
+        if (Collection.class.isAssignableFrom(valueType)
+                || Object.class.equals(valueType))
         {
             // try to get the by-type-converter from the type of the SelectItems
-            return _SharedRendererUtils.getSelectItemsValueConverter(new SelectItemsIterator(component, facesContext), facesContext);
+            return _SharedRendererUtils.getSelectItemsValueConverter(
+                    new SelectItemsIterator(component, facesContext),
+                    facesContext);
         }
 
         if (!valueType.isArray())
         {
-            throw new IllegalArgumentException("ValueExpression for UISelectMany : "
-                    + getPathToComponent(component) + " must be of type Collection or Array");
+            throw new IllegalArgumentException(
+                    "ValueExpression for UISelectMany : "
+                            + getPathToComponent(component)
+                            + " must be of type Collection or Array");
         }
 
         Class<?> arrayComponentType = valueType.getComponentType();
-        if (String.class.equals(arrayComponentType)) return null;    //No converter needed for String type
-        
-        if (Object.class.equals(arrayComponentType)) 
-        {    
+        if (String.class.equals(arrayComponentType))
+        {
+            return null; //No converter needed for String type
+        }
+
+        if (Object.class.equals(arrayComponentType))
+        {
             // There is no converter for Object class
             // try to get the by-type-converter from the type of the SelectItems
-            return _SharedRendererUtils.getSelectItemsValueConverter(new SelectItemsIterator(component, facesContext), facesContext);
+            return _SharedRendererUtils.getSelectItemsValueConverter(
+                    new SelectItemsIterator(component, facesContext),
+                    facesContext);
         }
 
         try
         {
-            return facesContext.getApplication().createConverter(arrayComponentType);
+            return facesContext.getApplication().createConverter(
+                    arrayComponentType);
         }
         catch (FacesException e)
         {
-            log.log(Level.SEVERE, "No Converter for type " + arrayComponentType.getName() + " found", e);
+            log.log(Level.SEVERE,
+                    "No Converter for type " + arrayComponentType.getName()
+                            + " found", e);
             return null;
         }
     }
-    
-    public static void checkParamValidity(FacesContext facesContext, UIComponent uiComponent, Class compClass)
+
+    public static void checkParamValidity(FacesContext facesContext,
+            UIComponent uiComponent, Class compClass)
     {
-        if(facesContext == null)
+        if (facesContext == null)
+        {
             throw new NullPointerException("facesContext may not be null");
-        if(uiComponent == null)
+        }
+        if (uiComponent == null)
+        {
             throw new NullPointerException("uiComponent may not be null");
+        }
 
         //if (compClass != null && !(compClass.isAssignableFrom(uiComponent.getClass())))
         // why isAssignableFrom with additional getClass method call if isInstance does the same?
         if (compClass != null && !(compClass.isInstance(uiComponent)))
         {
-            throw new IllegalArgumentException("uiComponent : "+getPathToComponent(uiComponent)+
-                    " is not instance of "+compClass.getName()+" as it should be");
+            throw new IllegalArgumentException("uiComponent : "
+                    + getPathToComponent(uiComponent) + " is not instance of "
+                    + compClass.getName() + " as it should be");
         }
     }
 
-
-    public static void renderChildren(FacesContext facesContext, UIComponent component)
-            throws IOException
+    public static void renderChildren(FacesContext facesContext,
+            UIComponent component) throws IOException
     {
         if (component.getChildCount() > 0)
         {
@@ -634,13 +728,13 @@ public final class RendererUtils
             throws IOException
     {
         // The next isRendered() call is only shortcut:
-         // methods encodeBegin, encodeChildren and encodeEnd should proceed only if 
+        // methods encodeBegin, encodeChildren and encodeEnd should proceed only if 
         // "If our rendered property is true, render the (beginning, child, ending) of this component"
         if (!isRendered(facesContext, child))
         {
             return;
         }
-        
+
         child.encodeBegin(facesContext);
         if (child.getRendersChildren())
         {
@@ -658,7 +752,9 @@ public final class RendererUtils
      * reads the isRendered property, call {@link
      * UIComponent#popComponentFromEL} and returns the value of isRendered.
      */
-    public static boolean isRendered(FacesContext facesContext, UIComponent uiComponent) {
+    public static boolean isRendered(FacesContext facesContext,
+            UIComponent uiComponent)
+    {
         // We must call pushComponentToEL here because ValueExpression may have 
         // implicit object "component" used. 
         try
@@ -667,30 +763,32 @@ public final class RendererUtils
             return uiComponent.isRendered();
         }
         finally
-        {       
+        {
             uiComponent.popComponentFromEL(facesContext);
         }
     }
 
-
     public static List getSelectItemList(UISelectOne uiSelectOne)
     {
-        return internalGetSelectItemList(uiSelectOne, FacesContext.getCurrentInstance());
+        return internalGetSelectItemList(uiSelectOne,
+                FacesContext.getCurrentInstance());
     }
-    
+
     /**
      * @param uiSelectOne
      * @param facesContext
      * @return List of SelectItem Objects
      */
-    public static List getSelectItemList(UISelectOne uiSelectOne, FacesContext facesContext)
+    public static List getSelectItemList(UISelectOne uiSelectOne,
+            FacesContext facesContext)
     {
         return internalGetSelectItemList(uiSelectOne, facesContext);
     }
-    
+
     public static List getSelectItemList(UISelectMany uiSelectMany)
     {
-        return internalGetSelectItemList(uiSelectMany, FacesContext.getCurrentInstance());
+        return internalGetSelectItemList(uiSelectMany,
+                FacesContext.getCurrentInstance());
     }
 
     /**
@@ -698,12 +796,14 @@ public final class RendererUtils
      * @param facesContext
      * @return List of SelectItem Objects
      */
-    public static List getSelectItemList(UISelectMany uiSelectMany, FacesContext facesContext)
+    public static List getSelectItemList(UISelectMany uiSelectMany,
+            FacesContext facesContext)
     {
         return internalGetSelectItemList(uiSelectMany, facesContext);
     }
 
-    private static List internalGetSelectItemList(UIComponent uiComponent, FacesContext facesContext)
+    private static List internalGetSelectItemList(UIComponent uiComponent,
+            FacesContext facesContext)
     {
         /* TODO: Shall we cache the list in a component attribute?
         ArrayList list = (ArrayList)uiComponent.getAttributes().get(SELECT_ITEM_LIST_ATTR);
@@ -712,17 +812,17 @@ public final class RendererUtils
             return list;
         }
          */
-        
+
         List list = new ArrayList();
-        
-        for (Iterator iter = new SelectItemsIterator(uiComponent, facesContext); iter.hasNext();)
+
+        for (Iterator iter = new SelectItemsIterator(uiComponent, facesContext); iter
+                .hasNext();)
         {
-            list.add(iter.next());            
-        }        
+            list.add(iter.next());
+        }
         return list;
     }
 
-
     /**
      * Convenient utility method that returns the currently submitted values of
      * a UISelectMany component as a Set, of which the contains method can then be
@@ -732,7 +832,9 @@ public final class RendererUtils
      * @param uiSelectMany
      * @return Set containing all currently selected values
      */
-    public static Set getSubmittedValuesAsSet(FacesContext context, UIComponent component, Converter converter, UISelectMany uiSelectMany)
+    public static Set getSubmittedValuesAsSet(FacesContext context,
+            UIComponent component, Converter converter,
+            UISelectMany uiSelectMany)
     {
         Object submittedValues = uiSelectMany.getSubmittedValue();
         if (submittedValues == null)
@@ -740,14 +842,15 @@ public final class RendererUtils
             return null;
         }
 
-        if(converter != null) {
+        if (converter != null)
+        {
             converter = new PassThroughAsStringConverter(converter);
         }
 
-        return internalSubmittedOrSelectedValuesAsSet(context, component, converter, uiSelectMany, submittedValues, false);
+        return internalSubmittedOrSelectedValuesAsSet(context, component,
+                converter, uiSelectMany, submittedValues, false);
     }
 
-
     /**
      * Convenient utility method that returns the currently selected values of
      * a UISelectMany component as a Set, of which the contains method can then be
@@ -757,27 +860,36 @@ public final class RendererUtils
      * @param uiSelectMany
      * @return Set containing all currently selected values
      */
-    public static Set getSelectedValuesAsSet(FacesContext context, UIComponent component, Converter converter, UISelectMany uiSelectMany)
+    public static Set getSelectedValuesAsSet(FacesContext context,
+            UIComponent component, Converter converter,
+            UISelectMany uiSelectMany)
     {
         Object selectedValues = uiSelectMany.getValue();
 
-        return internalSubmittedOrSelectedValuesAsSet(context, component, converter, uiSelectMany, selectedValues, true);
+        return internalSubmittedOrSelectedValuesAsSet(context, component,
+                converter, uiSelectMany, selectedValues, true);
     }
 
-
     /**
      * Convenient utility method that returns the currently given value as String,
      * using the given converter.
      * Especially usefull for dealing with primitive types.
      */
     public static String getConvertedStringValue(FacesContext context,
-            UIComponent component, Converter converter, Object value) {
-        if (converter == null) {
-            if (value == null) {
+            UIComponent component, Converter converter, Object value)
+    {
+        if (converter == null)
+        {
+            if (value == null)
+            {
                 return "";
-            } else if (value instanceof String) {
+            }
+            else if (value instanceof String)
+            {
                 return (String) value;
-            } else {
+            }
+            else
+            {
                 return value.toString();
             }
         }
@@ -785,20 +897,22 @@ public final class RendererUtils
         return converter.getAsString(context, component, value);
     }
 
-
     /**
      * Convenient utility method that returns the currently given SelectItem value
      * as String, using the given converter.
      * Especially usefull for dealing with primitive types.
      */
     public static String getConvertedStringValue(FacesContext context,
-            UIComponent component, Converter converter, SelectItem selectItem) {
-        return getConvertedStringValue(context, component, converter, selectItem.getValue());
+            UIComponent component, Converter converter, SelectItem selectItem)
+    {
+        return getConvertedStringValue(context, component, converter,
+                selectItem.getValue());
     }
 
-    private static Set internalSubmittedOrSelectedValuesAsSet(FacesContext context,
-            UIComponent component, Converter converter, UISelectMany uiSelectMany,
-            Object values, boolean allowNonArrayOrCollectionValue)
+    private static Set internalSubmittedOrSelectedValuesAsSet(
+            FacesContext context, UIComponent component, Converter converter,
+            UISelectMany uiSelectMany, Object values,
+            boolean allowNonArrayOrCollectionValue)
     {
         if (values == null || EMPTY_STRING.equals(values))
         {
@@ -807,7 +921,7 @@ public final class RendererUtils
         else if (values instanceof Object[])
         {
             //Object array
-            Object[] ar = (Object[])values;
+            Object[] ar = (Object[]) values;
             if (ar.length == 0)
             {
                 return Collections.EMPTY_SET;
@@ -816,7 +930,8 @@ public final class RendererUtils
             HashSet set = new HashSet(HashMapUtils.calcCapacity(ar.length));
             for (int i = 0; i < ar.length; i++)
             {
-                set.add( getConvertedStringValue(context, component, converter, ar[i]) );
+                set.add(getConvertedStringValue(context, component, converter,
+                        ar[i]));
             }
             return set;
         }
@@ -824,16 +939,19 @@ public final class RendererUtils
         {
             //primitive array
             int len = Array.getLength(values);
-            HashSet set = new HashSet(org.apache.myfaces.shared.util.HashMapUtils.calcCapacity(len));
+            HashSet set = new HashSet(
+                    org.apache.myfaces.shared.util.HashMapUtils
+                            .calcCapacity(len));
             for (int i = 0; i < len; i++)
             {
-                set.add( getConvertedStringValue(context, component, converter, Array.get(values,i)) );
+                set.add(getConvertedStringValue(context, component, converter,
+                        Array.get(values, i)));
             }
             return set;
         }
         else if (values instanceof Collection)
         {
-            Collection col = (Collection)values;
+            Collection col = (Collection) values;
             if (col.size() == 0)
             {
                 return Collections.EMPTY_SET;
@@ -841,7 +959,10 @@ public final class RendererUtils
 
             HashSet set = new HashSet(HashMapUtils.calcCapacity(col.size()));
             for (Iterator i = col.iterator(); i.hasNext();)
-                set.add(getConvertedStringValue(context, component, converter, i.next()));
+            {
+                set.add(getConvertedStringValue(context, component, converter,
+                        i.next()));
+            }
 
             return set;
 
@@ -854,22 +975,28 @@ public final class RendererUtils
         }
         else
         {
-            throw new IllegalArgumentException("Value of UISelectMany component with path : "
-                    + getPathToComponent(uiSelectMany) + " is not of type Array or List");
+            throw new IllegalArgumentException(
+                    "Value of UISelectMany component with path : "
+                            + getPathToComponent(uiSelectMany)
+                            + " is not of type Array or List");
         }
     }
 
-    public static Object getConvertedUISelectOneValue(FacesContext facesContext, UISelectOne output, Object submittedValue){        
+    public static Object getConvertedUISelectOneValue(
+            FacesContext facesContext, UISelectOne output, Object submittedValue)
+    {
         if (submittedValue != null && !(submittedValue instanceof String))
         {
-            throw new IllegalArgumentException("Submitted value of type String for component : "
-                    + getPathToComponent(output) + "expected");
+            throw new IllegalArgumentException(
+                    "Submitted value of type String for component : "
+                            + getPathToComponent(output) + "expected");
         }
-        
+
         //To be compatible with jsf ri, and according to issue 69
         //[  Permit the passing of a null value to SelectItem.setValue()  ]
         //If submittedValue == "" then convert to null.
-        if ((submittedValue != null) && (submittedValue instanceof String) && ("".equals(submittedValue)))
+        if ((submittedValue != null) && (submittedValue instanceof String)
+                && ("".equals(submittedValue)))
         {
             //Replace "" by null value
             submittedValue = null;
@@ -885,12 +1012,12 @@ public final class RendererUtils
             throw new ConverterException(e);
         }
 
-        return converter == null ? submittedValue : converter
-                .getAsObject(facesContext, output, (String) submittedValue);
+        return converter == null ? submittedValue : converter.getAsObject(
+                facesContext, output, (String) submittedValue);
     }
-    
-    public static Object getConvertedUIOutputValue(FacesContext facesContext, UIOutput output, Object submittedValue)
-            throws ConverterException
+
+    public static Object getConvertedUIOutputValue(FacesContext facesContext,
+            UIOutput output, Object submittedValue) throws ConverterException
     {
         if (submittedValue != null && !(submittedValue instanceof String))
         {
@@ -907,10 +1034,10 @@ public final class RendererUtils
             throw new ConverterException(e);
         }
 
-        return converter == null ? submittedValue : converter
-                .getAsObject(facesContext, output, (String) submittedValue);
+        return converter == null ? submittedValue : converter.getAsObject(
+                facesContext, output, (String) submittedValue);
     }
-    
+
     /**
      * Invokes getConvertedUISelectManyValue() with considerValueType = false, thus
      * implementing the standard behavior of the spec (valueType comes from Tomahawk).
@@ -921,11 +1048,13 @@ public final class RendererUtils
      * @return
      * @throws ConverterException
      */
-    public static Object getConvertedUISelectManyValue(FacesContext facesContext, 
-            UISelectMany selectMany, Object submittedValue) throws ConverterException
+    public static Object getConvertedUISelectManyValue(
+            FacesContext facesContext, UISelectMany selectMany,
+            Object submittedValue) throws ConverterException
     {
         // do not consider the valueType attribute
-        return getConvertedUISelectManyValue(facesContext, selectMany, submittedValue, false);
+        return getConvertedUISelectManyValue(facesContext, selectMany,
+                submittedValue, false);
     }
 
     /**
@@ -939,9 +1068,10 @@ public final class RendererUtils
      * @return
      * @throws ConverterException
      */
-    public static Object getConvertedUISelectManyValue(FacesContext facesContext, 
-            UISelectMany selectMany, Object submittedValue,
-            boolean considerValueType) throws ConverterException
+    public static Object getConvertedUISelectManyValue(
+            FacesContext facesContext, UISelectMany selectMany,
+            Object submittedValue, boolean considerValueType)
+            throws ConverterException
     {
         if (submittedValue == null)
         {
@@ -950,21 +1080,24 @@ public final class RendererUtils
 
         if (!(submittedValue instanceof String[]))
         {
-            throw new ConverterException("Submitted value of type String[] for component : "
-                    + getPathToComponent(selectMany) + "expected");
+            throw new ConverterException(
+                    "Submitted value of type String[] for component : "
+                            + getPathToComponent(selectMany) + "expected");
         }
 
         return _SharedRendererUtils.getConvertedUISelectManyValue(facesContext,
                 selectMany, (String[]) submittedValue, considerValueType);
     }
 
-    public static boolean getBooleanAttribute(UIComponent component, String attrName, boolean defaultValue)
+    public static boolean getBooleanAttribute(UIComponent component,
+            String attrName, boolean defaultValue)
     {
         Boolean b = (Boolean) component.getAttributes().get(attrName);
         return b != null ? b.booleanValue() : defaultValue;
     }
 
-    public static int getIntegerAttribute(UIComponent component, String attrName, int defaultValue)
+    public static int getIntegerAttribute(UIComponent component,
+            String attrName, int defaultValue)
     {
         Integer i = (Integer) component.getAttributes().get(attrName);
         return i != null ? i.intValue() : defaultValue;
@@ -973,7 +1106,6 @@ public final class RendererUtils
     private static final String TRINIDAD_FORM_COMPONENT_FAMILY = "org.apache.myfaces.trinidad.Form";
     private static final String ADF_FORM_COMPONENT_FAMILY = "oracle.adf.Form";
 
-
     /**
      * Find the enclosing form of a component
      * in the view-tree.
@@ -989,12 +1121,14 @@ public final class RendererUtils
      * @param facesContext
      * @return FormInfo Information about the form - the form itself and its name.
      */
-    public static FormInfo findNestingForm(UIComponent uiComponent, FacesContext facesContext)
+    public static FormInfo findNestingForm(UIComponent uiComponent,
+            FacesContext facesContext)
     {
         UIComponent parent = uiComponent.getParent();
-        while (parent != null && (!ADF_FORM_COMPONENT_FAMILY.equals(parent.getFamily()) &&
-            !TRINIDAD_FORM_COMPONENT_FAMILY.equals(parent.getFamily()) &&
-            !(parent instanceof UIForm)))
+        while (parent != null
+                && (!ADF_FORM_COMPONENT_FAMILY.equals(parent.getFamily())
+                        && !TRINIDAD_FORM_COMPONENT_FAMILY.equals(parent
+                                .getFamily()) && !(parent instanceof UIForm)))
         {
             parent = parent.getParent();
         }
@@ -1009,16 +1143,23 @@ public final class RendererUtils
         return null;
     }
 
-    public static boolean getBooleanValue(String attribute, Object value, boolean defaultValue) {
-        if (value instanceof Boolean) {
+    public static boolean getBooleanValue(String attribute, Object value,
+            boolean defaultValue)
+    {
+        if (value instanceof Boolean)
+        {
             return ((Boolean) value).booleanValue();
         }
-        else if (value instanceof String) {
+        else if (value instanceof String)
+        {
             return Boolean.valueOf((String) value).booleanValue();
         }
-        else if (value != null) {
-            log.severe("value for attribute " + attribute +
-                " must be instanceof 'Boolean' or 'String', is of type : " + value.getClass());
+        else if (value != null)
+        {
+            log.severe("value for attribute "
+                    + attribute
+                    + " must be instanceof 'Boolean' or 'String', is of type : "
+                    + value.getClass());
 
             return defaultValue;
         }
@@ -1026,14 +1167,14 @@ public final class RendererUtils
         return defaultValue;
     }
 
-    public static void copyHtmlInputTextAttributes(HtmlInputText src, HtmlInputText dest)
+    public static void copyHtmlInputTextAttributes(HtmlInputText src,
+            HtmlInputText dest)
     {
         dest.setId(src.getId());
-        boolean forceId = getBooleanValue(
-            JSFAttr.FORCE_ID_ATTR,
-            src.getAttributes().get(JSFAttr.FORCE_ID_ATTR),
-            false);
-        if (forceId) {
+        boolean forceId = getBooleanValue(JSFAttr.FORCE_ID_ATTR, src
+                .getAttributes().get(JSFAttr.FORCE_ID_ATTR), false);
+        if (forceId)
+        {
             dest.getAttributes().put(JSFAttr.FORCE_ID_ATTR, Boolean.TRUE);
         }
         dest.setImmediate(src.isImmediate());
@@ -1082,7 +1223,8 @@ public final class RendererUtils
 
             synchronized (facescontext.getExternalContext().getSession(true))
             {
-                facescontext.getExternalContext().getSessionMap().put(RendererUtils.SEQUENCE_PARAM, sequence);
+                facescontext.getExternalContext().getSessionMap()
+                        .put(RendererUtils.SEQUENCE_PARAM, sequence);
             }
         }
         return sequence;
@@ -1105,7 +1247,9 @@ public final class RendererUtils
             UIComponent lookupComp = findComponent(comp, clazz);
 
             if (lookupComp != null)
+            {
                 return lookupComp;
+            }
         }
 
         return null;
@@ -1119,7 +1263,8 @@ public final class RendererUtils
         {
             UIComponent oldChild = (UIComponent) li.get(i);
 
-            if (oldChild.getId() != null && oldChild.getId().equals(child.getId()))
+            if (oldChild.getId() != null
+                    && oldChild.getId().equals(child.getId()))
             {
                 li.set(i, child);
                 return;
@@ -1129,23 +1274,25 @@ public final class RendererUtils
         component.getChildren().add(child);
     }
 
-    public static String getClientId(FacesContext facesContext, UIComponent uiComponent, String forAttr)
+    public static String getClientId(FacesContext facesContext,
+            UIComponent uiComponent, String forAttr)
     {
         UIComponent forComponent = uiComponent.findComponent(forAttr);
         if (forComponent == null)
         {
-            final char separatorChar = UINamingContainer.getSeparatorChar(facesContext);
+            final char separatorChar = UINamingContainer
+                    .getSeparatorChar(facesContext);
             if (log.isLoggable(Level.INFO))
             {
-                log
-                        .info("Unable to find component '"
-                                + forAttr
-                                + "' (calling findComponent on component '"
-                                + uiComponent.getClientId(facesContext)
-                                + "')."
-                                + " We'll try to return a guessed client-id anyways -"
-                                + " this will be a problem if you put the referenced component"
-                                + " into a different naming-container. If this is the case, you can always use the full client-id.");
+                log.info("Unable to find component '"
+                        + forAttr
+                        + "' (calling findComponent on component '"
+                        + uiComponent.getClientId(facesContext)
+                        + "')."
+                        + " We'll try to return a guessed client-id anyways -"
+                        + " this will be a problem if you put the referenced component"
+                        + " into a different naming-container. If this is the case, " 
+                        + "you can always use the full client-id.");
             }
             if (forAttr.length() > 0 && forAttr.charAt(0) == separatorChar)
             {
@@ -1157,7 +1304,8 @@ public final class RendererUtils
             String labelClientId = uiComponent.getClientId(facesContext);
             int colon = labelClientId.lastIndexOf(separatorChar);
 
-            return colon == -1 ? forAttr : labelClientId.substring(0, colon + 1) + forAttr;
+            return colon == -1 ? forAttr : labelClientId
+                    .substring(0, colon + 1) + forAttr;
 
         }
 
@@ -1165,7 +1313,8 @@ public final class RendererUtils
 
     }
 
-    public static List convertIdsToClientIds(String actionFor, FacesContext facesContext, UIComponent component)
+    public static List convertIdsToClientIds(String actionFor,
+            FacesContext facesContext, UIComponent component)
     {
         List li = new ArrayList();
 
@@ -1175,9 +1324,14 @@ public final class RendererUtils
         {
             String trimedId = ids[i].trim();
             if (trimedId.equals("none"))
+            {
                 li.add(trimedId);
+            }
             else
-                li.add(RendererUtils.getClientId(facesContext, component, trimedId));
+            {
+                li.add(RendererUtils.getClientId(facesContext, component,
+                        trimedId));
+            }
         }
         return li;
     }
@@ -1221,7 +1375,8 @@ public final class RendererUtils
         ByteArrayOutputStream content = new ByteArrayOutputStream(10240);
 
         InputStream in = null;
-        try {
+        try
+        {
             in = ctx.getExternalContext().getResourceAsStream(file);
             if (in == null)
             {
@@ -1235,14 +1390,21 @@ public final class RendererUtils
                 content.write(fileBuffer, 0, read);
             }
         }
-        catch (FileNotFoundException e) {
+        catch (FileNotFoundException e)
+        {
             if (log.isLoggable(Level.WARNING))
+            {
                 log.log(Level.WARNING, "no such file " + file, e);
+            }
             content = null;
         }
-        catch (IOException e) {
+        catch (IOException e)
+        {
             if (log.isLoggable(Level.WARNING))
-                log.log(Level.WARNING, "problems during processing resource " + file, e);
+            {
+                log.log(Level.WARNING, "problems during processing resource "
+                        + file, e);
+            }
             content = null;
         }
         finally
@@ -1279,7 +1441,8 @@ public final class RendererUtils
      * and initialize the request-map accordingly.
      * SubForms will work with this information.
      */
-    public static void initPartialValidationAndModelUpdate(UIComponent component, FacesContext facesContext)
+    public static void initPartialValidationAndModelUpdate(
+            UIComponent component, FacesContext facesContext)
     {
         String actionFor = (String) component.getAttributes().get("actionFor");
 
@@ -1287,34 +1450,41 @@ public final class RendererUtils
         {
             List li = convertIdsToClientIds(actionFor, facesContext, component);
 
-            facesContext.getExternalContext().getRequestMap().put(ACTION_FOR_LIST, li);
+            facesContext.getExternalContext().getRequestMap()
+                    .put(ACTION_FOR_LIST, li);
 
-            String actionForPhase = (String) component.getAttributes().get("actionForPhase");
+            String actionForPhase = (String) component.getAttributes().get(
+                    "actionForPhase");
 
             if (actionForPhase != null)
             {
                 List phaseList = convertPhasesToPhasesIds(actionForPhase);
 
-                facesContext.getExternalContext().getRequestMap().put(ACTION_FOR_PHASE_LIST, phaseList);
+                facesContext.getExternalContext().getRequestMap()
+                        .put(ACTION_FOR_PHASE_LIST, phaseList);
             }
         }
     }
 
-    public static boolean isAdfOrTrinidadForm(UIComponent component) {
+    public static boolean isAdfOrTrinidadForm(UIComponent component)
+    {
         if (component == null)
+        {
             return false;
-        return ADF_FORM_COMPONENT_FAMILY.equals(component.getFamily()) ||
-            TRINIDAD_FORM_COMPONENT_FAMILY.equals(component.getFamily());
+        }
+        return ADF_FORM_COMPONENT_FAMILY.equals(component.getFamily())
+                || TRINIDAD_FORM_COMPONENT_FAMILY.equals(component.getFamily());
     }
 
-
     /**
      * Gets the ResponseStateManager for the renderKit Id provided
      * 
-     * @deprecated use FacesContext.getRenderKit() or getRenderKitFactory().getRenderKit(context, renderKitId).getResponseStateManager()
+     * @deprecated use FacesContext.getRenderKit() or getRenderKitFactory().getRenderKit(
+     *               context, renderKitId).getResponseStateManager()
      */
     @Deprecated
-    public static ResponseStateManager getResponseStateManager(FacesContext facesContext, String renderKitId)
+    public static ResponseStateManager getResponseStateManager(
+            FacesContext facesContext, String renderKitId)
             throws FacesException
     {
         RenderKit renderKit = facesContext.getRenderKit();
@@ -1323,7 +1493,8 @@ public final class RendererUtils
         {
             // look for the renderkit in the request
             Map attributesMap = facesContext.getAttributes();
-            RenderKitFactory factory = (RenderKitFactory) attributesMap.get(RENDER_KIT_IMPL);
+            RenderKitFactory factory = (RenderKitFactory) attributesMap
+                    .get(RENDER_KIT_IMPL);
 
             if (factory != null)
             {
@@ -1331,7 +1502,8 @@ public final class RendererUtils
             }
             else
             {
-                factory = (RenderKitFactory) FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+                factory = (RenderKitFactory) FactoryFinder
+                        .getFactory(FactoryFinder.RENDER_KIT_FACTORY);
 
                 if (factory == null)
                 {
@@ -1346,12 +1518,13 @@ public final class RendererUtils
 
         if (renderKit == null)
         {
-            throw new IllegalArgumentException("Could not find a RenderKit for \"" + renderKitId + "\""); 
+            throw new IllegalArgumentException(
+                    "Could not find a RenderKit for \"" + renderKitId + "\"");
         }
 
         return renderKit.getResponseStateManager();
     }
-    
+
     /**
       * Checks for name/library attributes on component and if they are avaliable,
       * creates {@link Resource} and returns it's path suitable for rendering.
@@ -1364,7 +1537,8 @@ public final class RendererUtils
       * 
       * @since 4.0.1
       */
-    public static String getIconSrc(final FacesContext facesContext, final UIComponent component, final String attributeName)
+    public static String getIconSrc(final FacesContext facesContext,
+            final UIComponent component, final String attributeName)
     {
 
         // JSF 2.0: if "name" attribute is available, treat as a resource reference.
@@ -1373,19 +1547,22 @@ public final class RendererUtils
         if (resourceName != null && (resourceName.length() > 0))
         {
 
-            final ResourceHandler resourceHandler = facesContext.getApplication().getResourceHandler();
+            final ResourceHandler resourceHandler = facesContext
+                    .getApplication().getResourceHandler();
             final Resource resource;
-            
-            final String libraryName = (String) component.getAttributes().get(JSFAttr.LIBRARY_ATTR);
+
+            final String libraryName = (String) component.getAttributes().get(
+                    JSFAttr.LIBRARY_ATTR);
             if ((libraryName != null) && (libraryName.length() > 0))
             {
-                resource = resourceHandler.createResource(resourceName, libraryName);
+                resource = resourceHandler.createResource(resourceName,
+                        libraryName);
             }
             else
             {
-                resource = resourceHandler.createResource(resourceName);    
+                resource = resourceHandler.createResource(resourceName);
             }
-            
+
             if (resource == null)
             {
                 // If resourceName/libraryName are set but no resource created -> probably a typo,
@@ -1393,14 +1570,16 @@ public final class RendererUtils
                 if (facesContext.isProjectStage(ProjectStage.Development))
                 {
                     String summary = "Unable to find resource: " + resourceName;
-                    if (libraryName != null) 
+                    if (libraryName != null)
                     {
                         summary = summary + " from library: " + libraryName;
                     }
-                    facesContext.addMessage(component.getClientId(facesContext), 
-                            new FacesMessage(FacesMessage.SEVERITY_WARN, summary, summary));
+                    facesContext.addMessage(
+                            component.getClientId(facesContext),
+                            new FacesMessage(FacesMessage.SEVERITY_WARN,
+                                    summary, summary));
                 }
-                
+
                 return RES_NOT_FOUND;
             }
             else
@@ -1410,56 +1589,60 @@ public final class RendererUtils
         }
         else
         {
-            String value = (String) component.getAttributes().get(attributeName);
+            String value = (String) component.getAttributes()
+                    .get(attributeName);
             return toResourceUri(facesContext, value);
         }
     }
-    
+
     /**
      * Coerces an object into a resource URI, calling the view-handler.
      */
     static public String toResourceUri(FacesContext facesContext, Object o)
     {
-      if (o == null)
-        return null;
+        if (o == null)
+        {
+            return null;
+        }
 
-      String uri = o.toString();
+        String uri = o.toString();
 
-      // *** EL Coercion problem ***
-      // If icon or image attribute was declared with #{resource[]} and that expression
-      // evaluates to null (it means ResourceHandler.createResource returns null because requested resource does not exist)
-      // EL implementation turns null into ""
-      // see http://www.irian.at/blog/blogid/unifiedElCoercion/#unifiedElCoercion
-      if (uri.length() == 0)
-      {
-        return null;
-      }
+        // *** EL Coercion problem ***
+        // If icon or image attribute was declared with #{resource[]} and that expression
+        // evaluates to null (it means ResourceHandler.createResource returns null because 
+        // requested resource does not exist)
+        // EL implementation turns null into ""
+        // see http://www.irian.at/blog/blogid/unifiedElCoercion/#unifiedElCoercion
+        if (uri.length() == 0)
+        {
+            return null;
+        }
 
+        // With JSF 2.0 url for resources can be done with EL like #{resource['resourcename']}
+        // and such EL after evalution contains context path for the current web application already,
+        // -> we dont want call viewHandler.getResourceURL()
+        if (uri.contains(ResourceHandler.RESOURCE_IDENTIFIER))
+        {
+            return uri;
+        }
 
-      // With JSF 2.0 url for resources can be done with EL like #{resource['resourcename']}
-      // and such EL after evalution contains context path for the current web application already,
-      // -> we dont want call viewHandler.getResourceURL()
-      if (uri.contains(ResourceHandler.RESOURCE_IDENTIFIER))
-      {
-        return uri;
-      }
-
-      // Treat two slashes as server-relative
-      if (uri.startsWith("//"))
-      {
-        return uri.substring(1);
-      }
-      else
-      {
-        // If the specified path starts with a "/",
-        // following method will prefix it with the context path for the current web application,
-        // and return the result
-        String resourceURL = facesContext.getApplication().getViewHandler().getResourceURL(facesContext, uri);
-        return facesContext.getExternalContext().encodeResourceURL(resourceURL);
-      }
+        // Treat two slashes as server-relative
+        if (uri.startsWith("//"))
+        {
+            return uri.substring(1);
+        }
+        else
+        {
+            // If the specified path starts with a "/",
+            // following method will prefix it with the context path for the current web application,
+            // and return the result
+            String resourceURL = facesContext.getApplication().getViewHandler()
+                    .getResourceURL(facesContext, uri);
+            return facesContext.getExternalContext().encodeResourceURL(
+                    resourceURL);
+        }
     }
 
-
     /**
      * Special converter for handling submitted values which don't need to be converted.
      *
@@ -1484,7 +1667,7 @@ public final class RendererUtils
         public String getAsString(FacesContext context, UIComponent component,
                 Object value) throws ConverterException
         {
-            return (String)value;
+            return (String) value;
         }
 
     }

Added: myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/CommonEventConstants.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/CommonEventConstants.java?rev=1239799&view=auto
==============================================================================
--- myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/CommonEventConstants.java (added)
+++ myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/CommonEventConstants.java Thu Feb  2 20:00:42 2012
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.shared.renderkit.html;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.faces.component.UIComponent;
+
+/**
+ *
+ * @author lu4242
+ */
+public class CommonEventConstants
+{
+    public static final String COMMON_EVENTS_MARKED = "oam.COMMON_EVENTS_MARKED";
+    
+    public static final long ACTION_EVENT        = 0x1L;
+    public static final long CLICK_EVENT         = 0x2L;
+    public static final long DBLCLICK_EVENT      = 0x4L;
+    public static final long MOUSEDOWN_EVENT     = 0x8L;
+    public static final long MOUSEUP_EVENT       = 0x10L;
+    public static final long MOUSEOVER_EVENT     = 0x20L;
+    public static final long MOUSEMOVE_EVENT     = 0x40L;
+    public static final long MOUSEOUT_EVENT      = 0x80L;
+    public static final long KEYPRESS_EVENT      = 0x100L;
+    public static final long KEYDOWN_EVENT       = 0x200L;
+    public static final long KEYUP_EVENT         = 0x400L;
+    public static final long FOCUS_EVENT         = 0x800L;
+    public static final long BLUR_EVENT          = 0x1000L;
+    public static final long SELECT_EVENT        = 0x2000L;
+    public static final long CHANGE_EVENT        = 0x4000L;
+    public static final long VALUECHANGE_EVENT   = 0x8000L;
+    public static final long LOAD_EVENT          = 0x10000L;
+    public static final long UNLOAD_EVENT        = 0x20000L;
+    
+    public static final Map<String, Long> COMMON_EVENTS_KEY_BY_NAME = new HashMap<String, Long>(24,1);
+    
+    static
+    {
+        //EVENTS
+        COMMON_EVENTS_KEY_BY_NAME.put("change",   CHANGE_EVENT);
+        COMMON_EVENTS_KEY_BY_NAME.put("select",   SELECT_EVENT);
+        COMMON_EVENTS_KEY_BY_NAME.put("click",    CLICK_EVENT);
+        COMMON_EVENTS_KEY_BY_NAME.put("dblclick", DBLCLICK_EVENT);
+        COMMON_EVENTS_KEY_BY_NAME.put("mousedown",MOUSEDOWN_EVENT);
+        COMMON_EVENTS_KEY_BY_NAME.put("mouseup",  MOUSEUP_EVENT);
+        COMMON_EVENTS_KEY_BY_NAME.put("mouseover",MOUSEOVER_EVENT);
+        COMMON_EVENTS_KEY_BY_NAME.put("mousemove",MOUSEMOVE_EVENT);
+        COMMON_EVENTS_KEY_BY_NAME.put("mouseout", MOUSEOUT_EVENT);
+        COMMON_EVENTS_KEY_BY_NAME.put("keypress", KEYPRESS_EVENT);
+        COMMON_EVENTS_KEY_BY_NAME.put("keydown",  KEYDOWN_EVENT);
+        COMMON_EVENTS_KEY_BY_NAME.put("keyup",    KEYUP_EVENT);
+        COMMON_EVENTS_KEY_BY_NAME.put("focus",    FOCUS_EVENT);
+        COMMON_EVENTS_KEY_BY_NAME.put("blur",     BLUR_EVENT);
+        COMMON_EVENTS_KEY_BY_NAME.put("load",     LOAD_EVENT);
+        COMMON_EVENTS_KEY_BY_NAME.put("unload",   UNLOAD_EVENT);
+        //virtual
+        COMMON_EVENTS_KEY_BY_NAME.put("valueChange", VALUECHANGE_EVENT);
+        COMMON_EVENTS_KEY_BY_NAME.put("action", ACTION_EVENT);
+    }
+    
+    public static void markEvent(UIComponent component, String name)
+    {
+        Long propertyConstant = COMMON_EVENTS_KEY_BY_NAME.get(name);
+        if (propertyConstant == null)
+        {
+            return;
+        }
+        Long commonPropertiesSet = (Long) component.getAttributes().get(COMMON_EVENTS_MARKED);
+        if (commonPropertiesSet == null)
+        {
+            commonPropertiesSet = 0L;
+        }
+        component.getAttributes().put(COMMON_EVENTS_MARKED, commonPropertiesSet | propertyConstant);
+    }
+}

Propchange: myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/CommonEventConstants.java
------------------------------------------------------------------------------
    svn:eol-style = native