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.tiger.view.faces;
19  
20  import java.io.File;
21  import java.util.Map;
22  import javax.faces.component.UIComponent;
23  import javax.faces.convert.Converter;
24  import javax.faces.event.PhaseListener;
25  import javax.faces.render.Renderer;
26  import javax.faces.validator.Validator;
27  import javax.servlet.ServletContextEvent;
28  import junit.framework.Test;
29  import junit.framework.TestSuite;
30  import org.apache.shale.test.base.AbstractJsfTestCase;
31  import org.apache.shale.tiger.config.FacesConfigConfig;
32  import org.apache.shale.tiger.managed.config.ManagedBeanConfig;
33  import org.apache.shale.tiger.managed.config.ManagedPropertyConfig;
34  import org.apache.shale.tiger.register.faces.PhaseListenerAdapter;
35  import org.apache.shale.view.faces.LifecycleListener;
36  
37  /***
38   * <p>Test case for <code>org.apache.shale.tiger.view.faces.LifecycleListener</code>.</p>
39   */
40  public class LifecycleListener2TestCase extends AbstractJsfTestCase {
41      
42      
43      // ------------------------------------------------------------ Constructors
44  
45  
46      // Construct a new instance of this test case.
47      public LifecycleListener2TestCase(String name) {
48          super(name);
49      }
50  
51  
52      // ---------------------------------------------------- Overall Test Methods
53  
54  
55      // Set up instance variables required by this test case.
56      protected void setUp() throws Exception {
57  
58          super.setUp();
59  
60          // Set up our listener and bind it to context/session/request objects
61          listener = new LifecycleListener();
62          servletContext.addAttributeListener(listener);
63          session.addAttributeListener(listener);
64          request.addAttributeListener(listener);
65          
66          // Set up mock web application environment
67          servletContext.addInitParameter("javax.faces.CONFIG_FILES",
68                                          "/WEB-INF/test-config-0.xml," +
69                                          "/WEB-INF/test-config-1.xml," +
70                                          "/WEB-INF/test-config-2.xml");
71          File root = new File(System.getProperty("basedir") + "/target/test-webapp");
72          servletContext.setDocumentRoot(root);
73  
74      }
75  
76  
77      // Return the tests included in this test case.
78      public static Test suite() {
79  
80          return (new TestSuite(LifecycleListener2TestCase.class));
81  
82      }
83  
84  
85      // Tear down instance variables required by this test case.
86      protected void tearDown() throws Exception {
87  
88  //        callbacks = null;
89          lifecycle = null;
90  
91          super.tearDown();
92  
93      }
94  
95  
96      // ------------------------------------------------------ Instance Variables
97  
98  
99      private LifecycleListener listener = null;
100 
101 
102     // ------------------------------------------------------------ Test Methods
103 
104 
105     // Test standard application bean
106     public void testApplicationBean1() {
107 
108         ApplicationBean1 bean = new ApplicationBean1();
109         assertEquals("", bean.log());
110         servletContext.setAttribute("bean", bean);
111         assertEquals("init/", bean.log());
112         servletContext.setAttribute("bean", bean);
113         assertEquals("init/destroy/init/", bean.log());
114         servletContext.removeAttribute("bean");
115         assertEquals("init/destroy/init/destroy/", bean.log());
116 
117     }
118 
119 
120     // Test annotated application bean
121     public void testApplicationBean2() {
122 
123         ApplicationBean2 bean = new ApplicationBean2();
124         assertEquals("", bean.log());
125         servletContext.setAttribute("bean", bean);
126         assertEquals("init/", bean.log());
127         servletContext.setAttribute("bean", bean);
128         assertEquals("init/destroy/init/", bean.log());
129         servletContext.removeAttribute("bean");
130         assertEquals("init/destroy/init/destroy/", bean.log());
131 
132     }
133 
134 
135     // Test basic operations -- can we initialize and destroy with no exceptions?
136     public void testBasic() {
137 
138         // Create a ServletContextEvent we will pass to the event methods
139         ServletContextEvent event = new ServletContextEvent(servletContext);
140 
141         // Initialize the servlet context listener
142         listener.contextInitialized(event);
143 
144         // Finalize the servlet context listener
145         listener.contextDestroyed(event);
146 
147     }
148 
149 
150     // Test configuration of managed beans
151     public void testManagedBeans() {
152 
153         // Create a ServletContextEvent we will pass to the event methods
154         ServletContextEvent event = new ServletContextEvent(servletContext);
155 
156         // Initialize the servlet context listener
157         listener.contextInitialized(event);
158 
159         // Check out the managed beans configuration information
160         FacesConfigConfig fcConfig =
161           (FacesConfigConfig) servletContext.getAttribute(LifecycleListener2.FACES_CONFIG_CONFIG);
162         assertNotNull(config);
163         Map<String,ManagedBeanConfig> mbMap = fcConfig.getManagedBeans();
164         assertNotNull(mbMap);
165         assertEquals(9, mbMap.size());
166 
167         ManagedPropertyConfig mpConfig = null;
168 
169         // Validate configuration of bean0
170         ManagedBeanConfig bean0 = fcConfig.getManagedBean("bean0");
171         assertNotNull(bean0);
172         assertTrue(bean0 == mbMap.get("bean0"));
173         assertEquals("bean0", bean0.getName());
174         assertEquals("org.apache.shale.tiger.config.TestBean", bean0.getType());
175         assertEquals("request", bean0.getScope());
176         assertNull(bean0.getListEntries());
177         assertNull(bean0.getMapEntries());
178         Map<String,ManagedPropertyConfig> bean0Map = bean0.getProperties();
179         assertNotNull(bean0Map);
180         assertEquals(1, bean0Map.size());
181 
182         mpConfig = bean0.getProperty("stringProperty");
183         assertNotNull(mpConfig);
184         assertTrue(mpConfig == bean0Map.get("stringProperty"));
185         assertEquals("stringProperty", mpConfig.getName());
186         assertEquals("java.lang.String", mpConfig.getType());
187         assertNull(mpConfig.getValue());
188         assertTrue(mpConfig.isNullValue());
189 
190         // Validate configuration of bean1
191         ManagedBeanConfig bean1 = fcConfig.getManagedBean("bean1");
192         assertNotNull(bean1);
193         assertTrue(bean1 == mbMap.get("bean1"));
194         assertEquals("bean1", bean1.getName());
195         assertEquals("org.apache.shale.tiger.config.TestBean", bean1.getType());
196         assertEquals("session", bean1.getScope());
197         assertNull(bean1.getListEntries());
198         assertNull(bean1.getMapEntries());
199         Map<String,ManagedPropertyConfig> bean1Map = bean1.getProperties();
200         assertNotNull(bean1Map);
201         assertEquals(3, bean1Map.size());
202 
203         mpConfig = bean1.getProperty("byteProperty");
204         assertNotNull(mpConfig);
205         assertTrue(mpConfig == bean1Map.get("byteProperty"));
206         assertEquals("byteProperty", mpConfig.getName());
207         assertEquals("byte", mpConfig.getType());
208         assertEquals("11", mpConfig.getValue());
209         assertTrue(!mpConfig.isNullValue());
210 
211         mpConfig = bean1.getProperty("doubleProperty");
212         assertNotNull(mpConfig);
213         assertTrue(mpConfig == bean1Map.get("doubleProperty"));
214         assertEquals("doubleProperty", mpConfig.getName());
215         assertEquals("double", mpConfig.getType());
216         assertEquals("222.0", mpConfig.getValue());
217         assertTrue(!mpConfig.isNullValue());
218 
219         mpConfig = bean1.getProperty("intProperty");
220         assertNotNull(mpConfig);
221         assertTrue(mpConfig == bean1Map.get("intProperty"));
222         assertEquals("intProperty", mpConfig.getName());
223         assertEquals("int", mpConfig.getType());
224         assertEquals("44", mpConfig.getValue());
225         assertTrue(!mpConfig.isNullValue());
226 
227         // Validate configuration of bean2
228         ManagedBeanConfig bean2 = fcConfig.getManagedBean("bean2");
229         assertNotNull(bean2);
230         assertTrue(bean2 == mbMap.get("bean2"));
231         assertEquals("bean2", bean2.getName());
232         assertEquals("org.apache.shale.tiger.config.TestBean", bean2.getType());
233         assertEquals("request", bean2.getScope());
234         assertNull(bean2.getListEntries());
235         assertNull(bean2.getMapEntries());
236         Map<String,ManagedPropertyConfig> bean2Map = bean2.getProperties();
237         assertNotNull(bean2Map);
238         assertEquals(8, bean2Map.size());
239 
240         mpConfig = bean2.getProperty("byteProperty");
241         assertNotNull(mpConfig);
242         assertTrue(mpConfig == bean2Map.get("byteProperty"));
243         assertEquals("byteProperty", mpConfig.getName());
244         assertEquals("byte", mpConfig.getType());
245         assertEquals("-1", mpConfig.getValue());
246         assertTrue(!mpConfig.isNullValue());
247 
248         mpConfig = bean2.getProperty("charProperty");
249         assertNotNull(mpConfig);
250         assertTrue(mpConfig == bean2Map.get("charProperty"));
251         assertEquals("charProperty", mpConfig.getName());
252         assertEquals("char", mpConfig.getType());
253         assertEquals("z", mpConfig.getValue());
254         assertTrue(!mpConfig.isNullValue());
255 
256         mpConfig = bean2.getProperty("doubleProperty");
257         assertNotNull(mpConfig);
258         assertTrue(mpConfig == bean2Map.get("doubleProperty"));
259         assertEquals("doubleProperty", mpConfig.getName());
260         assertEquals("double", mpConfig.getType());
261         assertEquals("-2.0", mpConfig.getValue());
262         assertTrue(!mpConfig.isNullValue());
263 
264         mpConfig = bean2.getProperty("floatProperty");
265         assertNotNull(mpConfig);
266         assertTrue(mpConfig == bean2Map.get("floatProperty"));
267         assertEquals("floatProperty", mpConfig.getName());
268         assertEquals("float", mpConfig.getType());
269         assertEquals("-3.0", mpConfig.getValue());
270         assertTrue(!mpConfig.isNullValue());
271 
272         mpConfig = bean2.getProperty("intProperty");
273         assertNotNull(mpConfig);
274         assertTrue(mpConfig == bean2Map.get("intProperty"));
275         assertEquals("intProperty", mpConfig.getName());
276         assertEquals("int", mpConfig.getType());
277         assertEquals("-4", mpConfig.getValue());
278         assertTrue(!mpConfig.isNullValue());
279 
280         mpConfig = bean2.getProperty("longProperty");
281         assertNotNull(mpConfig);
282         assertTrue(mpConfig == bean2Map.get("longProperty"));
283         assertEquals("longProperty", mpConfig.getName());
284         assertEquals("long", mpConfig.getType());
285         assertEquals("-5", mpConfig.getValue());
286         assertTrue(!mpConfig.isNullValue());
287 
288         mpConfig = bean2.getProperty("shortProperty");
289         assertNotNull(mpConfig);
290         assertTrue(mpConfig == bean2Map.get("shortProperty"));
291         assertEquals("shortProperty", mpConfig.getName());
292         assertEquals("short", mpConfig.getType());
293         assertEquals("-6", mpConfig.getValue());
294         assertTrue(!mpConfig.isNullValue());
295 
296         mpConfig = bean2.getProperty("stringProperty");
297         assertNotNull(mpConfig);
298         assertTrue(mpConfig == bean2Map.get("stringProperty"));
299         assertEquals("stringProperty", mpConfig.getName());
300         assertEquals("java.lang.String", mpConfig.getType());
301         assertEquals("Override The Annotation", mpConfig.getValue());
302         assertTrue(!mpConfig.isNullValue());
303 
304         // Validate configuration of bean2a
305         ManagedBeanConfig bean2a = fcConfig.getManagedBean("bean2a");
306         assertNotNull(bean2a);
307         assertTrue(bean2a == mbMap.get("bean2a"));
308         assertEquals("bean2a", bean2a.getName());
309         assertEquals("org.apache.shale.tiger.config.TestBean2", bean2a.getType());
310         assertEquals("application", bean2a.getScope());
311         assertNull(bean2a.getListEntries());
312         assertNull(bean2a.getMapEntries());
313         Map<String,ManagedPropertyConfig> bean2aMap = bean2a.getProperties();
314         assertNotNull(bean2aMap);
315         assertEquals(9, bean2aMap.size());
316 
317         mpConfig = bean2a.getProperty("byteProperty");
318         assertNotNull(mpConfig);
319         assertTrue(mpConfig == bean2aMap.get("byteProperty"));
320         assertEquals("byteProperty", mpConfig.getName());
321         assertEquals("byte", mpConfig.getType());
322         assertEquals("-1", mpConfig.getValue());
323         assertTrue(!mpConfig.isNullValue());
324 
325         mpConfig = bean2a.getProperty("charProperty");
326         assertNotNull(mpConfig);
327         assertTrue(mpConfig == bean2aMap.get("charProperty"));
328         assertEquals("charProperty", mpConfig.getName());
329         assertEquals("char", mpConfig.getType());
330         assertEquals("z", mpConfig.getValue());
331         assertTrue(!mpConfig.isNullValue());
332 
333         mpConfig = bean2a.getProperty("doubleProperty");
334         assertNotNull(mpConfig);
335         assertTrue(mpConfig == bean2aMap.get("doubleProperty"));
336         assertEquals("doubleProperty", mpConfig.getName());
337         assertEquals("double", mpConfig.getType());
338         assertEquals("-2.0", mpConfig.getValue());
339         assertTrue(!mpConfig.isNullValue());
340 
341         mpConfig = bean2a.getProperty("floatProperty");
342         assertNotNull(mpConfig);
343         assertTrue(mpConfig == bean2aMap.get("floatProperty"));
344         assertEquals("floatProperty", mpConfig.getName());
345         assertEquals("float", mpConfig.getType());
346         assertEquals("-3.0", mpConfig.getValue());
347         assertTrue(!mpConfig.isNullValue());
348 
349         mpConfig = bean2a.getProperty("intProperty");
350         assertNotNull(mpConfig);
351         assertTrue(mpConfig == bean2aMap.get("intProperty"));
352         assertEquals("intProperty", mpConfig.getName());
353         assertEquals("int", mpConfig.getType());
354         assertEquals("-4", mpConfig.getValue());
355         assertTrue(!mpConfig.isNullValue());
356 
357         mpConfig = bean2a.getProperty("longProperty");
358         assertNotNull(mpConfig);
359         assertTrue(mpConfig == bean2aMap.get("longProperty"));
360         assertEquals("longProperty", mpConfig.getName());
361         assertEquals("long", mpConfig.getType());
362         assertEquals("-5", mpConfig.getValue());
363         assertTrue(!mpConfig.isNullValue());
364 
365         mpConfig = bean2a.getProperty("shortProperty");
366         assertNotNull(mpConfig);
367         assertTrue(mpConfig == bean2aMap.get("shortProperty"));
368         assertEquals("shortProperty", mpConfig.getName());
369         assertEquals("short", mpConfig.getType());
370         assertEquals("-6", mpConfig.getValue());
371         assertTrue(!mpConfig.isNullValue());
372 
373         mpConfig = bean2a.getProperty("stringProperty");
374         assertNotNull(mpConfig);
375         assertTrue(mpConfig == bean2aMap.get("stringProperty"));
376         assertEquals("stringProperty", mpConfig.getName());
377         assertEquals("java.lang.String", mpConfig.getType());
378         assertEquals("Annotated", mpConfig.getValue());
379         assertTrue(!mpConfig.isNullValue());
380 
381         mpConfig = bean2a.getProperty("xtraProperty");
382         assertNotNull(mpConfig);
383         assertTrue(mpConfig == bean2aMap.get("xtraProperty"));
384         assertEquals("xtraProperty", mpConfig.getName());
385         assertEquals("java.lang.String", mpConfig.getType());
386         assertEquals("Xtra Override", mpConfig.getValue());
387         assertTrue(!mpConfig.isNullValue());
388 
389         // Validate configuration of bean3
390         ManagedBeanConfig bean3 = fcConfig.getManagedBean("bean3");
391         assertNotNull(bean3);
392         assertTrue(bean3 == mbMap.get("bean3"));
393         assertEquals("bean3", bean3.getName());
394         assertEquals("org.apache.shale.tiger.config.TestBean3", bean3.getType());
395         assertEquals("session", bean3.getScope());
396         assertNull(bean3.getListEntries());
397         assertNull(bean3.getMapEntries());
398         Map<String,ManagedPropertyConfig> bean3Map = bean3.getProperties();
399         assertNotNull(bean3Map);
400         assertEquals(8, bean3Map.size());
401 
402         mpConfig = bean3.getProperty("byteProperty");
403         assertNotNull(mpConfig);
404         assertTrue(mpConfig == bean3Map.get("byteProperty"));
405         assertEquals("byteProperty", mpConfig.getName());
406         assertEquals("byte", mpConfig.getType());
407         assertEquals("-1", mpConfig.getValue());
408         assertTrue(!mpConfig.isNullValue());
409 
410         mpConfig = bean3.getProperty("charProperty");
411         assertNotNull(mpConfig);
412         assertTrue(mpConfig == bean3Map.get("charProperty"));
413         assertEquals("charProperty", mpConfig.getName());
414         assertEquals("char", mpConfig.getType());
415         assertEquals("z", mpConfig.getValue());
416         assertTrue(!mpConfig.isNullValue());
417 
418         mpConfig = bean3.getProperty("doubleProperty");
419         assertNotNull(mpConfig);
420         assertTrue(mpConfig == bean3Map.get("doubleProperty"));
421         assertEquals("doubleProperty", mpConfig.getName());
422         assertEquals("double", mpConfig.getType());
423         assertEquals("-2.0", mpConfig.getValue());
424         assertTrue(!mpConfig.isNullValue());
425 
426         mpConfig = bean3.getProperty("floatProperty");
427         assertNotNull(mpConfig);
428         assertTrue(mpConfig == bean3Map.get("floatProperty"));
429         assertEquals("floatProperty", mpConfig.getName());
430         assertEquals("float", mpConfig.getType());
431         assertEquals("-3.0", mpConfig.getValue());
432         assertTrue(!mpConfig.isNullValue());
433 
434         mpConfig = bean3.getProperty("intProperty");
435         assertNotNull(mpConfig);
436         assertTrue(mpConfig == bean3Map.get("intProperty"));
437         assertEquals("intProperty", mpConfig.getName());
438         assertEquals("int", mpConfig.getType());
439         assertEquals("-4", mpConfig.getValue());
440         assertTrue(!mpConfig.isNullValue());
441 
442         mpConfig = bean3.getProperty("longProperty");
443         assertNotNull(mpConfig);
444         assertTrue(mpConfig == bean3Map.get("longProperty"));
445         assertEquals("longProperty", mpConfig.getName());
446         assertEquals("long", mpConfig.getType());
447         assertEquals("-5", mpConfig.getValue());
448         assertTrue(!mpConfig.isNullValue());
449 
450         mpConfig = bean3.getProperty("shortProperty");
451         assertNotNull(mpConfig);
452         assertTrue(mpConfig == bean3Map.get("shortProperty"));
453         assertEquals("shortProperty", mpConfig.getName());
454         assertEquals("short", mpConfig.getType());
455         assertEquals("-6", mpConfig.getValue());
456         assertTrue(!mpConfig.isNullValue());
457 
458         mpConfig = bean3.getProperty("stringProperty");
459         assertNotNull(mpConfig);
460         assertTrue(mpConfig == bean3Map.get("stringProperty"));
461         assertEquals("stringProperty", mpConfig.getName());
462         assertEquals("java.lang.String", mpConfig.getType());
463         assertEquals("Annotated", mpConfig.getValue());
464         assertTrue(!mpConfig.isNullValue());
465 
466         // Test existence of "org.apache.shale.TAG_UTILITY_BEAN" managed bean
467         ManagedBeanConfig tagUtilityBean = fcConfig.getManagedBean("org.apache.shale.TAG_UTILITY_BEAN");
468         assertNotNull(tagUtilityBean);
469 
470         // Finalize the servlet context listener
471         listener.contextDestroyed(event);
472 
473     }
474 
475 
476     // Test a prisine instance
477     public void testPristine() {
478 
479         assertNotNull(listener);
480 
481     }
482 
483 
484     // Test registration of JavaServer Faces objects
485     public void testRegister() {
486 
487         // Create a ServletContextEvent we will pass to the event methods
488         ServletContextEvent event = new ServletContextEvent(servletContext);
489 
490         // Initialize the servlet context listener
491         listener.contextInitialized(event);
492 
493         // Check for the widgets that should have been registered
494         UIComponent comp = application.createComponent("foo.MyComponent");
495         assertNotNull(comp);
496         Converter conv = application.createConverter("foo.MyConverter");
497         assertNotNull(conv);
498         Renderer rend = renderKit.getRenderer("foo.MyFamily", "foo.MyRenderer");
499         assertNotNull(rend);
500         Validator val = application.createValidator("foo.MyValidator");
501         assertNotNull(val);
502 
503         // Check our lifecycle instance as well
504         PhaseListener listeners[] = lifecycle.getPhaseListeners();
505         assertNotNull(listeners);
506         assertEquals(1, listeners.length);
507         assertTrue(listeners[0] instanceof PhaseListenerAdapter);
508 
509         // Finalize the servlet context listener
510         listener.contextDestroyed(event);
511 
512     }
513 
514 
515     // Test standard request bean
516     public void testRequestBean1() {
517 
518         RequestBean1 bean = new RequestBean1();
519         assertEquals("", bean.log());
520         request.setAttribute("bean", bean);
521         assertEquals("init/", bean.log());
522         request.setAttribute("bean", bean);
523         assertEquals("init/destroy/init/", bean.log());
524         request.removeAttribute("bean");
525         assertEquals("init/destroy/init/destroy/", bean.log());
526 
527     }
528 
529 
530     // Test annotated request bean
531     public void testRequestBean2() {
532 
533         RequestBean2 bean = new RequestBean2();
534         assertEquals("", bean.log());
535         request.setAttribute("bean", bean);
536         assertEquals("init/", bean.log());
537         request.setAttribute("bean", bean);
538         assertEquals("init/destroy/init/", bean.log());
539         request.removeAttribute("bean");
540         assertEquals("init/destroy/init/destroy/", bean.log());
541 
542     }
543 
544 
545     // Test standard session bean
546     public void testSessionBean1() {
547 
548         SessionBean1 bean = new SessionBean1();
549         assertEquals("", bean.log());
550         session.setAttribute("bean", bean);
551         assertEquals("init/", bean.log());
552         session.setAttribute("bean", bean);
553         assertEquals("init/destroy/init/", bean.log());
554         session.removeAttribute("bean");
555         assertEquals("init/destroy/init/destroy/", bean.log());
556 
557     }
558 
559 
560     // Test annotated session bean
561     public void testSessionBean2() {
562 
563         SessionBean2 bean = new SessionBean2();
564         assertEquals("", bean.log());
565         session.setAttribute("bean", bean);
566         assertEquals("init/", bean.log());
567         session.setAttribute("bean", bean);
568         assertEquals("init/destroy/init/", bean.log());
569         session.removeAttribute("bean");
570         assertEquals("init/destroy/init/destroy/", bean.log());
571 
572     }
573 
574 
575 }