/** * {@inheritDoc} */ @Override public SearchFuture searchAsync( Dn baseDn, String filter, SearchScope scope, String... attributes ) throws LdapException { // Create a new SearchRequest object SearchRequest searchRequest = new SearchRequestImpl(); searchRequest.setBase( baseDn ); searchRequest.setFilter( filter ); searchRequest.setScope( scope ); searchRequest.addAttributes( attributes ); searchRequest.setDerefAliases( AliasDerefMode.DEREF_ALWAYS ); // Process the request in blocking mode return searchAsync( searchRequest ); }
/** * Perform normal ldap search specifying default batch size and max entries to return. * * @param connection is LdapConnection object used for all communication with host. * @param baseDn contains address of distinguished name to begin ldap search * @param scope indicates depth of search starting at basedn. 0 (base dn), * 1 (one level down) or 2 (infinite) are valid values. * @param filter contains the search criteria * @param attrs is the requested list of attritubutes to return from directory search. * @param attrsOnly if true pull back attribute names only. * @param maxEntries specifies the maximum number of entries to return in this search query. * @return result set containing ldap entries returned from directory. * @throws LdapException thrown in the event of error in ldap client or server code. */ protected SearchCursor search( LdapConnection connection, String baseDn, SearchScope scope, String filter, String[] attrs, boolean attrsOnly, int maxEntries ) throws LdapException { COUNTERS.incrementSearch(); SearchRequest searchRequest = new SearchRequestImpl(); searchRequest.setBase( new Dn( baseDn ) ); searchRequest.setFilter( filter ); searchRequest.setScope( scope ); searchRequest.setSizeLimit( maxEntries ); searchRequest.setTypesOnly( attrsOnly ); searchRequest.addAttributes( attrs ); return connection.search( searchRequest ); }
/** * Creates a new instance of SearchOperationContext. * * @param session The session to use * @param searchRequest The SearchRequest to process */ public SearchOperationContext( CoreSession session, SearchRequest searchRequest ) { super( session, searchRequest.getBase(), searchRequest.getAttributes().toArray( StringConstants.EMPTY_STRINGS ) ); if ( session != null ) { setInterceptors( session.getDirectoryService().getInterceptors( OperationEnum.SEARCH ) ); } this.filter = searchRequest.getFilter(); this.abandoned = searchRequest.isAbandoned(); this.aliasDerefMode = searchRequest.getDerefAliases(); this.requestControls = searchRequest.getControls(); this.scope = searchRequest.getScope(); this.sizeLimit = searchRequest.getSizeLimit(); this.timeLimit = searchRequest.getTimeLimit(); this.typesOnly = searchRequest.getTypesOnly(); throwReferral = !requestControls.containsKey( ManageDsaIT.OID ); }
public void handleSearch(Integer ctx, SearchRequest request, SearchResultHandler responseHandler, IntermediateResponseHandler intermediateResponseHandler) throws UnsupportedOperationException { if (request.getScope() == SearchScope.BASE_OBJECT && request.getName().isRootDN()) { logger.debug("LDAP Search: BASE_OBJECT"); responseHandler.handleEntry(Responses.newSearchResultEntry(rootEntry)); } else { // do the search // parameters: request.getName(), request.getScope(), request.getFilter() } responseHandler.handleResult(Responses.newResult(ResultCode.SUCCESS)); }
/** * Create a new instance of a NotiticationCriteria initialized with a search request * * @param schemaManager The SchemaManager instance * @param req The SearchRequest */ public NotificationCriteria( SchemaManager schemaManager, SearchRequest req ) { this.scope = req.getScope(); this.aliasDerefMode = req.getDerefAliases(); this.base = req.getBase(); this.filter = req.getFilter(); this.schemaManager = schemaManager; }
public SearchRequest buildSearchRequest(Map<String,Object> replace) { SearchRequest sr = new SearchRequestImpl(); try { sr.setBase(new Dn(this.base)); sr.addAttributes(this.getAttributes()); if(this.filter != null && ! "".equals(this.filter ) ){ String f = filter; for(String key:replace.keySet()) { f = f.replaceAll(key, replace.get(key).toString()); } sr.setFilter(f); } sr.setScope(SearchScope.valueOf(this.scope)); sr.setTimeLimit(this.timeLimit); } catch (Exception e) { throw new RuntimeException(e); } return sr; }
/** * prepares a SearchRequest for syncing DIT content. * */ private void prepareSyncSearchRequest() throws LdapException { String baseDn = config.getBaseDn(); searchRequest = new SearchRequestImpl(); searchRequest.setBase( new Dn( baseDn ) ); searchRequest.setFilter( config.getFilter() ); searchRequest.setSizeLimit( config.getSearchSizeLimit() ); searchRequest.setTimeLimit( config.getSearchTimeout() ); searchRequest.setDerefAliases( config.getAliasDerefMode() ); searchRequest.setScope( config.getSearchScope() ); searchRequest.setTypesOnly( false ); searchRequest.addAttributes( config.getAttributes() ); if ( !config.isChaseReferrals() ) { searchRequest.addControl( new ManageDsaITDecorator( directoryService.getLdapCodecService(), new ManageDsaITImpl() ) ); } if ( CONSUMER_LOG.isDebugEnabled() ) { MDC.put( "Replica", Integer.toString( config.getReplicaId() ) ); CONSUMER_LOG.debug( "Configuring consumer {}", config ); } }
request.setBase( new Dn( searchBase ) ); request.setFilter( filter ); request.setScope( convertSearchScope( searchControls ) ); if ( searchControls.getReturningAttributes() != null ) request.addAttributes( searchControls.getReturningAttributes() ); request.addAllControls( convertControls( controls ) ); request.setSizeLimit( searchControls.getCountLimit() ); request.setTimeLimit( searchControls.getTimeLimit() ); request.setDerefAliases( convertAliasDerefMode( aliasesDereferencingMethod ) );
public int count(final LdapConnection connection, final String filter, final int max) throws LdapException, CursorException, IOException { connection.bind(); final SearchRequest request = new SearchRequestImpl(); request.setBase(new Dn(baseDn)); request.setFilter(filter); request.setScope(SearchScope.SUBTREE); request.setSizeLimit(max); try (final SearchCursor cursor = connection.search(request)) { int count = 0; while (cursor.next()) count++; return count; } }
/** * {@inheritDoc} */ @Override public SearchRequest newSearchRequest( Dn baseDn, String filter, SearchScope scope, String... attributes ) { SearchRequest searchRequest = null; try { searchRequest = new SearchRequestImpl() .setBase( baseDn ) .setFilter( filter ) .setScope( scope == null ? SearchScope.OBJECT : scope ); if ( attributes != null && attributes.length > 0 ) { searchRequest.addAttributes( attributes ); } } catch ( LdapException e ) { throw new LdapRuntimeException( e ); } return searchRequest; } }
if ( searchRequest.getBase() == null ) searchRequest.setMessageId( newId ); if ( searchRequest.isIgnoreReferrals() ) searchRequest.addControl( new ManageDsaITImpl() ); SearchFuture searchFuture = new SearchFuture( this, searchRequest.getMessageId() ); addToFutureMap( searchRequest.getMessageId(), searchFuture );
if ( req.isAbandoned() ) criteria.setAliasDerefMode( req.getDerefAliases() ); criteria.setBase( req.getBase() ); criteria.setFilter( req.getFilter() ); criteria.setScope( req.getScope() ); criteria.setEventMask( EventType.getEventTypes( psearch.getChangeTypes() ) ); getLdapServer().getDirectoryService().getEventService().addListener( persistentSearchListener, criteria ); req.addAbandonListener( new SearchAbandonListener( ldapServer, persistentSearchListener ) );
/** * {@inheritDoc} */ @Override public <T> T searchFirst( SearchRequest searchRequest, EntryMapper<T> entryMapper ) { // in case the caller did not set size limit, we cache original value, // set to 1, then set back to original value before returning... long originalSizeLimit = searchRequest.getSizeLimit(); try { searchRequest.setSizeLimit( 1 ); List<T> entries = search( searchRequest, entryMapper ); return entries.isEmpty() ? null : entries.get( 0 ); } finally { searchRequest.setSizeLimit( originalSizeLimit ); } }
SearchRequest req = new SearchRequest(baseObject,scope,filter,requestedAttributes); req.setSizeLimit(maxNumberOfEntriesToReturn);
throws Exception LdapResult result = req.getResultResponse().getLdapResult(); ReferralImpl referral = new ReferralImpl(); result.setReferral( referral ); result.setResultCode( ResultCodeEnum.REFERRAL ); result.setDiagnosticMessage( "Encountered referral attempting to handle request." ); result.setMatchedDn( req.getBase() ); ldapUrl.setAttributes( req.getAttributes() ); ldapUrl.setScope( req.getScope().getScope() ); referral.addLdapUrl( ldapUrl.toString() ); session.getIoSession().write( req.getResultResponse() );
/** * {@inheritDoc} */ @Override public SearchRequest addAttributes( String... attributes ) { getDecorated().addAttributes( attributes ); return this; }
/** * {@inheritDoc} */ @Override public SearchRequest setScope( SearchScope scope ) { getDecorated().setScope( scope ); return this; }
/** * {@inheritDoc} */ @Override public SearchRequest setBase( Dn baseDn ) { getDecorated().setBase( baseDn ); return this; }
/** * Handles a simple lookup, or a RootDSE lookup. * * @param session the LdapSession for which this search is conducted * @param req the search request on the RootDSE * @throws Exception if failures are encountered while searching */ private void handleLookup( LdapSession session, SearchRequest req ) throws Exception { Map<String, Control> controlMap = req.getControls(); Control[] controls = null; if ( controlMap != null ) { Collection<Control> controlValues = controlMap.values(); controls = new Control[controlValues.size()]; int pos = 0; for ( Control control : controlMap.values() ) { controls[pos++] = control; } } Entry entry = session.getCoreSession().lookup( req.getBase(), controls, req.getAttributes().toArray( new String[] {} ) ); session.getIoSession().write( generateResponse( session, req, entry ) ); // write the SearchResultDone message session.getIoSession().write( req.getResultResponse() ); }