You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by ap...@apache.org on 2007/01/03 13:48:36 UTC
svn commit: r492128 - in
/struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles:
factory/ impl/
Author: apetrelli
Date: Wed Jan 3 04:48:35 2007
New Revision: 492128
URL: http://svn.apache.org/viewvc?view=rev&rev=492128
Log:
SB-101
Added tests to check keyed definitions factory container functionality.
Added:
struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/KeyedDefinitionsFactoryTilesContainerFactoryTest.java (with props)
struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/test-defs-key-one.xml (with props)
struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/test-defs-key-two.xml (with props)
struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/impl/
struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java (with props)
struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/impl/KeyedDefinitionsFactoryTilesContainerTest.java (with props)
Modified:
struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/TilesContainerFactoryTest.java
struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/test-defs.xml
Added: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/KeyedDefinitionsFactoryTilesContainerFactoryTest.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/KeyedDefinitionsFactoryTilesContainerFactoryTest.java?view=auto&rev=492128
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/KeyedDefinitionsFactoryTilesContainerFactoryTest.java (added)
+++ struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/KeyedDefinitionsFactoryTilesContainerFactoryTest.java Wed Jan 3 04:48:35 2007
@@ -0,0 +1,112 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.tiles.factory;
+
+import junit.framework.TestCase;
+
+import javax.servlet.ServletContext;
+
+import org.easymock.EasyMock;
+import org.apache.tiles.TilesContainer;
+import org.apache.tiles.TilesException;
+import org.apache.tiles.impl.BasicTilesContainer;
+import org.apache.tiles.impl.KeyedDefinitionsFactoryTilesContainer;
+
+import java.util.Map;
+import java.util.Vector;
+import java.util.HashMap;
+import java.net.URL;
+import java.net.MalformedURLException;
+
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class KeyedDefinitionsFactoryTilesContainerFactoryTest extends TestCase {
+
+ private ServletContext context;
+
+ private Map<String, String> defaults;
+
+ public void setUp() {
+ context = EasyMock.createMock(ServletContext.class);
+ defaults = new HashMap<String, String>();
+ defaults.put(TilesContainerFactory.CONTAINER_FACTORY_INIT_PARAM,
+ KeyedDefinitionsFactoryTilesContainerFactory.class.getName());
+ }
+
+ public void testGetFactory() throws TilesException {
+ Vector<String> v = new Vector<String>();
+
+ EasyMock.expect(context.getInitParameterNames()).andReturn(v.elements());
+ EasyMock.expect(context.getInitParameter(TilesContainerFactory.CONTAINER_FACTORY_INIT_PARAM)).andReturn(null);
+ EasyMock.replay(context);
+ TilesContainerFactory factory = TilesContainerFactory.getFactory(context,
+ defaults);
+ assertNotNull(factory);
+ assertEquals(KeyedDefinitionsFactoryTilesContainerFactory.class,
+ factory.getClass());
+ }
+
+ public void testCreateContainer() throws TilesException, MalformedURLException {
+ Vector enumeration = new Vector();
+ EasyMock.expect(context.getInitParameter(TilesContainerFactory.CONTAINER_FACTORY_INIT_PARAM)).andReturn(null);
+ EasyMock.expect(context.getInitParameter(TilesContainerFactory.CONTEXT_FACTORY_INIT_PARAM)).andReturn(null);
+ EasyMock.expect(context.getInitParameter(TilesContainerFactory.DEFINITIONS_FACTORY_INIT_PARAM)).andReturn(null);
+ EasyMock.expect(context.getInitParameter(
+ KeyedDefinitionsFactoryTilesContainerFactory.CONTAINER_KEYS_INIT_PARAM))
+ .andReturn("one,two").anyTimes();
+ EasyMock.expect(context.getInitParameter(BasicTilesContainer.DEFINITIONS_CONFIG + "@one"))
+ .andReturn("/WEB-INF/tiles-one.xml").anyTimes();
+ EasyMock.expect(context.getInitParameter(BasicTilesContainer.DEFINITIONS_CONFIG + "@two"))
+ .andReturn("/WEB-INF/tiles-two.xml").anyTimes();
+ EasyMock.expect(context.getInitParameter(EasyMock.isA(String.class))).andReturn(null).anyTimes();
+ EasyMock.expect(context.getInitParameterNames()).andReturn(enumeration.elements()).anyTimes();
+ URL url = getClass().getResource("test-defs.xml");
+ EasyMock.expect(context.getResource("/WEB-INF/tiles.xml")).andReturn(url);
+ url = getClass().getResource("test-defs-key-one.xml");
+ EasyMock.expect(context.getResource("/WEB-INF/tiles-one.xml")).andReturn(url);
+ url = getClass().getResource("test-defs-key-two.xml");
+ EasyMock.expect(context.getResource("/WEB-INF/tiles-two.xml")).andReturn(url);
+ EasyMock.replay(context);
+
+ TilesContainerFactory factory = TilesContainerFactory.getFactory(context, defaults);
+ TilesContainer container = factory.createContainer(context);
+
+ assertNotNull(container);
+ assertTrue("The container is not an instance of KeyedDefinitionsFactoryTilesContainer",
+ container instanceof KeyedDefinitionsFactoryTilesContainer);
+ KeyedDefinitionsFactoryTilesContainer keyedContainer =
+ (KeyedDefinitionsFactoryTilesContainer) container;
+ assertNotNull(keyedContainer.getDefinitionsFactory());
+ assertNotNull(keyedContainer.getDefinitionsFactory("one"));
+ assertNotNull(keyedContainer.getDefinitionsFactory("two"));
+ //now make sure it's initialized
+ try {
+ container.init(new HashMap<String, String>());
+ fail("Container should have already been initialized");
+ }
+ catch (IllegalStateException te) {
+ }
+
+ }
+}
Propchange: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/KeyedDefinitionsFactoryTilesContainerFactoryTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/KeyedDefinitionsFactoryTilesContainerFactoryTest.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/TilesContainerFactoryTest.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/TilesContainerFactoryTest.java?view=diff&rev=492128&r1=492127&r2=492128
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/TilesContainerFactoryTest.java (original)
+++ struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/TilesContainerFactoryTest.java Wed Jan 3 04:48:35 2007
@@ -49,6 +49,7 @@
public void testGetFactory() throws TilesException {
Vector v = new Vector();
+ Vector emptyVector = new Vector();
v.add(TilesContainerFactory.CONTAINER_FACTORY_INIT_PARAM);
EasyMock.expect(context.getInitParameterNames()).andReturn(v.elements());
@@ -66,6 +67,17 @@
assertNotNull(factory);
assertEquals(TestFactory.class, factory.getClass());
+ Map<String, String> defaults = new HashMap<String, String>();
+ defaults.put(TilesContainerFactory.CONTAINER_FACTORY_INIT_PARAM,
+ TestFactory.class.getName());
+ EasyMock.reset(context);
+ EasyMock.expect(context.getInitParameterNames()).andReturn(emptyVector.elements());
+ EasyMock.expect(context.getInitParameter(TilesContainerFactory.CONTAINER_FACTORY_INIT_PARAM)).andReturn(null);
+ EasyMock.replay(context);
+ factory = TilesContainerFactory.getFactory(context, defaults);
+ assertNotNull(factory);
+ assertEquals(TestFactory.class, factory.getClass());
+
EasyMock.reset(context);
EasyMock.expect(context.getInitParameterNames()).andReturn(v.elements());
EasyMock.expect(context.getInitParameter(TilesContainerFactory.CONTAINER_FACTORY_INIT_PARAM)).andReturn("org.missing.Class");
@@ -96,7 +108,7 @@
//now make sure it's initialized
try {
container.init(new HashMap<String, String>());
- fail("Container should have allready been initialized");
+ fail("Container should have already been initialized");
}
catch (IllegalStateException te) {
}
Added: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/test-defs-key-one.xml
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/test-defs-key-one.xml?view=auto&rev=492128
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/test-defs-key-one.xml (added)
+++ struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/test-defs-key-one.xml Wed Jan 3 04:48:35 2007
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+-->
+
+ <!DOCTYPE tiles-definitions PUBLIC
+ "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
+ "http://struts.apache.org/dtds/tiles-config_2_0.dtd">
+
+<tiles-definitions>
+ <definition name="test.def.one" template="/test.jsp">
+ <put name="country" value="default"/>
+ <put name="title" value="Tiles Library Documentation" />
+ <put name="header" value="/common/header.jsp" />
+ <put name="menu" value="doc.menu.main" />
+ <put name="footer" value="/common/footer.jsp" />
+ <put name="body" value="doc.portal.body" />
+ </definition>
+
+</tiles-definitions>
Propchange: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/test-defs-key-one.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/test-defs-key-one.xml
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/test-defs-key-two.xml
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/test-defs-key-two.xml?view=auto&rev=492128
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/test-defs-key-two.xml (added)
+++ struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/test-defs-key-two.xml Wed Jan 3 04:48:35 2007
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+-->
+
+ <!DOCTYPE tiles-definitions PUBLIC
+ "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
+ "http://struts.apache.org/dtds/tiles-config_2_0.dtd">
+
+<tiles-definitions>
+ <definition name="test.def.two" template="/test.jsp">
+ <put name="country" value="default"/>
+ <put name="title" value="Tiles Library Documentation" />
+ <put name="header" value="/common/header.jsp" />
+ <put name="menu" value="doc.menu.main" />
+ <put name="footer" value="/common/footer.jsp" />
+ <put name="body" value="doc.portal.body" />
+ </definition>
+
+</tiles-definitions>
Propchange: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/test-defs-key-two.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/test-defs-key-two.xml
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/test-defs.xml
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/test-defs.xml?view=diff&rev=492128&r1=492127&r2=492128
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/test-defs.xml (original)
+++ struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/factory/test-defs.xml Wed Jan 3 04:48:35 2007
@@ -27,7 +27,7 @@
"http://struts.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
- <definition name="test.def1" path="/test.jsp">
+ <definition name="test.def1" template="/test.jsp">
<put name="country" value="default"/>
<put name="title" value="Tiles Library Documentation" />
<put name="header" value="/common/header.jsp" />
Added: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java?view=auto&rev=492128
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java (added)
+++ struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java Wed Jan 3 04:48:35 2007
@@ -0,0 +1,76 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.tiles.impl;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Vector;
+
+import javax.servlet.ServletContext;
+
+import junit.framework.TestCase;
+
+import org.apache.tiles.TilesException;
+import org.apache.tiles.factory.TilesContainerFactory;
+import org.easymock.EasyMock;
+
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class BasicTilesContainerTest extends TestCase {
+
+ private BasicTilesContainer container;
+
+ public void setUp() {
+ ServletContext context = EasyMock.createMock(ServletContext.class);
+ URL url = getClass().getResource("/org/apache/tiles/factory/test-defs.xml");
+
+ Vector<String> v = new Vector<String>();
+
+ EasyMock.expect(context.getInitParameter(TilesContainerFactory.CONTAINER_FACTORY_INIT_PARAM)).andReturn(null);
+ EasyMock.expect(context.getInitParameter(TilesContainerFactory.CONTEXT_FACTORY_INIT_PARAM)).andReturn(null);
+ EasyMock.expect(context.getInitParameter(TilesContainerFactory.DEFINITIONS_FACTORY_INIT_PARAM)).andReturn(null);
+ EasyMock.expect(context.getInitParameter(EasyMock.isA(String.class))).andReturn(null).anyTimes();
+ EasyMock.expect(context.getInitParameterNames()).andReturn(v.elements()).anyTimes();
+ try {
+ EasyMock.expect(context.getResource("/WEB-INF/tiles.xml")).andReturn(url);
+ } catch (MalformedURLException e) {
+ throw new RuntimeException("Error getting Tiles configuration URL",
+ e);
+ }
+ EasyMock.replay(context);
+ try {
+ TilesContainerFactory factory = TilesContainerFactory.getFactory(context);
+ container = (BasicTilesContainer) factory.createContainer(context);
+ } catch (TilesException e) {
+ throw new RuntimeException("Error initializing factory", e);
+ }
+ }
+
+ public void testInitialization() {
+ assertNotNull(container);
+ assertNotNull(container.getContextFactory());
+ assertNotNull(container.getPreparerFactory());
+ assertNotNull(container.getDefinitionsFactory());
+ }
+}
Propchange: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/impl/KeyedDefinitionsFactoryTilesContainerTest.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/impl/KeyedDefinitionsFactoryTilesContainerTest.java?view=auto&rev=492128
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/impl/KeyedDefinitionsFactoryTilesContainerTest.java (added)
+++ struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/impl/KeyedDefinitionsFactoryTilesContainerTest.java Wed Jan 3 04:48:35 2007
@@ -0,0 +1,191 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.tiles.impl;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Vector;
+
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import junit.framework.TestCase;
+
+import org.apache.tiles.TilesException;
+import org.apache.tiles.definition.DefinitionsFactory;
+import org.apache.tiles.factory.KeyedDefinitionsFactoryTilesContainerFactory;
+import org.apache.tiles.factory.TilesContainerFactory;
+import org.easymock.EasyMock;
+
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class KeyedDefinitionsFactoryTilesContainerTest extends TestCase {
+
+ private KeyedDefinitionsFactoryTilesContainer container;
+
+ private Map<String, String> defaults;
+
+ public void setUp() {
+ defaults = new HashMap<String, String>();
+ defaults.put(TilesContainerFactory.CONTAINER_FACTORY_INIT_PARAM,
+ KeyedDefinitionsFactoryTilesContainerFactory.class.getName());
+
+ ServletContext context = EasyMock.createMock(ServletContext.class);
+
+ Vector<String> v = new Vector<String>();
+
+ EasyMock.expect(context.getInitParameter(TilesContainerFactory.CONTAINER_FACTORY_INIT_PARAM)).andReturn(null);
+ EasyMock.expect(context.getInitParameter(TilesContainerFactory.CONTEXT_FACTORY_INIT_PARAM)).andReturn(null);
+ EasyMock.expect(context.getInitParameter(TilesContainerFactory.DEFINITIONS_FACTORY_INIT_PARAM)).andReturn(null);
+ EasyMock.expect(context.getInitParameter(
+ KeyedDefinitionsFactoryTilesContainerFactory.CONTAINER_KEYS_INIT_PARAM))
+ .andReturn("one,two").anyTimes();
+ EasyMock.expect(context.getInitParameter(BasicTilesContainer.DEFINITIONS_CONFIG + "@one"))
+ .andReturn("/WEB-INF/tiles-one.xml").anyTimes();
+ EasyMock.expect(context.getInitParameter(BasicTilesContainer.DEFINITIONS_CONFIG + "@two"))
+ .andReturn("/WEB-INF/tiles-two.xml").anyTimes();
+ EasyMock.expect(context.getInitParameter(EasyMock.isA(String.class))).andReturn(null).anyTimes();
+ EasyMock.expect(context.getInitParameterNames()).andReturn(v.elements()).anyTimes();
+ try {
+ URL url = getClass().getResource("/org/apache/tiles/factory/test-defs.xml");
+ EasyMock.expect(context.getResource("/WEB-INF/tiles.xml")).andReturn(url);
+ url = getClass().getResource("/org/apache/tiles/factory/test-defs-key-one.xml");
+ EasyMock.expect(context.getResource("/WEB-INF/tiles-one.xml")).andReturn(url);
+ url = getClass().getResource("/org/apache/tiles/factory/test-defs-key-two.xml");
+ EasyMock.expect(context.getResource("/WEB-INF/tiles-two.xml")).andReturn(url);
+ } catch (MalformedURLException e) {
+ throw new RuntimeException("Error getting Tiles configuration URL",
+ e);
+ }
+ EasyMock.replay(context);
+ try {
+ TilesContainerFactory factory = TilesContainerFactory.getFactory(context, defaults);
+ container = (KeyedDefinitionsFactoryTilesContainer) factory.createContainer(context);
+ } catch (TilesException e) {
+ throw new RuntimeException("Error initializing factory", e);
+ }
+ }
+
+ public void testInitialization() {
+ assertNotNull(container);
+ assertNotNull(container.getContextFactory());
+ assertNotNull(container.getPreparerFactory());
+ assertNotNull(container.getDefinitionsFactory());
+ assertNotNull(container.getProperDefinitionsFactory("one"));
+ assertNotNull(container.getProperDefinitionsFactory("two"));
+ }
+
+ public void testPostponedDefinitionsFactoryInitialization() throws MalformedURLException, TilesException {
+ KeyedDefinitionsFactoryTilesContainer container;
+ ServletContext context = EasyMock.createMock(ServletContext.class);
+
+ Vector<String> v = new Vector<String>();
+
+ EasyMock.reset(context);
+ EasyMock.expect(context.getInitParameter(TilesContainerFactory.CONTAINER_FACTORY_INIT_PARAM)).andReturn(null);
+ EasyMock.expect(context.getInitParameter(TilesContainerFactory.CONTEXT_FACTORY_INIT_PARAM)).andReturn(null);
+ EasyMock.expect(context.getInitParameter(TilesContainerFactory.DEFINITIONS_FACTORY_INIT_PARAM)).andReturn(null);
+ EasyMock.expect(context.getInitParameter(BasicTilesContainer.DEFINITIONS_CONFIG)).andReturn(null);
+ EasyMock.expect(context.getInitParameter("definitions-config")).andReturn(null);
+ EasyMock.expect(context.getInitParameter(TilesContainerFactory.CONTAINER_FACTORY_MUTABLE_INIT_PARAM)).andReturn(null);
+ EasyMock.expect(context.getInitParameter(
+ KeyedDefinitionsFactoryTilesContainerFactory.CONTAINER_KEYS_INIT_PARAM))
+ .andReturn(null);
+ URL url = getClass().getResource("/org/apache/tiles/factory/test-defs.xml");
+ EasyMock.expect(context.getResource("/WEB-INF/tiles.xml")).andReturn(url);
+ url = getClass().getResource("/org/apache/tiles/factory/test-defs-key-one.xml");
+ EasyMock.expect(context.getResource("/WEB-INF/tiles-one.xml")).andReturn(url);
+ url = getClass().getResource("/org/apache/tiles/factory/test-defs-key-two.xml");
+ EasyMock.expect(context.getResource("/WEB-INF/tiles-two.xml")).andReturn(url);
+ EasyMock.expect(context.getInitParameterNames()).andReturn(v.elements()).anyTimes();
+ EasyMock.replay(context);
+ KeyedDefinitionsFactoryTilesContainerFactory factory =
+ (KeyedDefinitionsFactoryTilesContainerFactory)
+ TilesContainerFactory.getFactory(context, defaults);
+ container = (KeyedDefinitionsFactoryTilesContainer) factory.createContainer(context);
+
+ assertNotNull(container);
+ assertNotNull(container.getDefinitionsFactory());
+ assertNull(container.getProperDefinitionsFactory("one"));
+ assertNull(container.getProperDefinitionsFactory("two"));
+
+ Map<String, String> initParams = new HashMap<String, String>();
+ initParams.put(BasicTilesContainer.DEFINITIONS_CONFIG,
+ "/WEB-INF/tiles-one.xml");
+ DefinitionsFactory defsFactory = factory.createDefinitionsFactory(context);
+ container.setDefinitionsFactory("one", defsFactory, initParams);
+ initParams.put(BasicTilesContainer.DEFINITIONS_CONFIG,
+ "/WEB-INF/tiles-two.xml");
+ defsFactory = factory.createDefinitionsFactory(context);
+ container.setDefinitionsFactory("two", defsFactory, initParams);
+ assertNotNull(container.getProperDefinitionsFactory("one"));
+ assertNotNull(container.getProperDefinitionsFactory("two"));
+ }
+
+ public void testDefinitionsFactoryUse() {
+ HttpServletRequest request = EasyMock.createMock(
+ HttpServletRequest.class);
+ HttpServletResponse response = EasyMock.createMock(
+ HttpServletResponse.class);
+
+ EasyMock.reset(request);
+ EasyMock.reset(response);
+ EasyMock.expect(request.getAttribute(
+ KeyedDefinitionsFactoryTilesContainer.DEFINITIONS_FACTORY_KEY_ATTRIBUTE_NAME))
+ .andReturn(null).anyTimes();
+ EasyMock.expect(request.getLocale()).andReturn(null).anyTimes();
+ EasyMock.replay(request);
+ EasyMock.replay(response);
+ assertTrue(container.isValidDefinition(request, response, "test.def1"));
+ assertFalse(container.isValidDefinition(request, response, "test.def.one"));
+ assertFalse(container.isValidDefinition(request, response, "test.def.two"));
+
+ EasyMock.reset(request);
+ EasyMock.reset(response);
+ EasyMock.expect(request.getAttribute(
+ KeyedDefinitionsFactoryTilesContainer.DEFINITIONS_FACTORY_KEY_ATTRIBUTE_NAME))
+ .andReturn("one").anyTimes();
+ EasyMock.expect(request.getLocale()).andReturn(null).anyTimes();
+ EasyMock.replay(request);
+ EasyMock.replay(response);
+ assertTrue(container.isValidDefinition(request, response, "test.def1"));
+ assertTrue(container.isValidDefinition(request, response, "test.def.one"));
+ assertFalse(container.isValidDefinition(request, response, "test.def.two"));
+
+ EasyMock.reset(request);
+ EasyMock.reset(response);
+ EasyMock.expect(request.getAttribute(
+ KeyedDefinitionsFactoryTilesContainer.DEFINITIONS_FACTORY_KEY_ATTRIBUTE_NAME))
+ .andReturn("two").anyTimes();
+ EasyMock.expect(request.getLocale()).andReturn(null).anyTimes();
+ EasyMock.replay(request);
+ EasyMock.replay(response);
+ assertTrue(container.isValidDefinition(request, response, "test.def1"));
+ assertFalse(container.isValidDefinition(request, response, "test.def.one"));
+ assertTrue(container.isValidDefinition(request, response, "test.def.two"));
+ }
+}
Propchange: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/impl/KeyedDefinitionsFactoryTilesContainerTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/impl/KeyedDefinitionsFactoryTilesContainerTest.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL