001 /*
002 * CDDL HEADER START
003 *
004 * The contents of this file are subject to the terms of the
005 * Common Development and Distribution License, Version 1.0 only
006 * (the "License"). You may not use this file except in compliance
007 * with the License.
008 *
009 * You can obtain a copy of the license at
010 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
011 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
012 * See the License for the specific language governing permissions
013 * and limitations under the License.
014 *
015 * When distributing Covered Code, include this CDDL HEADER in each
016 * file and include the License file at
017 * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
018 * add the following below this CDDL HEADER, with the fields enclosed
019 * by brackets "[]" replaced with your own identifying information:
020 * Portions Copyright [yyyy] [name of copyright owner]
021 *
022 * CDDL HEADER END
023 *
024 *
025 * Copyright 2006-2008 Sun Microsystems, Inc.
026 */
027 package org.opends.server.types;
028
029
030
031 import org.opends.server.protocols.ldap.LDAPConstants;
032
033
034
035 /**
036 * This enumeration defines the set of possible scopes that may be
037 * used for a search request. This is based on the LDAP specification
038 * defined in RFC 2251 but also includes the subordinate subtree
039 * search scope defined in draft-sermersheim-ldap-subordinate-scope.
040 */
041 @org.opends.server.types.PublicAPI(
042 stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
043 mayInstantiate=false,
044 mayExtend=false,
045 mayInvoke=true)
046 public enum SearchScope
047 {
048 /**
049 * The search scope that indicates only the entry specified as the
050 * search base should be considered a candidate for matching.
051 */
052 BASE_OBJECT(LDAPConstants.SCOPE_BASE_OBJECT),
053
054
055
056 /**
057 * The search scope that indicates only those entries that are
058 * immediate children of the entry specified as the search base (and
059 * not any of their descendants, and not the search base itself)
060 * should be considered candidates for matching.
061 */
062 SINGLE_LEVEL(LDAPConstants.SCOPE_SINGLE_LEVEL),
063
064
065
066 /**
067 * The search scope that indicates the entry specified as the search
068 * base and all descendants (recursively) should be considered
069 * candidates for matching.
070 */
071 WHOLE_SUBTREE(LDAPConstants.SCOPE_WHOLE_SUBTREE),
072
073
074
075 /**
076 * The search scope that indicates all descendants (recursively)
077 * below the entry specified as the search base (but not the search
078 * base entry itself) should be considered candidates for matching.
079 */
080 SUBORDINATE_SUBTREE(LDAPConstants.SCOPE_SUBORDINATE_SUBTREE);
081
082
083
084 // The integer value associated with this search scope.
085 private int intValue;
086
087
088
089 /**
090 * Creates a new search scope with the provided integer value.
091 *
092 * @param intValue The integer value associated with this search
093 * scope.
094 */
095 private SearchScope(int intValue)
096 {
097 this.intValue = intValue;
098 }
099
100
101
102 /**
103 * Retrieves the integer value associated with this search scope.
104 *
105 * @return The integer value associated with this search scope.
106 */
107 public int intValue()
108 {
109 return intValue;
110 }
111
112
113
114 /**
115 * Retrieves a string representation of this search scope.
116 *
117 * @return A string representation of this search scope.
118 */
119 public String toString()
120 {
121 switch (intValue)
122 {
123 case LDAPConstants.SCOPE_BASE_OBJECT:
124 return "baseObject";
125 case LDAPConstants.SCOPE_SINGLE_LEVEL:
126 return "singleLevel";
127 case LDAPConstants.SCOPE_WHOLE_SUBTREE:
128 return "wholeSubtree";
129 case LDAPConstants.SCOPE_SUBORDINATE_SUBTREE:
130 return "subordinateSubtree";
131 default:
132 return "Unknown";
133 }
134 }
135 }
136