You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tiles.apache.org by ap...@apache.org on 2009/10/07 11:21:13 UTC

svn commit: r822631 - in /tiles/framework/trunk/tiles-core/src: main/java/org/apache/tiles/definition/ main/java/org/apache/tiles/factory/ test/java/org/apache/tiles/definition/ test/java/org/apache/tiles/factory/

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);
     }
 
     /**