Author: apetrelli
Date: Thu Mar 1 01:41:03 2007
New Revision: 513238
URL: http://svn.apache.org/viewvc?view=rev&rev=513238
Log:
TILES-123
Added support for a basic Locale resolution.
Added:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/locale/
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/locale/LocaleResolver.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/locale/impl/
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/locale/impl/DefaultLocaleResolver.java
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/UrlDefinitionsFactory.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?view=diff&rev=513238&r1=513237&r2=513238
==============================================================================
---
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
Thu Mar 1 01:41:03 2007
@@ -50,6 +50,9 @@
*/
public static final String DEFINITIONS_IMPL_PROPERTY =
"org.apache.tiles.definition.ComponentDefinitions";
+
+ public static final String LOCALE_RESOLVER_IMPL_PROPERTY =
+ "org.apache.tiles.locale.LocaleResolver";
/**
* Initializes the DefinitionsFactory and its subcomponents.
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?view=diff&rev=513238&r1=513237&r2=513238
==============================================================================
---
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
Thu Mar 1 01:41:03 2007
@@ -26,6 +26,8 @@
import org.apache.tiles.TilesException;
import org.apache.tiles.context.TilesRequestContext;
import org.apache.tiles.definition.digester.DigesterDefinitionsReader;
+import org.apache.tiles.locale.LocaleResolver;
+import org.apache.tiles.locale.impl.DefaultLocaleResolver;
import org.apache.tiles.util.ClassUtil;
import java.io.FileNotFoundException;
@@ -79,6 +81,8 @@
private ComponentDefinitions definitions;
+
+ private LocaleResolver localeResolver;
/**
* Creates a new instance of UrlDefinitionsFactory
@@ -108,6 +112,15 @@
reader = new DigesterDefinitionsReader();
}
reader.init(params);
+
+ String resolverClassName = params
+ .get(DefinitionsFactory.LOCALE_RESOLVER_IMPL_PROPERTY);
+ if (resolverClassName != null) {
+ localeResolver = (LocaleResolver)
ClassUtil.instantiate(resolverClassName);
+ } else {
+ localeResolver = new DefaultLocaleResolver();
+ }
+ localeResolver.init(params);
}
private ComponentDefinitions getComponentDefinitions()
@@ -137,7 +150,7 @@
Locale locale = null;
if (tilesContext != null) {
- locale = tilesContext.getRequestLocale();
+ locale = localeResolver.resolveLocale(tilesContext);
if (!isContextProcessed(tilesContext)) {
synchronized (definitions) {
addDefinitions(definitions, tilesContext);
@@ -189,7 +202,7 @@
TilesRequestContext tilesContext)
throws DefinitionsFactoryException {
- Locale locale = tilesContext.getRequestLocale();
+ Locale locale = localeResolver.resolveLocale(tilesContext);
if (isContextProcessed(tilesContext)) {
return;
@@ -233,8 +246,8 @@
// At the end of definitions loading, they can be assigned to
// ComponentDefinitions implementation, to allow inheritance
resolution.
- definitions.addDefinitions(localeDefsMap,
- tilesContext.getRequestLocale());
+ definitions.addDefinitions(localeDefsMap, localeResolver
+ .resolveLocale(tilesContext));
}
/**
@@ -275,7 +288,8 @@
* @return true if the given context has been processed and false
otherwise.
*/
protected boolean isContextProcessed(TilesRequestContext tilesContext) {
- return processedLocales.contains(tilesContext.getRequestLocale());
+ return processedLocales.contains(localeResolver
+ .resolveLocale(tilesContext));
}
/**
Added:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/locale/LocaleResolver.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/locale/LocaleResolver.java?view=auto&rev=513238
==============================================================================
---
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/locale/LocaleResolver.java
(added)
+++
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/locale/LocaleResolver.java
Thu Mar 1 01:41:03 2007
@@ -0,0 +1,48 @@
+/*
+ * $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.locale;
+
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.tiles.TilesException;
+import org.apache.tiles.context.TilesRequestContext;
+import org.apache.tiles.definition.DefinitionsFactoryException;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public interface LocaleResolver {
+
+ /**
+ * Initializes the <code>LocaleResolver</code> object. <p/> This method
+ * must be called before the [EMAIL PROTECTED]
#resolveLocale(TilesRequestContext)}
+ * method is called.
+ *
+ * @param params A map of properties used to set up the resolver.
+ * @throws DefinitionsFactoryException if required properties are not
passed
+ * in or the initialization fails.
+ */
+ public void init(Map<String, String> params) throws TilesException;
+
+ public Locale resolveLocale(TilesRequestContext request);
+}
Added:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/locale/impl/DefaultLocaleResolver.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/locale/impl/DefaultLocaleResolver.java?view=auto&rev=513238
==============================================================================
---
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/locale/impl/DefaultLocaleResolver.java
(added)
+++
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/locale/impl/DefaultLocaleResolver.java
Thu Mar 1 01:41:03 2007
@@ -0,0 +1,54 @@
+/*
+ * $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.locale.impl;
+
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.tiles.TilesException;
+import org.apache.tiles.context.TilesRequestContext;
+import org.apache.tiles.locale.LocaleResolver;
+import org.apache.tiles.taglib.ComponentConstants;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class DefaultLocaleResolver implements LocaleResolver {
+
+ public void init(Map<String, String> params)
+ throws TilesException {
+ // Does nothing.
+ }
+
+ public Locale resolveLocale(TilesRequestContext request) {
+ Locale retValue = null;
+ Map session = request.getSessionScope();
+ if (session != null) {
+ retValue = (Locale) session.get(ComponentConstants.LOCALE_KEY);
+ }
+ if (retValue == null) {
+ retValue = request.getRequestLocale();
+ }
+
+ return retValue;
+ }
+}