Retrieving PortletPreferences inside of a seam component?
dardan Sep 7, 2010 11:52 AMHi All,
I am trying to retrieve PortletPreferences from a seam component.
@Stateless
@Name("dispatcherContract")
@PortletScope(PortletScope.ScopeType.APPLICATION_SCOPE)
public class DispatcherContractAction implements DispatcherContract {
/**
* Use this method to send a user to a location based on their role.
*
* @return the type of user
*/
public String dispatch() {
String role= null;
String result = "resident";
PortletRequest portletRequest = (PortletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
PortletPreferences portletPreferences = portletRequest.getPreferences();
role = portletPreferences.getValue("role", null);
portletRequest = null;
System.out.println("Role is: " + role);
if(role != null) {
if(role.equals("Contract - Resident")) {
result = "resident";
}else if(role.equals("Contract - Staff")) {
result = "staff";
}else if(role.equals("Contract - Admin")) {
result = "admin";
}
}
return result;
}
@Stateless @Name("dispatcherContract") @PortletScope(PortletScope.ScopeType.APPLICATION_SCOPE) public class DispatcherContractAction implements DispatcherContract { /** * Use this method to send a user to a location based on their role. * * @return the type of user */ public String dispatch() { String role= null; String result = "resident"; PortletRequest portletRequest = (PortletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest(); PortletPreferences portletPreferences = portletRequest.getPreferences(); role = portletPreferences.getValue("role", null); if(role != null) { if(role.equals("Contract - Resident")) { result = "resident"; }else if(role.equals("Contract - Staff")) { result = "staff"; }else if(role.equals("Contract - Admin")) { result = "admin"; } } return result; }
dispatcher is called from pages.xml
<?xml version="1.0" encoding="UTF-8"?> <pages xmlns="http://jboss.com/products/seam/pages" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.0.xsd" no-conversation-view-id="/facelets/error.xhtml" login-view-id="/facelets/index.xhtml"> <page view-id="/facelets/index.xhtml"> <action execute="#{dispatcherContract.dispatch}" /> <navigation from-action="#{dispatcherContract.dispatch}"> <rule if-outcome="resident"> <render view-id="/facelets/welcome.xhtml"/> </rule> .............
There are no error when I use portletbride version 2.0.0.CR1. However, since I upgraded to portletbridge 2.0.0.Final, the following error has been thrown whenever I logout from the portal (jboss epp 4.3):
10:34:56,687 ERROR [ContainerBase] Session event listener threw exception java.lang.IllegalStateException: Please end the HttpSession via org.jboss.seam.web.Session.instance().invalidate() at org.jboss.seam.contexts.Lifecycle.endSession(Lifecycle.java:267) at org.jboss.seam.contexts.ServletLifecycle.endSession(ServletLifecycle.java:160) at org.jboss.seam.servlet.SeamListener.sessionDestroyed(SeamListener.java:59) at org.apache.catalina.session.StandardSession.expire(StandardSession.java:702) at org.apache.catalina.session.StandardSession.expire(StandardSession.java:660) at org.apache.catalina.session.StandardSession.invalidate(StandardSession.java:1111) at org.apache.catalina.session.StandardSessionFacade.invalidate(StandardSessionFacade.java:150) at org.jboss.portal.server.aspects.server.SignOutInterceptor$Invalidation.doCallback(SignOutInterceptor.java:192) at org.jboss.portal.web.command.CommandDispatcher$CallbackCommand.execute(CommandDispatcher.java:74) at sun.reflect.GeneratedMethodAccessor565.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:592) at org.jboss.portal.web.command.CommandServlet.doGet(CommandServlet.java:130) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:687) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:590) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:505) at org.jboss.portal.web.command.CommandServlet.include(CommandServlet.java:79) at org.jboss.portal.web.command.CommandDispatcher.include(CommandDispatcher.java:50) at org.jboss.portal.web.jboss.JBossWebContext.include(JBossWebContext.java:66) at org.jboss.portal.web.impl.DefaultServletContainer.include(DefaultServletContainer.java:190) at org.jboss.portal.server.aspects.server.SignOutInterceptor.after(SignOutInterceptor.java:148) at org.jboss.portal.server.aspects.server.SignOutInterceptor.invoke(SignOutInterceptor.java:102) at org.jboss.portal.server.ServerInterceptor.invoke(ServerInterceptor.java:38) at org.jboss.portal.common.invocation.Invocation.invokeNext(Invocation.java:115) at org.jboss.portal.core.impl.api.user.UserEventBridgeTriggerInterceptor.invoke(UserEventBridgeTriggerInterceptor.java:65) at org.jboss.portal.server.ServerInterceptor.invoke(ServerInterceptor.java:38) at org.jboss.portal.common.invocation.Invocation.invokeNext(Invocation.java:115) at org.jboss.portal.core.aspects.server.IdentityCacheInterceptor.invoke(IdentityCacheInterceptor.java:68) at org.jboss.portal.server.ServerInterceptor.invoke(ServerInterceptor.java:38) at org.jboss.portal.common.invocation.Invocation.invokeNext(Invocation.java:115) at org.jboss.portal.core.aspects.server.TransactionInterceptor.org$jboss$portal$core$aspects$server$TransactionInterceptor$invoke$aop(TransactionInterceptor.java:49) at org.jboss.portal.core.aspects.server.TransactionInterceptor$invoke_N5143606530999904530.invokeNext(TransactionInterceptor$invoke_N5143606530999904530.java) at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79) at org.jboss.aspects.tx.TxInterceptor$RequiresNew.invoke(TxInterceptor.java:253) at org.jboss.portal.core.aspects.server.TransactionInterceptor$invoke_N5143606530999904530.invokeNext(TransactionInterceptor$invoke_N5143606530999904530.java) at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79) at org.jboss.aspects.tx.TxInterceptor$RequiresNew.invoke(TxInterceptor.java:262) at org.jboss.portal.core.aspects.server.TransactionInterceptor$invoke_N5143606530999904530.invokeNext(TransactionInterceptor$invoke_N5143606530999904530.java) at org.jboss.portal.core.aspects.server.TransactionInterceptor.invoke(TransactionInterceptor.java) at org.jboss.portal.server.ServerInterceptor.invoke(ServerInterceptor.java:38) at org.jboss.portal.common.invocation.Invocation.invokeNext(Invocation.java:115) at org.jboss.portal.server.aspects.LockInterceptor$InternalLock.invoke(LockInterceptor.java:69) at org.jboss.portal.server.aspects.LockInterceptor.invoke(LockInterceptor.java:130) at org.jboss.portal.common.invocation.Invocation.invokeNext(Invocation.java:115) at org.jboss.portal.common.invocation.Invocation.invoke(Invocation.java:157) at org.jboss.portal.server.servlet.PortalServlet.service(PortalServlet.java:252) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:173) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:595)
Any ideas whether such a error is due to some internal changes in the portletbridge 2.0.0.Final or...? I really appreciate your help and input.
Thanks,
-D