Author: saya Date: Wed Dec 14 08:10:38 2011 New Revision: 1214094 URL: http://svn.apache.org/viewvc?rev=1214094&view=rev Log: add abstract evaluator for search engine to do entry lookup and initialize txn manager and execution manager instances Added: directory/apacheds/branches/apacheds-txns/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/AbstractEvaluator.java Added: directory/apacheds/branches/apacheds-txns/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/AbstractEvaluator.java URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-txns/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/AbstractEvaluator.java?rev=1214094&view=auto ============================================================================== --- directory/apacheds/branches/apacheds-txns/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/AbstractEvaluator.java (added) +++ directory/apacheds/branches/apacheds-txns/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/AbstractEvaluator.java Wed Dec 14 08:10:38 2011 @@ -0,0 +1,69 @@ + +package org.apache.directory.server.xdbm.search.impl; + +import java.util.UUID; + +import org.apache.directory.server.core.api.partition.OperationExecutionManager; +import org.apache.directory.server.core.api.partition.Partition; +import org.apache.directory.server.core.api.partition.index.MasterTable; +import org.apache.directory.server.core.api.txn.TxnLogManager; +import org.apache.directory.server.core.shared.partition.OperationExecutionManagerFactory; +import org.apache.directory.server.core.shared.txn.TxnManagerFactory; +import org.apache.directory.server.xdbm.search.Evaluator; +import org.apache.directory.shared.ldap.model.entry.Entry; +import org.apache.directory.shared.ldap.model.filter.ExprNode; +import org.apache.directory.shared.ldap.model.name.Dn; + + +public abstract class AbstractEvaluator implements Evaluator +{ + /** The backend */ + protected final Partition db; + + /** Txn log manager */ + protected TxnLogManager txnLogManager; + + /** Master table */ + private MasterTable masterTable; + + /** Operation execution manager */ + protected OperationExecutionManager executionManager; + + /** Txn and Operation Execution Factories */ + protected TxnManagerFactory txnManagerFactory; + protected OperationExecutionManagerFactory executionManagerFactory; + + + public AbstractEvaluator( Partition db, TxnManagerFactory txnManagerFactory, + OperationExecutionManagerFactory executionManagerFactory ) throws Exception + { + this.db = db; + txnLogManager = txnManagerFactory.txnLogManagerInstance(); + masterTable = txnLogManager.wrap( db.getSuffixDn(), db.getMasterTable() ); + executionManager = executionManagerFactory.instance(); + + this.txnManagerFactory = txnManagerFactory; + this.executionManagerFactory = executionManagerFactory; + } + + + public AbstractEvaluator() + { + // If no partition is there, we wont initialize the txn and operation execution manager + db = null; + } + + + protected Entry getEntry( UUID id ) throws Exception + { + Entry entry = masterTable.get( id ); + + if ( entry != null ) + { + Dn dn = executionManager.buildEntryDn( db, id ); + entry.setDn( dn ); + } + + return entry; + } +}