You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by sh...@apache.org on 2006/07/30 02:15:56 UTC
svn commit: r426855 - in /portals/jetspeed-2/trunk:
components/portal/src/java/org/apache/jetspeed/desktop/impl/
jetspeed-api/src/java/org/apache/jetspeed/desktop/
Author: shinsuke
Date: Sat Jul 29 17:15:56 2006
New Revision: 426855
URL: http://svn.apache.org/viewvc?rev=426855&view=rev
Log:
l10n support. you can put properties file to desktop-theme/theme/resources and specify resource.file in theme.properties.
Modified:
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/desktop/impl/JetspeedDesktopContextImpl.java
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/desktop/impl/JetspeedDesktopImpl.java
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/desktop/JetspeedDesktop.java
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/desktop/JetspeedDesktopContext.java
Modified: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/desktop/impl/JetspeedDesktopContextImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/desktop/impl/JetspeedDesktopContextImpl.java?rev=426855&r1=426854&r2=426855&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/desktop/impl/JetspeedDesktopContextImpl.java (original)
+++ portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/desktop/impl/JetspeedDesktopContextImpl.java Sat Jul 29 17:15:56 2006
@@ -15,6 +15,14 @@
*/
package org.apache.jetspeed.desktop.impl;
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -37,13 +45,15 @@
private BasePortalURL baseUrlAccess = null;
private String themeRootPath = null;
private String theme = null;
+ private String resourceName = null;
- public JetspeedDesktopContextImpl(RequestContext context, BasePortalURL baseUrlAccess, String theme, String themeRootPath )
+ public JetspeedDesktopContextImpl(RequestContext context, BasePortalURL baseUrlAccess, String theme, String themeRootPath, String resourceName)
{
this.context = context;
this.baseUrlAccess = baseUrlAccess;
this.theme = theme;
this.themeRootPath = themeRootPath;
+ this.resourceName = resourceName;
}
public String getPortalResourceUrl(String relativePath)
@@ -104,17 +114,58 @@
public String getDesktopThemeResourceUrl(String relativePath)
{
- if ( relativePath.startsWith( "/" ) )
- return getPortalResourceUrl(themeRootPath + relativePath);
+ return getPortalResourceUrl(getDesktopThemeResource(relativePath));
+ }
+
+ public String getDesktopThemeResource(String relativePath)
+ {
+ if (relativePath.startsWith("/"))
+ {
+ return themeRootPath + relativePath;
+ }
else
- return getPortalResourceUrl(themeRootPath + "/" + relativePath);
+ {
+ return themeRootPath + "/" + relativePath;
+ }
}
+
public String getDesktopThemeRootUrl()
{
return getPortalResourceUrl(themeRootPath);
}
+
public String getDesktopTheme()
{
return theme;
+ }
+
+ public ResourceBundle getResourceBundle(Locale locale)
+ {
+ String resourceDirName = context.getConfig().getServletContext()
+ .getRealPath(getDesktopThemeResource(RESOURCES_DIRECTORY_NAME));
+ File resourceDir = new File(resourceDirName);
+ if (resourceName == null)
+ {
+ throw new NullPointerException("The resource file is null.");
+ }
+ if (!resourceDir.isDirectory())
+ {
+ throw new MissingResourceException(
+ "Can't find the resource directory: " + resourceDirName,
+ resourceName + "_" + locale, "");
+ }
+ URL[] urls = new URL[1];
+ try
+ {
+ urls[0] = resourceDir.toURL();
+ }
+ catch (MalformedURLException e)
+ {
+ throw new MissingResourceException(
+ "The resource directory cannot be parsed as a URL: "
+ + resourceDirName, resourceName + "_" + locale, "");
+ }
+ return ResourceBundle.getBundle(resourceName, locale,
+ new URLClassLoader(urls));
}
}
Modified: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/desktop/impl/JetspeedDesktopImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/desktop/impl/JetspeedDesktopImpl.java?rev=426855&r1=426854&r2=426855&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/desktop/impl/JetspeedDesktopImpl.java (original)
+++ portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/desktop/impl/JetspeedDesktopImpl.java Sat Jul 29 17:15:56 2006
@@ -41,6 +41,12 @@
*/
public class JetspeedDesktopImpl implements JetspeedDesktop, ServletContextAware
{
+ private static final String TEMPLATE_EXTENSION_ATTR = "template.extension";
+
+ private static final String ID_ATTR = "id";
+
+ private static final String RESOURCE_FILE_ATTR = "resource.file";
+
private static final Log log = LogFactory.getLog( JetspeedDesktopImpl.class );
/** the webapp relative root of all themes */
@@ -86,7 +92,9 @@
try
{
RequestDispatcher dispatcher = request.getRequest().getRequestDispatcher(path);
- JetspeedDesktopContext desktopContext = new JetspeedDesktopContextImpl(request, this.baseUrlAccess, theme, getThemeRootPath( theme ) );
+ JetspeedDesktopContext desktopContext = new JetspeedDesktopContextImpl(
+ request, this.baseUrlAccess, theme,
+ getThemeRootPath(theme), getResourceName(theme));
request.getRequest().setAttribute(JetspeedDesktopContext.DESKTOP_ATTRIBUTE, desktopContext);
dispatcher.include(request.getRequest(), request.getResponse());
}
@@ -121,6 +129,16 @@
return this.themesRoot + "/" + theme + "/" + JetspeedDesktop.CONFIG_FILE_NAME;
}
+ protected String getResourceName(String theme)
+ {
+ Properties themeConfiguration = (Properties)themesProperties.get(theme);
+ if (themeConfiguration == null)
+ {
+ themeConfiguration = getConfiguration(theme);
+ }
+ return themeConfiguration.getProperty(RESOURCE_FILE_ATTR);
+ }
+
protected String getThemePath(String theme)
{
Properties themeConfiguration = (Properties)themesProperties.get(theme);
@@ -128,10 +146,10 @@
{
themeConfiguration = getConfiguration(theme);
}
- String id = themeConfiguration.getProperty("id");
+ String id = themeConfiguration.getProperty(ID_ATTR);
if (id == null)
id = theme;
- String ext = themeConfiguration.getProperty("template.extension");
+ String ext = themeConfiguration.getProperty(TEMPLATE_EXTENSION_ATTR);
if (ext == null)
ext = this.defaultExtension;
return getThemeRootPath(theme) + "/" + id + ext;
@@ -167,14 +185,14 @@
log.warn("Could not locate the theme.properties configuration file for theme \""
+ theme +
"\". This theme may not exist.");
- props.setProperty("id", theme);
+ props.setProperty(ID_ATTR, theme);
props.setProperty("extension", this.defaultExtension);
}
}
catch (Exception e)
{
log.warn("Failed to load theme configuration.", e);
- props.setProperty("id", theme);
+ props.setProperty(ID_ATTR, theme);
}
finally
{
Modified: portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/desktop/JetspeedDesktop.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/desktop/JetspeedDesktop.java?rev=426855&r1=426854&r2=426855&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/desktop/JetspeedDesktop.java (original)
+++ portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/desktop/JetspeedDesktop.java Sat Jul 29 17:15:56 2006
@@ -15,9 +15,6 @@
*/
package org.apache.jetspeed.desktop;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
import org.apache.jetspeed.request.RequestContext;
/**
@@ -29,7 +26,7 @@
public interface JetspeedDesktop
{
String CONFIG_FILE_NAME = "theme.properties";
-
+
/**
* Render a desktop theme.
*
Modified: portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/desktop/JetspeedDesktopContext.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/desktop/JetspeedDesktopContext.java?rev=426855&r1=426854&r2=426855&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/desktop/JetspeedDesktopContext.java (original)
+++ portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/desktop/JetspeedDesktopContext.java Sat Jul 29 17:15:56 2006
@@ -15,6 +15,9 @@
*/
package org.apache.jetspeed.desktop;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
/**
* Jetspeed Desktop
*
@@ -25,6 +28,8 @@
{
String DESKTOP_ATTRIBUTE = "jetspeedDesktop";
+ String RESOURCES_DIRECTORY_NAME = "resources";
+
/**
* Get an absolute portal from a relative URL.
* This request adds in the servlet path such as "/desktop"
@@ -64,4 +69,5 @@
*/
String getDesktopThemeResourceUrl(String relativePath);
+ public ResourceBundle getResourceBundle(Locale locale);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org