SearchScope.java:
Renamed SUBORDINATE_SUBTREE to SUBORDINATES to match the SDK.
| | |
| | | case WHOLE_SUBTREE: |
| | | scope = SearchControls.SUBTREE_SCOPE; |
| | | break; |
| | | case SUBORDINATE_SUBTREE: |
| | | case SUBORDINATES: |
| | | scope = SearchControls.ONELEVEL_SCOPE; |
| | | break; |
| | | case SINGLE_LEVEL: |
| | |
| | | else if(expression.equalsIgnoreCase("subtree")) |
| | | return SearchScope.WHOLE_SUBTREE; |
| | | else if(expression.equalsIgnoreCase("subordinate")) |
| | | return SearchScope.SUBORDINATE_SUBTREE; |
| | | return SearchScope.SUBORDINATES; |
| | | else { |
| | | LocalizableMessage message = |
| | | WARN_ACI_SYNTAX_INVALID_TARGETSCOPE_EXPRESSION.get(expression); |
| | |
| | | if(!entryDN.isDescendantOf(targetDN)) |
| | | return false; |
| | | break; |
| | | case SUBORDINATE_SUBTREE: |
| | | case SUBORDINATES: |
| | | if ((entryDN.size() <= targetDN.size()) || |
| | | !entryDN.isDescendantOf(targetDN)) { |
| | | return false; |
| | |
| | | DN parent=evalCtx.getClientDN().parent(); |
| | | if((parent != null) && !parent.equals(urlDN)) |
| | | return EnumEvalResult.FALSE; |
| | | } else if(scope == SearchScope.SUBORDINATE_SUBTREE) { |
| | | } else if(scope == SearchScope.SUBORDINATES) { |
| | | DN userDN = evalCtx.getClientDN(); |
| | | if ((userDN.size() <= urlDN.size()) || |
| | | !userDN.isDescendantOf(urlDN)) { |
| | |
| | | |
| | | |
| | | case WHOLE_SUBTREE: |
| | | case SUBORDINATE_SUBTREE: |
| | | case SUBORDINATES: |
| | | if (subordinateBaseDNs == null) |
| | | { |
| | | baseMap = DirectoryServer.getPublicNamingContexts(); |
| | |
| | | // match anything since there isn't anything below the schema. |
| | | SearchScope scope = searchOperation.getScope(); |
| | | if ((scope == SearchScope.SINGLE_LEVEL) || |
| | | (scope == SearchScope.SUBORDINATE_SUBTREE)) |
| | | (scope == SearchScope.SUBORDINATES)) |
| | | { |
| | | return; |
| | | } |
| | |
| | | isInScope = true; |
| | | } |
| | | } |
| | | else if (searchScope == SearchScope.SUBORDINATE_SUBTREE) |
| | | else if (searchScope == SearchScope.SUBORDINATES) |
| | | { |
| | | if ((entryDN.size() > |
| | | aBaseDN.size()) && |
| | |
| | | searchScheduledTasks = true; |
| | | searchRecurringTasks = true; |
| | | break; |
| | | case SUBORDINATE_SUBTREE: |
| | | case SUBORDINATES: |
| | | searchScheduledParent = true; |
| | | searchRecurringParent = true; |
| | | searchScheduledTasks = true; |
| | |
| | | searchScheduledParent = true; |
| | | searchScheduledTasks = true; |
| | | break; |
| | | case SUBORDINATE_SUBTREE: |
| | | case SUBORDINATES: |
| | | searchScheduledTasks = true; |
| | | break; |
| | | } |
| | |
| | | searchRecurringParent = true; |
| | | searchRecurringTasks = true; |
| | | break; |
| | | case SUBORDINATE_SUBTREE: |
| | | case SUBORDINATES: |
| | | searchRecurringTasks = true; |
| | | break; |
| | | } |
| | |
| | | return; |
| | | } |
| | | break; |
| | | case SUBORDINATE_SUBTREE: |
| | | case SUBORDINATES: |
| | | if (baseDN.equals(entry.getName()) || (!baseDN.isAncestorOf( |
| | | entry.getName()))) |
| | | { |
| | |
| | | return; |
| | | } |
| | | break; |
| | | case SUBORDINATE_SUBTREE: |
| | | case SUBORDINATES: |
| | | if (baseDN.equals(entry.getName()) || (!baseDN.isAncestorOf( |
| | | entry.getName()))) |
| | | { |
| | |
| | | return; |
| | | } |
| | | break; |
| | | case SUBORDINATE_SUBTREE: |
| | | case SUBORDINATES: |
| | | if (baseDN.equals(oldEntry.getName()) |
| | | || (!baseDN.isAncestorOf(oldEntry.getName()))) |
| | | { |
| | |
| | | } |
| | | |
| | | break; |
| | | case SUBORDINATE_SUBTREE: |
| | | case SUBORDINATES: |
| | | oldMatches = ((!baseDN.equals(oldDN)) && baseDN.isAncestorOf(oldDN)); |
| | | newMatches = ((!baseDN.equals(entry.getName())) && baseDN |
| | | .isAncestorOf(entry.getName())); |
| | |
| | | * |
| | | * |
| | | * Copyright 2008 Sun Microsystems, Inc. |
| | | * Portions Copyright 2014 ForgeRock AS |
| | | */ |
| | | package org.opends.server.core; |
| | | |
| | | |
| | | import org.opends.server.types.DN; |
| | | import org.opends.server.types.SearchScope; |
| | | |
| | | |
| | | /** |
| | | * This class is the base class used to build the workflow topology. |
| | | * A workflow topology is a tree of workflows. Each node in the tree |
| | |
| | | return null; |
| | | case SINGLE_LEVEL: |
| | | return SearchScope.BASE_OBJECT; |
| | | case SUBORDINATE_SUBTREE: |
| | | case SUBORDINATES: |
| | | case WHOLE_SUBTREE: |
| | | return SearchScope.WHOLE_SUBTREE; |
| | | default: |
| | |
| | | allowRequest = |
| | | allowedSearchScopes.contains(AllowedSearchScopes.SUB); |
| | | break; |
| | | case SUBORDINATE_SUBTREE: |
| | | case SUBORDINATES: |
| | | allowRequest = |
| | | allowedSearchScopes |
| | | .contains(AllowedSearchScopes.CHILDREN); |
| | |
| | | instanceKeyID + ")"; |
| | | InternalSearchOperation internalSearch = |
| | | internalConnection.processSearch( |
| | | serversDN, SearchScope.SUBORDINATE_SUBTREE, |
| | | serversDN, SearchScope.SUBORDINATES, |
| | | SearchFilter.createFilterFromString(filter)); |
| | | if (internalSearch.getResultCode() != ResultCode.SUCCESS) |
| | | continue; |
| | |
| | | break; |
| | | |
| | | |
| | | case SUBORDINATE_SUBTREE: |
| | | case SUBORDINATES: |
| | | // We are not interested in the base entry, but we want to check out all |
| | | // of its children. Use a recursive process to achieve this. |
| | | for (ConfigEntry child : baseEntry.getChildren().values()) |
| | |
| | | } |
| | | break; |
| | | |
| | | case SUBORDINATE_SUBTREE: |
| | | case SUBORDINATES: |
| | | if (baseDN.equals(nextDN) || (! baseDN.isAncestorOf(nextDN))) |
| | | { |
| | | continue; |
| | |
| | | == CheckReferencesScopeCriteria.NAMING_CONTEXT) |
| | | { |
| | | if (valueEntryDN.matchesBaseAndScope(entryBaseDN, |
| | | SearchScope.SUBORDINATE_SUBTREE)) |
| | | SearchScope.SUBORDINATES)) |
| | | { |
| | | return PluginResult.PreOperation.stopProcessing( |
| | | ResultCode.CONSTRAINT_VIOLATION, |
| | |
| | | |
| | | for (DN baseDN : baseDNs) |
| | | { |
| | | if (dn.matchesBaseAndScope(baseDN, SearchScope.SUBORDINATE_SUBTREE)) |
| | | if (dn.matchesBaseAndScope(baseDN, SearchScope.SUBORDINATES)) |
| | | { |
| | | namingContext = baseDN; |
| | | break; |
| | |
| | | scope = SearchScope.WHOLE_SUBTREE; |
| | | break; |
| | | case SCOPE_SUBORDINATE_SUBTREE: |
| | | scope = SearchScope.SUBORDINATE_SUBTREE; |
| | | scope = SearchScope.SUBORDINATES; |
| | | break; |
| | | default: |
| | | LocalizableMessage message = |
| | |
| | | attributes.add(REPLICATION_STATE); |
| | | InternalSearchOperation op = |
| | | conn.processSearch(DN.valueOf("cn=config"), |
| | | SearchScope.SUBORDINATE_SUBTREE, |
| | | SearchScope.SUBORDINATES, |
| | | DereferencePolicy.NEVER_DEREF_ALIASES, |
| | | 1, 0, false, filter, attributes); |
| | | |
| | |
| | | * |
| | | * |
| | | * Copyright 2006-2008 Sun Microsystems, Inc. |
| | | * Portions Copyright 2014 ForgeRock AS |
| | | */ |
| | | package org.opends.server.tools; |
| | | |
| | |
| | | searchScope = WHOLE_SUBTREE; |
| | | } else if (scope.equalsIgnoreCase("subordinate")) |
| | | { |
| | | searchScope = SUBORDINATE_SUBTREE; |
| | | searchScope = SUBORDINATES; |
| | | } else |
| | | { |
| | | err.println(ERR_SEARCH_INVALID_SEARCH_SCOPE.get(scope)); |
| | |
| | | } |
| | | else if (scopeStr.equals(SCOPE_STRING_SUBORDINATE)) |
| | | { |
| | | searchScope = SearchScope.SUBORDINATE_SUBTREE; |
| | | searchScope = SearchScope.SUBORDINATES; |
| | | } |
| | | else |
| | | { |
| | |
| | | // This DN must be a descendant of the provided base DN. |
| | | return isDescendantOf(baseDN); |
| | | |
| | | case SUBORDINATE_SUBTREE: |
| | | case SUBORDINATES: |
| | | // This DN must be a descendant of the provided base DN, but |
| | | // not equal to it. |
| | | return ((! equals(baseDN)) && isDescendantOf(baseDN)); |
| | |
| | | else if (scopeString.equals("subord") || |
| | | scopeString.equals("subordinate")) |
| | | { |
| | | scope = SearchScope.SUBORDINATE_SUBTREE; |
| | | scope = SearchScope.SUBORDINATES; |
| | | } |
| | | else |
| | | { |
| | |
| | | case WHOLE_SUBTREE: |
| | | buffer.append("sub"); |
| | | break; |
| | | case SUBORDINATE_SUBTREE: |
| | | case SUBORDINATES: |
| | | buffer.append("subordinate"); |
| | | break; |
| | | } |
| | |
| | | * below the entry specified as the search base (but not the search |
| | | * base entry itself) should be considered candidates for matching. |
| | | */ |
| | | SUBORDINATE_SUBTREE(LDAPConstants.SCOPE_SUBORDINATE_SUBTREE); |
| | | SUBORDINATES(LDAPConstants.SCOPE_SUBORDINATE_SUBTREE); |
| | | |
| | | |
| | | |
| | |
| | | InternalClientConnection conn = |
| | | InternalClientConnection.getRootConnection(); |
| | | InternalSearchOperation searchOperation = |
| | | conn.processSearch("o=ldif", SearchScope.SUBORDINATE_SUBTREE, |
| | | conn.processSearch("o=ldif", SearchScope.SUBORDINATES, |
| | | "(uid=user.1)"); |
| | | assertEquals(searchOperation.getResultCode(), ResultCode.SUCCESS); |
| | | assertEquals(searchOperation.getSearchEntries().size(), 1); |
| | |
| | | InternalClientConnection.getRootConnection(); |
| | | InternalSearchOperation searchOperation = |
| | | conn.processSearch(DN.valueOf("cn=schema"), |
| | | SearchScope.SUBORDINATE_SUBTREE, |
| | | SearchScope.SUBORDINATES, |
| | | SearchFilter.createFilterFromString(filterString)); |
| | | assertNotNull(searchOperation); |
| | | assertEquals(searchOperation.getResultCode(), ResultCode.SUCCESS); |
| | |
| | | "ou=People,dc=test,dc=com"); |
| | | |
| | | search = conn.processSearch(DN.valueOf("dc=test,dc=com"), |
| | | SearchScope.SUBORDINATE_SUBTREE, |
| | | SearchScope.SUBORDINATES, |
| | | LDAPFilter.decode("(objectClass=*)").toSearchFilter()); |
| | | result = search.getSearchEntries(); |
| | | |
| | |
| | | |
| | | InternalSearchOperation search = |
| | | conn.processSearch(DN.valueOf("dc=test,dc=com"), |
| | | |
| | | SearchScope.SUBORDINATE_SUBTREE, |
| | | |
| | | SearchScope.SUBORDINATES, |
| | | DereferencePolicy.NEVER_DEREF_ALIASES, |
| | | 0, |
| | | 0, |
| | | false, |
| | | |
| | | LDAPFilter.decode("(givenName~=Aaccf)"). |
| | | toSearchFilter(), |
| | | LDAPFilter.decode("(givenName~=Aaccf)").toSearchFilter(), |
| | | attribs); |
| | | |
| | | List<SearchResultEntry> result = search.getSearchEntries(); |
| | |
| | | |
| | | InternalSearchOperation search = |
| | | conn.processSearch(DN.valueOf("dc=test,dc=com"), |
| | | SearchScope.SUBORDINATE_SUBTREE, |
| | | SearchScope.SUBORDINATES, |
| | | DereferencePolicy.NEVER_DEREF_ALIASES, |
| | | 0, |
| | | 0, |
| | |
| | | {scopes_all, SearchScope.BASE_OBJECT, true}, |
| | | {scope_base, SearchScope.BASE_OBJECT, true}, |
| | | {scope_base, SearchScope.SINGLE_LEVEL, false}, |
| | | {scope_base, SearchScope.SUBORDINATE_SUBTREE, false}, |
| | | {scope_base, SearchScope.SUBORDINATES, false}, |
| | | {scope_base, SearchScope.WHOLE_SUBTREE, false}, |
| | | {scope_children, SearchScope.BASE_OBJECT, false}, |
| | | {scope_children, SearchScope.SINGLE_LEVEL, false}, |
| | | {scope_children, SearchScope.SUBORDINATE_SUBTREE, true}, |
| | | {scope_children, SearchScope.SUBORDINATES, true}, |
| | | {scope_children, SearchScope.WHOLE_SUBTREE, false}, |
| | | {scope_one, SearchScope.BASE_OBJECT, false}, |
| | | {scope_one, SearchScope.SINGLE_LEVEL, true}, |
| | | {scope_one, SearchScope.SUBORDINATE_SUBTREE, false}, |
| | | {scope_one, SearchScope.SUBORDINATES, false}, |
| | | {scope_one, SearchScope.WHOLE_SUBTREE, false}, |
| | | {scope_sub, SearchScope.BASE_OBJECT, false}, |
| | | {scope_sub, SearchScope.SINGLE_LEVEL, false}, |
| | | {scope_sub, SearchScope.SUBORDINATE_SUBTREE, false}, |
| | | {scope_sub, SearchScope.SUBORDINATES, false}, |
| | | {scope_sub, SearchScope.WHOLE_SUBTREE, true} |
| | | }; |
| | | |
| | |
| | | { |
| | | Thread.sleep(10); |
| | | searchOperation = connection.processSearch( |
| | | "dc=replicationchanges", SearchScope.SUBORDINATE_SUBTREE, "(objectclass=*)"); |
| | | "dc=replicationchanges", SearchScope.SUBORDINATES, "(objectclass=*)"); |
| | | } |
| | | while (System.currentTimeMillis() - start <= timeout |
| | | && searchOperation.getResultCode() != ResultCode.SUCCESS |
| | |
| | | * CDDL HEADER END |
| | | * |
| | | * |
| | | * Copyright 2013 ForgeRock AS |
| | | * Copyright 2013-2014 ForgeRock AS |
| | | */ |
| | | package org.opends.server.types; |
| | | |
| | |
| | | { "base", SearchScope.BASE_OBJECT }, |
| | | { "one", SearchScope.SINGLE_LEVEL }, |
| | | { "sub", SearchScope.WHOLE_SUBTREE }, |
| | | { "subord", SearchScope.SUBORDINATE_SUBTREE }, |
| | | { "subordinate", SearchScope.SUBORDINATE_SUBTREE }, |
| | | { "subord", SearchScope.SUBORDINATES }, |
| | | { "subordinate", SearchScope.SUBORDINATES }, |
| | | }; |
| | | } |
| | | |