/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. * * The contents of this file are subject to the terms of either the GNU * General Public License Version 2 only ("GPL") or the Common Development * and Distribution License("CDDL") (collectively, the "License"). You * may not use this file except in compliance with the License. You can * obtain a copy of the License at * https://glassfish.java.net/public/CDDL+GPL_1_1.html * or packager/legal/LICENSE.txt. See the License for the specific * language governing permissions and limitations under the License. * * When distributing the software, include this License Header Notice in each * file and include the License file at packager/legal/LICENSE.txt. * * GPL Classpath Exception: * Oracle designates this particular file as subject to the "Classpath" * exception as provided by Oracle in the GPL Version 2 section of the License * file that accompanied this code. * * Modifications: * If applicable, add the following below the License Header, with the fields * enclosed by brackets [] replaced by your own identifying information: * "Portions Copyright [year] [name of copyright owner]" * * Contributor(s): * If you wish your version of this file to be governed by only the CDDL or * only the GPL Version 2, indicate your decision by adding "[Contributor] * elects to include this software in this distribution under the [CDDL or GPL * Version 2] license." If you don't indicate a single choice of license, a * recipient has the option to distribute your version of this file under * either the CDDL, the GPL Version 2 or to extend the choice of license to * its licensees as provided above. However, if you add GPL Version 2 code * and therefore, elected the GPL Version 2 license, then the option applies * only if the new code is made subject to such option by the copyright * holder. */ // TestApplicationImpl_Config.java package com.sun.faces.application; import com.sun.faces.cactus.ServletFacesTestCase; import javax.faces.FactoryFinder; import javax.faces.application.Application; import javax.faces.application.ApplicationFactory; /** * <B>TestApplicationImpl_Config</B> is a class ... * <p/> * <B>Lifetime And Scope</B> <P> */ public class TestApplicationImpl_Config extends ServletFacesTestCase { // // Protected Constants // public static String standardComponentTypes[] = { "javax.faces.Column", "javax.faces.Command", "javax.faces.Data", "javax.faces.Form", "javax.faces.Graphic", "javax.faces.Input", "javax.faces.Message", "javax.faces.Messages", "javax.faces.NamingContainer", "javax.faces.Output", "javax.faces.Panel", "javax.faces.Parameter", "javax.faces.SelectBoolean", "javax.faces.SelectItem", "javax.faces.SelectItems", "javax.faces.SelectMany", "javax.faces.SelectOne", "javax.faces.ViewRoot", "javax.faces.HtmlCommandButton", "javax.faces.HtmlCommandLink", "javax.faces.HtmlDataTable", "javax.faces.HtmlForm", "javax.faces.HtmlGraphicImage", "javax.faces.HtmlInputHidden", "javax.faces.HtmlInputSecret", "javax.faces.HtmlInputText", "javax.faces.HtmlInputTextarea", "javax.faces.HtmlMessage", "javax.faces.HtmlMessages", "javax.faces.HtmlOutputFormat", "javax.faces.HtmlOutputLabel", "javax.faces.HtmlOutputLink", "javax.faces.HtmlOutputText", "javax.faces.HtmlPanelGrid", "javax.faces.HtmlPanelGroup", "javax.faces.HtmlSelectBooleanCheckbox", "javax.faces.HtmlSelectManyCheckbox", "javax.faces.HtmlSelectManyListbox", "javax.faces.HtmlSelectManyMenu", "javax.faces.HtmlSelectOneListbox", "javax.faces.HtmlSelectOneMenu", "javax.faces.HtmlSelectOneRadio" }; public static Class standardComponentClasses[] = { javax.faces.component.UIColumn.class, javax.faces.component.UICommand.class, javax.faces.component.UIData.class, javax.faces.component.UIForm.class, javax.faces.component.UIGraphic.class, javax.faces.component.UIInput.class, javax.faces.component.UIMessage.class, javax.faces.component.UIMessages.class, javax.faces.component.UINamingContainer.class, javax.faces.component.UIOutput.class, javax.faces.component.UIPanel.class, javax.faces.component.UIParameter.class, javax.faces.component.UISelectBoolean.class, javax.faces.component.UISelectItem.class, javax.faces.component.UISelectItems.class, javax.faces.component.UISelectMany.class, javax.faces.component.UISelectOne.class, javax.faces.component.UIViewRoot.class, javax.faces.component.html.HtmlCommandButton.class, javax.faces.component.html.HtmlCommandLink.class, javax.faces.component.html.HtmlDataTable.class, javax.faces.component.html.HtmlForm.class, javax.faces.component.html.HtmlGraphicImage.class, javax.faces.component.html.HtmlInputHidden.class, javax.faces.component.html.HtmlInputSecret.class, javax.faces.component.html.HtmlInputText.class, javax.faces.component.html.HtmlInputTextarea.class, javax.faces.component.html.HtmlMessage.class, javax.faces.component.html.HtmlMessages.class, javax.faces.component.html.HtmlOutputFormat.class, javax.faces.component.html.HtmlOutputLabel.class, javax.faces.component.html.HtmlOutputLink.class, javax.faces.component.html.HtmlOutputText.class, javax.faces.component.html.HtmlPanelGrid.class, javax.faces.component.html.HtmlPanelGroup.class, javax.faces.component.html.HtmlSelectBooleanCheckbox.class, javax.faces.component.html.HtmlSelectManyCheckbox.class, javax.faces.component.html.HtmlSelectManyListbox.class, javax.faces.component.html.HtmlSelectManyMenu.class, javax.faces.component.html.HtmlSelectOneListbox.class, javax.faces.component.html.HtmlSelectOneMenu.class, javax.faces.component.html.HtmlSelectOneRadio.class }; public static String standardConverterIds[] = { "javax.faces.BigDecimal", "javax.faces.BigInteger", "javax.faces.Boolean", "javax.faces.Byte", "javax.faces.Character", "javax.faces.DateTime", "javax.faces.Double", "javax.faces.Float", "javax.faces.Integer", "javax.faces.Long", "javax.faces.Number", "javax.faces.Short" }; public static Class standardConverterClasses[] = { javax.faces.convert.BigDecimalConverter.class, javax.faces.convert.BigIntegerConverter.class, javax.faces.convert.BooleanConverter.class, javax.faces.convert.ByteConverter.class, javax.faces.convert.CharacterConverter.class, javax.faces.convert.DateTimeConverter.class, javax.faces.convert.DoubleConverter.class, javax.faces.convert.FloatConverter.class, javax.faces.convert.IntegerConverter.class, javax.faces.convert.LongConverter.class, javax.faces.convert.NumberConverter.class, javax.faces.convert.ShortConverter.class }; public static Class standardConverterByIdClasses[] = { java.math.BigDecimal.class, java.math.BigInteger.class, java.lang.Boolean.class, java.lang.Byte.class, java.lang.Character.class, null, java.lang.Double.class, java.lang.Float.class, java.lang.Integer.class, java.lang.Long.class, null, java.lang.Short.class }; public static Class standardConverterPrimitiveClasses[] = { null, null, java.lang.Boolean.TYPE, java.lang.Byte.TYPE, java.lang.Character.TYPE, null, java.lang.Double.TYPE, java.lang.Float.TYPE, java.lang.Integer.TYPE, java.lang.Long.TYPE, null, java.lang.Short.TYPE }; // // Class Variables // // // Instance Variables // private Application application = null; // Attribute Instance Variables // Relationship Instance Variables // // Constructors and Initializers // public TestApplicationImpl_Config() { super("TestApplicationImpl_Config"); } public TestApplicationImpl_Config(String name) { super(name); } // // Class methods // // // General Methods // public void setUp() { super.setUp(); ApplicationFactory aFactory = (ApplicationFactory) FactoryFinder.getFactory( FactoryFinder.APPLICATION_FACTORY); application = (Application) aFactory.getApplication(); } //**** //**** NOTE: We should add a test for finding a faces-config.xml file under //**** WEB-INF/classes/META-INF. //**** // // Test Config related methods // public void testComponentPositive() { // TestComponent // newTestComponent = null, // testComponent = new TestComponent(); // UIComponent uic = null; // // // runtime addition // // application.addComponent(testComponent.getComponentType(), // "com.sun.faces.TestComponent"); // assertTrue( // null != // (newTestComponent = // (TestComponent) // application.createComponent(testComponent.getComponentType()))); // assertTrue(newTestComponent != testComponent); // // // built-in components // for (int i = 0, len = standardComponentTypes.length; i < len; i++) { // assertTrue(null != (uic = // application.createComponent( // standardComponentTypes[i]))); // assertTrue( // standardComponentClasses[i].isAssignableFrom(uic.getClass())); // } } public void testComponentNegative() { // boolean exceptionThrown = false; // // // componentType/componentClass with non-existent class // try { // application.addComponent("William", // "BillyBoy"); // application.createComponent("William"); // } catch (FacesException e) { // exceptionThrown = true; // } // assertTrue(exceptionThrown); // // // non-existent mapping // exceptionThrown = false; // try { // application.createComponent("Joebob"); // } catch (FacesException e) { // exceptionThrown = true; // } // assertTrue(exceptionThrown); // } public void testGetComponentTypes() { // Iterator iter = application.getComponentTypes(); // assertTrue(null != iter); // // assertTrue(isSubset(standardComponentTypes, iter)); } public void testConverterPositive() { // TestConverter // newTestConverter = null, // testConverter = new TestConverter(); // Converter conv = null; // // // runtime addition // // application.addConverter(testConverter.getConverterId(), // "com.sun.faces.TestConverter"); // assertTrue( // null != // (newTestConverter = // (TestConverter) // application.createConverter(testConverter.getConverterId()))); // assertTrue(newTestConverter != testConverter); // // // built-in components // // // by-id // for (int i = 0, len = standardConverterIds.length; i < len; i++) { // assertTrue(null != (conv = // application.createConverter( // standardConverterIds[i]))); // assertTrue( // standardConverterClasses[i].isAssignableFrom(conv.getClass())); // } // // // by-class // for (int i = 0, len = standardConverterByIdClasses.length; i < len; i++) { // // skip entries for which by-class registation doesn't make sense. // if (null == standardConverterByIdClasses[i]) { // continue; // } // assertTrue("null != " + standardConverterByIdClasses[i].toString(), // null != // (conv = // application.createConverter( // standardConverterByIdClasses[i]))); // assertTrue( // standardConverterClasses[i].isAssignableFrom(conv.getClass())); // } // // // primitive classes // for (int i = 0, len = standardConverterPrimitiveClasses.length; i < // len; i++) { // if (null == standardConverterPrimitiveClasses[i]) { // continue; // } // // assertTrue( // "null != " + standardConverterPrimitiveClasses[i].toString(), // null != // (conv = // application.createConverter( // standardConverterPrimitiveClasses[i]))); // assertTrue( // standardConverterClasses[i].isAssignableFrom(conv.getClass())); // } } public void testConverterNegative() { // boolean exceptionThrown = false; // // // componentType/componentClass with non-existent class // try { // application.addConverter("William", // "BillyBoy"); // application.createConverter("William"); // } catch (FacesException e) { // exceptionThrown = true; // } // assertTrue(exceptionThrown); // // // non-existent mapping // exceptionThrown = false; // try { // application.createConverter("Joebob"); // } catch (FacesException e) { // exceptionThrown = true; // } // assertTrue(exceptionThrown); } public void testGetConverterIds() { // Iterator iter = application.getConverterIds(); // assertTrue(null != iter); // // assertTrue(isSubset(standardConverterIds, iter)); } public void testValidatorPositive() { // Validator // newTestValidator = null, // testValidator = new LengthValidator(); // Validator val = null; // // // runtime addition // // application.addValidator("Billybob", // "javax.faces.validator.LengthValidator"); // assertTrue(null != (newTestValidator = // application.createValidator("Billybob"))); // assertTrue(newTestValidator != testValidator); // // // test standard components // assertTrue( // null != // (val = application.createValidator("javax.faces.DoubleRange"))); // assertTrue(val instanceof Validator); // assertTrue( // null != (val = application.createValidator("javax.faces.Length"))); // assertTrue(val instanceof Validator); // assertTrue( // null != // (val = application.createValidator("javax.faces.LongRange"))); // assertTrue(val instanceof Validator); } public void testValidatorNegative() { // boolean exceptionThrown = false; // // // componentType/componentClass with non-existent class // try { // application.addValidator("William", // "BillyBoy"); // application.createValidator("William"); // } catch (FacesException e) { // exceptionThrown = true; // } // assertTrue(exceptionThrown); // // // non-existent mapping // exceptionThrown = false; // try { // application.createValidator("Joebob"); // } catch (FacesException e) { // exceptionThrown = true; // } // assertTrue(exceptionThrown); } public void testGetValidatorIds() { // Iterator iter = application.getValidatorIds(); // assertTrue(null != iter); // String standardValidatorIds[] = { // "javax.faces.DoubleRange", // "javax.faces.Length", // "javax.faces.LongRange" // }; // // assertTrue(isSubset(standardValidatorIds, iter)); } public void testUpdateRuntimeComponents() { // loadFromInitParam("/runtime-components.xml"); // ApplicationFactory aFactory = // (ApplicationFactory) FactoryFinder.getFactory( // FactoryFinder.APPLICATION_FACTORY); // application = (ApplicationImpl) aFactory.getApplication(); // // ActionListener actionListener = null; // NavigationHandler navHandler = null; // PropertyResolver propResolver = null; // VariableResolver varResolver = null; // ViewHandler viewHandler = null; // StateManager stateManager = null; // // assertTrue(null != (actionListener = // application.getActionListener())); // assertTrue(actionListener instanceof com.sun.faces.TestActionListener); // // assertTrue(null != (navHandler = // application.getNavigationHandler())); // assertTrue(navHandler instanceof com.sun.faces.TestNavigationHandler); // // // JSF1.2 BI: application.getPropertyResolver() no longer returns the // // head of the PropertyResolver. Instead returns the head of the // // ELResolver stack wrapped in a PropertyResolver.This also applies to // // VariableResolver // assertTrue(null != (propResolver = // application.getPropertyResolver())); // assertTrue( // application.getPropertyResolver() instanceof javax.faces.el.PropertyResolver); // assertTrue(null != (varResolver = // application.getVariableResolver())); // assertTrue(varResolver instanceof javax.faces.el.VariableResolver); // // assertTrue(null != (viewHandler = // application.getViewHandler())); // assertTrue(viewHandler instanceof javax.faces.application.ViewHandler); // // assertTrue(null != (stateManager = // application.getStateManager())); // assertTrue( // stateManager instanceof javax.faces.application.StateManager); // System.out.println("DEFAULT:" + application.getDefaultRenderKitId()); // assertEquals("WackyRenderKit", application.getDefaultRenderKitId()); } public void testLocaleConfigPositive() { // loadFromInitParam("/locale-config.xml"); // ApplicationFactory aFactory = // (ApplicationFactory) FactoryFinder.getFactory( // FactoryFinder.APPLICATION_FACTORY); // application = (ApplicationImpl) aFactory.getApplication(); // // Locale locale; // // assertNotNull("Can't get default locale from Application", // locale = application.getDefaultLocale()); // assertEquals(Locale.US, locale); // // Iterator iter; // int j = 0, len = 0; // boolean found = false; // String[][] expected = { // {"de", "DE"}, // {"en", "US"}, // {"fr", "FR"}, // {"ps", "PS"} // }; // len = expected.length; // // iter = application.getSupportedLocales(); // System.out.println("actual supported locales: "); // while (iter.hasNext()) { // System.out.println(iter.next().toString()); // } // // // // test that the supported locales are a superset of the // // expected locales // for (j = 0; j < len; j++) { // assertNotNull("Can't get supportedLocales from Application", // iter = application.getSupportedLocales()); // found = false; // while (iter.hasNext()) { // locale = (Locale) iter.next(); // if (expected[j][0].equals(locale.getLanguage()) && // expected[j][1].equals(locale.getCountry())) { // found = true; // } // } // assertTrue("Can't find expected locale " + expected[j][0] + "_" + // expected[j][1] + " in supported-locales list", // found); // } // } public void testLocaleConfigNegative2() { // boolean exceptionThrown = false; // try { // loadFromInitParam("/locale-config2.xml"); // } catch (Throwable e) { // exceptionThrown = true; // } // assertTrue(exceptionThrown); // } } // end of class TestApplicationImpl_Config