Author: apetrelli
Date: Wed Oct  7 09:21:12 2009
New Revision: 822631

URL: http://svn.apache.org/viewvc?rev=822631&view=rev
Log:
TILES-477
Added UnresolvingLocaleDefinitionsFactory and set as default.

Added:
    
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/UnresolvingLocaleDefinitionsFactory.java
   (with props)
    
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/UnresolvingLocaleDefinitionsFactoryTest.java
   (with props)
Modified:
    
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/DefinitionsFactory.java
    
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/LocaleDefinitionsFactory.java
    
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/UrlDefinitionsFactory.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/factory/BasicTilesContainerFactoryTest.java

Modified: 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/DefinitionsFactory.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/DefinitionsFactory.java?rev=822631&r1=822630&r2=822631&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/DefinitionsFactory.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/DefinitionsFactory.java
 Wed Oct  7 09:21:12 2009
@@ -77,6 +77,8 @@
      * @param params The Map of configuration properties.
      * @throws DefinitionsFactoryException If a Tiles exception, such as an 
initialization
      * error, occurs.
+     * @deprecated Parameter based initialization is deprecated, please 
compose your
+     * definitions factory using methods.
      */
     void init(Map<String, String> params);
 

Modified: 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/LocaleDefinitionsFactory.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/LocaleDefinitionsFactory.java?rev=822631&r1=822630&r2=822631&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/LocaleDefinitionsFactory.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/LocaleDefinitionsFactory.java
 Wed Oct  7 09:21:12 2009
@@ -26,7 +26,6 @@
 
 import org.apache.tiles.Definition;
 import org.apache.tiles.Initializable;
-import org.apache.tiles.TilesApplicationContext;
 import org.apache.tiles.awareness.TilesApplicationContextAware;
 import org.apache.tiles.context.TilesRequestContext;
 import org.apache.tiles.definition.dao.CachingLocaleUrlDefinitionDAO;
@@ -49,52 +48,8 @@
  * @since 2.1.0
  */
 @SuppressWarnings("deprecation")
-public class LocaleDefinitionsFactory implements DefinitionsFactory,
-        TilesApplicationContextAware, Initializable {
-
-    /**
-     * The definition DAO that extracts the definitions from the sources.
-     *
-     * @since 2.1.0
-     */
-    protected DefinitionDAO<Locale> definitionDao;
-
-    /**
-     * The application context.
-     *
-     * @since 2.1.0
-     */
-    protected TilesApplicationContext applicationContext;
-
-    /**
-     * The locale resolver object.
-     */
-    protected LocaleResolver localeResolver;
-
-    /** {...@inheritdoc} */
-    public void setApplicationContext(TilesApplicationContext 
applicationContext) {
-        this.applicationContext = applicationContext;
-    }
-
-    /**
-     * Sets the locale resolver to use.
-     *
-     * @param localeResolver The locale resolver.
-     * @since 2.1.0
-     */
-    public void setLocaleResolver(LocaleResolver localeResolver) {
-        this.localeResolver = localeResolver;
-    }
-
-    /**
-     * Sets the definition DAO to use. It must be locale-based.
-     *
-     * @param definitionDao The definition DAO.
-     * @since 2.1.0
-     */
-    public void setDefinitionDAO(DefinitionDAO<Locale> definitionDao) {
-        this.definitionDao = definitionDao;
-    }
+public class LocaleDefinitionsFactory extends
+        UnresolvingLocaleDefinitionsFactory implements Initializable {
 
     /**
      * Initializes the DefinitionsFactory and its subcomponents.
@@ -163,20 +118,6 @@
         return retValue;
     }
 
-    /** {...@inheritdoc} */
-    @Deprecated
-    public void addSource(Object source) {
-        throw new UnsupportedOperationException(
-                "The addSource method is not supported");
-    }
-
-    /** {...@inheritdoc} */
-    @Deprecated
-    public Definitions readDefinitions() {
-        throw new UnsupportedOperationException(
-            "The readDefinitions method is not supported");
-    }
-
     /**
      * Creates the default locale resolver, if it has not been specified
      * outside.

Added: 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/UnresolvingLocaleDefinitionsFactory.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/UnresolvingLocaleDefinitionsFactory.java?rev=822631&view=auto
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/UnresolvingLocaleDefinitionsFactory.java
 (added)
+++ 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/UnresolvingLocaleDefinitionsFactory.java
 Wed Oct  7 09:21:12 2009
@@ -0,0 +1,127 @@
+/*
+ * $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.definition;
+
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.tiles.Definition;
+import org.apache.tiles.TilesApplicationContext;
+import org.apache.tiles.awareness.TilesApplicationContextAware;
+import org.apache.tiles.context.TilesRequestContext;
+import org.apache.tiles.definition.dao.DefinitionDAO;
+import org.apache.tiles.locale.LocaleResolver;
+
+/**
+ * {...@link DefinitionsFactory DefinitionsFactory} implementation that manages
+ * Definitions configuration data from URLs, without resolving definition
+ * inheritance when a definition is returned.<p/>
+ * <p>
+ * The Definition objects are read from the
+ * {...@link org.apache.tiles.definition.digester.DigesterDefinitionsReader 
DigesterDefinitionsReader}
+ * class unless another implementation is specified.
+ * </p>
+ *
+ * @version $Rev$ $Date$
+ * @since 2.2.1
+ */
+public class UnresolvingLocaleDefinitionsFactory implements DefinitionsFactory,
+        TilesApplicationContextAware {
+
+    /**
+     * The definition DAO that extracts the definitions from the sources.
+     *
+     * @since 2.2.1
+     */
+    protected DefinitionDAO<Locale> definitionDao;
+
+    /**
+     * The application context.
+     *
+     * @since 2.2.1
+     */
+    protected TilesApplicationContext applicationContext;
+
+    /**
+     * The locale resolver object.
+     *
+     * @since 2.2.1
+     */
+    protected LocaleResolver localeResolver;
+
+    /** {...@inheritdoc} */
+    public void setApplicationContext(TilesApplicationContext 
applicationContext) {
+        this.applicationContext = applicationContext;
+    }
+
+    /**
+     * Sets the locale resolver to use.
+     *
+     * @param localeResolver The locale resolver.
+     * @since 2.2.1
+     */
+    public void setLocaleResolver(LocaleResolver localeResolver) {
+        this.localeResolver = localeResolver;
+    }
+
+    /**
+     * Sets the definition DAO to use. It must be locale-based.
+     *
+     * @param definitionDao The definition DAO.
+     * @since 2.2.1
+     */
+    public void setDefinitionDAO(DefinitionDAO<Locale> definitionDao) {
+        this.definitionDao = definitionDao;
+    }
+
+    /** {...@inheritdoc} */
+    public Definition getDefinition(String name,
+            TilesRequestContext tilesContext) {
+        Locale locale = null;
+
+        if (tilesContext != null) {
+            locale = localeResolver.resolveLocale(tilesContext);
+        }
+
+        return definitionDao.getDefinition(name, locale);
+    }
+
+    /** {...@inheritdoc} */
+    @Deprecated
+    public void addSource(Object source) {
+        throw new UnsupportedOperationException(
+                "The addSource method is not supported");
+    }
+
+    /** {...@inheritdoc} */
+    @Deprecated
+    public Definitions readDefinitions() {
+        throw new UnsupportedOperationException(
+                "The readDefinitions method is not supported");
+    }
+
+    /** {...@inheritdoc} */
+    @Deprecated
+    public void init(Map<String, String> params) {
+        // It's here only for binary compatibility reasons.
+    }
+}

Propchange: 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/UnresolvingLocaleDefinitionsFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/UnresolvingLocaleDefinitionsFactory.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Modified: 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/UrlDefinitionsFactory.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/UrlDefinitionsFactory.java?rev=822631&r1=822630&r2=822631&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/UrlDefinitionsFactory.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/UrlDefinitionsFactory.java
 Wed Oct  7 09:21:12 2009
@@ -49,11 +49,11 @@
  * </p>
  *
  * @version $Rev$ $Date$
- * @deprecated Use {...@link LocaleDefinitionsFactory} and using
+ * @deprecated Use {...@link UnresolvingLocaleDefinitionsFactory} and using
  * {...@link ResolvingLocaleUrlDefinitionDAO} as Tiles DAO.
  */
-public class UrlDefinitionsFactory extends LocaleDefinitionsFactory implements
-        Refreshable {
+public class UrlDefinitionsFactory extends UnresolvingLocaleDefinitionsFactory
+        implements Refreshable {
 
     /**
      * Compatibility constant.
@@ -90,25 +90,6 @@
      */
     protected Map<String, Long> lastModifiedDates;
 
-    /**
-     * Returns a Definition object that matches the given name and
-     * Tiles context.
-     *
-     * @param name         The name of the Definition to return.
-     * @param tilesContext The Tiles context to use to resolve the definition.
-     * @return the Definition matching the given name or null if none
-     *         is found.
-     * @throws DefinitionsFactoryException if an error occurs reading 
definitions.
-     */
-    @Override
-    public Definition getDefinition(String name,
-            TilesRequestContext tilesContext) {
-
-        Locale locale = localeResolver.resolveLocale(tilesContext);
-
-        return definitionDao.getDefinition(name, locale);
-    }
-
     /** {...@inheritdoc} */
     public synchronized void refresh() {
         log.debug("Updating Tiles definitions. . .");
@@ -177,8 +158,12 @@
         }
     }
 
-    /** {...@inheritdoc} */
-    @Override
+    /**
+     * Creates the default definition DAO, if it has not been specified 
outside.
+     *
+     * @return The default definition DAO.
+     * @since 2.1.0
+     */
     protected DefinitionDAO<Locale> createDefaultDefinitionDAO() {
         return new ResolvingLocaleUrlDefinitionDAO();
     }

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=822631&r1=822630&r2=822631&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
 Wed Oct  7 09:21:12 2009
@@ -33,8 +33,8 @@
 import org.apache.tiles.context.TilesRequestContextFactory;
 import org.apache.tiles.definition.DefinitionsFactory;
 import org.apache.tiles.definition.DefinitionsReader;
-import org.apache.tiles.definition.LocaleDefinitionsFactory;
 import org.apache.tiles.definition.Refreshable;
+import org.apache.tiles.definition.UnresolvingLocaleDefinitionsFactory;
 import org.apache.tiles.definition.dao.BaseLocaleUrlDefinitionDAO;
 import org.apache.tiles.definition.dao.DefinitionDAO;
 import org.apache.tiles.definition.dao.ResolvingLocaleUrlDefinitionDAO;
@@ -223,7 +223,8 @@
 
     /**
      * Creates the definitions factory. By default it creates a
-     * {...@link LocaleDefinitionsFactory} with default dependencies.
+     * {...@link UnresolvingLocaleDefinitionsFactory} with default 
dependencies.
+     *
      * @param applicationContext The Tiles application context.
      * @param contextFactory The Tiles context factory.
      * @param resolver The locale resolver.
@@ -234,7 +235,7 @@
     protected DefinitionsFactory 
createDefinitionsFactory(TilesApplicationContext applicationContext,
             TilesRequestContextFactory contextFactory,
             LocaleResolver resolver) {
-        LocaleDefinitionsFactory factory = instantiateDefinitionsFactory(
+        UnresolvingLocaleDefinitionsFactory factory = 
instantiateDefinitionsFactory(
                 applicationContext, contextFactory, resolver);
         factory.setApplicationContext(applicationContext);
         factory.setLocaleResolver(resolver);
@@ -253,12 +254,12 @@
      * @param resolver The locale resolver.
      *
      * @return The definitions factory.
-     * @since 2.1.1
+     * @since 2.2.1
      */
-    protected LocaleDefinitionsFactory 
instantiateDefinitionsFactory(TilesApplicationContext applicationContext,
-            TilesRequestContextFactory contextFactory,
-            LocaleResolver resolver) {
-        return new LocaleDefinitionsFactory();
+    protected UnresolvingLocaleDefinitionsFactory 
instantiateDefinitionsFactory(
+            TilesApplicationContext applicationContext,
+            TilesRequestContextFactory contextFactory, LocaleResolver 
resolver) {
+        return new UnresolvingLocaleDefinitionsFactory();
     }
 
 

Added: 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/UnresolvingLocaleDefinitionsFactoryTest.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/UnresolvingLocaleDefinitionsFactoryTest.java?rev=822631&view=auto
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/UnresolvingLocaleDefinitionsFactoryTest.java
 (added)
+++ 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/UnresolvingLocaleDefinitionsFactoryTest.java
 Wed Oct  7 09:21:12 2009
@@ -0,0 +1,68 @@
+/*
+ * $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.definition;
+
+import static org.easymock.classextension.EasyMock.*;
+import static org.junit.Assert.*;
+
+import java.util.Locale;
+
+import org.apache.tiles.Definition;
+import org.apache.tiles.TilesApplicationContext;
+import org.apache.tiles.context.TilesRequestContext;
+import org.apache.tiles.definition.dao.DefinitionDAO;
+import org.apache.tiles.locale.LocaleResolver;
+import org.junit.Test;
+
+/**
+ * Tests {...@link UnresolvingLocaleDefinitionsFactory}.
+ *
+ * @version $Rev$ $Date$
+ */
+public class UnresolvingLocaleDefinitionsFactoryTest {
+
+    /**
+     * Test method for {...@link 
UnresolvingLocaleDefinitionsFactory#getDefinition(String, TilesRequestContext)}.
+     */
+    @SuppressWarnings("unchecked")
+    @Test
+    public void testGetDefinition() {
+        TilesApplicationContext applicationContext = 
createMock(TilesApplicationContext.class);
+        DefinitionDAO<Locale> dao = createMock(DefinitionDAO.class);
+        LocaleResolver localeResolver = createMock(LocaleResolver.class);
+        UnresolvingLocaleDefinitionsFactory factory = new 
UnresolvingLocaleDefinitionsFactory();
+        TilesRequestContext request = createMock(TilesRequestContext.class);
+        Definition definition = createMock(Definition.class);
+        Locale locale = Locale.ITALY;
+
+        expect(localeResolver.resolveLocale(request)).andReturn(locale);
+        expect(dao.getDefinition("myDefinition", 
locale)).andReturn(definition);
+
+        replay(applicationContext, dao, localeResolver, request, definition);
+        factory.setApplicationContext(applicationContext);
+        factory.setDefinitionDAO(dao);
+        factory.setLocaleResolver(localeResolver);
+        assertEquals(definition, factory.getDefinition("myDefinition", 
request));
+        verify(applicationContext, dao, localeResolver, request, definition);
+    }
+
+}

Propchange: 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/UnresolvingLocaleDefinitionsFactoryTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/UnresolvingLocaleDefinitionsFactoryTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Modified: 
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=822631&r1=822630&r2=822631&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/factory/BasicTilesContainerFactoryTest.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/factory/BasicTilesContainerFactoryTest.java
 Wed Oct  7 09:21:12 2009
@@ -35,7 +35,7 @@
 import org.apache.tiles.context.TilesRequestContextFactory;
 import org.apache.tiles.definition.DefinitionsFactory;
 import org.apache.tiles.definition.DefinitionsReader;
-import org.apache.tiles.definition.LocaleDefinitionsFactory;
+import org.apache.tiles.definition.UnresolvingLocaleDefinitionsFactory;
 import org.apache.tiles.definition.digester.DigesterDefinitionsReader;
 import org.apache.tiles.evaluator.AttributeEvaluatorFactory;
 import org.apache.tiles.evaluator.impl.DirectAttributeEvaluator;
@@ -118,7 +118,7 @@
         DefinitionsFactory defsFactory = factory.createDefinitionsFactory(
                 applicationContext, requestContextFactory, resolver);
         assertTrue("The class of the definitions factory is not correct",
-                defsFactory instanceof LocaleDefinitionsFactory);
+                defsFactory instanceof UnresolvingLocaleDefinitionsFactory);
     }
 
     /**


Reply via email to