Author: thomas.heute(a)jboss.com
Date: 2007-10-26 06:43:23 -0400 (Fri, 26 Oct 2007)
New Revision: 8777
Added:
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/resources/test/deployment/portlet-instances.xml
Modified:
branches/JBoss_Portal_Branch_2_6/core/build.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/InstanceContainerContext.java
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceContainerImpl.java
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceContainerContext.java
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceCustomization.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/Instance.java
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/instance/InstanceContainer.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/resources/portal-core-sar/conf/hibernate/instance/domain.hbm.xml
branches/JBoss_Portal_Branch_2_6/core/src/resources/portal-core-war/WEB-INF/jsp/content/portlet_editor.jsp
Log:
JBPORTAL-1597: i18n display name for portlet instances
Modified: branches/JBoss_Portal_Branch_2_6/core/build.xml
===================================================================
--- branches/JBoss_Portal_Branch_2_6/core/build.xml 2007-10-26 00:27:58 UTC (rev 8776)
+++ branches/JBoss_Portal_Branch_2_6/core/build.xml 2007-10-26 10:43:23 UTC (rev 8777)
@@ -631,16 +631,18 @@
<zest todir="${test.reports}"
name="org.jboss.portal.test.core.state.RegistrationPersistenceManagerTestCase"
outfile="TEST-RegistrationPersistenceManagerTestCase">
</zest>
+
<test todir="${test.reports}"
name="org.jboss.portal.test.core.model.portal.PortalObjectPermissionTestCase"/>
<test todir="${test.reports}"
+
name="org.jboss.portal.test.core.deployment.PortletInstancesMetaDataFactoryTestCase"/>
+ <test todir="${test.reports}"
name="org.jboss.portal.test.core.deployment.JBossApplicationMetaDataFactoryTestCase"/>
<test todir="${test.reports}"
name="org.jboss.portal.test.core.model.portal.PortalObjectIdTestCase"/>
<test todir="${test.reports}"
name="org.jboss.portal.test.core.model.portal.PortalObjectPathTestCase"/>
-
</x-test>
<x-classpath>
<pathelement location="${build.lib}/portal-core-lib.jar"/>
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-10-26
00:27:58 UTC (rev 8776)
+++
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/deployment/jboss/PortletAppDeployment.java 2007-10-26
10:43:23 UTC (rev 8777)
@@ -447,10 +447,10 @@
log.debug("Creating portlet instance " + metaData.getId());
// Resolve the portlet ref
- String resolvedRef = resolvePortletRef(metaData.getPortletRef());
-
+ metaData.setPortletRef(resolvePortletRef(metaData.getPortletRef()));
+
// Create the instance
- Instance instance =
factory.getInstanceContainer().createDefinition(metaData.getId(), resolvedRef);
+ Instance instance = factory.getInstanceContainer().createDefinition(metaData);
// Configure
configureInstance(instance, metaData);
Modified:
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceContainerContext.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceContainerContext.java 2007-10-26
00:27:58 UTC (rev 8776)
+++
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceContainerContext.java 2007-10-26
10:43:23 UTC (rev 8777)
@@ -24,6 +24,7 @@
import org.jboss.portal.core.model.instance.DuplicateInstanceException;
import org.jboss.portal.core.model.instance.InstancePermission;
+import org.jboss.portal.core.model.instance.metadata.InstanceMetaData;
import org.jboss.portal.portlet.PortletContext;
import java.util.Collection;
@@ -42,6 +43,8 @@
AbstractInstanceDefinition newInstanceDefinition(String id, String portletRef);
+ AbstractInstanceDefinition newInstanceDefinition(InstanceMetaData instanceMetaData);
+
void createInstanceDefinition(AbstractInstanceDefinition instanceDef) throws
DuplicateInstanceException;
void destroyInstanceDefinition(AbstractInstanceDefinition instanceDef);
Modified:
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceContainerImpl.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceContainerImpl.java 2007-10-26
00:27:58 UTC (rev 8776)
+++
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceContainerImpl.java 2007-10-26
10:43:23 UTC (rev 8777)
@@ -32,6 +32,7 @@
import org.jboss.portal.core.model.instance.InstancePermission;
import org.jboss.portal.core.model.instance.NoSuchInstanceException;
import org.jboss.portal.core.model.instance.Instance;
+import org.jboss.portal.core.model.instance.metadata.InstanceMetaData;
import org.jboss.portal.portlet.PortletContext;
import org.jboss.portal.portlet.PortletInvokerException;
import org.jboss.portal.portlet.PortletInvoker;
@@ -247,6 +248,11 @@
return internalCreateDefinition(id, portletId, cloneOnCreate);
}
+ public InstanceDefinition createDefinition(InstanceMetaData instanceMD) throws
DuplicateInstanceException, IllegalArgumentException, PortletInvokerException
+ {
+ return internalCreateDefinition(instanceMD, cloneOnCreate);
+ }
+
public InstanceDefinition createDefinition(String id, String portletId, boolean clone)
throws DuplicateInstanceException, PortletInvokerException
{
return internalCreateDefinition(id, portletId, clone);
@@ -254,26 +260,34 @@
private InstanceDefinition internalCreateDefinition(String id, String portletId,
boolean clone) throws DuplicateInstanceException, PortletInvokerException
{
- if (id == null)
+ InstanceMetaData instanceMD = new InstanceMetaData();
+ instanceMD.setId(id);
+ instanceMD.setPortletRef(portletId);
+ return internalCreateDefinition(instanceMD, clone);
+ }
+
+ private InstanceDefinition internalCreateDefinition(InstanceMetaData instanceMD,
boolean clone) throws DuplicateInstanceException, PortletInvokerException
+ {
+ if (instanceMD == null)
{
- throw new IllegalArgumentException("id cannot be null");
+ throw new IllegalArgumentException("instanceMD cannot be null");
}
boolean debug = log.isDebugEnabled();
//
if (debug)
{
- log.debug("Creating instance " + id + " of portlet " +
portletId);
+ log.debug("Creating instance " + instanceMD.getId() + " of
portlet " + instanceMD.getPortletRef());
}
// Create the portlet context we'll use
- PortletContext portletContext = PortletContext.createPortletContext(portletId);
+ PortletContext portletContext =
PortletContext.createPortletContext(instanceMD.getPortletRef());
// Check that the portlet exist before creating an instance of it
portletInvoker.getPortlet(portletContext);
//
- AbstractInstanceDefinition instance = containerContext.newInstanceDefinition(id,
portletId);
+ AbstractInstanceDefinition instance =
containerContext.newInstanceDefinition(instanceMD);
//
containerContext.createInstanceDefinition(instance);
Modified:
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceContainerContext.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceContainerContext.java 2007-10-26
00:27:58 UTC (rev 8776)
+++
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceContainerContext.java 2007-10-26
10:43:23 UTC (rev 8777)
@@ -29,6 +29,7 @@
import org.jboss.portal.jems.hibernate.ObjectContextualizer;
import org.jboss.portal.core.model.instance.DuplicateInstanceException;
import org.jboss.portal.core.model.instance.InstancePermission;
+import org.jboss.portal.core.model.instance.metadata.InstanceMetaData;
import org.jboss.portal.core.impl.model.instance.AbstractInstance;
import org.jboss.portal.core.impl.model.instance.AbstractInstanceDefinition;
import org.jboss.portal.core.impl.model.instance.AbstractInstanceCustomization;
@@ -159,6 +160,11 @@
return new PersistentInstanceDefinition(this, id, portletRef);
}
+ public AbstractInstanceDefinition newInstanceDefinition(InstanceMetaData
instanceMetaData)
+ {
+ return new PersistentInstanceDefinition(this, instanceMetaData);
+ }
+
public AbstractInstanceDefinition getInstanceDefinition(String id)
{
// Get cached pk from natural id
Modified:
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceCustomization.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceCustomization.java 2007-10-26
00:27:58 UTC (rev 8776)
+++
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceCustomization.java 2007-10-26
10:43:23 UTC (rev 8777)
@@ -22,6 +22,7 @@
******************************************************************************/
package org.jboss.portal.core.impl.model.instance.persistent;
+import org.jboss.portal.common.i18n.LocalizedString;
import org.jboss.portal.core.impl.model.instance.AbstractInstanceCustomization;
import org.jboss.portal.core.impl.model.instance.AbstractInstanceDefinition;
import org.jboss.portal.core.impl.model.instance.InstanceContainerContext;
@@ -93,6 +94,11 @@
return owner.getInstanceId();
}
+ public LocalizedString getDisplayName()
+ {
+ return owner.getDisplayName();
+ }
+
public String getCustomizationId()
{
return customizationId;
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-10-26
00:27:58 UTC (rev 8776)
+++
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceDefinition.java 2007-10-26
10:43:23 UTC (rev 8777)
@@ -22,12 +22,17 @@
******************************************************************************/
package org.jboss.portal.core.impl.model.instance.persistent;
+import org.jboss.portal.common.i18n.LocalizedString;
import org.jboss.portal.core.impl.model.instance.InstanceContainerContext;
import org.jboss.portal.core.impl.model.instance.AbstractInstanceDefinition;
+import org.jboss.portal.core.model.instance.metadata.InstanceMetaData;
import org.jboss.portal.jems.hibernate.ContextObject;
+import org.jboss.portal.portlet.impl.jsr168.metadata.LocalizedStringMetaData;
+import org.jboss.portal.portlet.impl.jsr168.metadata.LocalizedValueMetaData;
import org.jboss.portal.security.RoleSecurityBinding;
import java.util.HashMap;
+import java.util.Locale;
import java.util.Map;
import java.util.Collection;
import java.util.Set;
@@ -48,6 +53,7 @@
protected boolean mutable;
protected Map relatedSecurityBindings;
protected Map relatedCustomizations;
+ protected Map displayNames;
// Runtime fields
@@ -75,6 +81,39 @@
this.state = null;
}
+ public PersistentInstanceDefinition(InstanceContainerContext containerContext,
InstanceMetaData instanceMD)
+ {
+ this.containerContext = containerContext;
+ this.mutable = false;
+ this.portletRef = instanceMD.getPortletRef();
+ this.instanceId = instanceMD.getId();
+ setDisplayNames(setDisplayNames(instanceMD.getDisplayName()));
+ this.relatedSecurityBindings = new HashMap();
+ this.relatedCustomizations = new HashMap();
+ this.state = null;
+ }
+
+ private Map setDisplayNames(LocalizedStringMetaData displayName)
+ {
+ Map map = new HashMap();
+ for (int i = 0; i < displayName.getValues().size(); i++)
+ {
+ LocalizedValueMetaData descriptionMD =
(LocalizedValueMetaData)displayName.getValues().get(i);
+ Locale locale = descriptionMD.getLocale();
+ if (locale == null)
+ {
+ locale = Locale.ENGLISH;
+ }
+ map.put(locale, descriptionMD.getValue());
+ }
+ return map;
+ }
+
+ public LocalizedString getDisplayName()
+ {
+ return new LocalizedString(displayNames, Locale.ENGLISH);
+ }
+
// Hibernate
********************************************************************************************************
public Long getKey()
@@ -112,6 +151,16 @@
return relatedCustomizations;
}
+ public void setDisplayNames(Map displayNames)
+ {
+ this.displayNames = displayNames;
+ }
+
+ public Map getDisplayNames()
+ {
+ return displayNames;
+ }
+
public void setRelatedCustomizations(Map relatedCustomizations)
{
this.relatedCustomizations = relatedCustomizations;
@@ -133,7 +182,7 @@
{
return instanceId;
}
-
+
// AbstractInstanceDefinition implementation
************************************************************************
public Collection getCustomizations()
Modified:
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/instance/Instance.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/instance/Instance.java 2007-10-26
00:27:58 UTC (rev 8776)
+++
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/instance/Instance.java 2007-10-26
10:43:23 UTC (rev 8777)
@@ -22,6 +22,7 @@
******************************************************************************/
package org.jboss.portal.core.model.instance;
+import org.jboss.portal.common.i18n.LocalizedString;
import org.jboss.portal.portlet.Portlet;
import org.jboss.portal.portlet.PortletInvokerException;
import org.jboss.portal.portlet.invocation.PortletInvocation;
@@ -50,6 +51,13 @@
String getId();
/**
+ * Return the display name
+ *
+ * @return the display name
+ */
+ LocalizedString getDisplayName();
+
+ /**
* Return the runtime metadata for this portlet.
*
* @return the info
Modified:
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/instance/InstanceContainer.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/instance/InstanceContainer.java 2007-10-26
00:27:58 UTC (rev 8776)
+++
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/instance/InstanceContainer.java 2007-10-26
10:43:23 UTC (rev 8777)
@@ -22,12 +22,13 @@
******************************************************************************/
package org.jboss.portal.core.model.instance;
+import java.util.Collection;
+
+import org.jboss.portal.core.model.instance.metadata.InstanceMetaData;
import org.jboss.portal.portlet.PortletInvoker;
import org.jboss.portal.portlet.PortletInvokerException;
import org.jboss.portal.security.spi.provider.AuthorizationDomain;
-import java.util.Collection;
-
/**
* A container for instances of component.
*
@@ -66,6 +67,16 @@
/**
* Create a new instance of the specified portlet.
*
+ * @param instanceMetaData the instance Metadata
+ * @return the newly created instance
+ * @throws DuplicateInstanceException if the instance already exist
+ * @throws IllegalArgumentException if the instance id is null
+ */
+ InstanceDefinition createDefinition(InstanceMetaData instanceMetaData) throws
DuplicateInstanceException, IllegalArgumentException, PortletInvokerException;
+
+ /**
+ * Create a new instance of the specified portlet.
+ *
* @param id
* @param portletId the portlet id
* @param clone force a clone of the portlet
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-10-26
00:27:58 UTC (rev 8776)
+++
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/instance/metadata/InstanceMetaData.java 2007-10-26
10:43:23 UTC (rev 8777)
@@ -22,17 +22,22 @@
******************************************************************************/
package org.jboss.portal.core.model.instance.metadata;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
import org.apache.log4j.Logger;
+import org.jboss.portal.common.i18n.LocaleFormat;
+import org.jboss.portal.common.util.ConversionException;
import org.jboss.portal.common.xml.XMLTools;
+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.w3c.dom.Element;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
/**
* Represent metadata of an instance.
*
@@ -57,6 +62,8 @@
/** The security constraints. */
private SecurityConstraintsMetaData securityConstraints;
+ private LocalizedStringMetaData displayName;
+
public InstanceMetaData()
{
}
@@ -91,6 +98,16 @@
this.portletRef = portletRef;
}
+ public LocalizedStringMetaData getDisplayName()
+ {
+ return displayName;
+ }
+
+ public void setDisplayName(LocalizedStringMetaData displayName)
+ {
+ this.displayName = displayName;
+ }
+
public SecurityConstraintsMetaData getSecurityConstraints()
{
return securityConstraints;
@@ -105,6 +122,7 @@
{
String instanceName = XMLTools.asString(XMLTools.getUniqueChild(instanceElt,
"instance-id", true));
String componentRef = XMLTools.asString(XMLTools.getUniqueChild(instanceElt,
"portlet-ref", true));
+ Iterator displayNamesIt = XMLTools.getChildrenIterator(instanceElt,
"display-name");
// Configure preferences override
PreferencesMetaData preferencesMD = new PreferencesMetaData();
@@ -117,12 +135,34 @@
preferencesMD.addPreference(preferenceMD);
}
}
+
+ // Configure localized display-name
+ LocalizedStringMetaData localizedStringMD = new LocalizedStringMetaData();
+ while (displayNamesIt.hasNext())
+ {
+ Element element = (Element)displayNamesIt.next();
+ DisplayNameMetaData displayNameMD = new DisplayNameMetaData();
+ String lang = element.getAttribute("xml:lang");
+ Locale locale;
+ try
+ {
+ locale = LocaleFormat.DEFAULT.getLocale(lang);
+ displayNameMD.setLocale(locale);
+ displayNameMD.setValue(element.getTextContent());
+ localizedStringMD.getValues().add(displayNameMD);
+ }
+ catch (ConversionException e)
+ {
+ log.error("Cannot set localized display-name, for language: " +
lang, e);
+ }
+ }
// Create the meta data
InstanceMetaData instanceMD = new InstanceMetaData();
instanceMD.setId(instanceName);
instanceMD.setPortletRef(componentRef);
instanceMD.setPreferences(preferencesMD);
+ instanceMD.setDisplayName(localizedStringMD);
// Add the security constraints
Element securityConstraintElt = XMLTools.getUniqueChild(instanceElt,
"security-constraint", false);
Added:
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
(rev 0)
+++
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/test/core/deployment/PortletInstancesMetaDataFactoryTestCase.java 2007-10-26
10:43:23 UTC (rev 8777)
@@ -0,0 +1,123 @@
+/******************************************************************************
+ * 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.test.core.deployment;
+
+import java.io.InputStream;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+
+import javax.xml.parsers.DocumentBuilder;
+
+import junit.framework.TestCase;
+
+import org.jboss.portal.common.i18n.LocalizedString;
+import org.jboss.portal.common.io.IOTools;
+import org.jboss.portal.common.net.URLTools;
+import org.jboss.portal.common.xml.NullEntityResolver;
+import org.jboss.portal.common.xml.XMLTools;
+import org.jboss.portal.core.deployment.jboss.PortletAppDeploymentFactory;
+import org.jboss.portal.core.model.instance.metadata.InstanceMetaData;
+import org.jboss.portal.portlet.impl.jsr168.info.Utils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.xml.sax.EntityResolver;
+
+public class PortletInstancesMetaDataFactoryTestCase extends TestCase
+{
+
+
+
+ public void testLocalizedDisplayNameMetadata() throws Exception
+ {
+ // Get instances from portlet-instances.xml
+ InputStream in = null;
+ List instancesMetadata = new ArrayList();
+ try
+ {
+
+ URL jbossPortletXML =
Thread.currentThread().getContextClassLoader().getResource("test/deployment/jboss-portlet.xml");
+ assertTrue(URLTools.exists(jbossPortletXML));
+
+ in =
Thread.currentThread().getContextClassLoader().getResourceAsStream("test/deployment/portlet-instances.xml");
+// in = IOTools.safeBufferedWrapper(in);
+
+
+
+
+ assertNotNull(in);
+
+ PortletAppDeploymentFactory factory = new PortletAppDeploymentFactory();
+
+ if (in != null)
+ {
+ DocumentBuilder builder =
XMLTools.getDocumentBuilderFactory().newDocumentBuilder();
+ EntityResolver entityResolver = factory.getPortletInstancesEntityResolver();
+ if (entityResolver == null)
+ {
+ entityResolver = new NullEntityResolver();
+ }
+
+ builder.setEntityResolver(entityResolver);
+ Document doc = builder.parse(in);
+
+ //
+ for (Iterator i = XMLTools.getChildrenIterator(doc.getDocumentElement(),
"deployment"); i.hasNext();)
+ {
+ Element deploymentElt = (Element)i.next();
+
+ //
+ Element instanceElt = XMLTools.getUniqueChild(deploymentElt,
"instance", true);
+
+ //
+ InstanceMetaData metaData = InstanceMetaData.buildMetaData(instanceElt);
+ instancesMetadata.add(metaData);
+ }
+ }
+ }
+ finally
+ {
+ IOTools.safeClose(in);
+ }
+
+ assertEquals(4, instancesMetadata.size());
+
+ InstanceMetaData instanceMD = (InstanceMetaData) instancesMetadata.get(0);
+ assertEquals("UserPortletInstance", instanceMD.getId());
+ LocalizedString lString =
Utils.getLocalizedDescription(instanceMD.getDisplayName());
+ assertEquals("Mon instance de User portlet",
lString.getString(Locale.FRENCH, false));
+ assertEquals("My User portlet instance",
lString.getString(Locale.ENGLISH, false));
+ assertEquals("My User portlet instance", lString.getDefaultString());
+ instanceMD = (InstanceMetaData) instancesMetadata.get(1);
+ assertEquals("RolePortletInstance", instanceMD.getId());
+ instanceMD = (InstanceMetaData) instancesMetadata.get(2);
+ assertEquals("CatalogPortletInstance", instanceMD.getId());
+ instanceMD = (InstanceMetaData) instancesMetadata.get(3);
+ assertEquals("PortletContentEditorInstance", instanceMD.getId());
+
+ }
+
+}
Modified:
branches/JBoss_Portal_Branch_2_6/core/src/resources/portal-core-sar/conf/hibernate/instance/domain.hbm.xml
===================================================================
---
branches/JBoss_Portal_Branch_2_6/core/src/resources/portal-core-sar/conf/hibernate/instance/domain.hbm.xml 2007-10-26
00:27:58 UTC (rev 8776)
+++
branches/JBoss_Portal_Branch_2_6/core/src/resources/portal-core-sar/conf/hibernate/instance/domain.hbm.xml 2007-10-26
10:43:23 UTC (rev 8777)
@@ -73,6 +73,13 @@
<one-to-many
class="org.jboss.portal.core.impl.model.instance.persistent.PersistentRoleSecurityBinding"/>
</map>
<map
+ name="displayNames"
+ table="JBP_INSTANCE_DISPLAY_NAMES">
+ <key column="INSTANCE_PK"/>
+ <map-key type="locale" column="LOCALE" />
+ <element type="string" column="TEXT"/>
+ </map>
+ <map
name="relatedCustomizations"
inverse="true"
cascade="save-update"
Modified:
branches/JBoss_Portal_Branch_2_6/core/src/resources/portal-core-war/WEB-INF/jsp/content/portlet_editor.jsp
===================================================================
---
branches/JBoss_Portal_Branch_2_6/core/src/resources/portal-core-war/WEB-INF/jsp/content/portlet_editor.jsp 2007-10-26
00:27:58 UTC (rev 8776)
+++
branches/JBoss_Portal_Branch_2_6/core/src/resources/portal-core-war/WEB-INF/jsp/content/portlet_editor.jsp 2007-10-26
10:43:23 UTC (rev 8777)
@@ -11,6 +11,7 @@
Collection instances = (Collection)request.getAttribute("INSTANCES");
Instance selectedInstance =
(Instance)request.getAttribute("SELECTED_INSTANCE");
%>
+<portlet:defineObjects/>
<span class="portlet-font">Portlet instance associated to this
window:</span>
@@ -21,13 +22,15 @@
{
Instance instance = (Instance)i.next();
String rowClass = instance == selectedInstance ?
"portlet-section-selected" : (i.getIndex() % 2 == 0 ?
"portlet-section-body" : "portlet-section-alternate");
+ String displayName =
instance.getDisplayName().getString(renderRequest.getLocale(), true);
+ if (displayName == null) { displayName = instance.getId(); }
%>
<portlet:actionURL var="url">
<portlet:param name="content.action.select"
value="true"/>
<portlet:param name="content.uri" value="<%=
instance.getId() %>"/>
</portlet:actionURL>
<tr class="<%= rowClass %>">
- <td><a href="<%= url %>"><%= instance.getId()
%>
+ <td><a href="<%= url %>"><%= displayName %>
</a></td>
</tr>
<%
@@ -39,9 +42,11 @@
<%
if (selectedInstance != null)
{
+ String displayName =
selectedInstance.getDisplayName().getString(renderRequest.getLocale(), true);
+ if (displayName == null) { displayName = selectedInstance.getId(); }
%>
<div class="portlet-font">
- <div><span class="portlet-form-field-label">Portlet
instance:</span><%= selectedInstance.getId() %>
+ <div><span class="portlet-form-field-label">Portlet
instance:</span><%= displayName %>
</div>
<%
Added:
branches/JBoss_Portal_Branch_2_6/core/src/resources/test/deployment/portlet-instances.xml
===================================================================
---
branches/JBoss_Portal_Branch_2_6/core/src/resources/test/deployment/portlet-instances.xml
(rev 0)
+++
branches/JBoss_Portal_Branch_2_6/core/src/resources/test/deployment/portlet-instances.xml 2007-10-26
10:43:23 UTC (rev 8777)
@@ -0,0 +1,62 @@
+<?xml version="1.0" standalone="yes"?>
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ 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. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+
+<deployments>
+ <deployment>
+ <instance>
+ <display-name xml:lang="fr">Mon instance de User
portlet</display-name>
+ <display-name xml:lang="en">My User portlet
instance</display-name>
+ <instance-id>UserPortletInstance</instance-id>
+ <portlet-ref>UserPortlet</portlet-ref>
+ </instance>
+ </deployment>
+ <deployment>
+ <instance>
+ <instance-id>RolePortletInstance</instance-id>
+ <portlet-ref>RolePortlet</portlet-ref>
+ </instance>
+ </deployment>
+ <deployment>
+ <instance>
+ <instance-id>CatalogPortletInstance</instance-id>
+ <portlet-ref>CatalogPortlet</portlet-ref>
+ </instance>
+ </deployment>
+ <deployment>
+ <instance>
+ <instance-id>PortletContentEditorInstance</instance-id>
+ <portlet-ref>PortletContentEditorPortlet</portlet-ref>
+ <security-constraint>
+ <policy-permission>
+ <role-name>Admin</role-name>
+ <action-name>view</action-name>
+ </policy-permission>
+ <policy-permission>
+ <role-name>User</role-name>
+ <action-name>view</action-name>
+ </policy-permission>
+ </security-constraint>
+ </instance>
+ </deployment>
+</deployments>
\ No newline at end of file