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 import org.opends.messages.Message;
030
031 import java.util.List;
032
033
034 /**
035 * This class defines a data structure that holds information about
036 * the result of processing by a synchronization provider.
037 */
038 @org.opends.server.types.PublicAPI(
039 stability=org.opends.server.types.StabilityLevel.VOLATILE,
040 mayInstantiate=false,
041 mayExtend=false,
042 mayInvoke=true)
043 public interface SynchronizationProviderResult
044 {
045 /**
046 * Indicates whether processing on the associated operation should
047 * continue.
048 *
049 * @return <CODE>true</CODE> if processing on the associated
050 * operation should continue, or <CODE>false</CODE> if it
051 * should stop.
052 */
053 public boolean continueProcessing();
054
055 /**
056 * Retrieves the error message if <code>continueProcessing</code>
057 * returned <code>false</code>.
058 *
059 * @return An error message explaining why processing should
060 * stop or <code>null</code> if none is provided.
061 */
062 public Message getErrorMessage();
063
064 /**
065 * Retrieves the result code for the operation
066 * if <code>continueProcessing</code> returned <code>false</code>.
067 *
068 * @return the result code for the operation or <code>null</code>
069 * if none is provided.
070 */
071 public ResultCode getResultCode();
072
073 /**
074 * Retrieves the matched DN for the operation
075 * if <code>continueProcessing</code> returned <code>false</code>.
076 *
077 * @return the matched DN for the operation or <code>null</code>
078 * if none is provided.
079 */
080 public DN getMatchedDN();
081
082 /**
083 * Retrieves the referral URLs for the operation
084 * if <code>continueProcessing</code> returned <code>false</code>.
085 *
086 * @return the refferal URLs for the operation or
087 * <code>null</code> if none is provided.
088 */
089 public List<String> getReferralURLs();
090
091 /**
092 * Defines a continue processing synchronization provider result.
093 */
094 public class ContinueProcessing
095 implements SynchronizationProviderResult
096 {
097 /**
098 * {@inheritDoc}
099 */
100 public ResultCode getResultCode()
101 {
102 return null;
103 }
104
105 /**
106 * {@inheritDoc}
107 */
108 public DN getMatchedDN()
109 {
110 return null;
111 }
112
113 /**
114 * {@inheritDoc}
115 */
116 public List<String> getReferralURLs()
117 {
118 return null;
119 }
120
121 /**
122 * {@inheritDoc}
123 */
124 public boolean continueProcessing()
125 {
126 return true;
127 }
128
129 /**
130 * {@inheritDoc}
131 */
132 public Message getErrorMessage()
133 {
134 return null;
135 }
136 }
137
138 /**
139 * Defines a stop processing synchronization provider result.
140 */
141 public class StopProcessing
142 implements SynchronizationProviderResult
143 {
144 // The matched DN for this result.
145 private final DN matchedDN;
146
147 // The set of referral URLs for this result.
148 private final List<String> referralURLs;
149
150 // The result code for this result.
151 private final ResultCode resultCode;
152
153 private final Message errorMessage;
154
155 /**
156 * Contrust a new stop processing synchronization provider
157 * result.
158 *
159 * @param resultCode The result code for this result.
160 * @param errorMessage An message explaining why processing
161 * should stop.
162 * @param matchedDN The matched DN for this result.
163 * @param referralURLs The set of referral URLs for this result.
164 */
165 public StopProcessing(ResultCode resultCode, Message errorMessage,
166 DN matchedDN, List<String> referralURLs)
167 {
168 this.errorMessage = errorMessage;
169 this.matchedDN = matchedDN;
170 this.resultCode = resultCode;
171 this.referralURLs = referralURLs;
172 }
173
174 /**
175 * Contrust a new stop processing synchronization provider
176 * result.
177 *
178 * @param resultCode The result code for this result.
179 * @param errorMessage An message explaining why processing
180 * should stop.
181 */
182 public StopProcessing(ResultCode resultCode, Message errorMessage)
183 {
184 this.errorMessage = errorMessage;
185 this.resultCode = resultCode;
186 this.matchedDN = null;
187 this.referralURLs = null;
188 }
189
190 /**
191 * {@inheritDoc}
192 */
193 public ResultCode getResultCode()
194 {
195 return resultCode;
196 }
197
198 /**
199 * {@inheritDoc}
200 */
201 public DN getMatchedDN()
202 {
203 return matchedDN;
204 }
205
206 /**
207 * {@inheritDoc}
208 */
209 public List<String> getReferralURLs()
210 {
211 return referralURLs;
212 }
213
214 /**
215 * {@inheritDoc}
216 */
217 public boolean continueProcessing()
218 {
219 return false;
220 }
221
222 /**
223 * {@inheritDoc}
224 */
225 public Message getErrorMessage()
226 {
227 return errorMessage;
228 }
229 }
230 }
231