Coverage Report - org.apache.myfaces.el.unified.CustomFirstELResolverComparator
 
Classes in this File Line Coverage Branch Coverage Complexity
CustomFirstELResolverComparator
0%
0/18
0%
0/10
5.5
 
 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.el.unified;
 20  
 
 21  
 import java.util.Comparator;
 22  
 import java.util.List;
 23  
 
 24  
 import javax.el.ELResolver;
 25  
 import javax.faces.context.ExternalContext;
 26  
 import javax.faces.context.FacesContext;
 27  
 
 28  
 import org.apache.myfaces.config.RuntimeConfig;
 29  
 
 30  
 /**
 31  
  * Comparator for ELResolvers that shifts the Resolvers from
 32  
  * the faces-config to the front.
 33  
  * 
 34  
  * @author Jakob Korherr (latest modification by $Author$)
 35  
  * @version $Revision$ $Date$
 36  
  *
 37  
  * @since 1.2.10, 2.0.2
 38  
  */
 39  0
 public class CustomFirstELResolverComparator implements Comparator<ELResolver>
 40  
 {
 41  
     
 42  
     private List<ELResolver> _facesConfigResolvers;
 43  
     
 44  
     public int compare(ELResolver r1, ELResolver r2)
 45  
     {
 46  0
         List<ELResolver> facesConfigResolvers = _getFacesConfigElResolvers();
 47  
         
 48  0
         if (facesConfigResolvers == null)
 49  
         {
 50  
             // no el-resolvers in faces-config
 51  0
             return 0; // keep order
 52  
         }
 53  
         
 54  0
         boolean r1FromFacesConfig = facesConfigResolvers.contains(r1);
 55  0
         boolean r2FromFacesConfig = facesConfigResolvers.contains(r2);
 56  
         
 57  0
         if (r1FromFacesConfig)
 58  
         {
 59  0
             if (r2FromFacesConfig)
 60  
             {
 61  
                 // both are from faces-config
 62  0
                 return 0; // keep order
 63  
             }
 64  
             else
 65  
             {
 66  
                 // only r1 is from faces-config
 67  0
                 return -1;
 68  
             }
 69  
         }
 70  
         else
 71  
         {
 72  0
             if (r2FromFacesConfig)
 73  
             {
 74  
                 // only r2 is from faces-config
 75  0
                 return 1;
 76  
             }
 77  
             else
 78  
             {
 79  
                 // neither r1 nor r2 are from faces-config
 80  0
                 return 0; // keep order
 81  
             }
 82  
         }
 83  
     }
 84  
     
 85  
     /**
 86  
      * Returns a List of all ELResolvers from the faces-config.
 87  
      * @return
 88  
      */
 89  
     private List<ELResolver> _getFacesConfigElResolvers()
 90  
     {
 91  0
         if (_facesConfigResolvers == null)
 92  
         {
 93  0
             ExternalContext externalContext
 94  
                     = FacesContext.getCurrentInstance().getExternalContext();
 95  0
             RuntimeConfig runtimeConfig
 96  
                     = RuntimeConfig.getCurrentInstance(externalContext);
 97  0
             _facesConfigResolvers 
 98  
                     = runtimeConfig.getFacesConfigElResolvers();
 99  
         }
 100  
         
 101  0
         return _facesConfigResolvers;
 102  
     }
 103  
     
 104  
 }