View Javadoc

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.ArrayList;
22  import java.util.List;
23  
24  import javax.el.CompositeELResolver;
25  import javax.el.ELResolver;
26  
27  import org.apache.myfaces.config.RuntimeConfig;
28  import org.apache.myfaces.el.FlashELResolver;
29  import org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.Scope;
30  import org.apache.myfaces.el.unified.resolver.ManagedBeanResolver;
31  import org.apache.myfaces.el.unified.resolver.ResourceBundleResolver;
32  import org.apache.myfaces.el.unified.resolver.ResourceResolver;
33  import org.apache.myfaces.el.unified.resolver.implicitobject.ImplicitObjectResolver;
34  
35  /**
36   * build the el resolver for jsp. see 1.2 spec section 5.6.1
37   * 
38   * @author Mathias Broekelmann (latest modification by $Author$)
39   * @version $Revision$ $Date$
40   */
41  public class ResolverBuilderForJSP extends ResolverBuilderBase implements ELResolverBuilder
42  {
43      public ResolverBuilderForJSP(RuntimeConfig config)
44      {
45          super(config);
46      }
47  
48      public void build(CompositeELResolver compositeElResolver)
49      {
50          // add the ELResolvers to a List first to be able to sort them
51          List<ELResolver> list = new ArrayList<ELResolver>();
52          
53          list.add(ImplicitObjectResolver.makeResolverForJSP());
54          //Flash object is instanceof Map, so it is necessary to resolve
55          //before MapELResolver. Better to put this one before
56          list.add(new FlashELResolver());        
57          list.add(new ManagedBeanResolver());
58          list.add(new ResourceBundleResolver());
59          list.add(new ResourceResolver());
60  
61          addFromRuntimeConfig(list);
62          
63          // give the user a chance to sort the resolvers
64          sortELResolvers(list, Scope.JSP);
65          
66          // give the user a chance to filter the resolvers
67          Iterable<ELResolver> filteredELResolvers = filterELResolvers(list, Scope.JSP);
68          
69          // add the resolvers from the list to the CompositeELResolver
70          for (ELResolver resolver : filteredELResolvers)
71          {
72              compositeElResolver.add(resolver);
73          }
74      }
75  
76  }