protected void init( Transaction transaction, Query query, Integer level ) throws IOException {
FilterEncodingPreProcessor visitor = new FilterEncodingPreProcessor(level);
query.getFilter().accept(visitor,null);
this.transaction=transaction;
if( visitor.requiresPostProcessing() && query.getPropertyNames()!=Query.ALL_NAMES){
FilterAttributeExtractor attributeExtractor=new FilterAttributeExtractor();
query.getFilter().accept( attributeExtractor, null );
Set<String> properties = new HashSet<String>(attributeExtractor.getAttributeNameSet());
properties.addAll(Arrays.asList(query.getPropertyNames()));
this.query = new Query(query);