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