[portal-commits] JBoss Portal SVN: r9082 - in branches/JBoss_Portal_Branch_2_6: core/src/main/org/jboss/portal/core/impl/model/instance/persistent and 7 other directories.

portal-commits at lists.jboss.org portal-commits at lists.jboss.org
Fri Nov 23 07:55:40 EST 2007


Author: thomas.heute at jboss.com
Date: 2007-11-23 07:55:40 -0500 (Fri, 23 Nov 2007)
New Revision: 9082

Added:
   branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/MetaDataResourceBundleFactory.java
Modified:
   branches/JBoss_Portal_Branch_2_6/core-admin/src/resources/portal-admin-war/WEB-INF/jsf/instances.xhtml
   branches/JBoss_Portal_Branch_2_6/core-samples/src/resources/portal-weather-samples-war/WEB-INF/classes/WeatherResource_fr.properties
   branches/JBoss_Portal_Branch_2_6/core-samples/src/resources/portal-weather-samples-war/WEB-INF/portlet-instances.xml
   branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/deployment/jboss/PortletAppDeployment.java
   branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceDefinition.java
   branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/instance/metadata/InstanceMetaData.java
   branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/portal/metadata/PortalObjectMetaData.java
   branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/test/core/deployment/PortletInstancesMetaDataFactoryTestCase.java
Log:
- Let instances display-names be set in Resource bundles
- Improved portal object display-name i18n code

Modified: branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/deployment/jboss/PortletAppDeployment.java
===================================================================
--- branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/deployment/jboss/PortletAppDeployment.java	2007-11-23 12:07:22 UTC (rev 9081)
+++ branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/deployment/jboss/PortletAppDeployment.java	2007-11-23 12:55:40 UTC (rev 9082)
@@ -22,6 +22,17 @@
  ******************************************************************************/
 package org.jboss.portal.core.deployment.jboss;
 
+import java.io.File;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.xml.parsers.DocumentBuilder;
+
 import org.jboss.deployment.DeploymentException;
 import org.jboss.mx.util.MBeanProxyExt;
 import org.jboss.portal.common.io.IOTools;
@@ -54,16 +65,6 @@
 import org.w3c.dom.Element;
 import org.xml.sax.EntityResolver;
 
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
-import javax.xml.parsers.DocumentBuilder;
-import java.io.File;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 /**
  * @author <a href="mailto:julien at jboss.org">Julien Viet</a>
  * @version $Revision$
@@ -286,7 +287,7 @@
                   Element instanceElt = XMLTools.getUniqueChild(deploymentElt, "instance", true);
 
                   //
-                  InstanceMetaData metaData = InstanceMetaData.buildMetaData(instanceElt);
+                  InstanceMetaData metaData = InstanceMetaData.buildMetaData(instanceElt, pwa);
 
                   //
                   Element ifExistsElt = XMLTools.getUniqueChild(deploymentElt, "if-exists", false);
@@ -455,7 +456,8 @@
       // Configure
       configureInstance(instance, metaData);
    }
-
+   
+   
    private String resolvePortletRef(String ref)
    {
       return "local." + pwa.getId() + "." + ref;

Modified: branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceDefinition.java
===================================================================
--- branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceDefinition.java	2007-11-23 12:07:22 UTC (rev 9081)
+++ branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceDefinition.java	2007-11-23 12:55:40 UTC (rev 9082)
@@ -88,14 +88,13 @@
       this.mutable = false;
       this.portletRef = instanceMD.getPortletRef();
       this.instanceId = instanceMD.getId();
-      this.displayNames = setDisplayNames(instanceMD.getDisplayName());
+      this.displayNames = getDisplayNamesMap(instanceMD.getDisplayName());
       this.relatedSecurityBindings = new HashMap();
       this.relatedCustomizations = new HashMap();
-      this.displayNames = new HashMap();
       this.state = null;
    }
 
-   private Map setDisplayNames(LocalizedStringMetaData displayName)
+   private Map getDisplayNamesMap(LocalizedStringMetaData displayName)
    {
       Map map = new HashMap();
       if (displayName == null)

Added: branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/MetaDataResourceBundleFactory.java
===================================================================
--- branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/MetaDataResourceBundleFactory.java	                        (rev 0)
+++ branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/MetaDataResourceBundleFactory.java	2007-11-23 12:55:40 UTC (rev 9082)
@@ -0,0 +1,101 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat                                               *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual                    *
+ * contributors as indicated by the @authors tag. See the                     *
+ * copyright.txt in the distribution for a full listing of                    *
+ * individual contributors.                                                   *
+ *                                                                            *
+ * This is free software; you can redistribute it and/or modify it            *
+ * under the terms of the GNU Lesser General Public License as                *
+ * published by the Free Software Foundation; either version 2.1 of           *
+ * the License, or (at your option) any later version.                        *
+ *                                                                            *
+ * This software is distributed in the hope that it will be useful,           *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of             *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU           *
+ * Lesser General Public License for more details.                            *
+ *                                                                            *
+ * You should have received a copy of the GNU Lesser General Public           *
+ * License along with this software; if not, write to the Free                *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA         *
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.                   *
+ ******************************************************************************/
+package org.jboss.portal.core.model;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import org.jboss.logging.Logger;
+import org.jboss.portal.common.i18n.ResourceBundleFactory;
+import org.jboss.portal.common.i18n.ResourceBundleManager;
+import org.jboss.portal.common.util.EmptyResourceBundle;
+
+/**
+ * @author <a href="mailto:theute at jboss.org">Thomas Heute</a>
+ * @version $Revision$
+ */
+public class MetaDataResourceBundleFactory implements ResourceBundleFactory
+{
+
+   private Logger logger = Logger.getLogger(MetaDataResourceBundleFactory.class);
+   
+   public static ResourceBundleManager createResourceBundleManager(ClassLoader classLoader, List supportedLocales, String baseName)
+   {
+      if (classLoader == null)
+      {
+         throw new IllegalArgumentException("Need a non null classloader");
+      }
+      if (supportedLocales == null)
+      {
+         throw new IllegalArgumentException("Supported locales cannot be null");
+      }
+
+      // Create factory
+      MetaDataResourceBundleFactory factory = new MetaDataResourceBundleFactory(classLoader, baseName);
+
+      // Create manager
+      ResourceBundleManager manager = new ResourceBundleManager(EmptyResourceBundle.INSTANCE, factory);
+
+      // Preload declared locales
+      for (Iterator i = supportedLocales.iterator();i.hasNext();)
+      {
+         Locale locale = (Locale)i.next();
+         manager.getResourceBundle(locale);
+      }
+
+      //
+      return manager;
+   }
+   
+   private ClassLoader classLoader;
+   private String baseName;
+   
+   public MetaDataResourceBundleFactory(ClassLoader classLoader, String baseName)
+   {
+      this.classLoader = classLoader;
+      this.baseName = baseName;
+   }
+   
+   public ResourceBundle getBundle(Locale locale) throws IllegalArgumentException
+   {
+      if (locale == null)
+      {
+         throw new IllegalArgumentException("Locale cannot be null");
+      }
+      
+      try
+      {
+         return ResourceBundle.getBundle(baseName, locale, classLoader);
+      }
+      catch (MissingResourceException e)
+      {
+         logger.warn("Could not find resource bundle: " + baseName + " for locale: " + locale);
+      }
+      return EmptyResourceBundle.INSTANCE;
+   }
+
+}
+

Modified: branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/instance/metadata/InstanceMetaData.java
===================================================================
--- branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/instance/metadata/InstanceMetaData.java	2007-11-23 12:07:22 UTC (rev 9081)
+++ branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/instance/metadata/InstanceMetaData.java	2007-11-23 12:55:40 UTC (rev 9082)
@@ -24,14 +24,19 @@
 
 import org.apache.log4j.Logger;
 import org.jboss.portal.common.i18n.LocaleFormat;
+import org.jboss.portal.common.i18n.LocalizedString;
+import org.jboss.portal.common.i18n.ResourceBundleManager;
 import org.jboss.portal.common.util.ConversionException;
 import org.jboss.portal.common.xml.XMLTools;
+import org.jboss.portal.core.model.MetaDataResourceBundleFactory;
 import org.jboss.portal.portlet.impl.jsr168.metadata.DisplayNameMetaData;
 import org.jboss.portal.portlet.impl.jsr168.metadata.LocalizedStringMetaData;
 import org.jboss.portal.portlet.impl.jsr168.metadata.PreferenceMetaData;
 import org.jboss.portal.security.metadata.SecurityConstraintsMetaData;
+import org.jboss.portal.server.deployment.PortalWebApp;
 import org.w3c.dom.Element;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -62,7 +67,14 @@
    /** The security constraints. */
    private SecurityConstraintsMetaData securityConstraints;
 
+   /** Localized display name */
    private LocalizedStringMetaData displayName;
+   
+   /** Resource bundle name */
+   private String resourceBundle;
+   
+   /** Supported locales */
+   private List supportedLocales;
 
    public InstanceMetaData()
    {
@@ -118,10 +130,16 @@
       this.securityConstraints = securityConstraints;
    }
 
-   public static InstanceMetaData buildMetaData(Element instanceElt)
+   public static InstanceMetaData buildMetaData(Element instanceElt, PortalWebApp pwa)
    {
       String instanceName = XMLTools.asString(XMLTools.getUniqueChild(instanceElt, "instance-id", true));
       String componentRef = XMLTools.asString(XMLTools.getUniqueChild(instanceElt, "portlet-ref", true));
+      Element resourceBundleElement = XMLTools.getUniqueChild(instanceElt, "resource-bundle", false);
+      String resourceBundle = null;
+      if (resourceBundleElement != null)
+      {
+         resourceBundle = XMLTools.asString(resourceBundleElement);
+      }
       Iterator displayNamesIt = XMLTools.getChildrenIterator(instanceElt, "display-name");
 
       // Configure preferences override
@@ -157,13 +175,40 @@
          }
       }
 
+      Iterator supportedLocalesIt = XMLTools.getChildrenIterator(instanceElt, "supported-locale");
+      List supportedLocales = new ArrayList();
+      while (supportedLocalesIt.hasNext())
+      {
+         String localeName = ((Element)supportedLocalesIt.next()).getTextContent();
+         supportedLocales.add(new Locale(localeName));
+      }
+      
+      // Set display name
+      if (pwa != null)
+      {
+         ResourceBundleManager bundleMgr = MetaDataResourceBundleFactory.createResourceBundleManager(pwa.getClassLoader(), supportedLocales, resourceBundle);
+         LocalizedString localizedString = bundleMgr.getLocalizedValue("org.jboss.portal.instance.name." + instanceName, instanceName);
+         Map map = localizedString.getValues();
+         Iterator localeIt = map.values().iterator();
+         while (localeIt.hasNext())
+         {
+            LocalizedString.Value value = (LocalizedString.Value)localeIt.next();
+            DisplayNameMetaData displayNameMD = new DisplayNameMetaData();
+            displayNameMD.setLocale(value.getLocale());
+            displayNameMD.setValue(value.getString());
+            localizedStringMD.getValues().add(displayNameMD);
+         }
+      }
+      
       // Create the meta data
       InstanceMetaData instanceMD = new InstanceMetaData();
       instanceMD.setId(instanceName);
       instanceMD.setPortletRef(componentRef);
       instanceMD.setPreferences(preferencesMD);
       instanceMD.setDisplayName(localizedStringMD);
-
+      instanceMD.setResourceBundle(resourceBundle);
+      instanceMD.setSupportedLocales(supportedLocales);
+      
       // Add the security constraints
       Element securityConstraintElt = XMLTools.getUniqueChild(instanceElt, "security-constraint", false);
       if (securityConstraintElt != null)
@@ -300,4 +345,24 @@
       preferenceMD.setValues(values);
       return preferenceMD;
    }
+
+   public String getResourceBundle()
+   {
+      return resourceBundle;
+   }
+
+   public void setResourceBundle(String resourceBundle)
+   {
+      this.resourceBundle = resourceBundle;
+   }
+
+   public List getSupportedLocales()
+   {
+      return supportedLocales;
+   }
+
+   public void setSupportedLocales(List supportedLocales)
+   {
+      this.supportedLocales = supportedLocales;
+   }
 }

Modified: branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/portal/metadata/PortalObjectMetaData.java
===================================================================
--- branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/portal/metadata/PortalObjectMetaData.java	2007-11-23 12:07:22 UTC (rev 9081)
+++ branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/portal/metadata/PortalObjectMetaData.java	2007-11-23 12:55:40 UTC (rev 9082)
@@ -36,13 +36,12 @@
 import org.jboss.portal.common.util.ConversionException;
 import org.jboss.portal.common.util.Tools;
 import org.jboss.portal.common.xml.XMLTools;
+import org.jboss.portal.core.model.MetaDataResourceBundleFactory;
 import org.jboss.portal.core.model.content.spi.ContentProviderRegistry;
 import org.jboss.portal.core.model.portal.PortalObject;
 import org.jboss.portal.core.model.portal.PortalObjectContainer;
 import org.jboss.portal.core.model.portal.PortalObjectPath;
 import org.jboss.portal.core.model.portal.PortalObjectPermission;
-import org.jboss.portal.portlet.impl.jsr168.PortletResourceBundleFactory;
-import org.jboss.portal.portlet.impl.jsr168.metadata.LanguagesMetaData;
 import org.jboss.portal.security.RoleSecurityBinding;
 import org.jboss.portal.security.SecurityConstants;
 import org.jboss.portal.security.metadata.SecurityConstraintsMetaData;
@@ -186,16 +185,7 @@
   
       if (resourceBundle != null)
       {
-         LanguagesMetaData md = new LanguagesMetaData();
-         md.setResourceBundle(resourceBundle);
-         Iterator it = supportedLocales.iterator();
-         while (it.hasNext())
-         {
-            Locale locale = (Locale)it.next();
-            md.getSupportedLocales().add(locale);
-         }
-         
-         ResourceBundleManager bundleMgr = PortletResourceBundleFactory.createResourceBundleManager(buildContext.getPortalWebApp().getClassLoader(), md);
+         ResourceBundleManager bundleMgr = MetaDataResourceBundleFactory.createResourceBundleManager(buildContext.getPortalWebApp().getClassLoader(), supportedLocales, resourceBundle);
          object.setDisplayName(bundleMgr.getLocalizedValue("org.jboss.portal.object.name." + object.getId().getPath().toString(PortalObjectPath.LEGACY_FORMAT), object.getName()));
       }
       

Modified: branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/test/core/deployment/PortletInstancesMetaDataFactoryTestCase.java
===================================================================
--- branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/test/core/deployment/PortletInstancesMetaDataFactoryTestCase.java	2007-11-23 12:07:22 UTC (rev 9081)
+++ branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/test/core/deployment/PortletInstancesMetaDataFactoryTestCase.java	2007-11-23 12:55:40 UTC (rev 9082)
@@ -88,7 +88,7 @@
                Element instanceElt = XMLTools.getUniqueChild(deploymentElt, "instance", true);
 
                //
-               InstanceMetaData metaData = InstanceMetaData.buildMetaData(instanceElt);
+               InstanceMetaData metaData = InstanceMetaData.buildMetaData(instanceElt, null);
                instancesMetadata.add(metaData);
             }
          }

Modified: branches/JBoss_Portal_Branch_2_6/core-admin/src/resources/portal-admin-war/WEB-INF/jsf/instances.xhtml
===================================================================
--- branches/JBoss_Portal_Branch_2_6/core-admin/src/resources/portal-admin-war/WEB-INF/jsf/instances.xhtml	2007-11-23 12:07:22 UTC (rev 9081)
+++ branches/JBoss_Portal_Branch_2_6/core-admin/src/resources/portal-admin-war/WEB-INF/jsf/instances.xhtml	2007-11-23 12:55:40 UTC (rev 9082)
@@ -15,6 +15,7 @@
       <table id="instancesTable2" width="100%">
          <thead class="portlet-section-header">
             <tr>
+               <th>Id</th>
                <th>Name</th>
                <th>Actions</th>
             </tr>
@@ -25,11 +26,14 @@
                   class="#{instance.id == instancemgr.selectedId ? 'portlet-section-selected' : (status.index % 2 == 0 ? 'portlet-section-body' : 'portlet-section-alternate')}">
                   <td>
                      <h:commandLink action="#{instancemgr.selectInstance}">
-                        <h:outputText value="#{instance.displayName}" title="#{instance.id}"/>
+                        <h:outputText value="#{instance.id}"/>
                         <f:param name="id" value="#{instance.id}"/>
                         <f:param name="plugin" value="info"/>
                      </h:commandLink>
                   </td>
+                  <td>
+                     <h:outputText value="#{instance.displayName}"/>
+                  </td>
                   <td><h:commandLink action="#{instancemgr.selectInstance}" styleClass="actionSecurity">
                      <f:param name="id" value="#{instance.id}"/>
                      <f:param name="plugin" value="security"/>

Modified: branches/JBoss_Portal_Branch_2_6/core-samples/src/resources/portal-weather-samples-war/WEB-INF/classes/WeatherResource_fr.properties
===================================================================
--- branches/JBoss_Portal_Branch_2_6/core-samples/src/resources/portal-weather-samples-war/WEB-INF/classes/WeatherResource_fr.properties	2007-11-23 12:07:22 UTC (rev 9081)
+++ branches/JBoss_Portal_Branch_2_6/core-samples/src/resources/portal-weather-samples-war/WEB-INF/classes/WeatherResource_fr.properties	2007-11-23 12:55:40 UTC (rev 9082)
@@ -23,4 +23,5 @@
 
 javax.portlet.preference.name.RssXml=URL du flux RSS
 javax.portlet.preference.name.expires=Temps d'expiration
-org.jboss.portal.object.name.default.Weather=M\u00E9t\u00E9o
\ No newline at end of file
+org.jboss.portal.object.name.default.Weather=M\u00E9t\u00E9o
+org.jboss.portal.instance.name.WeatherPortletInstance=Portlet M\u00E9t\u00E9o
\ No newline at end of file

Modified: branches/JBoss_Portal_Branch_2_6/core-samples/src/resources/portal-weather-samples-war/WEB-INF/portlet-instances.xml
===================================================================
--- branches/JBoss_Portal_Branch_2_6/core-samples/src/resources/portal-weather-samples-war/WEB-INF/portlet-instances.xml	2007-11-23 12:07:22 UTC (rev 9081)
+++ branches/JBoss_Portal_Branch_2_6/core-samples/src/resources/portal-weather-samples-war/WEB-INF/portlet-instances.xml	2007-11-23 12:55:40 UTC (rev 9082)
@@ -28,9 +28,11 @@
 
 <deployments>
    <deployment>
+      <if-exists>overwrite</if-exists>
       <instance>
-         <display-name xml:lang="en">Weather portlet</display-name>
-         <display-name xml:lang="fr">Portlet météo</display-name>
+         <resource-bundle>WeatherResource</resource-bundle>
+		 <supported-locale>fr</supported-locale>
+		 <supported-locale>en</supported-locale>
          <instance-id>WeatherPortletInstance</instance-id>
          <portlet-ref>WeatherPortlet</portlet-ref>
       </instance>




More information about the portal-commits mailing list