Minor code cleanup: remove DatabaseContainer.entryContainer field
| | |
| | | DN2ID(TreeName treeName, Storage env, EntryContainer entryContainer) |
| | | throws StorageRuntimeException |
| | | { |
| | | super(treeName, env, entryContainer); |
| | | |
| | | super(treeName, env); |
| | | prefixRDNComponents = entryContainer.getBaseDN().size(); |
| | | } |
| | | |
| | |
| | | DN2URI(TreeName treeName, Storage storage, EntryContainer entryContainer) |
| | | throws StorageRuntimeException |
| | | { |
| | | super(treeName, storage, entryContainer); |
| | | |
| | | super(treeName, storage); |
| | | prefixRDNComponents = entryContainer.getBaseDN().size(); |
| | | } |
| | | |
| | |
| | | try |
| | | { |
| | | // Go up through the DIT hierarchy until we find a referral. |
| | | for (DN dn = entryContainer.getParentWithinBase(targetDN); dn != null; |
| | | dn = entryContainer.getParentWithinBase(dn)) |
| | | for (DN dn = getParentWithinBase(targetDN); dn != null; dn = getParentWithinBase(dn)) |
| | | { |
| | | // Look for a record whose key matches the current DN. |
| | | if (cursor.positionToKey(toKey(dn))) |
| | |
| | | } |
| | | } |
| | | |
| | | private DN getParentWithinBase(DN targetDN) |
| | | { |
| | | return targetDN.size() == prefixRDNComponents ? null: targetDN.parent(); |
| | | } |
| | | |
| | | /** |
| | | * Return search result references for a search operation using the referral |
| | | * database to find all referral entries within scope of the search. |
| | |
| | | */ |
| | | abstract class DatabaseContainer implements Closeable |
| | | { |
| | | /** The database entryContainer. */ |
| | | final EntryContainer entryContainer; |
| | | |
| | | /** The name of the database within the entryContainer. */ |
| | | private TreeName name; |
| | | |
| | |
| | | * |
| | | * @param treeName The name of the entry database. |
| | | * @param storage The JE Storage. |
| | | * @param entryContainer The entryContainer of the entry database. |
| | | */ |
| | | DatabaseContainer(TreeName treeName, Storage storage, EntryContainer entryContainer) |
| | | DatabaseContainer(TreeName treeName, Storage storage) |
| | | { |
| | | this.storage = storage; |
| | | this.entryContainer = entryContainer; |
| | | this.name = treeName; |
| | | } |
| | | |
| | |
| | | config.isCompactEncoding(), |
| | | rootContainer.getCompressedSchema()); |
| | | |
| | | id2entry = new ID2Entry(getIndexName(ID2ENTRY_DATABASE_NAME), entryDataConfig, storage, this); |
| | | id2entry = new ID2Entry(getIndexName(ID2ENTRY_DATABASE_NAME), storage, entryDataConfig); |
| | | id2entry.open(txn); |
| | | |
| | | dn2id = new DN2ID(getIndexName(DN2ID_DATABASE_NAME), storage, this); |
| | | dn2id.open(txn); |
| | | |
| | | state = new State(getIndexName(STATE_DATABASE_NAME), storage, this); |
| | | state = new State(getIndexName(STATE_DATABASE_NAME), storage); |
| | | state.open(txn); |
| | | |
| | | if (config.isSubordinateIndexesEnabled()) |
| | |
| | | private Index newIndex(WriteableStorage txn, String name, Indexer indexer) |
| | | { |
| | | final Index index = new Index(getIndexName(name), |
| | | indexer, state, config.getIndexEntryLimit(), 0, true, storage, txn, this); |
| | | storage, indexer, state, config.getIndexEntryLimit(), 0, true, txn, this); |
| | | index.open(txn); |
| | | if (!index.isTrusted()) |
| | | { |
| | |
| | | Index newIndexForAttribute(WriteableStorage txn, TreeName indexName, Indexer indexer, int indexEntryLimit) |
| | | { |
| | | final int cursorEntryLimit = 100000; |
| | | return new Index(indexName, indexer, state, indexEntryLimit, cursorEntryLimit, false, storage, txn, this); |
| | | return new Index(indexName, storage, indexer, state, indexEntryLimit, cursorEntryLimit, false, txn, this); |
| | | } |
| | | |
| | | |
| | |
| | | * Create a new ID2Entry object. |
| | | * |
| | | * @param name The name of the entry database. |
| | | * @param storage The JE Storage. |
| | | * @param dataConfig The desired compression and encryption options for data |
| | | * stored in the entry database. |
| | | * @param storage The JE Storage. |
| | | * @param entryContainer The entryContainer of the entry database. |
| | | * @throws StorageRuntimeException If an error occurs in the JE database. |
| | | * |
| | | */ |
| | | ID2Entry(TreeName name, DataConfig dataConfig, Storage storage, EntryContainer entryContainer) |
| | | throws StorageRuntimeException |
| | | ID2Entry(TreeName name, Storage storage, DataConfig dataConfig) throws StorageRuntimeException |
| | | { |
| | | super(name, storage, entryContainer); |
| | | super(name, storage); |
| | | this.dataConfig = dataConfig; |
| | | } |
| | | |
| | |
| | | |
| | | try |
| | | { |
| | | Entry entry = entryFromDatabase(value, |
| | | entryContainer.getRootContainer().getCompressedSchema()); |
| | | Entry entry = entryFromDatabase(value, dataConfig.getEntryEncodeConfig().getCompressedSchema()); |
| | | entry.processVirtualAttributes(); |
| | | return entry; |
| | | } |
| | |
| | | /** |
| | | * Create a new index object. |
| | | * @param name The name of the index database within the entryContainer. |
| | | * @param storage The JE Storage |
| | | * @param indexer The indexer object to construct index keys from LDAP |
| | | * attribute values. |
| | | * @param state The state database to persist index state info. |
| | |
| | | * @param cursorEntryLimit The configured limit on the number of entry IDs |
| | | * @param maintainCount Whether to maintain a count of IDs for a key once |
| | | * the entry limit has exceeded. |
| | | * @param storage The JE Storage |
| | | * @param txn The transaction to use when creating this object |
| | | * @param entryContainer The database entryContainer holding this index. |
| | | * @throws StorageRuntimeException If an error occurs in the JE database. |
| | | */ |
| | | Index(TreeName name, Indexer indexer, State state, |
| | | int indexEntryLimit, int cursorEntryLimit, boolean maintainCount, |
| | | Storage storage, WriteableStorage txn, EntryContainer entryContainer) |
| | | Index(TreeName name, Storage storage, Indexer indexer, |
| | | State state, int indexEntryLimit, int cursorEntryLimit, |
| | | boolean maintainCount, WriteableStorage txn, EntryContainer entryContainer) |
| | | throws StorageRuntimeException |
| | | { |
| | | super(name, storage, entryContainer); |
| | | super(name, storage); |
| | | this.indexer = indexer; |
| | | this.indexEntryLimit = indexEntryLimit; |
| | | this.cursorEntryLimit = cursorEntryLimit; |
| | |
| | | NullIndex(TreeName name, Indexer indexer, State state, Storage storage, WriteableStorage txn, |
| | | EntryContainer entryContainer) throws StorageRuntimeException |
| | | { |
| | | super(name, indexer, state, 0, 0, false, storage, txn, entryContainer); |
| | | super(name, storage, indexer, state, 0, 0, false, txn, entryContainer); |
| | | } |
| | | |
| | | @Override |
| | |
| | | * |
| | | * @param name The name of the entry database. |
| | | * @param env The JE Storage. |
| | | * @param entryContainer The entryContainer of the entry database. |
| | | */ |
| | | State(TreeName name, Storage env, EntryContainer entryContainer) |
| | | State(TreeName name, Storage env) |
| | | { |
| | | super(name, env, entryContainer); |
| | | super(name, env); |
| | | } |
| | | |
| | | /** |
| | |
| | | VLVIndex(BackendVLVIndexCfg config, State state, Storage storage, EntryContainer entryContainer, WriteableStorage txn) |
| | | throws StorageRuntimeException, ConfigException |
| | | { |
| | | super(new TreeName(entryContainer.getDatabasePrefix(), "vlv." + config.getName()), storage, entryContainer); |
| | | super(new TreeName(entryContainer.getDatabasePrefix(), "vlv." + config.getName()), storage); |
| | | |
| | | this.config = config; |
| | | this.baseDN = config.getBaseDN(); |