2009/05/20 - Apache Shale has been retired.

For more information, please explore the Attic.

View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to you under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  
18  package org.apache.shale.test.mock;
19  
20  import java.util.HashMap;
21  import java.util.Iterator;
22  import java.util.Map;
23  
24  import javax.faces.context.FacesContext;
25  import javax.faces.render.RenderKit;
26  import javax.faces.render.RenderKitFactory;
27  
28  /***
29   * <p>Mock implementation of <code>RenderKitFactory</code>.</p>
30   *
31   * $Id$
32   */
33  
34  public class MockRenderKitFactory extends RenderKitFactory {
35  
36  
37      // ------------------------------------------------------------ Constructors
38  
39  
40      /***
41       * <p>Return a default instance.</p>
42       */
43      public MockRenderKitFactory() {
44  
45          renderKits = new HashMap();
46  
47      }
48  
49  
50      // ----------------------------------------------------- Mock Object Methods
51  
52  
53      // ------------------------------------------------------ Instance Variables
54  
55  
56      /***
57       * <p>The set of render kits that have been registered here.</p>
58       */
59      private Map renderKits = new HashMap();
60  
61  
62      // ------------------------------------------------ RenderKitFactory Methods
63  
64  
65      /*** {@inheritDoc} */
66      public void addRenderKit(String renderKitId, RenderKit renderKit) {
67  
68          if ((renderKitId == null) || (renderKit == null)) {
69              throw new NullPointerException();
70          }
71          if (renderKits.containsKey(renderKitId)) {
72              throw new IllegalArgumentException(renderKitId);
73          }
74          renderKits.put(renderKitId, renderKit);
75  
76      }
77  
78  
79      /*** {@inheritDoc} */
80      public RenderKit getRenderKit(FacesContext context, String renderKitId) {
81  
82          if (renderKitId == null) {
83              throw new NullPointerException();
84          }
85          RenderKit renderKit = (RenderKit) renderKits.get(renderKitId);
86          if (renderKit == null) {
87              // Issue 38294 -- We removed the automatic creation of the
88              // default renderkit in the constructor, allowing it to be
89              // added by AbstractJsfTestCase in the usual case.  To preserve
90              // backwards compatibility, however, create one on the fly
91              // if the user asks for the default HTML renderkit and it has
92              // not been manually added yet
93              if (RenderKitFactory.HTML_BASIC_RENDER_KIT.equals(renderKitId)) {
94                  renderKit = new MockRenderKit();
95                  renderKits.put(RenderKitFactory.HTML_BASIC_RENDER_KIT,
96                                 renderKit);
97                  return renderKit;
98              }
99              throw new IllegalArgumentException(renderKitId);
100         }
101         return renderKit;
102 
103     }
104 
105 
106     /*** {@inheritDoc} */
107     public Iterator getRenderKitIds() {
108 
109         return renderKits.keySet().iterator();
110 
111     }
112 
113 
114 }