Author: apetrelli
Date: Tue Apr 8 11:48:25 2008
New Revision: 646028
URL: http://svn.apache.org/viewvc?rev=646028&view=rev
Log:
TILES-261
Fixed BasicTilesContainerFactory.
Moved initialization of syntax in DigesterDefinitionsReader in constructor.
Created test for BasicTilesContainerFactory.
Added:
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/factory/BasicTilesContainerFactoryTest.java
(with props)
Modified:
tiles/framework/trunk/tiles-compat/src/test/java/org/apache/tiles/compat/definition/digester/TestCompatibilityDigesterDefinitionsReader.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/BasicTilesContainerFactory.java
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java
Modified:
tiles/framework/trunk/tiles-compat/src/test/java/org/apache/tiles/compat/definition/digester/TestCompatibilityDigesterDefinitionsReader.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-compat/src/test/java/org/apache/tiles/compat/definition/digester/TestCompatibilityDigesterDefinitionsReader.java?rev=646028&r1=646027&r2=646028&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-compat/src/test/java/org/apache/tiles/compat/definition/digester/TestCompatibilityDigesterDefinitionsReader.java
(original)
+++
tiles/framework/trunk/tiles-compat/src/test/java/org/apache/tiles/compat/definition/digester/TestCompatibilityDigesterDefinitionsReader.java
Tue Apr 8 11:48:25 2008
@@ -85,7 +85,7 @@
* @throws DefinitionsFactoryException If the definitions factory fails.
* @throws IOException If an I/O exception happens.
*/
- public void testReadOldFormat() throws DefinitionsFactoryException,
IOException {
+ public void testReadOldFormat() throws IOException {
reader.init(new HashMap<String, String>());
URL configFile = this.getClass().getClassLoader().getResource(
@@ -108,10 +108,9 @@
/**
* Tests the read method to read Tiles 2.0 files.
*
- * @throws DefinitionsFactoryException If the definitions factory fails.
* @throws IOException If an I/O exception happens.
*/
- public void testReadNewFormat() throws DefinitionsFactoryException,
IOException {
+ public void testReadNewFormat() throws IOException {
reader.init(new HashMap<String, String>());
URL configFile = this.getClass().getClassLoader().getResource(
@@ -158,32 +157,6 @@
assertNotNull("Couldn't Find items1 local attribute.", attribute);
attribute = def.getCascadedAttribute("items2");
assertNotNull("Couldn't Find items2 cascaded attribute.",
attribute);
- } catch (Exception e) {
- fail("Exception reading configuration." + e);
- }
- }
-
- /**
- * Tests calling read without calling init.
- */
- public void testNoInit() {
- try {
- // What happens if we don't call init?
- // reader.init(new HashMap());
-
- URL configFile = this.getClass().getClassLoader().getResource(
- "org/apache/tiles/config/tiles-defs-1.1.xml");
- assertNotNull("Config file not found", configFile);
-
- InputStream source = configFile.openStream();
- reader.read(source);
-
- fail("Should've thrown exception.");
- } catch (DefinitionsFactoryException e) {
- // correct.
- if (LOG.isDebugEnabled()) {
- LOG.debug("Exception caught, it is OK", e);
- }
} catch (Exception e) {
fail("Exception reading configuration." + e);
}
Modified:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java?rev=646028&r1=646027&r2=646028&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java
(original)
+++
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java
Tue Apr 8 11:48:25 2008
@@ -233,11 +233,6 @@
protected String[] registrations;
/**
- * Indicates whether init method has been called.
- */
- private boolean inited = false;
-
- /**
* Index to be used to create unique definition names for anonymous
* (nested) definitions.
*/
@@ -262,6 +257,8 @@
digester.register(registrations[i], url.toString());
}
}
+
+ initSyntax(digester);
}
/**
@@ -278,13 +275,6 @@
* an error occurs when reading definitions.
*/
public Map<String, Definition> read(Object source) {
-
- // Get out if we have not been initialized.
- if (!inited) {
- throw new DefinitionsFactoryException(
- "Definitions reader has not been initialized.");
- }
-
// This is an instance variable instead of a local variable because
// we want to be able to call the addDefinition method to populate it.
// But we reset the Map here, which, of course, has threading
implications.
@@ -334,17 +324,12 @@
* passed in or the initialization fails.
*/
public void init(Map<String, String> params) {
-
if (params != null) {
String value = params.get(PARSER_VALIDATE_PARAMETER_NAME);
if (value != null) {
digester.setValidating(Boolean.valueOf(value));
}
}
-
- initSyntax(digester);
-
- inited = true;
}
/**
Modified:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/BasicTilesContainerFactory.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/BasicTilesContainerFactory.java?rev=646028&r1=646027&r2=646028&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/BasicTilesContainerFactory.java
(original)
+++
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/BasicTilesContainerFactory.java
Tue Apr 8 11:48:25 2008
@@ -108,6 +108,7 @@
contextFactory));
factory.setSourceURLs(getSourceURLs(context, applicationContext,
contextFactory));
+ factory.refresh();
return factory;
}
@@ -158,7 +159,7 @@
retValue.add(applicationContext.getResource("/WEB-INF/tiles.xml"));
} catch (IOException e) {
throw new TilesContainerFactoryException(
- "Cannot get URL: /WEB-INF/tiles.xml");
+ "Cannot get URL: /WEB-INF/tiles.xml", e);
}
return retValue;
}
Modified:
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java?rev=646028&r1=646027&r2=646028&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java
(original)
+++
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java
Tue Apr 8 11:48:25 2008
@@ -199,32 +199,6 @@
}
/**
- * Tests calling read without calling init.
- */
- public void testNoInit() {
- try {
- // What happens if we don't call init?
- // reader.init(new HashMap());
-
- URL configFile = this.getClass().getClassLoader().getResource(
- "org/apache/tiles/config/tiles-defs.xml");
- assertNotNull("Config file not found", configFile);
-
- InputStream source = configFile.openStream();
- reader.read(source);
-
- fail("Should've thrown exception.");
- } catch (DefinitionsFactoryException e) {
- // correct.
- if (LOG.isDebugEnabled()) {
- LOG.debug("Exception caught, it is OK", e);
- }
- } catch (Exception e) {
- fail("Exception reading configuration." + e);
- }
- }
-
- /**
* Tests read with bad input source.
*/
public void testBadSource() {
Added:
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/factory/BasicTilesContainerFactoryTest.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/factory/BasicTilesContainerFactoryTest.java?rev=646028&view=auto
==============================================================================
---
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/factory/BasicTilesContainerFactoryTest.java
(added)
+++
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/factory/BasicTilesContainerFactoryTest.java
Tue Apr 8 11:48:25 2008
@@ -0,0 +1,254 @@
+/*
+ * $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 java.net.URL;
+import java.util.List;
+import java.util.Vector;
+
+import javax.servlet.ServletContext;
+
+import org.apache.tiles.TilesApplicationContext;
+import org.apache.tiles.TilesContainer;
+import org.apache.tiles.context.TilesContextFactory;
+import org.apache.tiles.definition.DefinitionsFactory;
+import org.apache.tiles.definition.DefinitionsReader;
+import org.apache.tiles.definition.UrlDefinitionsFactory;
+import org.apache.tiles.definition.digester.DigesterDefinitionsReader;
+import org.apache.tiles.evaluator.AttributeEvaluator;
+import org.apache.tiles.evaluator.impl.DirectAttributeEvaluator;
+import org.apache.tiles.impl.BasicTilesContainer;
+import org.apache.tiles.locale.LocaleResolver;
+import org.apache.tiles.locale.impl.DefaultLocaleResolver;
+import org.apache.tiles.preparer.BasicPreparerFactory;
+import org.apache.tiles.preparer.PreparerFactory;
+import org.apache.tiles.renderer.AttributeRenderer;
+import org.apache.tiles.renderer.RendererFactory;
+import org.apache.tiles.renderer.impl.BasicRendererFactory;
+import org.apache.tiles.renderer.impl.DefinitionAttributeRenderer;
+import org.apache.tiles.renderer.impl.StringAttributeRenderer;
+import org.apache.tiles.renderer.impl.TemplateAttributeRenderer;
+import org.apache.tiles.renderer.impl.UntypedAttributeRenderer;
+import org.apache.tiles.servlet.context.ServletTilesContextFactory;
+import org.apache.tiles.util.RollingVectorEnumeration;
+import org.easymock.EasyMock;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests [EMAIL PROTECTED] BasicTilesContainerFactory}.
+ *
+ * @version $Rev$ $Date$
+ */
+public class BasicTilesContainerFactoryTest extends TestCase {
+
+ /**
+ * The factory to test.
+ */
+ private BasicTilesContainerFactory factory;
+
+ /**
+ * The context object.
+ */
+ private ServletContext context;
+
+ /**
+ * The URL to load.
+ */
+ private URL url;
+
+ /** [EMAIL PROTECTED] */
+ @Override
+ protected void setUp() throws Exception {
+ context = EasyMock.createMock(ServletContext.class);
+ Vector<String> v = new Vector<String>();
+ v.add(AbstractTilesContainerFactory.CONTAINER_FACTORY_INIT_PARAM);
+ EasyMock.expect(context.getInitParameterNames()).andReturn(
+ new RollingVectorEnumeration<String>(v));
+ EasyMock.expect(context.getInitParameter(
+ AbstractTilesContainerFactory.CONTAINER_FACTORY_INIT_PARAM))
+ .andReturn(BasicTilesContainerFactory.class.getName());
+ url =
getClass().getResource("/org/apache/tiles/config/tiles-defs.xml");
+
EasyMock.expect(context.getResource("/WEB-INF/tiles.xml")).andReturn(url);
+ EasyMock.replay(context);
+ factory = (BasicTilesContainerFactory) AbstractTilesContainerFactory
+ .getTilesContainerFactory(context);
+ }
+
+ /**
+ * Tests [EMAIL PROTECTED]
BasicTilesContainerFactory#createContainer(Object)}.
+ */
+ public void testCreateContainer() {
+ TilesContainer container = factory.createContainer(context);
+ assertTrue("The class of the container is not correct",
+ container instanceof BasicTilesContainer);
+ }
+
+ /**
+ * Tests [EMAIL PROTECTED]
BasicTilesContainerFactory#createContextFactory(Object)}.
+ */
+ public void testCreateContextFactory() {
+ TilesContextFactory contextFactory = factory
+ .createContextFactory(context);
+ assertTrue("The class of the context factory is not correct",
+ contextFactory instanceof ServletTilesContextFactory);
+ }
+
+ /**
+ * Tests [EMAIL PROTECTED]
BasicTilesContainerFactory#createDefinitionsFactory(Object,
+ * TilesApplicationContext, TilesContextFactory)}.
+ */
+ public void testCreateDefinitionsFactory() {
+ TilesContextFactory contextFactory = factory
+ .createContextFactory(context);
+ TilesApplicationContext applicationContext = contextFactory
+ .createApplicationContext(context);
+ DefinitionsFactory defsFactory = factory.createDefinitionsFactory(
+ context, applicationContext, contextFactory);
+ assertTrue("The class of the definitions factory is not correct",
+ defsFactory instanceof UrlDefinitionsFactory);
+ }
+
+ /**
+ * Tests [EMAIL PROTECTED]
BasicTilesContainerFactory#createLocaleResolver(Object,
+ * TilesApplicationContext, TilesContextFactory)}.
+ */
+ public void testCreateLocaleResolver() {
+ TilesContextFactory contextFactory = factory
+ .createContextFactory(context);
+ TilesApplicationContext applicationContext = contextFactory
+ .createApplicationContext(context);
+ LocaleResolver localeResolver = factory.createLocaleResolver(context,
+ applicationContext, contextFactory);
+ assertTrue("The class of the locale resolver is not correct",
+ localeResolver instanceof DefaultLocaleResolver);
+ }
+
+ /**
+ * Tests [EMAIL PROTECTED]
BasicTilesContainerFactory#createDefinitionsReader(Object,
+ * TilesApplicationContext, TilesContextFactory)}.
+ */
+ public void testCreateDefinitionsReader() {
+ TilesContextFactory contextFactory = factory
+ .createContextFactory(context);
+ TilesApplicationContext applicationContext = contextFactory
+ .createApplicationContext(context);
+ DefinitionsReader reader = factory.createDefinitionsReader(context,
+ applicationContext, contextFactory);
+ assertTrue("The class of the reader is not correct",
+ reader instanceof DigesterDefinitionsReader);
+ }
+
+ /**
+ * Tests
+ * [EMAIL PROTECTED] BasicTilesContainerFactory#getSourceURLs(Object,
TilesApplicationContext, TilesContextFactory)}.
+ */
+ public void testGetSourceURLs() {
+ TilesContextFactory contextFactory = factory
+ .createContextFactory(context);
+ TilesApplicationContext applicationContext = contextFactory
+ .createApplicationContext(context);
+ List<URL> urls = factory.getSourceURLs(context, applicationContext,
+ contextFactory);
+ assertEquals("The urls list is not one-sized", 1, urls.size());
+ assertEquals("The URL is not correct", url, urls.get(0));
+ }
+
+ /**
+ * Tests
+ * [EMAIL PROTECTED] BasicTilesContainerFactory#createEvaluator(Object,
TilesApplicationContext, TilesContextFactory)}.
+ */
+ public void testCreateEvaluator() {
+ TilesContextFactory contextFactory = factory
+ .createContextFactory(context);
+ TilesApplicationContext applicationContext = contextFactory
+ .createApplicationContext(context);
+ AttributeEvaluator evaluator = factory.createEvaluator(context,
+ applicationContext, contextFactory);
+ assertTrue("The class of the evaluator is not correct",
+ evaluator instanceof DirectAttributeEvaluator);
+ }
+
+ /**
+ * Tests
+ * [EMAIL PROTECTED]
BasicTilesContainerFactory#createPreparerFactory(Object,
TilesApplicationContext, TilesContextFactory)}.
+ */
+ public void testCreatePreparerFactory() {
+ TilesContextFactory contextFactory = factory
+ .createContextFactory(context);
+ TilesApplicationContext applicationContext = contextFactory
+ .createApplicationContext(context);
+ PreparerFactory preparerFactory = factory.createPreparerFactory(
+ context, applicationContext, contextFactory);
+ assertTrue("The class of the preparer factory is not correct",
+ preparerFactory instanceof BasicPreparerFactory);
+ }
+
+ /**
+ * Tests [EMAIL PROTECTED]
BasicTilesContainerFactory#createRendererFactory(Object,
+ * TilesApplicationContext, TilesContextFactory, TilesContainer,
AttributeEvaluator)}.
+ */
+ public void testCreateRendererFactory() {
+ TilesContainer container = factory.createContainer(context);
+ TilesContextFactory contextFactory = factory
+ .createContextFactory(context);
+ TilesApplicationContext applicationContext = contextFactory
+ .createApplicationContext(context);
+ AttributeEvaluator evaluator = factory.createEvaluator(context,
+ applicationContext, contextFactory);
+ RendererFactory rendererFactory = factory.createRendererFactory(
+ context, applicationContext, contextFactory, container,
+ evaluator);
+ assertTrue("The class of the renderer factory is not correct",
+ rendererFactory instanceof BasicRendererFactory);
+ AttributeRenderer renderer = rendererFactory.getRenderer("string");
+ assertNotNull("The string renderer is null", renderer);
+ assertTrue("The string renderer class is not correct",
+ renderer instanceof StringAttributeRenderer);
+ renderer = rendererFactory.getRenderer("template");
+ assertNotNull("The template renderer is null", renderer);
+ assertTrue("The template renderer class is not correct",
+ renderer instanceof TemplateAttributeRenderer);
+ renderer = rendererFactory.getRenderer("definition");
+ assertNotNull("The definition renderer is null", renderer);
+ assertTrue("The definition renderer class is not correct",
+ renderer instanceof DefinitionAttributeRenderer);
+ }
+
+ /**
+ * Tests [EMAIL PROTECTED]
BasicTilesContainerFactory#createDefaultAttributeRenderer(Object,
+ * TilesApplicationContext, TilesContextFactory, TilesContainer,
AttributeEvaluator)}.
+ */
+ public void testCreateDefaultAttributeRenderer() {
+ TilesContainer container = factory.createContainer(context);
+ TilesContextFactory contextFactory = factory
+ .createContextFactory(context);
+ TilesApplicationContext applicationContext = contextFactory
+ .createApplicationContext(context);
+ AttributeEvaluator evaluator = factory.createEvaluator(context,
+ applicationContext, contextFactory);
+ AttributeRenderer renderer = factory.createDefaultAttributeRenderer(
+ context, applicationContext, contextFactory, container,
+ evaluator);
+ assertTrue("The default renderer class is not correct",
+ renderer instanceof UntypedAttributeRenderer);
+ }
+}
Propchange:
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/factory/BasicTilesContainerFactoryTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/factory/BasicTilesContainerFactoryTest.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL