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.operation;
028
029
030
031 import java.util.LinkedHashSet;
032 import java.util.List;
033
034 import org.opends.server.types.*;
035
036
037 /**
038 * This class defines a set of methods that are available for use by
039 * pre-parse plugins for search operations. Note that this interface
040 * is intended only to define an API for use by plugins and is not
041 * intended to be implemented by any custom classes.
042 */
043 @org.opends.server.types.PublicAPI(
044 stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
045 mayInstantiate=false,
046 mayExtend=false,
047 mayInvoke=true)
048 public interface PreParseSearchOperation
049 extends PreParseOperation
050 {
051 /**
052 * Retrieves the raw, unprocessed base DN as included in the request
053 * from the client. This may or may not contain a valid DN, as no
054 * validation will have been performed.
055 *
056 * @return The raw, unprocessed base DN as included in the request
057 * from the client.
058 */
059 public ByteString getRawBaseDN();
060
061
062
063 /**
064 * Specifies the raw, unprocessed base DN for this search operation.
065 *
066 * @param rawBaseDN The raw, unprocessed base DN for this search
067 operation.
068 */
069 public void setRawBaseDN(ByteString rawBaseDN);
070
071
072
073 /**
074 * Retrieves the scope for this search operation.
075 *
076 * @return The scope for this search operation.
077 */
078 public SearchScope getScope();
079
080
081
082 /**
083 * Specifies the scope for this search operation.
084 *
085 * @param scope The scope for this search operation.
086 */
087 public void setScope(SearchScope scope);
088
089
090
091 /**
092 * Retrieves the alias dereferencing policy for this search
093 * operation.
094 *
095 * @return The alias dereferencing policy for this search
096 * operation.
097 */
098 public DereferencePolicy getDerefPolicy();
099
100
101
102 /**
103 * Specifies the alias dereferencing policy for this search
104 * operation.
105 *
106 * @param derefPolicy The alias dereferencing policy for this
107 * search operation.
108 */
109 public void setDerefPolicy(DereferencePolicy derefPolicy);
110
111
112
113 /**
114 * Retrieves the size limit for this search operation.
115 *
116 * @return The size limit for this search operation.
117 */
118 public int getSizeLimit();
119
120
121
122 /**
123 * Specifies the size limit for this search operation.
124 *
125 * @param sizeLimit The size limit for this search operation.
126 */
127 public void setSizeLimit(int sizeLimit);
128
129
130
131 /**
132 * Retrieves the time limit for this search operation.
133 *
134 * @return The time limit for this search operation.
135 */
136 public int getTimeLimit();
137
138
139
140 /**
141 * Specifies the time limit for this search operation.
142 *
143 * @param timeLimit The time limit for this search operation.
144 */
145 public void setTimeLimit(int timeLimit);
146
147
148
149 /**
150 * Retrieves the typesOnly flag for this search operation.
151 *
152 * @return The typesOnly flag for this search operation.
153 */
154 public boolean getTypesOnly();
155
156
157
158 /**
159 * Specifies the typesOnly flag for this search operation.
160 *
161 * @param typesOnly The typesOnly flag for this search operation.
162 */
163 public void setTypesOnly(boolean typesOnly);
164
165
166
167 /**
168 * Retrieves the raw, unprocessed search filter as included in the
169 * request from the client. It may or may not contain a valid
170 * filter (e.g., unsupported attribute types or values with an
171 * invalid syntax) because no validation will have been performed on
172 * it.
173 *
174 * @return The raw, unprocessed search filter as included in the
175 * request from the client.
176 */
177 public RawFilter getRawFilter();
178
179
180
181 /**
182 * Specifies the raw, unprocessed search filter as included in the
183 * request from the client.
184 *
185 * @param rawFilter The raw, unprocessed search filter.
186 */
187 public void setRawFilter(RawFilter rawFilter);
188
189
190
191 /**
192 * Retrieves the set of requested attributes for this search
193 * operation. Its contents should not be be altered.
194 *
195 * @return The set of requested attributes for this search
196 * operation.
197 */
198 public LinkedHashSet<String> getAttributes();
199
200
201
202 /**
203 * Specifies the set of requested attributes for this search
204 * operation.
205 *
206 * @param attributes The set of requested attributes for this
207 * search operation.
208 */
209 public void setAttributes(LinkedHashSet<String> attributes);
210
211
212
213 /**
214 * Returns the provided entry to the client.
215 *
216 * @param entry The entry that should be returned.
217 * @param controls The set of controls to include with the entry
218 * (may be {@code null} if no controls should be
219 * included with the entry).
220 *
221 * @return {@code true} if the caller should continue processing
222 * the search request and sending additional entries and
223 * references, or {@code false} if not for some reason
224 * (e.g., the size limit has been reached or the search has
225 * been abandoned).
226 */
227 public boolean returnEntry(Entry entry, List<Control> controls);
228
229
230
231 /**
232 * Returns the provided search result reference to the client.
233 *
234 * @param reference The search reference that should be returned.
235 * @param dn A DN related to the specified search
236 * reference.
237 *
238 * @return {@code true} if the caller should continue processing
239 * the search request and sending additional entries and
240 * references, or {@code false} if not for some reason
241 * (e.g., the size limit has been reached or the search has
242 * been abandoned).
243 */
244 public boolean
245 returnReference(DN dn, SearchResultReference reference);
246 }
247