Author: julien(a)jboss.com
Date: 2008-01-09 10:28:51 -0500 (Wed, 09 Jan 2008)
New Revision: 9464
Added:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/ContainerPortletInfoBuilder.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/InlineBundle.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/SimpleResourceBundleFactory.java
Removed:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/PortletInfoBuilder.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletInfoFactoryImpl.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/info/
modules/portlet/trunk/test/src/test/java/org/jboss/portal/portlet/test/deployment/
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/container/PortletContainerInvoker.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/container/PortletApplicationContextImpl.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/ContainerMetaInfo.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/ContainerPortletInfo.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/ContainerPreferencesInfo.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/ContainerSecurityInfo.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletApplicationImpl.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletContainerImpl.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletRequestAttributes.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletResourceBundleFactory.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletConfigImpl.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletPreferencesImpl.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletRequestImpl.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/spi/PortletInfoFactory.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/support/info/CacheInfoSupport.java
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/ContentTypesTestCase.java
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/info/PreferenceInfoTest.java
modules/portlet/trunk/test/pom.xml
modules/portlet/trunk/test/src/test/build.xml
modules/portlet/trunk/test/src/test/java/org/jboss/portal/portlet/test/PortletApplicationDeployer.java
modules/portlet/trunk/test/src/test/java/org/jboss/portal/portlet/test/PortletApplicationDeployment.java
modules/portlet/trunk/test/src/test/resources/portlet-test-war/WEB-INF/jboss-beans.xml
modules/portlet/trunk/test/src/test/resources/test/local-jboss-unit.xml
Log:
update portlet container to use new metadata with runtime info rewrite (for more
flexiblity)
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/container/PortletContainerInvoker.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/container/PortletContainerInvoker.java 2008-01-09
15:09:53 UTC (rev 9463)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/container/PortletContainerInvoker.java 2008-01-09
15:28:51 UTC (rev 9464)
@@ -31,9 +31,9 @@
import org.jboss.portal.portlet.PortletContext;
import org.jboss.portal.portlet.PortletInvoker;
import org.jboss.portal.portlet.PortletInvokerException;
-import org.jboss.portal.portlet.impl.jsr168.info.ContainerPortletInfo;
-import org.jboss.portal.portlet.impl.jsr168.info.ContainerPreferencesInfo;
-import org.jboss.portal.portlet.impl.jsr168.info.ContainerPreferenceInfo;
+import org.jboss.portal.portlet.impl.info.ContainerPreferencesInfo;
+import org.jboss.portal.portlet.impl.info.ContainerPortletInfo;
+import org.jboss.portal.portlet.impl.info.ContainerPreferenceInfo;
import org.jboss.portal.portlet.info.PortletInfo;
import org.jboss.portal.portlet.invocation.PortletInvocation;
import org.jboss.portal.portlet.invocation.response.PortletInvocationResponse;
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/container/PortletApplicationContextImpl.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/container/PortletApplicationContextImpl.java 2008-01-09
15:09:53 UTC (rev 9463)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/container/PortletApplicationContextImpl.java 2008-01-09
15:28:51 UTC (rev 9464)
@@ -28,12 +28,17 @@
import org.jboss.portal.portlet.container.PortletContainer;
import org.jboss.portal.portlet.impl.jsr168.PortletApplicationImpl;
import org.jboss.portal.portlet.impl.jsr168.PortletContainerImpl;
-import org.jboss.portal.portlet.impl.jsr168.metadata.PortletApplicationMetaData;
-import org.jboss.portal.portlet.impl.jsr168.metadata.PortletMetaData;
import org.jboss.portal.portlet.impl.jsr168.spi.PortletAPIFactory;
import org.jboss.portal.portlet.impl.jsr168.spi.PortletInfoFactory;
+import org.jboss.portal.portlet.impl.metadata.PortletApplication10MetaData;
+import org.jboss.portal.portlet.impl.metadata.portlet.PortletMetaData;
+import org.jboss.portal.portlet.impl.info.ContainerPortletInfo;
+import org.jboss.portal.portlet.impl.info.ContainerPortletInfoBuilder;
import org.jboss.portal.portlet.metadata.JBossApplicationMetaData;
import org.jboss.portal.portlet.metadata.JBossPortletMetaData;
+import org.jboss.portal.common.i18n.ResourceBundleFactory;
+import org.jboss.portal.common.i18n.SimpleResourceBundleFactory;
+import org.jboss.portal.common.i18n.ResourceBundleManager;
import javax.servlet.ServletContext;
@@ -48,12 +53,9 @@
private final PortletAPIFactory portletAPIFactory;
/** . */
- private final PortletInfoFactory portletInfoFactory;
+ private final PortletApplication10MetaData portletAppMD;
/** . */
- private final PortletApplicationMetaData portletAppMD;
-
- /** . */
private final JBossApplicationMetaData jbossAppMD;
/** . */
@@ -78,7 +80,7 @@
PortletApplicationRegistry registry,
PortletAPIFactory portletAPIFactory,
PortletInfoFactory portletInfoFactory,
- PortletApplicationMetaData portletAppMD,
+ PortletApplication10MetaData portletAppMD,
JBossApplicationMetaData jbossAppMD,
ServletContext servletContext,
ClassLoader classLoader,
@@ -86,7 +88,6 @@
{
this.registry = registry;
this.portletAPIFactory = portletAPIFactory;
- this.portletInfoFactory = portletInfoFactory;
this.portletAppMD = portletAppMD;
this.jbossAppMD = jbossAppMD;
this.servletContext = servletContext;
@@ -103,23 +104,31 @@
public void startPortletApplication() throws Exception
{
- portletApp = new PortletApplicationImpl(portletAppMD, jbossAppMD, this,
portletAPIFactory, portletInfoFactory);
+ portletApp = new PortletApplicationImpl(portletAppMD, jbossAppMD, this,
portletAPIFactory);
portletApp.start();
//
registrationContext = registry.registerPortletApplication(portletApp);
//
- for (PortletMetaData portletMD : portletAppMD.getPortlets())
+ for (PortletMetaData portletMD : portletAppMD.getPortlets().values())
{
- JBossPortletMetaData jBossPortletMD = null;
- if (jbossAppMD != null)
- {
- jBossPortletMD =
(JBossPortletMetaData)jbossAppMD.getPortlets().get(portletMD.getName());
- }
+// JBossPortletMetaData jBossPortletMD = null;
+// if (jbossAppMD != null)
+// {
+// jBossPortletMD =
(JBossPortletMetaData)jbossAppMD.getPortlets().get(portletMD.getName());
+// }
+ // Create resource bundle manager
+ String baseName = portletMD.getResourceBundle();
+ ResourceBundleFactory rbf = new SimpleResourceBundleFactory(baseName,
classLoader);
+ ResourceBundleManager bundleMgr = new ResourceBundleManager(null, rbf);
+
+ // Build container info
+ ContainerPortletInfo containerInfo = new ContainerPortletInfoBuilder(portletMD,
bundleMgr).build();
+
//
- PortletContainerImpl container = new PortletContainerImpl(portletMD,
jBossPortletMD);
+ PortletContainerImpl container = new PortletContainerImpl(containerInfo,
bundleMgr);
//
container.setApplication(portletApp);
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/ContainerMetaInfo.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/ContainerMetaInfo.java 2008-01-09
15:09:53 UTC (rev 9463)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/ContainerMetaInfo.java 2008-01-09
15:28:51 UTC (rev 9464)
@@ -27,6 +27,7 @@
import java.util.HashMap;
import java.util.Map;
+import java.util.Locale;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -49,6 +50,14 @@
values.put(key, value);
}
+ public String getDefaultMetaValue(String key)
+ {
+ LocalizedString meta = getMetaValue(key);
+
+ //
+ return meta != null ? meta.getDefaultString() : null;
+ }
+
public LocalizedString getMetaValue(String key)
{
return values.get(key);
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/ContainerPortletInfo.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/ContainerPortletInfo.java 2008-01-09
15:09:53 UTC (rev 9463)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/ContainerPortletInfo.java 2008-01-09
15:28:51 UTC (rev 9464)
@@ -22,14 +22,12 @@
******************************************************************************/
package org.jboss.portal.portlet.impl.info;
-import org.jboss.portal.portlet.info.CacheInfo;
-import org.jboss.portal.portlet.info.CapabilitiesInfo;
-import org.jboss.portal.portlet.info.MetaInfo;
import org.jboss.portal.portlet.info.PortletInfo;
-import org.jboss.portal.portlet.info.PreferencesInfo;
-import org.jboss.portal.portlet.info.SecurityInfo;
-import org.jboss.portal.portlet.info.SessionInfo;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Set;
+
/**
* For now implementation that use the portlet container directly.
*
@@ -59,6 +57,15 @@
private ContainerSessionInfo session;
/** . */
+ private String name;
+
+ /** . */
+ private String className;
+
+ /** . */
+ private Map<String, String> initParameters;
+
+ /** . */
private Boolean remotable;
public ContainerPortletInfo(
@@ -68,6 +75,8 @@
ContainerSecurityInfo security,
ContainerCacheInfo cache,
ContainerSessionInfo session,
+ String name,
+ String className,
Boolean remotable)
{
this.capabilities = capabilities;
@@ -76,35 +85,63 @@
this.security = security;
this.cache = cache;
this.session = session;
+ this.name = name;
+ this.className = className;
+ this.initParameters = new HashMap<String, String>();
this.remotable = remotable;
}
- public CapabilitiesInfo getCapabilities()
+ public String getName()
{
+ return name;
+ }
+
+ public String getClassName()
+ {
+ return className;
+ }
+
+ public void addInitParameter(String parameterName, String parameterValue)
+ {
+ initParameters.put(parameterName, parameterValue);
+ }
+
+ public Set<String> getInitParameterNames()
+ {
+ return initParameters.keySet();
+ }
+
+ public String getInitParameter(String name)
+ {
+ return initParameters.get(name);
+ }
+
+ public ContainerCapabilitiesInfo getCapabilities()
+ {
return capabilities;
}
- public PreferencesInfo getPreferences()
+ public ContainerPreferencesInfo getPreferences()
{
return preferences;
}
- public MetaInfo getMeta()
+ public ContainerMetaInfo getMeta()
{
return meta;
}
- public SecurityInfo getSecurity()
+ public ContainerSecurityInfo getSecurity()
{
return security;
}
- public CacheInfo getCache()
+ public ContainerCacheInfo getCache()
{
return cache;
}
- public SessionInfo getSession()
+ public ContainerSessionInfo getSession()
{
return session;
}
Copied:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/ContainerPortletInfoBuilder.java
(from rev 9457,
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/PortletInfoBuilder.java)
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/ContainerPortletInfoBuilder.java
(rev 0)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/ContainerPortletInfoBuilder.java 2008-01-09
15:28:51 UTC (rev 9464)
@@ -0,0 +1,328 @@
+/******************************************************************************
+ * 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.portlet.impl.info;
+
+import org.jboss.portal.portlet.impl.metadata.portlet.PortletMetaData;
+import org.jboss.portal.portlet.impl.metadata.portlet.PortletPreferenceMetaData;
+import org.jboss.portal.portlet.impl.metadata.portlet.SupportedLocaleMetaData;
+import org.jboss.portal.portlet.impl.metadata.portlet.SupportsMetaData;
+import org.jboss.portal.portlet.impl.metadata.portlet.PortletModeMetaData;
+import org.jboss.portal.portlet.impl.metadata.portlet.SecurityRoleRefMetaData;
+import org.jboss.portal.portlet.impl.metadata.portlet.PortletPreferencesMetaData;
+import org.jboss.portal.portlet.impl.metadata.portlet.WindowStateMetaData;
+import org.jboss.portal.portlet.impl.metadata.security.SecurityConstraintMetaData;
+import org.jboss.portal.portlet.impl.metadata.common.InitParamMetaData;
+import org.jboss.portal.portlet.info.MetaInfo;
+import org.jboss.portal.common.value.Value;
+import org.jboss.portal.common.value.StringValue;
+import org.jboss.portal.common.i18n.LocalizedString;
+import org.jboss.portal.common.i18n.ResourceBundleManager;
+import org.jboss.portal.Mode;
+
+import java.util.Locale;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.List;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.ArrayList;
+import java.util.Collections;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 630 $
+ */
+public class ContainerPortletInfoBuilder
+{
+
+ /** . */
+ private static final String[] KEYS = {MetaInfo.TITLE, MetaInfo.SHORT_TITLE,
MetaInfo.KEYWORDS};
+
+ /** . */
+ private static final String JAVAX_PORTLET = "javax.portlet.";
+
+ /** . */
+ private static final String[] BUNDLE_KEYS = {JAVAX_PORTLET + MetaInfo.TITLE,
JAVAX_PORTLET + MetaInfo.SHORT_TITLE, JAVAX_PORTLET + MetaInfo.KEYWORDS};
+
+ /** . */
+ private PortletMetaData portletMD;
+
+ /** . */
+ private ResourceBundleManager bundleMgr;
+
+ public ContainerPortletInfoBuilder(PortletMetaData portletMD, ResourceBundleManager
bundleMgr)
+ {
+ this.portletMD = portletMD;
+ this.bundleMgr = bundleMgr;
+ }
+
+ public ContainerPortletInfo build()
+ {
+ fixMetaData();
+
+ //
+ ContainerCapabilitiesInfo containerCapabilities = buildContainerCapabilities();
+ ContainerPreferencesInfo containerPreferences = buildContainerPreferences();
+ ContainerMetaInfo containerMeta = buildContainerMeta();
+ ContainerSecurityInfo containerSecurity = buildContainerSecurityInfo();
+ ContainerCacheInfo containerCache = buildContainerCache();
+ ContainerSessionInfo containerSession = buildContainerSession();
+
+ //
+ ContainerPortletInfo containerPortletInfo = new ContainerPortletInfo(
+ containerCapabilities,
+ containerPreferences,
+ containerMeta,
+ containerSecurity,
+ containerCache,
+ containerSession,
+ portletMD.getPortletName(),
+ portletMD.getPortletClass(),
+ false
+ );
+
+ //
+ for (InitParamMetaData initParamMD : portletMD.getInitParams())
+ {
+ containerPortletInfo.addInitParameter(initParamMD.getName(),
initParamMD.getValue());
+ }
+
+ //
+ return containerPortletInfo;
+ }
+
+ private void fixMetaData()
+ {
+ if (portletMD.getSecurityRoleRef() == null)
+ {
+ portletMD.setSecurityRoleRef(new ArrayList<SecurityRoleRefMetaData>());
+ }
+ if (portletMD.getPortletApplication().getSecurityConstraints() == null)
+ {
+ portletMD.getPortletApplication().setSecurityConstraints(new
ArrayList<SecurityConstraintMetaData>());
+ }
+ if (portletMD.getSupportedLocale() == null)
+ {
+ portletMD.setSupportedLocale(new ArrayList<SupportedLocaleMetaData>());
+ }
+ for (SupportsMetaData supportsMD : portletMD.getSupports())
+ {
+ if (supportsMD.getPortletModes() == null)
+ {
+ supportsMD.setPortletModes(new ArrayList<PortletModeMetaData>());
+ }
+ if (supportsMD.getWindowStates() == null)
+ {
+ supportsMD.setWindowStates(new ArrayList<WindowStateMetaData>());
+ }
+ }
+ if (portletMD.getPortletPreferences() == null)
+ {
+ portletMD.setPortletPreferences(new PortletPreferencesMetaData());
+ }
+ if (portletMD.getPortletPreferences().getPortletPreferences() == null)
+ {
+ portletMD.getPortletPreferences().setPortletPreferences(new HashMap<String,
PortletPreferenceMetaData>());
+ }
+ if (portletMD.getInitParams() == null)
+ {
+ portletMD.setInitParams(new ArrayList<InitParamMetaData>());
+ }
+ for (PortletPreferenceMetaData portletPreferenceMD :
portletMD.getPortletPreferences().getPortletPreferences().values())
+ {
+ if (portletPreferenceMD.getValue() == null)
+ {
+ portletPreferenceMD.setValue(new ArrayList<String>());
+ }
+ }
+ }
+
+ private List<Locale> getSupportedLocales()
+ {
+ List<Locale> locales = new ArrayList<Locale>();
+ for (SupportedLocaleMetaData supportedLocaleMD : portletMD.getSupportedLocale())
+ {
+ Locale locale = supportedLocaleMD.getLocale();
+ locales.add(locale);
+ }
+ return locales;
+ }
+
+ private ContainerSecurityInfo buildContainerSecurityInfo()
+ {
+ ContainerSecurityInfo containerSecurity = new ContainerSecurityInfo();
+
+ // Security role ref
+ for (SecurityRoleRefMetaData securityRoleRefMD : portletMD.getSecurityRoleRef())
+ {
+ containerSecurity.addRoleRef(securityRoleRefMD.getRoleName(),
securityRoleRefMD.getRoleLink());
+ }
+
+ //
+ for (SecurityConstraintMetaData securityConstraintMD :
portletMD.getPortletApplication().getSecurityConstraints())
+ {
+ if
(securityConstraintMD.getPortletList().getPortletNames().contains(portletMD.getPortletName()))
+ {
+
containerSecurity.addTransportGuarantee(securityConstraintMD.getUserDataConstraint().getTransportQuarantee());
+ }
+ }
+
+ //
+ return containerSecurity;
+ }
+
+ private ContainerSessionInfo buildContainerSession()
+ {
+ return new ContainerSessionInfo(false);
+ }
+
+ private ContainerCacheInfo buildContainerCache()
+ {
+ int expirationCache = portletMD.getExpirationCache();
+
+ //
+ if (expirationCache < 0 && expirationCache != -1)
+ {
+ // log.warn("Seen bad caching expiration value " + expirationTimeSecs
+ " disable caching instead");
+ expirationCache = 0;
+ }
+
+ //
+ return new ContainerCacheInfo(expirationCache);
+ }
+
+ private ContainerCapabilitiesInfo buildContainerCapabilities()
+ {
+ ContainerCapabilitiesInfo capabilities = new ContainerCapabilitiesInfo();
+
+ //
+ for (SupportsMetaData supportsMD : portletMD.getSupports())
+ {
+ // Get the mime type
+ String mimeType = supportsMD.getMimeType().toLowerCase();
+
+ // Add the content type to the view mode
+ // because each content type must handle this view
+ capabilities.add(mimeType, Mode.VIEW);
+
+ // Then process each mode
+ for (PortletModeMetaData modeMD : supportsMD.getPortletModes())
+ {
+ capabilities.add(mimeType, Mode.create(modeMD.getPortletMode()));
+ }
+ }
+
+ //
+ return capabilities;
+ }
+
+ private ContainerMetaInfo buildContainerMeta()
+ {
+ ContainerMetaInfo containerMeta = new ContainerMetaInfo();
+
+ // Capture inline values
+ String[] inlines = {
+ portletMD.getPortletInfo().getTitle(),
+ portletMD.getPortletInfo().getShortTitle(),
+ portletMD.getPortletInfo().getKeywords()
+ };
+
+ // Construct info from resource bundle manager
+ for (int i = 0; i < KEYS.length; i++)
+ {
+ String key = KEYS[i];
+
+ //
+ Map<Locale, String> tmp = new HashMap<Locale, String>();
+
+ //
+ List<Locale> locales = getSupportedLocales();
+
+ // Add english locale
+ locales.add(Locale.ENGLISH);
+
+ // Feed with the known locales (perhaps should try more locales)
+ for (Locale locale : locales)
+ {
+ ResourceBundle bundle = bundleMgr.getResourceBundle(locale);
+
+ //
+ if (bundle != null)
+ {
+ try
+ {
+ String value = bundle.getString(BUNDLE_KEYS[i]);
+ tmp.put(locale, value);
+ }
+ catch (MissingResourceException ignore)
+ {
+ }
+ }
+ }
+
+ // Add the inline value if it is present
+ if (inlines[i] != null)
+ {
+ tmp.put(Locale.ENGLISH, inlines[i]);
+ }
+
+ //
+ LocalizedString ls = new LocalizedString(tmp, Locale.ENGLISH);
+ containerMeta.addMetaValue(key, ls);
+ }
+
+ // Add stuff coming from deployment descriptor
+ containerMeta.addMetaValue(MetaInfo.DESCRIPTION, portletMD.getDescription());
+ containerMeta.addMetaValue(MetaInfo.DISPLAY_NAME, portletMD.getDisplayName());
+
+ //
+ return containerMeta;
+ }
+
+ private ContainerPreferencesInfo buildContainerPreferences()
+ {
+ PortletPreferencesMetaData preferencesMD = portletMD.getPortletPreferences();
+
+ //
+ String validatorClassName = null;
+ if (preferencesMD != null)
+ {
+ validatorClassName = preferencesMD.getPreferenceValidator();
+ }
+
+ //
+ ContainerPreferencesInfo containerPreferences = new
ContainerPreferencesInfo(validatorClassName);
+
+ //
+ for (PortletPreferenceMetaData portletPreferenceMD :
preferencesMD.getPortletPreferences().values())
+ {
+ Value value = new StringValue(portletPreferenceMD.getValue());
+ LocalizedString displayName =
bundleMgr.getLocalizedValue("javax.portlet.preference.name." +
portletPreferenceMD.getName(), portletPreferenceMD.getName());
+ LocalizedString description =
bundleMgr.getLocalizedValue("javax.portlet.preference.description." +
portletPreferenceMD.getName(), portletPreferenceMD.getName());
+ containerPreferences.addContainerPreference(portletPreferenceMD.getName(),
value, portletPreferenceMD.isReadOnly(), displayName, description);
+ }
+
+ //
+ return containerPreferences;
+ }
+}
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/ContainerPreferencesInfo.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/ContainerPreferencesInfo.java 2008-01-09
15:09:53 UTC (rev 9463)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/ContainerPreferencesInfo.java 2008-01-09
15:28:51 UTC (rev 9464)
@@ -46,12 +46,21 @@
/** . */
private final Set<String> keys;
- public ContainerPreferencesInfo()
+ /** . */
+ private final String validatorClassName;
+
+ public ContainerPreferencesInfo(String validatorClassName)
{
- content = new HashMap<String, PreferenceInfo>();
- keys = Collections.unmodifiableSet(content.keySet());
+ this.content = new HashMap<String, PreferenceInfo>();
+ this.keys = Collections.unmodifiableSet(content.keySet());
+ this.validatorClassName = validatorClassName;
}
+ public String getValidatorClassName()
+ {
+ return validatorClassName;
+ }
+
public ContainerPreferenceInfo getContainerPreference(String key)
{
if (key == null)
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/ContainerSecurityInfo.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/ContainerSecurityInfo.java 2008-01-09
15:09:53 UTC (rev 9463)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/ContainerSecurityInfo.java 2008-01-09
15:28:51 UTC (rev 9464)
@@ -28,6 +28,8 @@
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
+import java.util.Map;
+import java.util.HashMap;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -42,15 +44,41 @@
/** . */
private final Set<TransportGuarantee> rotgs;
+ /** . */
+ private final Map<String, String> roleRefs;
+
public ContainerSecurityInfo()
{
- tgs = new HashSet<TransportGuarantee>();
+ Set<TransportGuarantee> tgs = new HashSet<TransportGuarantee>();
tgs.add(TransportGuarantee.NONE);
//
- rotgs = Collections.unmodifiableSet(tgs);
+ this.tgs= tgs;
+ this.roleRefs = new HashMap<String, String>();
+ this.rotgs = Collections.unmodifiableSet(tgs);
}
+ public String getRoleRef(String roleName)
+ {
+ return roleRefs.get(roleName);
+ }
+
+ public boolean containsRoleRef(String roleName)
+ {
+ return roleRefs.containsKey(roleName);
+ }
+
+ public void addRoleRef(String roleName, String roleLink)
+ {
+ if (roleName == null)
+ {
+ throw new IllegalArgumentException();
+ }
+
+ //
+ roleRefs.put(roleName, roleLink);
+ }
+
public void addTransportGuarantee(TransportGuarantee transportGuarantee)
{
tgs.add(transportGuarantee);
Deleted:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/PortletInfoBuilder.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/PortletInfoBuilder.java 2008-01-09
15:09:53 UTC (rev 9463)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/PortletInfoBuilder.java 2008-01-09
15:28:51 UTC (rev 9464)
@@ -1,228 +0,0 @@
-/******************************************************************************
- * 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.portlet.impl.info;
-
-import org.jboss.portal.portlet.impl.metadata.portlet.PortletMetaData;
-import org.jboss.portal.portlet.impl.metadata.portlet.PortletPreferenceMetaData;
-import org.jboss.portal.portlet.impl.metadata.portlet.SupportedLocaleMetaData;
-import org.jboss.portal.portlet.impl.metadata.portlet.SupportsMetaData;
-import org.jboss.portal.portlet.impl.metadata.portlet.PortletModeMetaData;
-import org.jboss.portal.portlet.impl.metadata.security.SecurityConstraintMetaData;
-import org.jboss.portal.portlet.info.PortletInfo;
-import org.jboss.portal.portlet.info.MetaInfo;
-import org.jboss.portal.common.value.Value;
-import org.jboss.portal.common.value.StringValue;
-import org.jboss.portal.common.i18n.LocalizedString;
-import org.jboss.portal.common.i18n.ResourceBundleManager;
-import org.jboss.portal.Mode;
-
-import java.util.Locale;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.List;
-import java.util.ResourceBundle;
-import java.util.MissingResourceException;
-import java.util.ArrayList;
-
-/**
- * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
- * @version $Revision: 630 $
- */
-public class PortletInfoBuilder
-{
-
- /** . */
- private static final String[] KEYS = {MetaInfo.TITLE, MetaInfo.SHORT_TITLE,
MetaInfo.KEYWORDS};
-
- /** . */
- private static final String JAVAX_PORTLET = "javax.portlet.";
-
- /** . */
- private static final String[] BUNDLE_KEYS = {JAVAX_PORTLET + MetaInfo.TITLE,
JAVAX_PORTLET + MetaInfo.SHORT_TITLE, JAVAX_PORTLET + MetaInfo.KEYWORDS};
-
- /** . */
- private PortletMetaData portletMD;
-
- /** . */
- private ResourceBundleManager bundleMgr;
-
- public PortletInfoBuilder(PortletMetaData portletMD, ResourceBundleManager bundleMgr)
- {
- this.portletMD = portletMD;
- this.bundleMgr = bundleMgr;
- }
-
- public PortletInfo build()
- {
- ContainerCapabilitiesInfo containerCapabilities = buildContainerCapabilities();
- ContainerPreferencesInfo containerPreferences = buildContainerPreferences();
- ContainerMetaInfo containerMeta = buildContainerMeta();
- ContainerSecurityInfo containerSecurity = buildContainerSecurityInfo();
- ContainerCacheInfo containerCache = buildContainerCache();
- ContainerSessionInfo containerSession = buildContainerSession();
-
- //
- return new ContainerPortletInfo(
- containerCapabilities,
- containerPreferences,
- containerMeta,
- containerSecurity,
- containerCache,
- containerSession,
- false
- );
- }
-
- private List<Locale> getSupportedLocales()
- {
- List<Locale> locales = new ArrayList<Locale>();
- for (SupportedLocaleMetaData supportedLocaleMD : portletMD.getSupportedLocale())
- {
- Locale locale = supportedLocaleMD.getLocale();
- locales.add(locale);
- }
- return locales;
- }
-
- private ContainerSecurityInfo buildContainerSecurityInfo()
- {
- ContainerSecurityInfo containerSecurity = new ContainerSecurityInfo();
-
- //
- for (SecurityConstraintMetaData securityConstraintMD :
portletMD.getPortletApplication().getSecurityConstraints())
- {
- if
(securityConstraintMD.getPortletList().getPortletNames().contains(portletMD.getPortletName()))
- {
-
containerSecurity.addTransportGuarantee(securityConstraintMD.getUserDataConstraint().getTransportQuarantee());
- }
- }
-
- //
- return containerSecurity;
- }
-
- private ContainerSessionInfo buildContainerSession()
- {
- return new ContainerSessionInfo(false);
- }
-
- private ContainerCacheInfo buildContainerCache()
- {
- int expirationCache = portletMD.getExpirationCache();
-
- //
- if (expirationCache < 0 && expirationCache != -1)
- {
- // log.warn("Seen bad caching expiration value " + expirationTimeSecs
+ " disable caching instead");
- expirationCache = 0;
- }
-
- //
- return new ContainerCacheInfo(expirationCache);
- }
-
- private ContainerCapabilitiesInfo buildContainerCapabilities()
- {
- ContainerCapabilitiesInfo capabilities = new ContainerCapabilitiesInfo();
-
- //
- for (SupportsMetaData supportsMD : portletMD.getSupports())
- {
- // Get the mime type
- String mimeType = supportsMD.getMimeType().toLowerCase();
-
- // Add the content type to the view mode
- // because each content type must handle this view
- capabilities.add(mimeType, Mode.VIEW);
-
- // Then process each mode
- for (PortletModeMetaData modeMD : supportsMD.getPortletModes())
- {
- capabilities.add(mimeType, Mode.create(modeMD.getPortletMode()));
- }
- }
-
- //
- return capabilities;
- }
-
- private ContainerMetaInfo buildContainerMeta()
- {
- ContainerMetaInfo containerMeta = new ContainerMetaInfo();
-
- // Construct info from resource bundle manager
- if (bundleMgr != null)
- {
- for (int i = 0; i < KEYS.length; i++)
- {
- String key = KEYS[i];
- Map<Locale, String> tmp = new HashMap<Locale, String>();
-
- //
- List<Locale> locales = getSupportedLocales();
-
- // Add english locale
- locales.add(Locale.ENGLISH);
-
- for (Locale locale : locales)
- {
- ResourceBundle bundle = bundleMgr.getResourceBundle(locale);
- try
- {
- String value = bundle.getString(BUNDLE_KEYS[i]);
- tmp.put(locale, value);
- }
- catch (MissingResourceException ignore)
- {
- }
- }
- LocalizedString ls = new LocalizedString(tmp, Locale.ENGLISH);
- containerMeta.addMetaValue(key, ls);
- }
- }
-
- // Add stuff coming from meta data
- containerMeta.addMetaValue(MetaInfo.DESCRIPTION, portletMD.getDescription());
- containerMeta.addMetaValue(MetaInfo.DISPLAY_NAME, portletMD.getDisplayName());
-
- //
- return containerMeta;
- }
-
- private ContainerPreferencesInfo buildContainerPreferences()
- {
- ContainerPreferencesInfo containerPreferences = new ContainerPreferencesInfo();
-
- //
- for (PortletPreferenceMetaData portletPreferenceMD :
portletMD.getPortletPreferences().getPortletPreferences().values())
- {
- Value value = new StringValue(portletPreferenceMD.getValue().toArray(new
String[portletPreferenceMD.getValue().size()]));
- LocalizedString displayName =
bundleMgr.getLocalizedValue("javax.portlet.preference.name." +
portletPreferenceMD.getName(), portletPreferenceMD.getName());
- LocalizedString description =
bundleMgr.getLocalizedValue("javax.portlet.preference.description." +
portletPreferenceMD.getName(), portletPreferenceMD.getName());
- containerPreferences.addContainerPreference(portletPreferenceMD.getName(),
value, portletPreferenceMD.isReadOnly(), displayName, description);
- }
-
- //
- return containerPreferences;
- }
-}
Added:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/InlineBundle.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/InlineBundle.java
(rev 0)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/InlineBundle.java 2008-01-09
15:28:51 UTC (rev 9464)
@@ -0,0 +1,94 @@
+/******************************************************************************
+ * 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.portlet.impl.jsr168;
+
+import org.apache.log4j.Logger;
+import org.jboss.portal.portlet.impl.info.ContainerPortletInfo;
+import org.jboss.portal.portlet.info.MetaInfo;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.ListResourceBundle;
+import java.util.Locale;
+
+/**
+ * A resource bundle that contains the inline information defined by the portlet
specification.
+ *
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 6697 $
+ */
+public class InlineBundle extends ListResourceBundle
+{
+
+ private static final Logger log = Logger.getLogger(InlineBundle.class);
+
+ /** . */
+ private final Object[][] content;
+
+ public InlineBundle(ContainerPortletInfo portletInfo)
+ {
+ log.debug("Creates the parent bundle");
+
+ //
+ List<Object> list = new ArrayList<Object>(3);
+
+ //
+ String title = portletInfo.getMeta().getDefaultMetaValue(MetaInfo.TITLE);
+ if (title != null)
+ {
+ list.add(new Object[]{APIConstants.JAVAX_PORTLET_TITLE, title});
+ }
+
+ //
+ String shortTitle =
portletInfo.getMeta().getDefaultMetaValue(MetaInfo.SHORT_TITLE);
+ if (shortTitle != null)
+ {
+ list.add(new Object[]{APIConstants.JAVAX_PORTLET_SHORT_TITLE, shortTitle});
+ }
+
+ //
+ String keywords = portletInfo.getMeta().getDefaultMetaValue(MetaInfo.KEYWORDS);
+ if (keywords != null)
+ {
+ list.add(new Object[]{APIConstants.JAVAX_PORTLET_KEYWORDS, keywords});
+ }
+
+ //
+ content = (Object[][])list.toArray(new Object[list.size()][]);
+ }
+
+ protected Object[][] getContents()
+ {
+ return content;
+ }
+
+ /**
+ * This is the english locale.
+ *
+ * @return the english locale
+ */
+ public Locale getLocale()
+ {
+ return Locale.ENGLISH;
+ }
+}
\ No newline at end of file
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletApplicationImpl.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletApplicationImpl.java 2008-01-09
15:09:53 UTC (rev 9463)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletApplicationImpl.java 2008-01-09
15:28:51 UTC (rev 9464)
@@ -23,9 +23,8 @@
package org.jboss.portal.portlet.impl.jsr168;
import org.jboss.portal.portlet.impl.jsr168.api.PortletContextImpl;
-import org.jboss.portal.portlet.impl.jsr168.metadata.PortletApplicationMetaData;
import org.jboss.portal.portlet.impl.jsr168.spi.PortletAPIFactory;
-import org.jboss.portal.portlet.impl.jsr168.spi.PortletInfoFactory;
+import org.jboss.portal.portlet.impl.metadata.PortletApplication10MetaData;
import org.jboss.portal.portlet.metadata.JBossApplicationMetaData;
import org.jboss.portal.portlet.container.PortletApplication;
import org.jboss.portal.portlet.container.PortletApplicationContext;
@@ -34,7 +33,6 @@
import javax.portlet.PortletContext;
import java.util.HashSet;
import java.util.LinkedHashMap;
-import java.util.Map;
import java.util.Set;
/**
@@ -45,7 +43,7 @@
{
/** . */
- protected final PortletApplicationMetaData metaData;
+ protected final PortletApplication10MetaData metaData;
/** . */
protected final JBossApplicationMetaData jbossMetaData;
@@ -57,9 +55,6 @@
protected final PortletAPIFactory portletAPIFactory;
/** . */
- protected final PortletInfoFactory portletInfoFactory;
-
- /** . */
protected LinkedHashMap<String, PortletContainer> portlets;
/** . */
@@ -68,23 +63,15 @@
/** . */
protected String version;
- /** . */
- protected Map portletModes;
-
- /** . */
- protected Map windowStates;
-
public PortletApplicationImpl(
- PortletApplicationMetaData metaData,
+ PortletApplication10MetaData metaData,
JBossApplicationMetaData jbossMetaData,
PortletApplicationContext context,
- PortletAPIFactory portletAPIFactory,
- PortletInfoFactory portletInfoFactory)
+ PortletAPIFactory portletAPIFactory)
{
this.metaData = metaData;
this.jbossMetaData = jbossMetaData;
this.portletAPIFactory = portletAPIFactory;
- this.portletInfoFactory = portletInfoFactory;
this.portlets = new LinkedHashMap<String, PortletContainer>();
this.context = context;
}
@@ -99,13 +86,8 @@
return portletAPIFactory;
}
- public PortletInfoFactory getPortletInfoFactory()
+ public PortletApplication10MetaData getMetaData()
{
- return portletInfoFactory;
- }
-
- public PortletApplicationMetaData getMetaData()
- {
return metaData;
}
@@ -129,16 +111,12 @@
public void start() throws Exception
{
version = metaData.getVersion();
- portletModes = metaData.getPortletModes();
- windowStates = metaData.getWindowStates();
portletContext = new PortletContextImpl(context.getServletContext());
}
public void stop()
{
version = null;
- portletModes = null;
- windowStates = null;
portletContext = null;
}
@@ -152,16 +130,6 @@
return portletContext;
}
- public Map getPortletModes()
- {
- return portletModes;
- }
-
- public Map getWindowStates()
- {
- return windowStates;
- }
-
// WebApp implementation
********************************************************************************************
public Set<PortletContainer> getPortletContainers()
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletContainerImpl.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletContainerImpl.java 2008-01-09
15:09:53 UTC (rev 9463)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletContainerImpl.java 2008-01-09
15:28:51 UTC (rev 9464)
@@ -35,11 +35,9 @@
import org.jboss.portal.portlet.impl.jsr168.api.PortletConfigImpl;
import org.jboss.portal.portlet.impl.jsr168.api.RenderRequestImpl;
import org.jboss.portal.portlet.impl.jsr168.api.RenderResponseImpl;
-import org.jboss.portal.portlet.impl.jsr168.metadata.ParameterMetaData;
-import org.jboss.portal.portlet.impl.jsr168.metadata.PortletMetaData;
-import org.jboss.portal.portlet.impl.jsr168.metadata.PortletPreferencesMetaData;
-import org.jboss.portal.portlet.impl.jsr168.metadata.SecurityRoleRefMetaData;
import org.jboss.portal.portlet.impl.jsr168.spi.PortletAPIFactory;
+import org.jboss.portal.portlet.impl.info.ContainerPortletInfo;
+import org.jboss.portal.portlet.impl.info.ContainerPreferencesInfo;
import org.jboss.portal.portlet.info.PortletInfo;
import org.jboss.portal.portlet.invocation.ActionInvocation;
import org.jboss.portal.portlet.invocation.PortletInvocation;
@@ -48,7 +46,6 @@
import org.jboss.portal.portlet.invocation.response.PortletInvocationResponse;
import org.jboss.portal.portlet.invocation.response.SecurityErrorResponse;
import org.jboss.portal.portlet.invocation.response.UnavailableResponse;
-import org.jboss.portal.portlet.metadata.JBossPortletMetaData;
import org.apache.log4j.Logger;
import javax.portlet.Portlet;
@@ -59,10 +56,6 @@
import javax.portlet.UnavailableException;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
import java.util.Set;
/**
@@ -78,12 +71,6 @@
/** . */
protected PortletApplicationImpl application;
- /** . */
- protected PortletMetaData metaData;
-
- /** . */
- protected JBossPortletMetaData jbossMetaData;
-
/** The portlet implementation class name. */
protected String className;
@@ -96,17 +83,17 @@
/** The invocation valve. */
protected final Valve valve;
- /** Give the correspondance between role name and role link. */
- protected Map securityRoleRefsMap;
-
/** Are we started or not. */
protected boolean started;
/** User data constraint. */
protected Set userDataConstraints;
+ /** . */
+ protected ResourceBundleManager internalBundleManager;
+
/** Return info. */
- protected PortletInfo info;
+ protected ContainerPortletInfo info;
/**
* The preference validator, this is not exposed as runtime meta data as it is only
used by the JSR 168 portlet
@@ -114,16 +101,16 @@
*/
protected PreferencesValidator preferencesValidator;
- public PortletContainerImpl(PortletMetaData metaData, JBossPortletMetaData
jbossMetaData)
+ public PortletContainerImpl(ContainerPortletInfo info, ResourceBundleManager
internalBundleManager)
{
- this.metaData = metaData;
- this.jbossMetaData = jbossMetaData;
+ this.info = info;
+ this.internalBundleManager = internalBundleManager;
this.valve = new Valve();
- this.log = Logger.getLogger("org.jboss.portal.portlet.container." +
metaData.getClassName().replace('.', '_'));
+ this.log = Logger.getLogger("org.jboss.portal.portlet.container." +
info.getClassName().replace('.', '_'));
this.started = false;
}
- public PortletInfo getInfo()
+ public ContainerPortletInfo getInfo()
{
if (started)
{
@@ -131,24 +118,14 @@
}
//
- throw new IllegalStateException("Portlet " + metaData.getName() + "
is not started");
+ throw new IllegalStateException("Portlet " + info.getName() + " is
not started");
}
public String getId()
{
- return metaData.getName();
+ return info.getName();
}
- public PortletMetaData getMetaData()
- {
- return metaData;
- }
-
- public JBossPortletMetaData getJBossMetaData()
- {
- return jbossMetaData;
- }
-
public boolean isStarted()
{
return valve.getState() == Valve.OPEN;
@@ -157,13 +134,13 @@
public void start() throws PortletInitializationException
{
// Set class name
- this.className = metaData.getClassName();
+ this.className = info.getClassName();
//
- PortletPreferencesMetaData preferences = metaData.getPreferences();
+ ContainerPreferencesInfo preferences = info.getPreferences();
if (preferences != null)
{
- String validatorClassName = preferences.getValidator();
+ String validatorClassName = preferences.getValidatorClassName();
if (validatorClassName != null)
{
try
@@ -193,35 +170,12 @@
}
}
- // Security role ref
- Map securityRoleRefsMap = new HashMap();
- for (Iterator i = metaData.getSecurityRoleRefs().iterator(); i.hasNext();)
- {
- SecurityRoleRefMetaData securityRoleRefMD = (SecurityRoleRefMetaData)i.next();
- securityRoleRefsMap.put(securityRoleRefMD.getRoleName(),
securityRoleRefMD.getRoleLink());
- }
+ //
+ ResourceBundleManager bundleManager =
PortletResourceBundleFactory.createResourceBundleManager(internalBundleManager, info);
- // Init parameters
- Map initParameters = new HashMap();
- for (Iterator i = metaData.getParameters().values().iterator(); i.hasNext();)
- {
- ParameterMetaData parameterMD = (ParameterMetaData)i.next();
- initParameters.put(parameterMD.getName(), parameterMD.getValue());
- }
-
- // Resource bundle manager
- ResourceBundleManager bundleMgr =
PortletResourceBundleFactory.createResourceBundleManager(application.getContext().getClassLoader(),
metaData.getLanguages());
-
// Portlet config object
- PortletConfig config = new PortletConfigImpl(
- metaData.getName(),
- application.getPortletContext(),
- initParameters,
- bundleMgr);
+ PortletConfig config = new PortletConfigImpl(application.getPortletContext(), info,
bundleManager);
- // Create meta data
- PortletInfo info =
application.getPortletInfoFactory().createPortletInfo(application.getContext(), metaData,
jbossMetaData, bundleMgr);
-
// Finally initialize the porlet instance
try
{
@@ -236,8 +190,6 @@
// We are safe, update state
this.portlet = portlet;
this.config = config;
- this.securityRoleRefsMap = Collections.unmodifiableMap(securityRoleRefsMap);
- this.info = info;
this.started = true;
// Let invocation flow in
@@ -295,7 +247,6 @@
preferencesValidator = null;
className = null;
portlet = null;
- securityRoleRefsMap = null;
config = null;
userDataConstraints = null;
info = null;
@@ -312,11 +263,6 @@
return portlet;
}
- public Map getSecurityRoleRefsMap()
- {
- return securityRoleRefsMap;
- }
-
public PortletApplication getApplication()
{
return application;
Deleted:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletInfoFactoryImpl.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletInfoFactoryImpl.java 2008-01-09
15:09:53 UTC (rev 9463)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletInfoFactoryImpl.java 2008-01-09
15:28:51 UTC (rev 9464)
@@ -1,43 +0,0 @@
-/******************************************************************************
- * 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.portlet.impl.jsr168;
-
-import org.jboss.portal.portlet.container.PortletApplicationContext;
-import org.jboss.portal.portlet.impl.jsr168.spi.PortletInfoFactory;
-import org.jboss.portal.portlet.impl.jsr168.metadata.PortletMetaData;
-import org.jboss.portal.portlet.impl.jsr168.info.ContainerPortletInfo;
-import org.jboss.portal.portlet.info.PortletInfo;
-import org.jboss.portal.portlet.metadata.JBossPortletMetaData;
-import org.jboss.portal.common.i18n.ResourceBundleManager;
-
-/**
- * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
- * @version $Revision: 1.1 $
- */
-public class PortletInfoFactoryImpl implements PortletInfoFactory
-{
- public PortletInfo createPortletInfo(PortletApplicationContext
portletApplicationContext, PortletMetaData portletMD, JBossPortletMetaData jbossPortletMD,
ResourceBundleManager resourceBundleManager)
- {
- return new ContainerPortletInfo(portletApplicationContext, portletMD,
jbossPortletMD, resourceBundleManager);
- }
-}
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletRequestAttributes.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletRequestAttributes.java 2008-01-09
15:09:53 UTC (rev 9463)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletRequestAttributes.java 2008-01-09
15:28:51 UTC (rev 9464)
@@ -22,8 +22,8 @@
******************************************************************************/
package org.jboss.portal.portlet.impl.jsr168;
-import org.jboss.portal.common.util.Tools;
-import org.jboss.portal.portlet.impl.jsr168.metadata.PortletApplicationMetaData;
+import org.jboss.portal.portlet.impl.metadata.PortletApplication10MetaData;
+import org.jboss.portal.portlet.impl.metadata.UserAttributeMetaData;
import org.jboss.portal.portlet.spi.UserContext;
import org.jboss.portal.portlet.container.PortletContainer;
@@ -77,18 +77,18 @@
}
if (PortletRequest.USER_INFO.equals(name))
{
- Map infos = userContext.getInformations();
+ Map<String, String> infos = userContext.getInformations();
//
if (infos != null)
{
// Get portlet application metadata
PortletApplicationImpl portletApp =
(PortletApplicationImpl)container.getApplication();
- PortletApplicationMetaData pamd = portletApp.getMetaData();
- Map uaMD = pamd.getUserAttributes();
+ PortletApplication10MetaData pamd = portletApp.getMetaData();
+ Map<String, UserAttributeMetaData> uaMD = pamd.getUserAttributes();
// Clone the map
- infos = new HashMap(infos);
+ infos = new HashMap<String, String>(infos);
// Keep only what is of interest with respect to what the portlet app
defines
infos.keySet().retainAll(uaMD.keySet());
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletResourceBundleFactory.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletResourceBundleFactory.java 2008-01-09
15:09:53 UTC (rev 9463)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletResourceBundleFactory.java 2008-01-09
15:28:51 UTC (rev 9464)
@@ -26,12 +26,9 @@
import org.jboss.portal.common.i18n.ParentChildResourceBundle;
import org.jboss.portal.common.i18n.ResourceBundleManager;
import org.jboss.portal.common.i18n.ResourceBundleFactory;
-import org.jboss.portal.portlet.impl.jsr168.metadata.LanguagesMetaData;
-import org.jboss.portal.portlet.impl.jsr168.info.InfoBundle;
+import org.jboss.portal.portlet.impl.info.ContainerPortletInfo;
-import java.util.Iterator;
import java.util.Locale;
-import java.util.MissingResourceException;
import java.util.ResourceBundle;
/**
@@ -44,66 +41,53 @@
public class PortletResourceBundleFactory implements ResourceBundleFactory
{
- public static ResourceBundleManager createResourceBundleManager(ClassLoader
classLoader, LanguagesMetaData metaData)
+ public static ResourceBundleManager createResourceBundleManager(ResourceBundleManager
bundleMgr, ContainerPortletInfo containerInfo)
{
- if (classLoader == null)
+ if (bundleMgr == null)
{
throw new IllegalArgumentException("Need a non null classloader");
}
- if (metaData == null)
+ if (containerInfo == null)
{
throw new IllegalArgumentException("Need non null meta data");
}
// Create factory
- PortletResourceBundleFactory factory = new
PortletResourceBundleFactory(classLoader, metaData);
+ PortletResourceBundleFactory factory = new PortletResourceBundleFactory(bundleMgr,
containerInfo);
// Create manager
ResourceBundleManager manager = new
ResourceBundleManager(EmptyResourceBundle.INSTANCE, factory);
// Preload declared locales
- for (Iterator i = metaData.getSupportedLocales().iterator();i.hasNext();)
- {
- Locale locale = (Locale)i.next();
- manager.getResourceBundle(locale);
- }
+// for (Iterator i = metaData.getSupportedLocales().iterator();i.hasNext();)
+// {
+// Locale locale = (Locale)i.next();
+// manager.getResourceBundle(locale);
+// }
//
return manager;
}
/** The class loader to load resource bundle from. */
- private final ClassLoader classLoader;
+ private final ResourceBundleManager bundleMgr;
- /** The base name of the resource bundle. */
- private final String baseName;
+ private final ResourceBundle infoBundle;
- /** */
- private ResourceBundle infoBundle;
-
- public PortletResourceBundleFactory(ClassLoader classLoader, LanguagesMetaData
metaData)
+ public PortletResourceBundleFactory(ResourceBundleManager bundleMgr,
ContainerPortletInfo containerInfo)
{
- if (classLoader == null)
+ if (bundleMgr == null)
{
throw new IllegalArgumentException("Need a non null classloader");
}
- if (metaData == null)
+ if (containerInfo == null)
{
throw new IllegalArgumentException("Need non null meta data");
}
- this.classLoader = classLoader;
- this.baseName = metaData.getResourceBundle();
- // Get the resource bundle containing the portlet info
- LanguagesMetaData.InfoMetaData infoMD = metaData.getInfo();
- if (infoMD != null)
- {
- infoBundle = new InfoBundle(infoMD);
- }
- else
- {
- infoBundle = EmptyResourceBundle.INSTANCE;
- }
+ //
+ this.bundleMgr = bundleMgr;
+ this.infoBundle = new InlineBundle(containerInfo);
}
public ResourceBundle getBundle(Locale locale)
@@ -114,29 +98,17 @@
}
//
- ResourceBundle bundle;
+ ResourceBundle bundle = bundleMgr.getResourceBundle(locale);
- //
- if (baseName == null)
+ if (bundle == null)
{
bundle = infoBundle;
+ // log.warn("Bundle " + baseName + " for locale " + locale +
" not found");
}
else
{
- try
- {
- bundle = ResourceBundle.getBundle(baseName, locale, classLoader);
- if (infoBundle != null)
- {
- bundle = new ParentChildResourceBundle(infoBundle, bundle);
- }
- // log.debug("Created bundle " + baseName + " for locale
" + locale);
- }
- catch (MissingResourceException e)
- {
- // log.warn("Bundle " + baseName + " for locale " +
locale + " not found");
- bundle = infoBundle;
- }
+ bundle = new ParentChildResourceBundle(infoBundle, bundle);
+ // log.debug("Created bundle " + baseName + " for locale " +
locale);
}
//
Added:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/SimpleResourceBundleFactory.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/SimpleResourceBundleFactory.java
(rev 0)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/SimpleResourceBundleFactory.java 2008-01-09
15:28:51 UTC (rev 9464)
@@ -0,0 +1,71 @@
+/******************************************************************************
+ * 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.portlet.impl.jsr168;
+
+import org.jboss.portal.common.i18n.ResourceBundleFactory;
+
+import java.util.ResourceBundle;
+import java.util.Locale;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 630 $
+ */
+public class SimpleResourceBundleFactory implements ResourceBundleFactory
+{
+
+ /** . */
+ private final ClassLoader classLoader;
+
+ /** . */
+ private final String baseName;
+
+ public SimpleResourceBundleFactory(ClassLoader classLoader, String baseName)
+ {
+ this.classLoader = classLoader;
+ this.baseName = baseName;
+ }
+
+ public ResourceBundle getBundle(Locale locale) throws IllegalArgumentException
+ {
+ if (locale == null)
+ {
+ throw new IllegalArgumentException();
+ }
+ if (baseName != null)
+ {
+ try
+ {
+ return ResourceBundle.getBundle(baseName, locale, classLoader);
+ }
+ catch (Exception e)
+ {
+ return null;
+ }
+ }
+ else
+ {
+ return null;
+ }
+ }
+}
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletConfigImpl.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletConfigImpl.java 2008-01-09
15:09:53 UTC (rev 9463)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletConfigImpl.java 2008-01-09
15:28:51 UTC (rev 9464)
@@ -23,13 +23,13 @@
package org.jboss.portal.portlet.impl.jsr168.api;
import org.jboss.portal.common.i18n.ResourceBundleManager;
+import org.jboss.portal.portlet.impl.info.ContainerPortletInfo;
import javax.portlet.PortletConfig;
import javax.portlet.PortletContext;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Locale;
-import java.util.Map;
import java.util.ResourceBundle;
/**
@@ -39,25 +39,20 @@
public class PortletConfigImpl implements PortletConfig
{
- private String portletName;
private PortletContext portletContext;
- private Map initParameters;
+ private ContainerPortletInfo info;
private ResourceBundleManager bundleMgr;
- public PortletConfigImpl(String portletName,
- PortletContext portletContext,
- Map initParameters,
- ResourceBundleManager bundleMgr)
+ public PortletConfigImpl(PortletContext portletContext, ContainerPortletInfo info,
ResourceBundleManager bundleMgr)
{
- this.portletName = portletName;
this.portletContext = portletContext;
- this.initParameters = initParameters;
+ this.info = info;
this.bundleMgr = bundleMgr;
}
public String getPortletName()
{
- return portletName;
+ return info.getName();
}
public PortletContext getPortletContext()
@@ -77,11 +72,11 @@
{
throw new IllegalArgumentException("name must not be null");
}
- return (String)initParameters.get(s);
+ return info.getInitParameter(s);
}
public Enumeration getInitParameterNames()
{
- return Collections.enumeration(initParameters.keySet());
+ return Collections.enumeration(info.getInitParameterNames());
}
}
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletPreferencesImpl.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletPreferencesImpl.java 2008-01-09
15:09:53 UTC (rev 9463)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletPreferencesImpl.java 2008-01-09
15:28:51 UTC (rev 9464)
@@ -27,9 +27,9 @@
import org.jboss.portal.common.value.Value;
import org.jboss.portal.portlet.state.PropertyChange;
import org.jboss.portal.portlet.state.PropertyContext;
-import org.jboss.portal.portlet.impl.jsr168.info.ContainerPreferenceInfo;
-import org.jboss.portal.portlet.impl.jsr168.info.ContainerPreferencesInfo;
import org.jboss.portal.portlet.info.PreferenceInfo;
+import org.jboss.portal.portlet.impl.info.ContainerPreferencesInfo;
+import org.jboss.portal.portlet.impl.info.ContainerPreferenceInfo;
import javax.portlet.PortletPreferences;
import javax.portlet.PreferencesValidator;
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletRequestImpl.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletRequestImpl.java 2008-01-09
15:09:53 UTC (rev 9463)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletRequestImpl.java 2008-01-09
15:28:51 UTC (rev 9464)
@@ -30,7 +30,8 @@
import org.jboss.portal.portlet.impl.jsr168.PortletContainerImpl;
import org.jboss.portal.portlet.impl.jsr168.PortletUtils;
import org.jboss.portal.portlet.impl.jsr168.PortletRequestAttributes;
-import org.jboss.portal.portlet.impl.jsr168.info.ContainerPreferencesInfo;
+import org.jboss.portal.portlet.impl.info.ContainerSecurityInfo;
+import org.jboss.portal.portlet.impl.info.ContainerPreferencesInfo;
import org.jboss.portal.portlet.invocation.PortletInvocation;
import org.jboss.portal.portlet.spi.RequestContext;
import org.jboss.portal.portlet.spi.SecurityContext;
@@ -107,7 +108,7 @@
int mode = this instanceof RenderRequest ? PortletPreferencesImpl.RENDER :
PortletPreferencesImpl.ACTION;
PropertyContext prefs =
(PropertyContext)invocation.getAttribute(PortletInvocation.INVOCATION_SCOPE,
PropertyContext.PREFERENCES_ATTRIBUTE);
PreferencesValidator validator = container.getPreferencesValidator();
- ContainerPreferencesInfo containerPrefs =
(ContainerPreferencesInfo)container.getInfo().getPreferences();
+ ContainerPreferencesInfo containerPrefs = container.getInfo().getPreferences();
this.preferences = new PortletPreferencesImpl(prefs, containerPrefs, validator,
mode);
}
@@ -301,13 +302,15 @@
public boolean isUserInRole(String roleName)
{
// Get the map role name to role link
- Map securityRoleRefsMap = container.getSecurityRoleRefsMap();
+ ContainerSecurityInfo securityRoleRefsMap = container.getInfo().getSecurity();
// Process the role link
- String roleLink = (String)securityRoleRefsMap.get(roleName);
+ String roleLink = securityRoleRefsMap.getRoleRef(roleName);
+
+ //
if (roleLink == null)
{
- if (securityRoleRefsMap.containsKey(roleName))
+ if (securityRoleRefsMap.containsRoleRef(roleName))
{
// The role name exist without a role link value
return securityContext.isUserInRole(roleName);
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/spi/PortletInfoFactory.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/spi/PortletInfoFactory.java 2008-01-09
15:09:53 UTC (rev 9463)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/spi/PortletInfoFactory.java 2008-01-09
15:28:51 UTC (rev 9464)
@@ -26,7 +26,6 @@
import org.jboss.portal.portlet.info.PortletInfo;
import org.jboss.portal.portlet.impl.jsr168.metadata.PortletMetaData;
import org.jboss.portal.portlet.metadata.JBossPortletMetaData;
-import org.jboss.portal.portlet.metadata.JBossApplicationMetaData;
import org.jboss.portal.common.i18n.ResourceBundleManager;
/**
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/support/info/CacheInfoSupport.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/support/info/CacheInfoSupport.java 2008-01-09
15:09:53 UTC (rev 9463)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/support/info/CacheInfoSupport.java 2008-01-09
15:28:51 UTC (rev 9464)
@@ -22,7 +22,6 @@
******************************************************************************/
package org.jboss.portal.portlet.support.info;
-import org.jboss.portal.portlet.impl.jsr168.info.ContainerCacheInfo;
import org.jboss.portal.portlet.info.CacheInfo;
/**
@@ -35,18 +34,14 @@
/** . */
private int expirationTimeMillis;
- /** . */
- private int referenceType;
-
- public CacheInfoSupport(int expirationTimeMillis, int referenceType)
+ public CacheInfoSupport(int expirationTimeMillis)
{
this.expirationTimeMillis = expirationTimeMillis;
- this.referenceType = referenceType;
}
public CacheInfoSupport()
{
- this(0, ContainerCacheInfo.REF_STRONG);
+ this(0);
}
public int getExpirationSecs()
@@ -58,14 +53,4 @@
{
this.expirationTimeMillis = expirationTimeMillis;
}
-
- public int getReferenceType()
- {
- return referenceType;
- }
-
- public void setReferenceType(int referenceType)
- {
- this.referenceType = referenceType;
- }
}
Modified:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/ContentTypesTestCase.java
===================================================================
---
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/ContentTypesTestCase.java 2008-01-09
15:09:53 UTC (rev 9463)
+++
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/ContentTypesTestCase.java 2008-01-09
15:28:51 UTC (rev 9464)
@@ -24,9 +24,9 @@
package org.jboss.portal.test.portlet;
import org.jboss.portal.Mode;
-import org.jboss.portal.portlet.impl.jsr168.info.ContentTypes;
import org.jboss.portal.portlet.impl.jsr168.metadata.ContentTypeMetaData;
import org.jboss.portal.portlet.impl.jsr168.metadata.ContentTypesMetaData;
+import org.jboss.portal.portlet.impl.info.ContainerCapabilitiesInfo;
import java.util.Collection;
@@ -38,14 +38,14 @@
* @version $Revision: 6720 $
* @since 2.4
*/
-@Test
+// @Test
public class ContentTypesTestCase
{
- private ContentTypes contentTypes;
+ private ContainerCapabilitiesInfo contentTypes;
public ContentTypesTestCase()
{
- contentTypes = new ContentTypes();
+ contentTypes = new ContainerCapabilitiesInfo();
ContentTypesMetaData md = new ContentTypesMetaData();
md.addContentType(new ContentTypeMetaData("text/html", new
Mode[]{Mode.EDIT, Mode.HELP, Mode.VIEW}));
md.addContentType(new ContentTypeMetaData("text/xml", new
Mode[]{Mode.VIEW}));
@@ -55,8 +55,6 @@
// should this be allowed?
md.addContentType(new ContentTypeMetaData("pipo/pipo", new Mode[]{}));
-
- contentTypes.setMetadata(md);
}
@Test
Modified:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/info/PreferenceInfoTest.java
===================================================================
---
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/info/PreferenceInfoTest.java 2008-01-09
15:09:53 UTC (rev 9463)
+++
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/info/PreferenceInfoTest.java 2008-01-09
15:28:51 UTC (rev 9464)
@@ -23,8 +23,8 @@
package org.jboss.portal.test.portlet.info;
import org.jboss.portal.portlet.container.PortletContainer;
-import org.jboss.portal.portlet.impl.jsr168.info.ContainerPreferencesInfo;
-import org.jboss.portal.portlet.impl.jsr168.info.ContainerPreferenceInfo;
+import org.jboss.portal.portlet.impl.info.ContainerPreferenceInfo;
+import org.jboss.portal.portlet.impl.info.ContainerPreferencesInfo;
import org.jboss.portal.portlet.info.PortletInfo;
import static org.jboss.unit.api.Assert.*;
Modified: modules/portlet/trunk/test/pom.xml
===================================================================
--- modules/portlet/trunk/test/pom.xml 2008-01-09 15:09:53 UTC (rev 9463)
+++ modules/portlet/trunk/test/pom.xml 2008-01-09 15:28:51 UTC (rev 9464)
@@ -338,9 +338,8 @@
<property
name="dependency.portal-portlet-tests.test-jar"
value="${maven.dependency.org.jboss.portal.portlet.portlet.tests.test-jar.path}"/>
<property name="dependency.cargo-core-uberjar.jar"
value="${maven.dependency.cargo.cargo-core-uberjar.jar.path}"/>
<property name="dependency.cargo-ant.jar"
value="${maven.dependency.cargo.cargo-ant.jar.path}"/>
+ <property name="dependency.jaxb-api.jar"
value="${maven.dependency.javax.xml.bind.jaxb-api.jar.path}"/>
- <echo message="common:
${dependency.portal-portlet-tests.test-jar}"/>
-
<ant antfile="${basedir}/src/test/build.xml">
<target name="tests"/>
</ant>
Modified: modules/portlet/trunk/test/src/test/build.xml
===================================================================
--- modules/portlet/trunk/test/src/test/build.xml 2008-01-09 15:09:53 UTC (rev 9463)
+++ modules/portlet/trunk/test/src/test/build.xml 2008-01-09 15:28:51 UTC (rev 9464)
@@ -324,9 +324,10 @@
<path id="mc.portal-portlet">
<pathelement path="${dependency.portal-portlet.jar}"/>
</path>
+ <path id="mc.jaxb-api">
+ <pathelement path="${dependency.jaxb-api.jar}"/>
+ </path>
-
-
<!-- JBoss 4.2 portlet-test.war -->
<copy
todir="${target}/test-classes/jboss-4.2/portlet-test-war/WEB-INF/lib"
flatten="true">
@@ -383,6 +384,7 @@
<path refid="mc.jboss_xb"/>
<path refid="mc.jboss_aop"/>
<path refid="mc.jboss_microcontainer"/>
+ <path refid="mc.jaxb-api"/>
</copy>
<mkdir dir="${test.temp.lib}/tomcat-6.0"/>
Modified:
modules/portlet/trunk/test/src/test/java/org/jboss/portal/portlet/test/PortletApplicationDeployer.java
===================================================================
---
modules/portlet/trunk/test/src/test/java/org/jboss/portal/portlet/test/PortletApplicationDeployer.java 2008-01-09
15:09:53 UTC (rev 9463)
+++
modules/portlet/trunk/test/src/test/java/org/jboss/portal/portlet/test/PortletApplicationDeployer.java 2008-01-09
15:28:51 UTC (rev 9464)
@@ -27,8 +27,12 @@
import org.jboss.portal.web.WebAppLifeCycleEvent;
import org.jboss.portal.web.WebApp;
import org.jboss.portal.web.ServletContainer;
-import org.jboss.portal.portlet.impl.jsr168.metadata.PortletApplicationMetaData;
-import org.jboss.portal.portlet.test.deployment.PortletApplicationMetaDataFactory;
+import static
org.jboss.portal.portlet.impl.metadata.PortletMetaDataConstants.PORTLET_JSR_168_NS;
+import static
org.jboss.portal.portlet.impl.metadata.PortletMetaDataConstants.PORTLET_JSR_286_NS;
+import org.jboss.portal.portlet.impl.metadata.PortletApplication10MetaData;
+import
org.jboss.portal.portlet.test.metadata.impl.AnnotationPortletApplication20MetaData;
+import
org.jboss.portal.portlet.test.metadata.impl.AnnotationPortletApplication10MetaData;
+import org.jboss.portal.portlet.test.metadata.factory.PortletApplicationModelFactory;
import org.jboss.portal.portlet.test.deployment.ValueTrimmingFilter;
import org.jboss.portal.portlet.container.PortletApplication;
import org.jboss.portal.portlet.container.PortletContainer;
@@ -41,6 +45,8 @@
import org.jboss.xb.binding.Unmarshaller;
import org.jboss.xb.binding.UnmarshallerFactory;
import org.jboss.xb.binding.JBossXBException;
+import org.jboss.xb.binding.sunday.unmarshalling.SingletonSchemaResolverFactory;
+import org.jboss.xb.binding.sunday.unmarshalling.DefaultSchemaResolver;
import org.apache.log4j.Logger;
import java.util.Map;
@@ -56,6 +62,31 @@
public class PortletApplicationDeployer implements WebAppListener,
KernelControllerContextAware
{
+ /** The schema resolver factory. */
+ private static SingletonSchemaResolverFactory factory;
+
+ /** The schema resolver. */
+ private static DefaultSchemaResolver resolver;
+
+ static
+ {
+ try
+ {
+ factory = SingletonSchemaResolverFactory.getInstance();
+ resolver = (DefaultSchemaResolver) factory.getSchemaBindingResolver();
+
+ /** SchemaResolver */
+ resolver.addSchemaLocation(PORTLET_JSR_168_NS,
"portlet-app_1_0.xsd");
+ resolver.addSchemaLocation(PORTLET_JSR_286_NS,
"portlet-app_2_0.xsd");
+ resolver.addClassBinding(PORTLET_JSR_286_NS,
AnnotationPortletApplication20MetaData.class);
+ resolver.addClassBinding(PORTLET_JSR_168_NS,
AnnotationPortletApplication10MetaData.class);
+ }
+ catch (Exception e)
+ {
+ throw new Error(e);
+ }
+ }
+
/** . */
private Logger log = Logger.getLogger(PortletApplicationDeployer.class);
@@ -115,13 +146,25 @@
if (event instanceof WebAppLifeCycleEvent)
{
WebAppLifeCycleEvent lifeCycleEvent = (WebAppLifeCycleEvent)event;
+ String cp = event.getWebApp().getContextPath();
switch(lifeCycleEvent.getType())
{
case WebAppLifeCycleEvent.ADDED:
+ log.debug("Going to install war file" + cp);
add(event.getWebApp());
+ log.debug("Installed war file" + cp);
break;
case WebAppLifeCycleEvent.REMOVED:
- remove(event.getWebApp());
+ try
+ {
+ log.debug("Going to uninstall war file" + cp);
+ remove(event.getWebApp());
+ log.debug("Uninstalled war file" + cp);
+ }
+ catch (Throwable e)
+ {
+ log.error("Uninstalled war file " + cp + " with an
error", e);
+ }
break;
}
}
@@ -133,7 +176,7 @@
webApp.getServletContext().setAttribute("TestDriverServer", driver);
//
- PortletApplicationMetaData metaData = buildPortletApplicationMetaData(webApp);
+ PortletApplication10MetaData metaData = buildPortletApplicationMetaData(webApp);
if (metaData != null)
{
ClassLoader oldCL = Thread.currentThread().getContextClassLoader();
@@ -202,7 +245,7 @@
classLoader = null;
}
- private PortletApplicationMetaData buildPortletApplicationMetaData(WebApp webApp)
+ private PortletApplication10MetaData buildPortletApplicationMetaData(WebApp webApp)
{
try
{
@@ -213,11 +256,22 @@
try
{
in = IOTools.safeBufferedWrapper(url.openStream());
- PortletApplicationMetaDataFactory factory = new
PortletApplicationMetaDataFactory();
+
+ // Validate
Unmarshaller unmarshaller =
UnmarshallerFactory.newInstance().newUnmarshaller();
- PortletApplicationMetaData portletAppMD =
(PortletApplicationMetaData)unmarshaller.unmarshal(in, new ValueTrimmingFilter(factory),
null);
- portletAppMD.setId(webApp.getContextPath());
- return portletAppMD;
+ unmarshaller.setNamespaceAware(true);
+ unmarshaller.setSchemaValidation(false);
+ unmarshaller.setValidation(false);
+
+ //
+ PortletApplicationModelFactory factory = new
PortletApplicationModelFactory();
+
+ // Unmarshal
+ PortletApplication10MetaData portletApplicationMD =
(PortletApplication10MetaData)unmarshaller.unmarshal(in, new ValueTrimmingFilter(factory),
null);
+ portletApplicationMD.setId(webApp.getContextPath());
+
+ //
+ return portletApplicationMD;
}
finally
{
Modified:
modules/portlet/trunk/test/src/test/java/org/jboss/portal/portlet/test/PortletApplicationDeployment.java
===================================================================
---
modules/portlet/trunk/test/src/test/java/org/jboss/portal/portlet/test/PortletApplicationDeployment.java 2008-01-09
15:09:53 UTC (rev 9463)
+++
modules/portlet/trunk/test/src/test/java/org/jboss/portal/portlet/test/PortletApplicationDeployment.java 2008-01-09
15:28:51 UTC (rev 9464)
@@ -25,15 +25,18 @@
import org.jboss.portal.portlet.container.PortletApplicationContext;
import org.jboss.portal.portlet.impl.jsr168.PortletApplicationImpl;
import org.jboss.portal.portlet.impl.jsr168.PortletContainerImpl;
-import org.jboss.portal.portlet.impl.jsr168.metadata.PortletApplicationMetaData;
-import org.jboss.portal.portlet.impl.jsr168.metadata.PortletMetaData;
+import org.jboss.portal.portlet.impl.jsr168.SimpleResourceBundleFactory;
import org.jboss.portal.portlet.impl.jsr168.spi.PortletAPIFactory;
-import org.jboss.portal.portlet.impl.jsr168.spi.PortletInfoFactory;
+import org.jboss.portal.portlet.impl.metadata.PortletApplication10MetaData;
+import org.jboss.portal.portlet.impl.metadata.portlet.PortletMetaData;
+import org.jboss.portal.portlet.impl.info.ContainerPortletInfo;
+import org.jboss.portal.portlet.impl.info.ContainerPortletInfoBuilder;
import org.jboss.portal.portlet.metadata.JBossApplicationMetaData;
-import org.jboss.portal.portlet.metadata.JBossPortletMetaData;
import org.jboss.portal.web.WebApp;
import org.jboss.portal.common.util.Tools;
import org.jboss.portal.common.NotYetImplemented;
+import org.jboss.portal.common.i18n.ResourceBundleFactory;
+import org.jboss.portal.common.i18n.ResourceBundleManager;
import org.jboss.kernel.Kernel;
import org.jboss.kernel.spi.dependency.KernelController;
import org.jboss.kernel.spi.dependency.KernelControllerContext;
@@ -53,8 +56,9 @@
import javax.servlet.ServletContext;
import java.util.List;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedList;
import java.util.Iterator;
-import java.util.Collections;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -73,49 +77,65 @@
private final WebApp webApp;
/** . */
- private final PortletApplicationMetaData metaData;
+ private final PortletApplication10MetaData metaData;
/** . */
+ private final LinkedList<String> installed;
+
+ /** . */
private KernelControllerContext portletApplicationControllerContext;
/** . */
- private List portletContainerControllerContexts = new ArrayList();
+ private List<KernelControllerContext> portletContainerControllerContexts = new
ArrayList<KernelControllerContext>();
- public PortletApplicationDeployment(Kernel kernel, WebApp webApp,
PortletApplicationMetaData metaData)
+ public PortletApplicationDeployment(Kernel kernel, WebApp webApp,
PortletApplication10MetaData metaData)
{
this.kernel = kernel;
this.webApp = webApp;
this.metaData = metaData;
this.log = Logger.getLogger(PortletApplicationDeployment.class + "." +
webApp.getContextPath().replace('.', '_'));
+ this.installed = new LinkedList<String>();
}
void start()
{
- String id = "PortletApplication[" + webApp.getContextPath() +
"]";
log.debug("Starting installation");
//
KernelController controller = kernel.getController();
//
- for (Iterator i = metaData.getPortlets().iterator(); i.hasNext();)
+ String portletApplicationId = "PortletApplication[" +
webApp.getContextPath() + "]";
+
+ //
+ for (PortletMetaData portletMetaData : metaData.getPortlets().values())
{
- PortletMetaData portletMetaData = (PortletMetaData)i.next();
- String portletContainerId = "PortletContainer[" +
webApp.getContextPath() + "," + portletMetaData.getName() + "]";
+ // Create resource bundle manager
+ String baseName = portletMetaData.getResourceBundle();
+ ResourceBundleFactory rbf = new
SimpleResourceBundleFactory(webApp.getClassLoader(), baseName);
+ ResourceBundleManager bundleMgr = new ResourceBundleManager(null, rbf);
+
+ // Build container info
+ ContainerPortletInfo containerInfo = new
ContainerPortletInfoBuilder(portletMetaData, bundleMgr).build();
+
+ //
+ String portletContainerId = "PortletContainer[" +
webApp.getContextPath() + "," + portletMetaData.getPortletName() +
"]";
+
+ //
AbstractBeanMetaData bmd = new AbstractBeanMetaData(portletContainerId,
PortletContainerImpl.class.getName());
AbstractConstructorMetaData ctormd = new AbstractConstructorMetaData();
- ctormd.setParameters(Tools.toList((ParameterMetaData)new
AbstractParameterMetaData(PortletMetaData.class.getName(), portletMetaData), new
AbstractParameterMetaData(JBossPortletMetaData.class.getName(), (Object)null)));
+ ctormd.setParameters(Tools.toList((ParameterMetaData)new
AbstractParameterMetaData(ContainerPortletInfo.class.getName(), containerInfo), new
AbstractParameterMetaData(ResourceBundleManager.class.getName(), bundleMgr)));
bmd.setConstructor(ctormd);
bmd.setStart(new AbstractLifecycleMetaData("start"));
bmd.setStop(new AbstractLifecycleMetaData("stop"));
- bmd.setProperties(Collections.singleton((PropertyMetaData)new
AbstractPropertyMetaData("application", new
AbstractDependencyValueMetaData(id))));
+ bmd.setProperties(Collections.singleton((PropertyMetaData)new
AbstractPropertyMetaData("application", new
AbstractDependencyValueMetaData(portletApplicationId))));
AbstractInstallMetaData deployerinstallmd = new AbstractInstallMetaData();
deployerinstallmd.setBean("PortletApplicationDeployer");
deployerinstallmd.setParameters(Collections.singletonList((ParameterMetaData)new
AbstractParameterMetaData(new ThisValueMetaData())));
deployerinstallmd.setMethodName("installPortletContainer");
AbstractInstallMetaData applicationinstallmd = new AbstractInstallMetaData();
- applicationinstallmd.setBean(id);
+ applicationinstallmd.setBean(portletApplicationId);
applicationinstallmd.setParameters(Collections.singletonList((ParameterMetaData)new
AbstractParameterMetaData(new ThisValueMetaData())));
applicationinstallmd.setMethodName("addContainer");
bmd.setInstalls(Tools.toList((InstallMetaData)deployerinstallmd,
applicationinstallmd));
@@ -124,30 +144,30 @@
deployeruninstallmd.setParameters(Collections.singletonList((ParameterMetaData)new
AbstractParameterMetaData(new ThisValueMetaData())));
deployeruninstallmd.setMethodName("uninstallPortletContainer");
AbstractInstallMetaData applicationuninstallmd = new AbstractInstallMetaData();
- applicationuninstallmd.setBean(id);
+ applicationuninstallmd.setBean(portletApplicationId);
applicationuninstallmd.setParameters(Collections.singletonList((ParameterMetaData)new
AbstractParameterMetaData(new ThisValueMetaData())));
applicationuninstallmd.setMethodName("removeContainer");
bmd.setUninstalls(Tools.toList((InstallMetaData)deployeruninstallmd,
applicationuninstallmd));
try
{
+ installed.addFirst(portletContainerId);
KernelControllerContext portletContainerControllerContext =
kernel.getController().install(bmd);
portletContainerControllerContexts.add(portletContainerControllerContext);
}
catch (Throwable t)
{
- log.debug("Cannot install portlet container " +
portletMetaData.getName() + " produced an error", t);
+ log.debug("Cannot install portlet container " +
portletMetaData.getPortletName() + " produced an error", t);
}
}
//
- AbstractBeanMetaData bmd = new AbstractBeanMetaData(id,
PortletApplicationImpl.class.getName());
+ AbstractBeanMetaData bmd = new AbstractBeanMetaData(portletApplicationId,
PortletApplicationImpl.class.getName());
AbstractConstructorMetaData ctormd = new AbstractConstructorMetaData();
ctormd.setParameters(Tools.toList(
- (ParameterMetaData)new
AbstractParameterMetaData(PortletApplicationMetaData.class.getName(), metaData),
+ (ParameterMetaData)new
AbstractParameterMetaData(PortletApplication10MetaData.class.getName(), metaData),
new AbstractParameterMetaData(JBossApplicationMetaData.class.getName(),
(Object)null),
new AbstractParameterMetaData(PortletApplicationContext.class.getName(), this),
- new AbstractParameterMetaData(PortletAPIFactory.class.getName(), new
AbstractDependencyValueMetaData("PortletAPIFactory")),
- new AbstractParameterMetaData(PortletInfoFactory.class.getName(), new
AbstractDependencyValueMetaData("PortletInfoFactory"))));
+ new AbstractParameterMetaData(PortletAPIFactory.class.getName(), new
AbstractDependencyValueMetaData("PortletAPIFactory"))));
bmd.setConstructor(ctormd);
bmd.setStart(new AbstractLifecycleMetaData("start"));
bmd.setStop(new AbstractLifecycleMetaData("stop"));
@@ -165,6 +185,7 @@
//
try
{
+ installed.addFirst(portletApplicationId);
portletApplicationControllerContext = controller.install(bmd);
}
catch (Throwable throwable)
@@ -173,9 +194,8 @@
}
logBeanFailure(portletApplicationControllerContext);
- for (Iterator i = portletContainerControllerContexts.iterator(); i.hasNext();)
+ for (KernelControllerContext portletContainerControllerContext :
portletContainerControllerContexts)
{
- KernelControllerContext portletContainerControllerContext =
(KernelControllerContext)i.next();
logBeanFailure(portletContainerControllerContext);
}
}
@@ -192,17 +212,28 @@
void stop()
{
log.debug("Stopping installation");
- if (portletApplicationControllerContext != null)
+
+ KernelController controller = kernel.getController();
+
+ for (Iterator<String> i = installed.iterator();i.hasNext();)
{
- KernelController controller = kernel.getController();
- controller.uninstall(portletApplicationControllerContext.getName());
- portletApplicationControllerContext = null;
- for (Iterator i = portletContainerControllerContexts.iterator(); i.hasNext();)
+ String beanName = i.next();
+ i.remove();
+ try
{
- KernelControllerContext portletContainerControllerContext =
(KernelControllerContext)i.next();
- controller.uninstall(portletContainerControllerContext.getName());
+ controller.uninstall(beanName);
}
+ catch (Throwable t)
+ {
+ // MC throws Error .... need to catch them here
+
+ log.error("Bean " + beanName + " undeployment threw
something", t);
+ }
}
+
+ //
+ portletApplicationControllerContext = null;
+ portletContainerControllerContexts = null;
}
public ServletContext getServletContext()
Modified:
modules/portlet/trunk/test/src/test/resources/portlet-test-war/WEB-INF/jboss-beans.xml
===================================================================
---
modules/portlet/trunk/test/src/test/resources/portlet-test-war/WEB-INF/jboss-beans.xml 2008-01-09
15:09:53 UTC (rev 9463)
+++
modules/portlet/trunk/test/src/test/resources/portlet-test-war/WEB-INF/jboss-beans.xml 2008-01-09
15:28:51 UTC (rev 9464)
@@ -49,9 +49,6 @@
<bean name="PortletAPIFactory"
class="org.jboss.portal.portlet.impl.jsr168.PortletAPIFactoryImpl">
</bean>
- <bean name="PortletInfoFactory"
class="org.jboss.portal.portlet.impl.jsr168.PortletInfoFactoryImpl">
- </bean>
-
<!-- The ServletContainerFactory -->
<bean name="ServletContainerFactory"
class="org.jboss.portal.web.impl.DefaultServletContainerFactory">
<constructor
factoryClass="org.jboss.portal.web.impl.DefaultServletContainerFactory"
factoryMethod="getInstance"/>
Modified: modules/portlet/trunk/test/src/test/resources/test/local-jboss-unit.xml
===================================================================
--- modules/portlet/trunk/test/src/test/resources/test/local-jboss-unit.xml 2008-01-09
15:09:53 UTC (rev 9463)
+++ modules/portlet/trunk/test/src/test/resources/test/local-jboss-unit.xml 2008-01-09
15:28:51 UTC (rev 9464)
@@ -5,9 +5,6 @@
xsi:schemaLocation="urn:jboss:jboss-unit:1.0 jboss-unit_1_0.xsd">
<pojo>
<test>
- <class
name="org.jboss.portal.portlet.test.deployment.UnmarshallerTestCase"/>
- </test>
- <test>
<class
name="org.jboss.portal.portlet.test.url.DecoderTestCase">
</class>
</test>