[jboss-cvs] jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/dao ...

Christian Bauer christian at hibernate.org
Fri Nov 9 10:04:56 EST 2007


  User: cbauer  
  Date: 07/11/09 10:04:56

  Added:       examples/wiki/src/main/org/jboss/seam/wiki/core/dao 
                        WikiManagedPersistenceContext.java
  Log:
  Workaround for resetting persistence context filter arguments after login
  
  Revision  Changes    Path
  1.1      date: 2007/11/09 15:04:56;  author: cbauer;  state: Exp;jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/dao/WikiManagedPersistenceContext.java
  
  Index: WikiManagedPersistenceContext.java
  ===================================================================
  package org.jboss.seam.wiki.core.dao;
  
  import org.jboss.seam.persistence.ManagedPersistenceContext;
  import org.jboss.seam.persistence.Filter;
  import org.jboss.seam.persistence.PersistenceProvider;
  import org.jboss.seam.annotations.Observer;
  
  /**
   * Forces re-evaluation of filter parameter for managed persistence contexts.
   * <p>
   * This is called after a user logs in, so that the <tt>#{currentAccessLevel}</tt>
   * filter argument is evaluated again, <i>on the already open</i> persistence context
   * (which has the filter argument from before login). See the filter definition in
   * components.xml.
   * <p>
   * The risk with re-setting filters on an existing persistence context is that things
   * might be cached already that should be filtered out. Now, in our case that works
   * fine because a login always means that the current user gains privileges and
   * raises his/her access level, i.e. sees a superset of the data he has seen before.
   * 
   * @author Christian Bauer
   */
  public class WikiManagedPersistenceContext extends ManagedPersistenceContext {
  
      @Observer(value = {"User.loggedIn", "User.loggedInBasicHttp"}, create = false)
      public void resetFilter() {
          try {
              PersistenceProvider persistenceProvider = PersistenceProvider.instance();
              for (Filter f : getFilters()) {
                  if (f.isFilterEnabled()) {
                      persistenceProvider.enableFilter(f, getEntityManager());
                  }
              }
          } catch (Exception ex) {
              throw new RuntimeException(ex);
          }
      }
  }
  
  
  



More information about the jboss-cvs-commits mailing list