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