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


Reply via email to