Search in sources :

Example 11 with Filter

use of org.forgerock.opendj.ldap.Filter in project OpenAM by OpenRock.

the class GenericRepoTest method testConstructFilterWithMultipleAssertions.

@Test
public void testConstructFilterWithMultipleAssertions() throws Exception {
    Map<String, Set<String>> attrs = new HashMap<String, Set<String>>(1);
    attrs.put("cn", asOrderedSet("()\\\0", "hello"));
    Filter filter = idrepo.constructFilter(IdRepo.AND_MOD, attrs);
    assertThat(filter.toString()).isEqualTo("(&(cn=\\28\\29\\5C\\00)(cn=hello))");
}
Also used : CaseInsensitiveHashSet(com.sun.identity.common.CaseInsensitiveHashSet) HashSet(java.util.HashSet) CollectionUtils.asOrderedSet(org.forgerock.openam.utils.CollectionUtils.asOrderedSet) Set(java.util.Set) CollectionUtils.asSet(org.forgerock.openam.utils.CollectionUtils.asSet) HashMap(java.util.HashMap) CaseInsensitiveHashMap(com.sun.identity.common.CaseInsensitiveHashMap) Filter(org.forgerock.opendj.ldap.Filter) Test(org.testng.annotations.Test)

Example 12 with Filter

use of org.forgerock.opendj.ldap.Filter in project OpenAM by OpenRock.

the class DynamicGroup method setSearchBase.

/**
     * Sets the search base used to evaluate this dynamic group.
     * 
     * @param baseGuid Search base for evaluating members of the group.
     *
     * @supported.api
     */
public void setSearchBase(Guid baseGuid) {
    LDAPUrl url = getUrl();
    SearchScope scope = url.getScope();
    Filter filter = url.getFilter();
    try {
        setUrl(baseGuid, filter, scope);
    } catch (Exception e) {
        // TODO - Log Exception
        debug.error("DynamicGroup.setSearchFilter : Exception : " + e.getMessage());
    }
}
Also used : LDAPUrl(org.forgerock.opendj.ldap.LDAPUrl) Filter(org.forgerock.opendj.ldap.Filter) SearchScope(org.forgerock.opendj.ldap.SearchScope) LocalizedIllegalArgumentException(org.forgerock.i18n.LocalizedIllegalArgumentException)

Example 13 with Filter

use of org.forgerock.opendj.ldap.Filter in project OpenAM by OpenRock.

the class DynamicGroup method setSearchScope.

/**
     * Sets the search scope used to evaluate this dynamic group.
     * 
     * @param scope Search scope for evaluating members of the group. Use one of
     *        the search scope <code>SCOPE_BASE</code>,
     *        <code>SCOPE_ONE</code>, or <code>SCOPE_SUB</code>.
     *
     * @supported.api
     */
public void setSearchScope(int scope) {
    LDAPUrl url = getUrl();
    Guid baseGuid = new Guid(url.getName().toString());
    Filter filter = url.getFilter();
    try {
        setUrl(baseGuid, filter, SearchScope.valueOf(scope));
    } catch (Exception e) {
        // TODO - Log Exception
        debug.error("DynamicGroup.setSearchFilter : Exception : " + e.getMessage());
    }
}
Also used : LDAPUrl(org.forgerock.opendj.ldap.LDAPUrl) Filter(org.forgerock.opendj.ldap.Filter) LocalizedIllegalArgumentException(org.forgerock.i18n.LocalizedIllegalArgumentException)

Example 14 with Filter

use of org.forgerock.opendj.ldap.Filter in project OpenAM by OpenRock.

the class LdapQueryBuilder method getEntries.

private Collection<Entry> getEntries(Connection connection) throws CoreTokenException {
    // Prepare the search
    Filter ldapFilter = getLDAPFilter();
    SearchRequest searchRequest = LDAPRequests.newSearchRequest(dataLayerConfiguration.getTokenStoreRootSuffix(), SearchScope.WHOLE_SUBTREE, ldapFilter, requestedAttributes);
    searchRequest.setSizeLimit(sizeLimit);
    if (isPagingResults()) {
        searchRequest = searchRequest.addControl(SimplePagedResultsControl.newControl(true, pageSize, pagingCookie));
    }
    // Perform the search
    Collection<Entry> entries = createResultsList();
    final Result result = handler.performSearch(connection, searchRequest, entries);
    if (isPagingResults()) {
        try {
            SimplePagedResultsControl control = result.getControl(SimplePagedResultsControl.DECODER, new DecodeOptions());
            if (control == null) {
                if (debug.warningEnabled()) {
                    debug.warning("There was no paged result control in the search response, it is recommended to " + "set the CTS user's size-limit at least to " + (pageSize + 1));
                }
                pagingCookie = getEmptyPagingCookie();
            } else {
                pagingCookie = control.getCookie();
            }
        } catch (DecodeException e) {
            throw new CoreTokenException("Failed to decode Paging Cookie", e);
        }
    }
    if (debug.messageEnabled()) {
        debug.message(MessageFormat.format(CoreTokenConstants.DEBUG_HEADER + "Query: matched {0} results\n" + "Search Request: {1}\n" + "Filter: {2}\n" + "Result: {3}", entries.size(), searchRequest, ldapFilter.toString(), result));
    }
    return entries;
}
Also used : SearchRequest(org.forgerock.opendj.ldap.requests.SearchRequest) Entry(org.forgerock.opendj.ldap.Entry) Filter(org.forgerock.opendj.ldap.Filter) CoreTokenException(org.forgerock.openam.cts.exceptions.CoreTokenException) SimplePagedResultsControl(org.forgerock.opendj.ldap.controls.SimplePagedResultsControl) DecodeException(org.forgerock.opendj.ldap.DecodeException) DecodeOptions(org.forgerock.opendj.ldap.DecodeOptions) Result(org.forgerock.opendj.ldap.responses.Result)

Example 15 with Filter

use of org.forgerock.opendj.ldap.Filter in project OpenAM by OpenRock.

the class LdapAdapterTest method shouldQuery.

@Test
public void shouldQuery() throws Exception {
    // Given
    final QueryBuilder<Connection, Filter> mockBuilder = mock(QueryBuilder.class);
    given(mockBuilder.withFilter(any(Filter.class))).willAnswer(new Answer<QueryBuilder<Connection, Filter>>() {

        @Override
        public QueryBuilder<Connection, Filter> answer(InvocationOnMock invocation) throws Throwable {
            return mockBuilder;
        }
    });
    given(mockBuilder.execute(any(Connection.class))).willReturn(Arrays.asList((Collection<Token>) Arrays.asList(new Token("weasel", TokenType.OAUTH))).iterator());
    given(mockQueryFactory.createInstance()).willReturn(mockBuilder);
    QueryFilterVisitor<Filter, Void, CoreTokenField> visitor = mock(QueryFilterVisitor.class);
    given(mockQueryFactory.createFilterConverter()).willReturn(visitor);
    given(visitor.visitBooleanLiteralFilter(null, true)).willReturn(Filter.alwaysTrue());
    // When
    TokenFilter filter = new TokenFilterBuilder().withQuery(QueryFilter.<CoreTokenField>alwaysTrue()).build();
    Collection<Token> result = adapter.query(mockConnection, filter);
    // Then
    verify(mockBuilder).withFilter(any(Filter.class));
    verify(mockBuilder).execute(mockConnection);
    assertThat(result.size()).isEqualTo(1);
    assertThat(result.iterator().next().getTokenId()).isEqualTo("weasel");
}
Also used : Connection(org.forgerock.opendj.ldap.Connection) PartialToken(org.forgerock.openam.sm.datalayer.api.query.PartialToken) Token(org.forgerock.openam.cts.api.tokens.Token) CoreTokenField(org.forgerock.openam.tokens.CoreTokenField) QueryBuilder(org.forgerock.openam.sm.datalayer.api.query.QueryBuilder) Filter(org.forgerock.opendj.ldap.Filter) TokenFilter(org.forgerock.openam.cts.api.filter.TokenFilter) QueryFilter(org.forgerock.util.query.QueryFilter) InvocationOnMock(org.mockito.invocation.InvocationOnMock) TokenFilterBuilder(org.forgerock.openam.cts.api.filter.TokenFilterBuilder) TokenFilter(org.forgerock.openam.cts.api.filter.TokenFilter) Test(org.testng.annotations.Test)

Aggregations

Filter (org.forgerock.opendj.ldap.Filter)16 HashSet (java.util.HashSet)9 CaseInsensitiveHashSet (com.sun.identity.common.CaseInsensitiveHashSet)8 ByteString (org.forgerock.opendj.ldap.ByteString)7 Connection (org.forgerock.opendj.ldap.Connection)7 SearchRequest (org.forgerock.opendj.ldap.requests.SearchRequest)6 CaseInsensitiveHashMap (com.sun.identity.common.CaseInsensitiveHashMap)5 HashMap (java.util.HashMap)5 LinkedHashSet (java.util.LinkedHashSet)5 Set (java.util.Set)5 CollectionUtils.asSet (org.forgerock.openam.utils.CollectionUtils.asSet)5 LdapException (org.forgerock.opendj.ldap.LdapException)5 SearchResultReferenceIOException (org.forgerock.opendj.ldap.SearchResultReferenceIOException)5 ConnectionEntryReader (org.forgerock.opendj.ldif.ConnectionEntryReader)5 Test (org.testng.annotations.Test)5 SearchResultEntry (org.forgerock.opendj.ldap.responses.SearchResultEntry)4 CollectionUtils.asOrderedSet (org.forgerock.openam.utils.CollectionUtils.asOrderedSet)3 Attribute (org.forgerock.opendj.ldap.Attribute)3 DN (org.forgerock.opendj.ldap.DN)3 LinkedAttribute (org.forgerock.opendj.ldap.LinkedAttribute)3