Added: 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/FacesConfigParserTestCase.java
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/FacesConfigParserTestCase.java?rev=356434&view=auto
==============================================================================
--- 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/FacesConfigParserTestCase.java
 (added)
+++ 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/FacesConfigParserTestCase.java
 Mon Dec 12 16:46:02 2005
@@ -0,0 +1,274 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shale.tiger.config;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import org.apache.shale.tiger.managed.config.ManagedBeanConfig;
+import org.apache.shale.tiger.managed.config.ManagedPropertyConfig;
+
+/**
+ * <p>Test case for 
<code>org.apache.shale.tiger.digester.FacesConfigParser</code>.</p>
+ */
+public class FacesConfigParserTestCase extends TestCase {
+    
+
+    // ------------------------------------------------------------ 
Constructors
+
+
+    // Construct a new instance of this test case
+    public FacesConfigParserTestCase(String name) {
+        super(name);
+    }
+    
+
+    // ---------------------------------------------------- Overall Test 
Methods
+
+
+    // Set up instance variables required by this test case.
+    public void setUp() {
+
+        facesConfig = new FacesConfigConfig();
+        parser = new FacesConfigParser();
+
+    }
+
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return new TestSuite(FacesConfigParserTestCase.class);
+    }
+
+
+    // Tear down instance variables required by this test case
+    public void tearDown() {
+
+        facesConfig = null;
+        parser = null;
+
+    }
+
+
+    // ------------------------------------------------------ Instance 
Variables
+
+
+    // FacesConfigConfig instance representing our parsed metadata
+    FacesConfigConfig facesConfig = null;
+
+
+    // Parser instance to be tested
+    FacesConfigParser parser = null;
+
+
+    // ------------------------------------------------------------ Test 
Methods
+
+
+    // Test pristine instance of the parser
+    public void testPristine() {
+
+        assertNull(parser.getFacesConfig());
+        assertNull(parser.getResource());
+        assertTrue(parser.isValidating());
+
+        assertEquals(0, facesConfig.getManagedBeans().size());
+    }
+
+
+    // Test a static parse of our configuration resources that should
+    // reflect appropriate information merging, but should *not* reflect
+    // any annotations on included classes
+    public void testStatic() throws Exception {
+
+        ManagedBeanConfig mb = null;
+        ManagedPropertyConfig mp = null;
+
+        // Wire up our FacesConfigConfig instance
+        parser.setFacesConfig(facesConfig);
+        assertTrue(facesConfig == parser.getFacesConfig());
+
+        // Make sure we do validating parses
+        parser.setValidating(true);
+        assertTrue(parser.isValidating());
+
+        // Parse resource 0
+        parser.setResource(this.getClass().getResource
+                ("/org/apache/shale/tiger/config/test-config-0.xml"));
+        assertNotNull(parser.getResource());
+        parser.parse();
+        assertEquals(1, facesConfig.getManagedBeans().size());
+
+        // Validate bean0 conditions after parsing resource 0
+        mb = facesConfig.getManagedBean("bean0");
+        assertNotNull(mb);
+        assertEquals("bean0", mb.getName());
+        assertEquals("request", mb.getScope());
+        assertNull(mb.getListEntries());
+        assertNull(mb.getMapEntries());
+        assertEquals(0, mb.getProperties().size());
+
+        // Validate bean1 conditions after parsing resource 0
+        assertNull(mb.getProperty("bean1"));
+
+        // Validate bean2 conditions after parsing resource 0
+        assertNull(mb.getProperty("bean2"));
+
+        // Validate bean3 conditions after parsing resource 0
+        assertNull(mb.getProperty("bean3"));
+
+        // Parse resource 1
+        parser.setResource(this.getClass().getResource
+                ("/org/apache/shale/tiger/config/test-config-1.xml"));
+        assertNotNull(parser.getResource());
+        parser.parse();
+        assertEquals(2, facesConfig.getManagedBeans().size());
+
+        // Validate bean0 conditions after parsing resource 1
+        mb = facesConfig.getManagedBean("bean0");
+        assertNotNull(mb);
+        assertEquals("bean0", mb.getName());
+        assertEquals("request", mb.getScope());
+        assertNull(mb.getListEntries());
+        assertNull(mb.getMapEntries());
+        assertEquals(1, mb.getProperties().size());
+        mp = mb.getProperty("stringProperty");
+        assertNotNull(mp);
+        assertNull(mp.getValue());
+        assertTrue(mp.isNullValue());
+
+        // Validate bean1 conditions after parsing resource 1
+        mb = facesConfig.getManagedBean("bean1");
+        assertNotNull(mb);
+        assertEquals(3, mb.getProperties().size());
+        mp = mb.getProperty("byteProperty");
+        assertNotNull(mp);
+        assertEquals("11", mp.getValue());
+        assertTrue(!mp.isExpression());
+        assertTrue(!mp.isNullValue());
+        mp = mb.getProperty("doubleProperty");
+        assertNotNull(mp);
+        assertEquals("222.0", mp.getValue());
+        assertTrue(!mp.isExpression());
+        assertTrue(!mp.isNullValue());
+        mp = mb.getProperty("intProperty");
+        assertNotNull(mp);
+        assertEquals("44", mp.getValue());
+        assertTrue(!mp.isExpression());
+        assertTrue(!mp.isNullValue());
+
+        // Validate bean2 conditions after parsing resource 1
+        assertNull(facesConfig.getManagedBean("bean2"));
+
+        // Validate bean3 conditions after parsing resource 1
+        assertNull(facesConfig.getManagedBean("bean3"));
+
+        // Parse resource 2
+        parser.setResource(this.getClass().getResource
+                ("/org/apache/shale/tiger/config/test-config-2.xml"));
+        assertNotNull(parser.getResource());
+        parser.parse();
+        assertEquals(3, facesConfig.getManagedBeans().size());
+
+        // Validate bean2 conditions after parsing resource 2
+        mb = facesConfig.getManagedBean("bean2");
+        assertNotNull(mb);
+        assertEquals("bean2", mb.getName());
+        assertEquals("request", mb.getScope());
+        assertNull(mb.getListEntries());
+        assertNull(mb.getMapEntries());
+        assertEquals(1, mb.getProperties().size());
+        mp = mb.getProperty("stringProperty");
+        assertNotNull(mp);
+        assertEquals("java.lang.String", mp.getType());
+        assertEquals("Override The Annotation", mp.getValue());
+        assertTrue(!mp.isExpression());
+        assertTrue(!mp.isNullValue());
+
+        // Parse resource 3
+        parser.setResource(this.getClass().getResource
+                ("/org/apache/shale/tiger/config/test-config-3.xml"));
+        assertNotNull(parser.getResource());
+        parser.parse();
+        assertEquals(4, facesConfig.getManagedBeans().size());
+
+        // Validate bean3 conditions after parsing resource 3
+        mb = facesConfig.getManagedBean("bean3");
+        assertNotNull(mb);
+        assertEquals("bean3", mb.getName());
+        assertEquals("none", mb.getScope());
+        assertNull(mb.getListEntries());
+        assertNull(mb.getMapEntries());
+        assertEquals(8, mb.getProperties().size());
+        mp = mb.getProperty("byteProperty");
+        assertNotNull(mp);
+        assertEquals("byte", mp.getType());
+        assertEquals("#{bean1.byteProperty}", mp.getValue());
+        assertTrue(mp.isExpression());
+        assertTrue(!mp.isNullValue());
+        mp = mb.getProperty("charProperty");
+        assertNotNull(mp);
+        assertEquals("char", mp.getType());
+        assertEquals("#{bean1.charProperty}", mp.getValue());
+        assertTrue(mp.isExpression());
+        assertTrue(!mp.isNullValue());
+        mp = mb.getProperty("charProperty");
+        assertNotNull(mp);
+        assertEquals("char", mp.getType());
+        assertEquals("#{bean1.charProperty}", mp.getValue());
+        assertTrue(mp.isExpression());
+        assertTrue(!mp.isNullValue());
+        mp = mb.getProperty("doubleProperty");
+        assertNotNull(mp);
+        assertEquals("double", mp.getType());
+        assertEquals("#{bean1.doubleProperty}", mp.getValue());
+        assertTrue(mp.isExpression());
+        assertTrue(!mp.isNullValue());
+        mp = mb.getProperty("floatProperty");
+        assertNotNull(mp);
+        assertEquals("float", mp.getType());
+        assertEquals("#{bean1.floatProperty}", mp.getValue());
+        assertTrue(mp.isExpression());
+        assertTrue(!mp.isNullValue());
+        mp = mb.getProperty("intProperty");
+        assertNotNull(mp);
+        assertEquals("int", mp.getType());
+        assertEquals("#{bean1.intProperty}", mp.getValue());
+        assertTrue(mp.isExpression());
+        assertTrue(!mp.isNullValue());
+        mp = mb.getProperty("longProperty");
+        assertNotNull(mp);
+        assertEquals("long", mp.getType());
+        assertEquals("#{bean1.longProperty}", mp.getValue());
+        assertTrue(mp.isExpression());
+        assertTrue(!mp.isNullValue());
+        mp = mb.getProperty("shortProperty");
+        assertNotNull(mp);
+        assertEquals("short", mp.getType());
+        assertEquals("#{bean1.shortProperty}", mp.getValue());
+        assertTrue(mp.isExpression());
+        assertTrue(!mp.isNullValue());
+        mp = mb.getProperty("stringProperty");
+        assertNotNull(mp);
+        assertEquals("java.lang.String", mp.getType());
+        assertEquals("#{bean1.stringProperty}", mp.getValue());
+        assertTrue(mp.isExpression());
+        assertTrue(!mp.isNullValue());
+
+    }
+
+
+}

Added: 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/TestBean.java
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/TestBean.java?rev=356434&view=auto
==============================================================================
--- 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/TestBean.java 
(added)
+++ 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/TestBean.java 
Mon Dec 12 16:46:02 2005
@@ -0,0 +1,225 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shale.tiger.config;
+
+import org.apache.shale.tiger.managed.Bean;
+import org.apache.shale.tiger.managed.Scope;
+import org.apache.shale.tiger.managed.Value;
+
+/**
+ * <p>JavaBean class for testing.</p>
+ */
[EMAIL PROTECTED](name="bean2", scope=Scope.APPLICATION)
+public class TestBean {
+    
+    /** Creates a new instance of TestBean */
+    public TestBean() {
+    }
+
+    /**
+     * Holds value of property byteProperty.
+     */
+    @Value("-1")
+    private byte byteProperty = (byte) 1;
+
+    /**
+     * Getter for property byteProperty.
+     * @return Value of property byteProperty.
+     */
+    public byte getByteProperty() {
+
+        return this.byteProperty;
+    }
+
+    /**
+     * Setter for property byteProperty.
+     * @param byteProperty New value of property byteProperty.
+     */
+    public void setByteProperty(byte byteProperty) {
+
+        this.byteProperty = byteProperty;
+    }
+
+    /**
+     * Holds value of property charProperty.
+     */
+    @Value("z")
+    private char charProperty = 'a';
+
+    /**
+     * Getter for property charProperty.
+     * @return Value of property charProperty.
+     */
+    public char getCharProperty() {
+
+        return this.charProperty;
+    }
+
+    /**
+     * Setter for property charProperty.
+     * @param charProperty New value of property charProperty.
+     */
+    public void setCharProperty(char charProperty) {
+
+        this.charProperty = charProperty;
+    }
+
+    /**
+     * Holds value of property doubleProperty.
+     */
+    @Value("-2.0")
+    private double doubleProperty = (double) 2.0;
+
+    /**
+     * Getter for property doubleProperty.
+     * @return Value of property doubleProperty.
+     */
+    public double getDoubleProperty() {
+
+        return this.doubleProperty;
+    }
+
+    /**
+     * Setter for property doubleProperty.
+     * @param doubleProperty New value of property doubleProperty.
+     */
+    public void setDoubleProperty(double doubleProperty) {
+
+        this.doubleProperty = doubleProperty;
+    }
+    
+    /**
+     * Holds value of property floatProperty.
+     */
+    @Value("-3.0")
+    private float floatProperty = (float) 3.0;
+
+    /**
+     * Getter for property floatProperty.
+     * @return Value of property floatProperty.
+     */
+    public float getFloatProperty() {
+
+        return this.floatProperty;
+    }
+
+    /**
+     * Setter for property floatProperty.
+     * @param floatProperty New value of property floatProperty.
+     */
+    public void setFloatProperty(float floatProperty) {
+
+        this.floatProperty = floatProperty;
+    }
+
+    /**
+     * Holds value of property intProperty.
+     */
+    @Value("-4")
+    private int intProperty = 4;
+
+    /**
+     * Getter for property intProperty.
+     * @return Value of property intProperty.
+     */
+    public int getIntProperty() {
+
+        return this.intProperty;
+    }
+
+    /**
+     * Setter for property intProperty.
+     * @param intProperty New value of property intProperty.
+     */
+    public void setIntProperty(int intProperty) {
+
+        this.intProperty = intProperty;
+    }
+
+    /**
+     * Holds value of property longProperty.
+     */
+    @Value("-5")
+    private long longProperty = (long) 5;
+
+    /**
+     * Getter for property longProperty.
+     * @return Value of property longProperty.
+     */
+    public long getLongProperty() {
+
+        return this.longProperty;
+    }
+
+    /**
+     * Setter for property longProperty.
+     * @param longProperty New value of property longProperty.
+     */
+    public void setLongProperty(long longProperty) {
+
+        this.longProperty = longProperty;
+    }
+
+    /**
+     * Holds value of property shortProperty.
+     */
+    @Value("-6")
+    private short shortProperty = (short) 6;
+
+    /**
+     * Getter for property shortProperty.
+     * @return Value of property shortProperty.
+     */
+    public short getShortProperty() {
+
+        return this.shortProperty;
+    }
+
+    /**
+     * Setter for property shortProperty.
+     * @param shortProperty New value of property shortProperty.
+     */
+    public void setShortProperty(short shortProperty) {
+
+        this.shortProperty = shortProperty;
+    }
+
+    /**
+     * Holds value of property stringProperty.
+     */
+    @Value("Annotated")
+    private String stringProperty = "String";
+
+    /**
+     * Getter for property stringProperty.
+     * @return Value of property stringProperty.
+     */
+    public String getStringProperty() {
+
+        return this.stringProperty;
+    }
+
+    /**
+     * Setter for property stringProperty.
+     * @param stringProperty New value of property stringProperty.
+     */
+    public void setStringProperty(String stringProperty) {
+
+        this.stringProperty = stringProperty;
+    }
+
+}

Added: 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/TestBean3.java
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/TestBean3.java?rev=356434&view=auto
==============================================================================
--- 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/TestBean3.java 
(added)
+++ 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/TestBean3.java 
Mon Dec 12 16:46:02 2005
@@ -0,0 +1,225 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shale.tiger.config;
+
+import org.apache.shale.tiger.managed.Bean;
+import org.apache.shale.tiger.managed.Scope;
+import org.apache.shale.tiger.managed.Value;
+
+/**
+ * <p>JavaBean class for testing.</p>
+ */
[EMAIL PROTECTED](name="bean3", scope=Scope.SESSION)
+public class TestBean3 {
+    
+    /** Creates a new instance of TestBean */
+    public TestBean3() {
+    }
+
+    /**
+     * Holds value of property byteProperty.
+     */
+    @Value("-1")
+    private byte byteProperty = (byte) 1;
+
+    /**
+     * Getter for property byteProperty.
+     * @return Value of property byteProperty.
+     */
+    public byte getByteProperty() {
+
+        return this.byteProperty;
+    }
+
+    /**
+     * Setter for property byteProperty.
+     * @param byteProperty New value of property byteProperty.
+     */
+    public void setByteProperty(byte byteProperty) {
+
+        this.byteProperty = byteProperty;
+    }
+
+    /**
+     * Holds value of property charProperty.
+     */
+    @Value("z")
+    private char charProperty = 'a';
+
+    /**
+     * Getter for property charProperty.
+     * @return Value of property charProperty.
+     */
+    public char getCharProperty() {
+
+        return this.charProperty;
+    }
+
+    /**
+     * Setter for property charProperty.
+     * @param charProperty New value of property charProperty.
+     */
+    public void setCharProperty(char charProperty) {
+
+        this.charProperty = charProperty;
+    }
+
+    /**
+     * Holds value of property doubleProperty.
+     */
+    @Value("-2.0")
+    private double doubleProperty = (double) 2.0;
+
+    /**
+     * Getter for property doubleProperty.
+     * @return Value of property doubleProperty.
+     */
+    public double getDoubleProperty() {
+
+        return this.doubleProperty;
+    }
+
+    /**
+     * Setter for property doubleProperty.
+     * @param doubleProperty New value of property doubleProperty.
+     */
+    public void setDoubleProperty(double doubleProperty) {
+
+        this.doubleProperty = doubleProperty;
+    }
+    
+    /**
+     * Holds value of property floatProperty.
+     */
+    @Value("-3.0")
+    private float floatProperty = (float) 3.0;
+
+    /**
+     * Getter for property floatProperty.
+     * @return Value of property floatProperty.
+     */
+    public float getFloatProperty() {
+
+        return this.floatProperty;
+    }
+
+    /**
+     * Setter for property floatProperty.
+     * @param floatProperty New value of property floatProperty.
+     */
+    public void setFloatProperty(float floatProperty) {
+
+        this.floatProperty = floatProperty;
+    }
+
+    /**
+     * Holds value of property intProperty.
+     */
+    @Value("-4")
+    private int intProperty = 4;
+
+    /**
+     * Getter for property intProperty.
+     * @return Value of property intProperty.
+     */
+    public int getIntProperty() {
+
+        return this.intProperty;
+    }
+
+    /**
+     * Setter for property intProperty.
+     * @param intProperty New value of property intProperty.
+     */
+    public void setIntProperty(int intProperty) {
+
+        this.intProperty = intProperty;
+    }
+
+    /**
+     * Holds value of property longProperty.
+     */
+    @Value("-5")
+    private long longProperty = (long) 5;
+
+    /**
+     * Getter for property longProperty.
+     * @return Value of property longProperty.
+     */
+    public long getLongProperty() {
+
+        return this.longProperty;
+    }
+
+    /**
+     * Setter for property longProperty.
+     * @param longProperty New value of property longProperty.
+     */
+    public void setLongProperty(long longProperty) {
+
+        this.longProperty = longProperty;
+    }
+
+    /**
+     * Holds value of property shortProperty.
+     */
+    @Value("-6")
+    private short shortProperty = (short) 6;
+
+    /**
+     * Getter for property shortProperty.
+     * @return Value of property shortProperty.
+     */
+    public short getShortProperty() {
+
+        return this.shortProperty;
+    }
+
+    /**
+     * Setter for property shortProperty.
+     * @param shortProperty New value of property shortProperty.
+     */
+    public void setShortProperty(short shortProperty) {
+
+        this.shortProperty = shortProperty;
+    }
+
+    /**
+     * Holds value of property stringProperty.
+     */
+    @Value("Annotated")
+    private String stringProperty = "String";
+
+    /**
+     * Getter for property stringProperty.
+     * @return Value of property stringProperty.
+     */
+    public String getStringProperty() {
+
+        return this.stringProperty;
+    }
+
+    /**
+     * Setter for property stringProperty.
+     * @param stringProperty New value of property stringProperty.
+     */
+    public void setStringProperty(String stringProperty) {
+
+        this.stringProperty = stringProperty;
+    }
+
+}

Added: 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-0.xml
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-0.xml?rev=356434&view=auto
==============================================================================
--- 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-0.xml
 (added)
+++ 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-0.xml
 Mon Dec 12 16:46:02 2005
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+ Copyright 2002,2004-2005 The Apache Software Foundation.
+ 
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ 
+      http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ $Id: build.xml 54942 2004-10-16 22:39:25Z craigmcc $
+
+-->
+
+<!DOCTYPE faces-config PUBLIC
+ '-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN'
+ 'http://java.sun.com/dtd/web-facesconfig_1_0.dtd'>
+<faces-config>
+
+    <managed-bean>
+        <managed-bean-name>bean0</managed-bean-name>
+        
<managed-bean-class>org.apache.shale.tiger.config.TestBean</managed-bean-class>
+        <managed-bean-scope>request</managed-bean-scope>
+    </managed-bean>
+
+</faces-config>

Added: 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-1.xml
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-1.xml?rev=356434&view=auto
==============================================================================
--- 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-1.xml
 (added)
+++ 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-1.xml
 Mon Dec 12 16:46:02 2005
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+ Copyright 2002,2004-2005 The Apache Software Foundation.
+ 
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ 
+      http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ $Id: build.xml 54942 2004-10-16 22:39:25Z craigmcc $
+
+-->
+
+<!DOCTYPE faces-config PUBLIC
+ '-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN'
+ 'http://java.sun.com/dtd/web-facesconfig_1_1.dtd'>
+
+<faces-config>
+
+    <!-- Initialize bean1 with *some* non-default values -->
+    <managed-bean>
+        <managed-bean-name>bean1</managed-bean-name>
+        
<managed-bean-class>org.apache.shale.tiger.config.TestBean</managed-bean-class>
+        <managed-bean-scope>session</managed-bean-scope>
+        <managed-property>
+            <property-name>byteProperty</property-name>
+            <property-class>byte</property-class>
+            <value>11</value>
+        </managed-property>
+        <managed-property>
+            <property-name>doubleProperty</property-name>
+            <property-class>double</property-class>
+            <value>22.0</value>
+        </managed-property>
+    </managed-bean>
+
+    <!-- Overlay some additional bean1 values -->
+    <managed-bean>
+        <managed-bean-name>bean1</managed-bean-name>
+        
<managed-bean-class>org.apache.shale.tiger.config.TestBean</managed-bean-class>
+        <managed-bean-scope>session</managed-bean-scope>
+        <managed-property>
+            <property-name>intProperty</property-name>
+            <property-class>int</property-class>
+            <value>44</value>
+        </managed-property>
+    </managed-bean>
+
+    <!-- Overlay again to confirm merging -->
+    <managed-bean>
+        <managed-bean-name>bean1</managed-bean-name>
+        
<managed-bean-class>org.apache.shale.tiger.config.TestBean</managed-bean-class>
+        <managed-bean-scope>session</managed-bean-scope>
+        <managed-property>
+            <property-name>doubleProperty</property-name>
+            <property-class>double</property-class>
+            <value>222.0</value>
+        </managed-property>
+    </managed-bean>
+
+    <!-- Overlay a value on bean0 as well -->
+    <managed-bean>
+        <managed-bean-name>bean0</managed-bean-name>
+        
<managed-bean-class>org.apache.shale.tiger.config.TestBean</managed-bean-class>
+        <managed-bean-scope>request</managed-bean-scope>
+        <managed-property>
+            <property-name>stringProperty</property-name>
+            <property-class>java.lang.String</property-class>
+            <null-value/>
+        </managed-property>
+    </managed-bean>
+
+</faces-config>

Added: 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-2.xml
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-2.xml?rev=356434&view=auto
==============================================================================
--- 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-2.xml
 (added)
+++ 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-2.xml
 Mon Dec 12 16:46:02 2005
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+ Copyright 2002,2004-2005 The Apache Software Foundation.
+ 
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ 
+      http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ $Id: build.xml 54942 2004-10-16 22:39:25Z craigmcc $
+
+-->
+
+<!DOCTYPE faces-config PUBLIC
+ '-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN'
+ 'http://java.sun.com/dtd/web-facesconfig_1_1.dtd'>
+
+<faces-config>
+
+    <!-- Override an annotated value on bean2 -->
+    <managed-bean>
+        <managed-bean-name>bean2</managed-bean-name>
+        
<managed-bean-class>org.apache.shale.tiger.config.TestBean</managed-bean-class>
+        <managed-bean-scope>request</managed-bean-scope>
+        <managed-property>
+            <property-name>stringProperty</property-name>
+            <property-class>java.lang.String</property-class>
+            <value>Override The Annotation</value>
+        </managed-property>
+    </managed-bean>
+
+</faces-config>

Added: 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-3.xml
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-3.xml?rev=356434&view=auto
==============================================================================
--- 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-3.xml
 (added)
+++ 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-3.xml
 Mon Dec 12 16:46:02 2005
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+ Copyright 2002,2004-2005 The Apache Software Foundation.
+ 
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ 
+      http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ $Id: build.xml 54942 2004-10-16 22:39:25Z craigmcc $
+
+-->
+
+<!DOCTYPE faces-config PUBLIC
+ '-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN'
+ 'http://java.sun.com/dtd/web-facesconfig_1_1.dtd'>
+
+<faces-config>
+
+    <!-- Configure bean properties with value binding expressions -->
+    <managed-bean>
+        <managed-bean-name>bean3</managed-bean-name>
+        
<managed-bean-class>org.apache.shale.tiger.config.TestBean</managed-bean-class>
+        <managed-bean-scope>none</managed-bean-scope>
+        <managed-property>
+            <property-name>byteProperty</property-name>
+            <property-class>byte</property-class>
+            <value>#{bean1.byteProperty}</value>
+        </managed-property>
+        <managed-property>
+            <property-name>charProperty</property-name>
+            <property-class>char</property-class>
+            <value>#{bean1.charProperty}</value>
+        </managed-property>
+        <managed-property>
+            <property-name>doubleProperty</property-name>
+            <property-class>double</property-class>
+            <value>#{bean1.doubleProperty}</value>
+        </managed-property>
+        <managed-property>
+            <property-name>floatProperty</property-name>
+            <property-class>float</property-class>
+            <value>#{bean1.floatProperty}</value>
+        </managed-property>
+        <managed-property>
+            <property-name>intProperty</property-name>
+            <property-class>int</property-class>
+            <value>#{bean1.intProperty}</value>
+        </managed-property>
+        <managed-property>
+            <property-name>longProperty</property-name>
+            <property-class>long</property-class>
+            <value>#{bean1.longProperty}</value>
+        </managed-property>
+        <managed-property>
+            <property-name>shortProperty</property-name>
+            <property-class>short</property-class>
+            <value>#{bean1.shortProperty}</value>
+        </managed-property>
+        <managed-property>
+            <property-name>stringProperty</property-name>
+            <property-class>java.lang.String</property-class>
+            <value>#{bean1.stringProperty}</value>
+        </managed-property>
+    </managed-bean>
+
+</faces-config>

Added: 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-web.xml
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-web.xml?rev=356434&view=auto
==============================================================================
--- 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-web.xml 
(added)
+++ 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-web.xml 
Mon Dec 12 16:46:02 2005
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Copyright 2004-2005 The Apache Software Foundation.
+ 
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ 
+      http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee                      
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd";>
+
+  <display-name>Pseudo Application for Unit Tests</display-name>
+
+  <!-- JSF RI verify objects at start -->
+  <context-param>
+    <param-name>com.sun.faces.verifyObjects</param-name>
+    <param-value>true</param-value>
+  </context-param>
+
+  <!-- Select JSF State Saving Mode -->
+  <context-param>
+    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+    <param-value>server</param-value>
+  </context-param>
+
+  <!-- Specify faces-config.xml resource paths -->
+  <context-param>
+    <param-name>javax.faces.CONFIG_FILES</param-name>
+    <param-value>
+        /WEB-INF/test-config-0.xml,
+        /WEB-INF/test-config-1.xml,
+        /WEB-INF/test-config-2.xml
+    </param-value>
+  </context-param>
+
+  <!-- Shale Application Controller Filter -->
+  <filter>
+    <filter-name>shale</filter-name>
+    <filter-class>
+      org.apache.shale.faces.ShaleApplicationFilter
+    </filter-class>
+  </filter>
+
+  <!-- Shale Application Controller Filter Mapping -->
+  <filter-mapping>
+    <filter-name>shale</filter-name>
+    <url-pattern>/*</url-pattern>
+  </filter-mapping>
+
+  <!-- JavaServer Faces Servlet Configuration -->
+  <servlet>
+    <servlet-name>faces</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+  <!-- JavaServer Faces Servlet Mapping -->
+  <servlet-mapping>
+    <servlet-name>faces</servlet-name>
+    <url-pattern>*.faces</url-pattern>
+  </servlet-mapping>
+
+  <!-- Welcome File List -->
+  <welcome-file-list>
+    <welcome-file>index.jsp</welcome-file>
+  </welcome-file-list>
+
+</web-app>

Added: 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/faces/LifecycleListenerTestCase.java
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/faces/LifecycleListenerTestCase.java?rev=356434&view=auto
==============================================================================
--- 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/faces/LifecycleListenerTestCase.java
 (added)
+++ 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/faces/LifecycleListenerTestCase.java
 Mon Dec 12 16:46:02 2005
@@ -0,0 +1,278 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shale.tiger.faces;
+
+import java.io.File;
+import java.util.Map;
+import java.util.Set;
+import javax.servlet.ServletContextEvent;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import org.apache.shale.test.base.AbstractJsfTestCase;
+import org.apache.shale.tiger.config.FacesConfigConfig;
+import org.apache.shale.tiger.managed.config.ManagedBeanConfig;
+import org.apache.shale.tiger.managed.config.ManagedPropertyConfig;
+
+/**
+ * <p>Test case for 
<code>org.apache.shale.tiger.faces.LifecycleListener</code>.</p>
+ */
+public class LifecycleListenerTestCase extends AbstractJsfTestCase {
+    
+
+    // ------------------------------------------------------------ 
Constructors
+
+
+    // Construct a new instance of this test case
+    public LifecycleListenerTestCase(String name) {
+        super(name);
+    }
+    
+
+    // ---------------------------------------------------- Overall Test 
Methods
+
+
+    // Set up instance variables required by this test case.
+    public void setUp() {
+
+        // Set up mock web application environment
+        super.setUp();
+        servletContext.addInitParameter("javax.faces.CONFIG_FILES",
+                                        "/WEB-INF/test-config-0.xml," +
+                                        "/WEB-INF/test-config-1.xml," +
+                                        "/WEB-INF/test-config-2.xml");
+        File root = new File(System.getProperty("basedir") + 
"/target/test-webapp");
+        servletContext.setDocumentRoot(root);
+
+        // Create listener instance to be tested
+        listener = new LifecycleListener();
+
+    }
+
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return new TestSuite(LifecycleListenerTestCase.class);
+    }
+
+
+    // Tear down instance variables required by this test case
+    public void tearDown() {
+
+        // Release tested instances
+        listener = null;
+
+        // Tear down the mock web application environment
+        super.tearDown();
+
+    }
+
+
+    // ------------------------------------------------------ Instance 
Variables
+
+
+    // LifecycleListener instance to be tested
+    LifecycleListener listener = null;
+
+
+    // ------------------------------------------------------------ Test 
Methods
+
+
+    // Test basic operations -- can we initialize and destroy with no 
exceptions?
+    public void testBasic() {
+
+        // Create a ServletContextEvent we will pass to the event methods
+        ServletContextEvent event = new ServletContextEvent(servletContext);
+
+        // Initialize the servlet context listener
+        listener.contextInitialized(event);
+
+        // Finalize the servlet context listener
+        listener.contextDestroyed(event);
+
+    }
+
+
+    // Test configuration of managed beans
+    public void testManagedBeans() {
+
+        // Create a ServletContextEvent we will pass to the event methods
+        ServletContextEvent event = new ServletContextEvent(servletContext);
+
+        // Initialize the servlet context listener
+        listener.contextInitialized(event);
+
+        // Check out the managed beans configuration information
+        FacesConfigConfig fcConfig =
+          (FacesConfigConfig) 
servletContext.getAttribute(LifecycleListener.FACES_CONFIG_CONFIG);
+        assertNotNull(config);
+        Map<String,ManagedBeanConfig> mbMap = fcConfig.getManagedBeans();
+        assertNotNull(mbMap);
+        assertEquals(4, mbMap.size());
+
+        ManagedPropertyConfig mpConfig = null;
+
+        // Validate configuration of bean0
+        ManagedBeanConfig bean0 = fcConfig.getManagedBean("bean0");
+        assertNotNull(bean0);
+        assertTrue(bean0 == mbMap.get("bean0"));
+        assertEquals("bean0", bean0.getName());
+        assertEquals("org.apache.shale.tiger.config.TestBean", 
bean0.getType());
+        assertEquals("request", bean0.getScope());
+        assertNull(bean0.getListEntries());
+        assertNull(bean0.getMapEntries());
+        Map<String,ManagedPropertyConfig> bean0Map = bean0.getProperties();
+        assertNotNull(bean0Map);
+        assertEquals(1, bean0Map.size());
+
+        mpConfig = bean0.getProperty("stringProperty");
+        assertNotNull(mpConfig);
+        assertTrue(mpConfig == bean0Map.get("stringProperty"));
+        assertEquals("stringProperty", mpConfig.getName());
+        assertEquals("java.lang.String", mpConfig.getType());
+        assertNull(mpConfig.getValue());
+        assertTrue(mpConfig.isNullValue());
+
+        // Validate configuration of bean1
+        ManagedBeanConfig bean1 = fcConfig.getManagedBean("bean1");
+        assertNotNull(bean1);
+        assertTrue(bean1 == mbMap.get("bean1"));
+        assertEquals("bean1", bean1.getName());
+        assertEquals("org.apache.shale.tiger.config.TestBean", 
bean1.getType());
+        assertEquals("session", bean1.getScope());
+        assertNull(bean1.getListEntries());
+        assertNull(bean1.getMapEntries());
+        Map<String,ManagedPropertyConfig> bean1Map = bean1.getProperties();
+        assertNotNull(bean1Map);
+        assertEquals(3, bean1Map.size());
+
+        mpConfig = bean1.getProperty("byteProperty");
+        assertNotNull(mpConfig);
+        assertTrue(mpConfig == bean1Map.get("byteProperty"));
+        assertEquals("byteProperty", mpConfig.getName());
+        assertEquals("byte", mpConfig.getType());
+        assertEquals("11", mpConfig.getValue());
+        assertTrue(!mpConfig.isNullValue());
+
+        mpConfig = bean1.getProperty("doubleProperty");
+        assertNotNull(mpConfig);
+        assertTrue(mpConfig == bean1Map.get("doubleProperty"));
+        assertEquals("doubleProperty", mpConfig.getName());
+        assertEquals("double", mpConfig.getType());
+        assertEquals("222.0", mpConfig.getValue());
+        assertTrue(!mpConfig.isNullValue());
+
+        mpConfig = bean1.getProperty("intProperty");
+        assertNotNull(mpConfig);
+        assertTrue(mpConfig == bean1Map.get("intProperty"));
+        assertEquals("intProperty", mpConfig.getName());
+        assertEquals("int", mpConfig.getType());
+        assertEquals("44", mpConfig.getValue());
+        assertTrue(!mpConfig.isNullValue());
+
+        // Validate configuration of bean2
+        ManagedBeanConfig bean2 = fcConfig.getManagedBean("bean2");
+        assertNotNull(bean2);
+        assertTrue(bean2 == mbMap.get("bean2"));
+        assertEquals("bean2", bean2.getName());
+        assertEquals("org.apache.shale.tiger.config.TestBean", 
bean2.getType());
+        assertEquals("request", bean2.getScope());
+        assertNull(bean2.getListEntries());
+        assertNull(bean2.getMapEntries());
+        Map<String,ManagedPropertyConfig> bean2Map = bean2.getProperties();
+        assertNotNull(bean2Map);
+        assertEquals(8, bean2Map.size());
+
+        mpConfig = bean2.getProperty("byteProperty");
+        assertNotNull(mpConfig);
+        assertTrue(mpConfig == bean2Map.get("byteProperty"));
+        assertEquals("byteProperty", mpConfig.getName());
+        assertEquals("byte", mpConfig.getType());
+        assertEquals("-1", mpConfig.getValue());
+        assertTrue(!mpConfig.isNullValue());
+
+        mpConfig = bean2.getProperty("charProperty");
+        assertNotNull(mpConfig);
+        assertTrue(mpConfig == bean2Map.get("charProperty"));
+        assertEquals("charProperty", mpConfig.getName());
+        assertEquals("char", mpConfig.getType());
+        assertEquals("z", mpConfig.getValue());
+        assertTrue(!mpConfig.isNullValue());
+
+        mpConfig = bean2.getProperty("doubleProperty");
+        assertNotNull(mpConfig);
+        assertTrue(mpConfig == bean2Map.get("doubleProperty"));
+        assertEquals("doubleProperty", mpConfig.getName());
+        assertEquals("double", mpConfig.getType());
+        assertEquals("-2.0", mpConfig.getValue());
+        assertTrue(!mpConfig.isNullValue());
+
+        mpConfig = bean2.getProperty("floatProperty");
+        assertNotNull(mpConfig);
+        assertTrue(mpConfig == bean2Map.get("floatProperty"));
+        assertEquals("floatProperty", mpConfig.getName());
+        assertEquals("float", mpConfig.getType());
+        assertEquals("-3.0", mpConfig.getValue());
+        assertTrue(!mpConfig.isNullValue());
+
+        mpConfig = bean2.getProperty("intProperty");
+        assertNotNull(mpConfig);
+        assertTrue(mpConfig == bean2Map.get("intProperty"));
+        assertEquals("intProperty", mpConfig.getName());
+        assertEquals("int", mpConfig.getType());
+        assertEquals("-4", mpConfig.getValue());
+        assertTrue(!mpConfig.isNullValue());
+
+        mpConfig = bean2.getProperty("longProperty");
+        assertNotNull(mpConfig);
+        assertTrue(mpConfig == bean2Map.get("longProperty"));
+        assertEquals("longProperty", mpConfig.getName());
+        assertEquals("long", mpConfig.getType());
+        assertEquals("-5", mpConfig.getValue());
+        assertTrue(!mpConfig.isNullValue());
+
+        mpConfig = bean2.getProperty("shortProperty");
+        assertNotNull(mpConfig);
+        assertTrue(mpConfig == bean2Map.get("shortProperty"));
+        assertEquals("shortProperty", mpConfig.getName());
+        assertEquals("short", mpConfig.getType());
+        assertEquals("-6", mpConfig.getValue());
+        assertTrue(!mpConfig.isNullValue());
+
+        mpConfig = bean2.getProperty("stringProperty");
+        assertNotNull(mpConfig);
+        assertTrue(mpConfig == bean2Map.get("stringProperty"));
+        assertEquals("stringProperty", mpConfig.getName());
+        assertEquals("java.lang.String", mpConfig.getType());
+        assertEquals("Override The Annotation", mpConfig.getValue());
+        assertTrue(!mpConfig.isNullValue());
+
+        // Finalize the servlet context listener
+        listener.contextDestroyed(event);
+
+    }
+
+
+    // Test pristine instance of the listener
+    public void testPristine() {
+
+        assertNotNull(listener);
+
+    }
+
+
+}

Added: 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/faces/VariableResolverImplTestCase.java
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/faces/VariableResolverImplTestCase.java?rev=356434&view=auto
==============================================================================
--- 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/faces/VariableResolverImplTestCase.java
 (added)
+++ 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/faces/VariableResolverImplTestCase.java
 Mon Dec 12 16:46:02 2005
@@ -0,0 +1,254 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shale.tiger.faces;
+
+import java.io.File;
+import java.util.Map;
+import java.util.Set;
+import javax.servlet.ServletContextEvent;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import org.apache.shale.test.base.AbstractJsfTestCase;
+import org.apache.shale.tiger.config.FacesConfigConfig;
+import org.apache.shale.tiger.config.TestBean;
+import org.apache.shale.tiger.managed.config.ManagedBeanConfig;
+import org.apache.shale.tiger.managed.config.ManagedPropertyConfig;
+
+/**
+ * <p>Test case for 
<code>org.apache.shale.tiger.faces.VariableResolverImpl</code>.</p>
+ */
+public class VariableResolverImplTestCase extends AbstractJsfTestCase {
+    
+
+    // ------------------------------------------------------------ 
Constructors
+
+
+    // Construct a new instance of this test case
+    public VariableResolverImplTestCase(String name) {
+        super(name);
+    }
+    
+
+    // ---------------------------------------------------- Overall Test 
Methods
+
+
+    // Set up instance variables required by this test case.
+    public void setUp() {
+
+        // Set up mock web application environment
+        super.setUp();
+        servletContext.addInitParameter("javax.faces.CONFIG_FILES",
+                                        "/WEB-INF/test-config-0.xml," +
+                                        "/WEB-INF/test-config-1.xml," +
+                                        "/WEB-INF/test-config-2.xml," +
+                                        "/WEB-INF/test-config-3.xml");
+        File root = new File(System.getProperty("basedir") + 
"/target/test-webapp");
+        servletContext.setDocumentRoot(root);
+
+        // Process our configuration information
+        listener = new LifecycleListener();
+        listener.contextInitialized(new ServletContextEvent(servletContext));
+
+        // Create resolver instance to be tested
+        // (Force NPEs on delegation use cases by default)
+        resolver = new VariableResolverImpl(null);
+
+    }
+
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return new TestSuite(VariableResolverImplTestCase.class);
+    }
+
+
+    // Tear down instance variables required by this test case
+    public void tearDown() {
+
+        // Release tested instances
+        resolver = null;
+
+        // Finalize our context listener
+        listener.contextDestroyed(new ServletContextEvent(servletContext));
+        listener = null;
+
+        // Tear down the mock web application environment
+        super.tearDown();
+
+    }
+
+
+    // ------------------------------------------------------ Instance 
Variables
+
+
+    // LifecycleListener instance to be tested
+    LifecycleListener listener = null;
+
+    // VariableResolverImpl instance to be tested
+    VariableResolverImpl resolver = null;
+
+
+    // ------------------------------------------------------------ Test 
Methods
+
+
+    // Test creating "bean0"
+    public void testBean0() {
+
+        TestBean bean = (TestBean) resolver.resolveVariable(facesContext, 
"bean0");
+        assertNotNull(bean);
+        assertEquals((byte) 1, bean.getByteProperty());
+        assertEquals('a', bean.getCharProperty());
+        assertEquals((double) 2.0, bean.getDoubleProperty());
+        assertEquals((float) 3.0, bean.getFloatProperty());
+        assertEquals(4, bean.getIntProperty());
+        assertEquals((long) 5, bean.getLongProperty());
+        assertEquals((short) 6, bean.getShortProperty());
+        assertNull(bean.getStringProperty()); // Overridden in 
test-config-1.xml
+
+    }
+
+
+    // Test creating "bean1"
+    public void testBean1() {
+
+        TestBean bean = (TestBean) resolver.resolveVariable(facesContext, 
"bean1");
+        assertNotNull(bean);
+        assertEquals((byte) 11, bean.getByteProperty()); // Configured
+        assertEquals('a', bean.getCharProperty()); // Defaulted
+        assertEquals((double) 222.0, bean.getDoubleProperty()); // Configured 
and overridden
+        assertEquals((float) 3.0, bean.getFloatProperty()); // Defaulted
+        assertEquals(44, bean.getIntProperty()); // Configured
+        assertEquals((long) 5, bean.getLongProperty()); // Defaulted
+        assertEquals((short) 6, bean.getShortProperty()); // Defaulted
+        assertEquals("String", bean.getStringProperty()); // Defaulted
+
+    }
+
+
+    // Test creating "bean2"
+    public void testBean2() {
+
+        TestBean bean = (TestBean) resolver.resolveVariable(facesContext, 
"bean2");
+        assertNotNull(bean);
+        assertEquals((byte) -1, bean.getByteProperty()); // Annotated
+        assertEquals('z', bean.getCharProperty()); // Annotated
+        assertEquals((double) -2.0, bean.getDoubleProperty()); // Annotated
+        assertEquals((float) -3.0, bean.getFloatProperty()); // Annotated
+        assertEquals(-4, bean.getIntProperty()); // Annotated
+        assertEquals((long) -5, bean.getLongProperty()); // Annotated
+        assertEquals((short) -6, bean.getShortProperty()); // Annotated
+        assertEquals("Override The Annotation", bean.getStringProperty()); // 
Annotated and overridden
+
+    }
+
+
+    // Test creating "bean3"
+    public void testBean3() {
+
+        // We need to hook into the rest of the expression evaluation 
framework,
+        // since we will be evaluating expressions to initialize property 
values
+        resolver = new VariableResolverImpl(application.getVariableResolver());
+        application.setVariableResolver(resolver);
+
+        // The configuration metadata for "bean3" sets *all* of the properties
+        // of the new bean to match the corresponding property values for 
"bean1".
+        // Therefore, all of the assertions below should match the 
corresponding
+        // assertions from testBean1().
+        TestBean bean = (TestBean) resolver.resolveVariable(facesContext, 
"bean3");
+        assertNotNull(bean);
+        assertEquals((byte) 11, bean.getByteProperty()); // Configured
+        assertEquals('a', bean.getCharProperty()); // Defaulted
+        assertEquals((double) 222.0, bean.getDoubleProperty()); // Configured 
and overridden
+        assertEquals((float) 3.0, bean.getFloatProperty()); // Defaulted
+        assertEquals(44, bean.getIntProperty()); // Configured
+        assertEquals((long) 5, bean.getLongProperty()); // Defaulted
+        assertEquals((short) 6, bean.getShortProperty()); // Defaulted
+        assertEquals("String", bean.getStringProperty()); // Defaulted
+
+    }
+
+
+    // Test creating existing bean name (delegating)
+    public void testExistingDelegating() {
+
+        resolver = new VariableResolverImpl(application.getVariableResolver());
+        application.setVariableResolver(resolver);
+        externalContext.getRequestMap().put("existing", "This is an existing 
object");
+        Object instance = resolver.resolveVariable(facesContext, "existing");
+        assertNotNull(instance);
+        assertTrue(instance instanceof String);
+        assertEquals("This is an existing object", instance);
+
+    }
+
+
+    // Test creating existing bean name (plain)
+    public void testExistingPlain() {
+
+        externalContext.getRequestMap().put("existing", "This is an existing 
object");
+        Object instance = null;
+        try {
+            instance = resolver.resolveVariable(facesContext, "existing");
+            fail("Should have thrown NullPointerException");
+        } catch (NullPointerException e) {
+            ; // Expected result
+        }
+
+    }
+
+
+    // Test pristine instance of the resolver
+    public void testPristine() {
+
+        assertNotNull(resolver);
+        assertNotNull(application.getVariableResolver());
+        FacesConfigConfig config = (FacesConfigConfig)
+            externalContext.getApplicationMap().
+            get(LifecycleListener.FACES_CONFIG_CONFIG);
+        assertNotNull(config);
+        assertEquals(4, config.getManagedBeans().size());
+
+    }
+
+
+    // Test creating unknown bean name (delegating)
+    public void testUnknownDelegating() {
+
+        resolver = new VariableResolverImpl(application.getVariableResolver());
+        application.setVariableResolver(resolver);
+        Object instance = resolver.resolveVariable(facesContext, "unknown");
+        assertNull(instance);
+
+    }
+
+
+    // Test creating unknown bean name (plain)
+    public void testUnknownPlain() {
+
+        Object instance = null;
+        try {
+            instance = resolver.resolveVariable(facesContext, "unknown");
+            fail("Should have thrown NullPointerException");
+        } catch (NullPointerException e) {
+            ; // Expected result
+        }
+
+    }
+
+
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to