From: <die...@us...> - 2010-09-09 16:52:37
|
Revision: 3005 http://openutils.svn.sourceforge.net/openutils/?rev=3005&view=rev Author: diego_schivo Date: 2010-09-09 16:52:31 +0000 (Thu, 09 Sep 2010) Log Message: ----------- CRIT-25 ACL query decoration restricted to criteria queries Modified Paths: -------------- trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/advanced/impl/QueryExecutorHelper.java trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/lucene/AclSearchIndex.java Modified: trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/advanced/impl/QueryExecutorHelper.java =================================================================== --- trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/advanced/impl/QueryExecutorHelper.java 2010-09-09 12:55:16 UTC (rev 3004) +++ trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/advanced/impl/QueryExecutorHelper.java 2010-09-09 16:52:31 UTC (rev 3005) @@ -49,6 +49,16 @@ */ private static Logger log = LoggerFactory.getLogger(QueryExecutorHelper.class); + private static ThreadLocal<Boolean> executing = new ThreadLocal<Boolean>() + { + + @Override + protected Boolean initialValue() + { + return Boolean.FALSE; + }; + }; + private QueryExecutorHelper() { // don't instantiate @@ -104,14 +114,21 @@ Query.XPATH); } - return new AdvancedResultImpl( - (QueryResultImpl) query.execute(), - maxResults, - pageNumberStartingFromOne, - stmt, - hm, - spellCheckerQuery); - + try + { + executing.set(Boolean.TRUE); + return new AdvancedResultImpl( + (QueryResultImpl) query.execute(), + maxResults, + pageNumberStartingFromOne, + stmt, + hm, + spellCheckerQuery); + } + finally + { + executing.set(Boolean.FALSE); + } } catch (InvalidQueryException e) { @@ -127,4 +144,14 @@ } } + + /** + * Indicates if this helper class is executing a query + * @return + */ + public static boolean isExecuting() + { + return executing.get(); + } + } Modified: trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/lucene/AclSearchIndex.java =================================================================== --- trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/lucene/AclSearchIndex.java 2010-09-09 12:55:16 UTC (rev 3004) +++ trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/lucene/AclSearchIndex.java 2010-09-09 16:52:31 UTC (rev 3005) @@ -29,6 +29,7 @@ import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy; +import net.sourceforge.openutils.mgnlcriteria.advanced.impl.QueryExecutorHelper; import org.apache.jackrabbit.core.SessionImpl; import org.apache.jackrabbit.core.query.lucene.LuceneQueryBuilder; @@ -111,6 +112,11 @@ { // the lucene query without acl constraints Query luceneQuery = (Query) super.accept(visitor, data); + if (!QueryExecutorHelper.isExecuting()) + { + // not a criteria query: skip lucene decoration + return luceneQuery; + } try { // retrieves the session This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |