From portal-commits at lists.jboss.org Fri Nov 23 07:55:41 2007 Content-Type: multipart/mixed; boundary="===============7346647240539103349==" MIME-Version: 1.0 From: portal-commits at lists.jboss.org To: portal-commits at lists.jboss.org Subject: [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. Date: Fri, 23 Nov 2007 07:55:40 -0500 Message-ID: --===============7346647240539103349== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Author: thomas.heute(a)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/mod= el/MetaDataResourceBundleFactory.java Modified: branches/JBoss_Portal_Branch_2_6/core-admin/src/resources/portal-admin-w= ar/WEB-INF/jsf/instances.xhtml branches/JBoss_Portal_Branch_2_6/core-samples/src/resources/portal-weath= er-samples-war/WEB-INF/classes/WeatherResource_fr.properties branches/JBoss_Portal_Branch_2_6/core-samples/src/resources/portal-weath= er-samples-war/WEB-INF/portlet-instances.xml branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/dep= loyment/jboss/PortletAppDeployment.java branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/imp= l/model/instance/persistent/PersistentInstanceDefinition.java branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/mod= el/instance/metadata/InstanceMetaData.java branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/mod= el/portal/metadata/PortalObjectMetaData.java branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/test/cor= e/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/c= ore/deployment/jboss/PortletAppDeployment.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/de= ployment/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/de= ployment/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 Julien Viet * @version $Revision$ @@ -286,7 +287,7 @@ Element instanceElt =3D XMLTools.getUniqueChild(deployme= ntElt, "instance", true); = // - InstanceMetaData metaData =3D InstanceMetaData.buildMeta= Data(instanceElt); + InstanceMetaData metaData =3D InstanceMetaData.buildMeta= Data(instanceElt, pwa); = // Element ifExistsElt =3D XMLTools.getUniqueChild(deployme= ntElt, "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/c= ore/impl/model/instance/persistent/PersistentInstanceDefinition.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/im= pl/model/instance/persistent/PersistentInstanceDefinition.java 2007-11-23 1= 2:07:22 UTC (rev 9081) +++ branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/im= pl/model/instance/persistent/PersistentInstanceDefinition.java 2007-11-23 1= 2:55:40 UTC (rev 9082) @@ -88,14 +88,13 @@ this.mutable =3D false; this.portletRef =3D instanceMD.getPortletRef(); this.instanceId =3D instanceMD.getId(); - this.displayNames =3D setDisplayNames(instanceMD.getDisplayName()); + this.displayNames =3D getDisplayNamesMap(instanceMD.getDisplayName()= ); this.relatedSecurityBindings =3D new HashMap(); this.relatedCustomizations =3D new HashMap(); - this.displayNames =3D new HashMap(); this.state =3D null; } = - private Map setDisplayNames(LocalizedStringMetaData displayName) + private Map getDisplayNamesMap(LocalizedStringMetaData displayName) { Map map =3D new HashMap(); if (displayName =3D=3D null) Added: branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core= /model/MetaDataResourceBundleFactory.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/mo= del/MetaDataResourceBundleFactory.java (rev 0) +++ branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/mo= del/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 Thomas Heute + * @version $Revision$ + */ +public class MetaDataResourceBundleFactory implements ResourceBundleFactory +{ + + private Logger logger =3D Logger.getLogger(MetaDataResourceBundleFactor= y.class); + = + public static ResourceBundleManager createResourceBundleManager(ClassLo= ader classLoader, List supportedLocales, String baseName) + { + if (classLoader =3D=3D null) + { + throw new IllegalArgumentException("Need a non null classloader"); + } + if (supportedLocales =3D=3D null) + { + throw new IllegalArgumentException("Supported locales cannot be n= ull"); + } + + // Create factory + MetaDataResourceBundleFactory factory =3D new MetaDataResourceBundle= Factory(classLoader, baseName); + + // Create manager + ResourceBundleManager manager =3D new ResourceBundleManager(EmptyRes= ourceBundle.INSTANCE, factory); + + // Preload declared locales + for (Iterator i =3D supportedLocales.iterator();i.hasNext();) + { + Locale locale =3D (Locale)i.next(); + manager.getResourceBundle(locale); + } + + // + return manager; + } + = + private ClassLoader classLoader; + private String baseName; + = + public MetaDataResourceBundleFactory(ClassLoader classLoader, String ba= seName) + { + this.classLoader =3D classLoader; + this.baseName =3D baseName; + } + = + public ResourceBundle getBundle(Locale locale) throws IllegalArgumentEx= ception + { + if (locale =3D=3D 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/c= ore/model/instance/metadata/InstanceMetaData.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/mo= del/instance/metadata/InstanceMetaData.java 2007-11-23 12:07:22 UTC (rev 90= 81) +++ branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/mo= del/instance/metadata/InstanceMetaData.java 2007-11-23 12:55:40 UTC (rev 90= 82) @@ -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.LocalizedStringMetaDa= ta; 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 =3D securityConstraints; } = - public static InstanceMetaData buildMetaData(Element instanceElt) + public static InstanceMetaData buildMetaData(Element instanceElt, Porta= lWebApp pwa) { String instanceName =3D XMLTools.asString(XMLTools.getUniqueChild(in= stanceElt, "instance-id", true)); String componentRef =3D XMLTools.asString(XMLTools.getUniqueChild(in= stanceElt, "portlet-ref", true)); + Element resourceBundleElement =3D XMLTools.getUniqueChild(instanceEl= t, "resource-bundle", false); + String resourceBundle =3D null; + if (resourceBundleElement !=3D null) + { + resourceBundle =3D XMLTools.asString(resourceBundleElement); + } Iterator displayNamesIt =3D XMLTools.getChildrenIterator(instanceElt= , "display-name"); = // Configure preferences override @@ -157,13 +175,40 @@ } } = + Iterator supportedLocalesIt =3D XMLTools.getChildrenIterator(instanc= eElt, "supported-locale"); + List supportedLocales =3D new ArrayList(); + while (supportedLocalesIt.hasNext()) + { + String localeName =3D ((Element)supportedLocalesIt.next()).getTex= tContent(); + supportedLocales.add(new Locale(localeName)); + } + = + // Set display name + if (pwa !=3D null) + { + ResourceBundleManager bundleMgr =3D MetaDataResourceBundleFactory= .createResourceBundleManager(pwa.getClassLoader(), supportedLocales, resour= ceBundle); + LocalizedString localizedString =3D bundleMgr.getLocalizedValue("= org.jboss.portal.instance.name." + instanceName, instanceName); + Map map =3D localizedString.getValues(); + Iterator localeIt =3D map.values().iterator(); + while (localeIt.hasNext()) + { + LocalizedString.Value value =3D (LocalizedString.Value)localeI= t.next(); + DisplayNameMetaData displayNameMD =3D new DisplayNameMetaData(= ); + displayNameMD.setLocale(value.getLocale()); + displayNameMD.setValue(value.getString()); + localizedStringMD.getValues().add(displayNameMD); + } + } + = // Create the meta data InstanceMetaData instanceMD =3D 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 =3D XMLTools.getUniqueChild(instanceEl= t, "security-constraint", false); if (securityConstraintElt !=3D null) @@ -300,4 +345,24 @@ preferenceMD.setValues(values); return preferenceMD; } + + public String getResourceBundle() + { + return resourceBundle; + } + + public void setResourceBundle(String resourceBundle) + { + this.resourceBundle =3D resourceBundle; + } + + public List getSupportedLocales() + { + return supportedLocales; + } + + public void setSupportedLocales(List supportedLocales) + { + this.supportedLocales =3D supportedLocales; + } } Modified: branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/c= ore/model/portal/metadata/PortalObjectMetaData.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/mo= del/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/mo= del/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 !=3D null) { - LanguagesMetaData md =3D new LanguagesMetaData(); - md.setResourceBundle(resourceBundle); - Iterator it =3D supportedLocales.iterator(); - while (it.hasNext()) - { - Locale locale =3D (Locale)it.next(); - md.getSupportedLocales().add(locale); - } - = - ResourceBundleManager bundleMgr =3D PortletResourceBundleFactory.= createResourceBundleManager(buildContext.getPortalWebApp().getClassLoader()= , md); + ResourceBundleManager bundleMgr =3D MetaDataResourceBundleFactory= .createResourceBundleManager(buildContext.getPortalWebApp().getClassLoader(= ), supportedLocales, resourceBundle); object.setDisplayName(bundleMgr.getLocalizedValue("org.jboss.port= al.object.name." + object.getId().getPath().toString(PortalObjectPath.LEGAC= Y_FORMAT), object.getName())); } = Modified: branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/t= est/core/deployment/PortletInstancesMetaDataFactoryTestCase.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/test/co= re/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/co= re/deployment/PortletInstancesMetaDataFactoryTestCase.java 2007-11-23 12:55= :40 UTC (rev 9082) @@ -88,7 +88,7 @@ Element instanceElt =3D XMLTools.getUniqueChild(deploymentE= lt, "instance", true); = // - InstanceMetaData metaData =3D InstanceMetaData.buildMetaDat= a(instanceElt); + InstanceMetaData metaData =3D InstanceMetaData.buildMetaDat= a(instanceElt, null); instancesMetadata.add(metaData); } } Modified: branches/JBoss_Portal_Branch_2_6/core-admin/src/resources/portal-= admin-war/WEB-INF/jsf/instances.xhtml =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- 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 @@ + @@ -25,11 +26,14 @@ class=3D"#{instance.id =3D=3D instancemgr.selectedId ? '= portlet-section-selected' : (status.index % 2 =3D=3D 0 ? 'portlet-section-b= ody' : 'portlet-section-alternate')}"> +
Id Name Actions
- + + + Modified: branches/JBoss_Portal_Branch_2_6/core-samples/src/resources/porta= l-weather-samples-war/WEB-INF/classes/WeatherResource_fr.properties =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- branches/JBoss_Portal_Branch_2_6/core-samples/src/resources/portal-weat= her-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-weat= her-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=3DURL du flux RSS javax.portlet.preference.name.expires=3DTemps d'expiration -org.jboss.portal.object.name.default.Weather=3DM\u00E9t\u00E9o \ No newline at end of file +org.jboss.portal.object.name.default.Weather=3DM\u00E9t\u00E9o +org.jboss.portal.instance.name.WeatherPortletInstance=3DPortlet M\u00E9t\u= 00E9o \ No newline at end of file Modified: branches/JBoss_Portal_Branch_2_6/core-samples/src/resources/porta= l-weather-samples-war/WEB-INF/portlet-instances.xml =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- branches/JBoss_Portal_Branch_2_6/core-samples/src/resources/portal-weat= her-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-weat= her-samples-war/WEB-INF/portlet-instances.xml 2007-11-23 12:55:40 UTC (rev = 9082) @@ -28,9 +28,11 @@ = + overwrite - Weather portlet - Portlet m=C3=A9t=C3=A9o + WeatherResource + fr + en WeatherPortletInstance WeatherPortlet --===============7346647240539103349==--