Coverage Report - org.apache.myfaces.shared.renderkit.html.HtmlSelectableRendererBase
 
Classes in this File Line Coverage Branch Coverage Complexity
HtmlSelectableRendererBase
0%
0/48
0%
0/26
14
 
 1  
 /*
 2  
  * Licensed to the Apache Software Foundation (ASF) under one
 3  
  * or more contributor license agreements.  See the NOTICE file
 4  
  * distributed with this work for additional information
 5  
  * regarding copyright ownership.  The ASF licenses this file
 6  
  * to you under the Apache License, Version 2.0 (the
 7  
  * "License"); you may not use this file except in compliance
 8  
  * with the License.  You may obtain a copy of the License at
 9  
  *
 10  
  *   http://www.apache.org/licenses/LICENSE-2.0
 11  
  *
 12  
  * Unless required by applicable law or agreed to in writing,
 13  
  * software distributed under the License is distributed on an
 14  
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 15  
  * KIND, either express or implied.  See the License for the
 16  
  * specific language governing permissions and limitations
 17  
  * under the License.
 18  
  */
 19  
 package org.apache.myfaces.shared.renderkit.html;
 20  
 
 21  
 import java.io.IOException;
 22  
 import java.util.List;
 23  
 import java.util.Map;
 24  
 import java.util.Set;
 25  
 import javax.faces.component.UIComponent;
 26  
 import javax.faces.component.UISelectMany;
 27  
 import javax.faces.component.UISelectOne;
 28  
 import javax.faces.component.behavior.ClientBehavior;
 29  
 import javax.faces.component.behavior.ClientBehaviorHolder;
 30  
 import javax.faces.context.FacesContext;
 31  
 import javax.faces.context.ResponseWriter;
 32  
 import javax.faces.convert.Converter;
 33  
 import org.apache.myfaces.shared.renderkit.html.util.SelectItemInfo;
 34  
 import org.apache.myfaces.shared.renderkit.html.util.SelectItemsUtils;
 35  
 
 36  0
 public class HtmlSelectableRendererBase extends HtmlRenderer
 37  
 {
 38  
     
 39  
     protected void internalRenderSelect(FacesContext facesContext,
 40  
             UIComponent uiComponent, boolean disabled, int size,
 41  
             boolean selectMany, Converter converter) throws IOException
 42  
     {
 43  0
         ResponseWriter writer = facesContext.getResponseWriter();
 44  0
         writer.startElement(HTML.SELECT_ELEM, uiComponent);
 45  0
         if (uiComponent instanceof ClientBehaviorHolder
 46  
                 && !((ClientBehaviorHolder) uiComponent).getClientBehaviors()
 47  
                         .isEmpty())
 48  
         {
 49  0
             writer.writeAttribute(HTML.ID_ATTR,
 50  
                     uiComponent.getClientId(facesContext), null);
 51  
         }
 52  
         else
 53  
         {
 54  0
             HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent,
 55  
                     facesContext);
 56  
         }
 57  0
         writer.writeAttribute(HTML.NAME_ATTR,
 58  
                 uiComponent.getClientId(facesContext), null);
 59  
         List<SelectItemInfo> selectItemList;
 60  0
         if (selectMany)
 61  
         {
 62  0
             writer.writeAttribute(HTML.MULTIPLE_ATTR, HTML.MULTIPLE_ATTR, null);
 63  0
             selectItemList = SelectItemsUtils.getSelectItemInfoList((UISelectMany) uiComponent, facesContext);
 64  
         }
 65  
         else
 66  
         {
 67  0
             selectItemList = SelectItemsUtils.getSelectItemInfoList(
 68  
                     (UISelectOne) uiComponent, facesContext);
 69  
         }
 70  
 
 71  0
         if (size == Integer.MIN_VALUE)
 72  
         {
 73  
             //No size given (Listbox) --> size is number of select items
 74  0
             writer.writeAttribute(HTML.SIZE_ATTR,
 75  
                     Integer.toString(selectItemList.size()), null);
 76  
         }
 77  
         else
 78  
         {
 79  0
             writer.writeAttribute(HTML.SIZE_ATTR, Integer.toString(size), null);
 80  
         }
 81  0
         Map<String, List<ClientBehavior>> behaviors = null;
 82  0
         if (uiComponent instanceof ClientBehaviorHolder)
 83  
         {
 84  0
             behaviors = ((ClientBehaviorHolder) uiComponent)
 85  
                     .getClientBehaviors();
 86  0
             long commonPropertiesMarked = 0L;
 87  0
             if (isCommonPropertiesOptimizationEnabled(facesContext))
 88  
             {
 89  0
                 commonPropertiesMarked = CommonPropertyUtils.getCommonPropertiesMarked(uiComponent);
 90  
             }
 91  0
             if (behaviors.isEmpty() && isCommonPropertiesOptimizationEnabled(facesContext))
 92  
             {
 93  0
                 CommonPropertyUtils.renderChangeEventProperty(writer, 
 94  
                         commonPropertiesMarked, uiComponent);
 95  0
                 CommonPropertyUtils.renderEventProperties(writer, 
 96  
                         commonPropertiesMarked, uiComponent);
 97  0
                 CommonPropertyUtils.renderFieldEventPropertiesWithoutOnchange(writer, 
 98  
                         commonPropertiesMarked, uiComponent);
 99  
             }
 100  
             else
 101  
             {
 102  0
                 HtmlRendererUtils.renderBehaviorizedOnchangeEventHandler(facesContext, writer,
 103  
                         uiComponent, behaviors);
 104  0
                 if (isCommonEventsOptimizationEnabled(facesContext))
 105  
                 {
 106  0
                     Long commonEventsMarked = CommonEventUtils.getCommonEventsMarked(uiComponent);
 107  0
                     CommonEventUtils.renderBehaviorizedEventHandlers(facesContext, writer, 
 108  
                             commonPropertiesMarked, commonEventsMarked, uiComponent, behaviors);
 109  0
                     CommonEventUtils.renderBehaviorizedFieldEventHandlersWithoutOnchange(
 110  
                         facesContext, writer, commonPropertiesMarked, commonEventsMarked, uiComponent, behaviors);
 111  0
                 }
 112  
                 else
 113  
                 {
 114  0
                     HtmlRendererUtils.renderBehaviorizedEventHandlers(facesContext, writer, uiComponent,
 115  
                             behaviors);
 116  0
                     HtmlRendererUtils.renderBehaviorizedFieldEventHandlersWithoutOnchange(facesContext,
 117  
                             writer, uiComponent, behaviors);
 118  
                 }
 119  
             }
 120  0
             if (isCommonPropertiesOptimizationEnabled(facesContext))
 121  
             {
 122  0
                 CommonPropertyUtils.renderSelectPassthroughPropertiesWithoutDisabledAndEvents(writer, 
 123  
                         CommonPropertyUtils.getCommonPropertiesMarked(uiComponent), uiComponent);
 124  
             }
 125  
             else
 126  
             {
 127  0
                 HtmlRendererUtils.renderHTMLAttributes(
 128  
                         writer,
 129  
                         uiComponent,
 130  
                         HTML.SELECT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS);
 131  
             }
 132  0
         }
 133  
         else
 134  
         {
 135  0
             if (isCommonPropertiesOptimizationEnabled(facesContext))
 136  
             {
 137  0
                 CommonPropertyUtils.renderSelectPassthroughPropertiesWithoutDisabled(writer, 
 138  
                         CommonPropertyUtils.getCommonPropertiesMarked(uiComponent), uiComponent);
 139  
             }
 140  
             else
 141  
             {
 142  0
                 HtmlRendererUtils.renderHTMLAttributes(writer, uiComponent,
 143  
                         HTML.SELECT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED);
 144  
             }
 145  
         }
 146  
 
 147  0
         if (disabled)
 148  
         {
 149  0
             writer.writeAttribute(HTML.DISABLED_ATTR, Boolean.TRUE, null);
 150  
         }
 151  
 
 152  0
         if (HtmlRendererUtils.isReadOnly(uiComponent))
 153  
         {
 154  0
             writer.writeAttribute(HTML.READONLY_ATTR, HTML.READONLY_ATTR, null);
 155  
         }
 156  
 
 157  0
         Set lookupSet = HtmlRendererUtils.getSubmittedOrSelectedValuesAsSet(selectMany,
 158  
                 uiComponent, facesContext, converter);
 159  
 
 160  0
         SelectItemsUtils.renderSelectOptions(facesContext, uiComponent, converter, lookupSet,
 161  
                 selectItemList);
 162  
         // bug #970747: force separate end tag
 163  0
         writer.writeText(HtmlRendererUtils.STR_EMPTY, null);
 164  0
         writer.endElement(HTML.SELECT_ELEM);
 165  0
     }
 166  
     
 167  
 }