[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