2 Replies Latest reply on Sep 16, 2010 10:46 AM by dardan

    Retrieving PortletPreferences inside of a seam component?

    dardan

      Hi 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