Hi I am using the Grails filter plugin
I am trying to define a default filter as below
// Defined inside the Book entity
static hibernateFilters = {
After a little digging around I have come up with a workaround for the above problem
I basically extend the GrailsOpenSessionInViewFilter class
public class OpenSessionInViewFilterExt extends GrailsOpenSessionInViewFilter{
@Override
protected Session getSession(SessionFactory sessionFactory) throws DataAccessResourceFailureException {
Session session = super.getSession(sessionFactory);
for (Object filterName : DefaultHibernateFiltersHolder.getDefaultFilters()) {
session.enableFilter((String) filterName);
}
return session;
}
}
I also have a entry in the web.xml
<filter>
<filter-name>OpenSessionInViewFilterExt</filter-name>
<filter-class>com.nthdimenzion.hibernate.ext.OpenSessionInViewFilterExt</filter-class>
</filter>
<filter-mapping>
<filter-name>OpenSessionInViewFilterExt</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Now each time a new session is created the default filters are enabled for it. I think this should work, however it'll be better if some change can be made in the zkgrails plugin or the hibernate filters plugin so that the two can co-exist in a single application :)
Thanks
In my Grails 2.5.X app I enable the hibernate filters in a web filter, i.e. I have this code in grails-app/conf/Filters.groovy
class Filters {
publishedContentFilter(uri: '/**'){
before = {
// enable the 'published filter in the Condition domain class
Condition.enableHibernateFilter('published')
}
}
}
In the integration tests in the plugin itself, the filters are enabled in the setup method of the test class.