[jboss-user] [JBoss Seam] - Re: Using Seam for porlet communication
jarkko@jab.fi
do-not-reply at jboss.com
Thu Sep 21 04:09:13 EDT 2006
This allows intra/inter portlet to portlet communication inside Seam. Basically everything that goes to Session scope is also put to both PORTLET_SCOPE(portlet private, only the portlet putting has access to it) and APPLICATION_SCOPE (portal wide, every portlet inside portal sees it). A more elegant/resource wise solution might be better, but it is not actually trivial without adding new configuration options.
/*
| * JBoss, Home of Professional Open Source
| *
| * Distributable under LGPL license.
| * See terms of license at gnu.org.
| */
| package org.jboss.seam.portlet;
|
| import java.util.Collections;
| import java.util.Enumeration;
| import java.util.List;
|
| import javax.portlet.PortletSession;
|
| import org.apache.commons.collections.ListUtils;
| import org.jboss.seam.contexts.ContextAdaptor;
|
| /**
| * @author <a href="mailto:theute at jboss.org">Thomas Heute </a>
| * @version $Revision: 1.4 $
| */
| public class PortletSessionImpl extends ContextAdaptor {
|
| private PortletSession session;
|
| public PortletSessionImpl(PortletSession session) {
| this.session = session;
| }
|
| public Object getAttribute(String key) {
| // search for key first in PORTLET_SCOPE
| Object o = session.getAttribute(key);
| Object po = null;
| // if nothing is found there try APPLICATION_SCOPE
| if (o == null) {
| po = session.getAttribute(key, PortletSession.APPLICATION_SCOPE);
| return po;
| } else {
| // TODO: just do some cleaning up or maybe not
| // session.removeAttribute(key, PortletSession.APPLICATION_SCOPE);
| }
|
| return o;
| }
|
| public void removeAttribute(String key) {
| session.removeAttribute(key);
| session.removeAttribute(key, PortletSession.APPLICATION_SCOPE);
| }
|
| public Enumeration getAttributeNames() {
| Enumeration portletAttributeNamesEnum = session.getAttributeNames();
| Enumeration portalAttributeNamesEnum = session
| .getAttributeNames(PortletSession.APPLICATION_SCOPE);
|
| List portletAttributeNames = Collections
| .list(portletAttributeNamesEnum);
| List portalAttributeNames = Collections.list(portalAttributeNamesEnum);
|
| // TODO: Is this correct?
| List allNames = ListUtils.sum(portalAttributeNames,
| portalAttributeNames);
|
| return Collections.enumeration(allNames);
| }
|
| public void setAttribute(String key, Object value) {
| session.setAttribute(key, value);
| session.setAttribute(key, value, PortletSession.APPLICATION_SCOPE);
| }
|
| public void invalidate() {
| session.invalidate();
| }
|
| }
|
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3973176#3973176
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3973176
More information about the jboss-user
mailing list