| | |
| | | * |
| | | * Copyright 2007-2010 Sun Microsystems, Inc. |
| | | * Portions Copyright 2013-2016 ForgeRock AS. |
| | | * Portions Copyright 2025 3A Systems, LLC |
| | | * Portions Copyright 2025-2026 3A Systems, LLC |
| | | */ |
| | | package org.opends.server.backends.pluggable; |
| | | |
| | |
| | | */ |
| | | private EntryContainer accessBegin(Operation operation, DN entryDN) throws DirectoryException |
| | | { |
| | | return accessBegin(operation, entryDN, ResultCode.UNDEFINED); |
| | | } |
| | | |
| | | /** |
| | | * Begin a Backend API method that accesses the {@link EntryContainer} for <code>entryDN</code> |
| | | * and returns it. |
| | | * @param operation requesting the storage |
| | | * @param entryDN the target DN for the operation |
| | | * @param noEntryContainerResultCode the result code to report when this backend holds no |
| | | * entry container for <code>entryDN</code> |
| | | * @return <code>EntryContainer</code> where <code>entryDN</code> resides |
| | | */ |
| | | private EntryContainer accessBegin(Operation operation, DN entryDN, ResultCode noEntryContainerResultCode) |
| | | throws DirectoryException |
| | | { |
| | | checkRootContainerInitialized(); |
| | | rootContainer.checkForEnoughResources(operation); |
| | | EntryContainer ec = rootContainer.getEntryContainer(entryDN); |
| | | if (ec == null) |
| | | { |
| | | throw new DirectoryException(ResultCode.UNDEFINED, ERR_BACKEND_ENTRY_DOESNT_EXIST.get(entryDN, getBackendID())); |
| | | throw new DirectoryException( |
| | | noEntryContainerResultCode, ERR_BACKEND_ENTRY_DOESNT_EXIST.get(entryDN, getBackendID())); |
| | | } |
| | | threadTotalCount.getAndIncrement(); |
| | | return ec; |
| | |
| | | @Override |
| | | public void search(SearchOperation searchOperation) throws DirectoryException, CanceledOperationException |
| | | { |
| | | EntryContainer ec = accessBegin(searchOperation, searchOperation.getBaseDN()); |
| | | // a base DN held by no entry container of this backend does not exist as far as a client |
| | | // is concerned: report it as such instead of the UNDEFINED result code used internally. |
| | | EntryContainer ec = accessBegin(searchOperation, searchOperation.getBaseDN(), ResultCode.NO_SUCH_OBJECT); |
| | | |
| | | ec.sharedLock.lock(); |
| | | |