001/*
002 * Copyright 2022-2024 Ping Identity Corporation
003 * All Rights Reserved.
004 */
005/*
006 * Copyright 2022-2024 Ping Identity Corporation
007 *
008 * Licensed under the Apache License, Version 2.0 (the "License");
009 * you may not use this file except in compliance with the License.
010 * You may obtain a copy of the License at
011 *
012 *    http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing, software
015 * distributed under the License is distributed on an "AS IS" BASIS,
016 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017 * See the License for the specific language governing permissions and
018 * limitations under the License.
019 */
020/*
021 * Copyright (C) 2022-2024 Ping Identity Corporation
022 *
023 * This program is free software; you can redistribute it and/or modify
024 * it under the terms of the GNU General Public License (GPLv2 only)
025 * or the terms of the GNU Lesser General Public License (LGPLv2.1 only)
026 * as published by the Free Software Foundation.
027 *
028 * This program is distributed in the hope that it will be useful,
029 * but WITHOUT ANY WARRANTY; without even the implied warranty of
030 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
031 * GNU General Public License for more details.
032 *
033 * You should have received a copy of the GNU General Public License
034 * along with this program; if not, see <http://www.gnu.org/licenses>.
035 */
036package com.unboundid.ldap.sdk.unboundidds.logs.v2;
037
038
039
040import java.util.List;
041import java.util.Set;
042
043import com.unboundid.ldap.sdk.ResultCode;
044import com.unboundid.util.NotExtensible;
045import com.unboundid.util.NotNull;
046import com.unboundid.util.Nullable;
047import com.unboundid.util.ThreadSafety;
048import com.unboundid.util.ThreadSafetyLevel;
049
050
051
052/**
053 * This class provides a data structure that holds information about an
054 * operation result access log message.
055 * <BR>
056 * <BLOCKQUOTE>
057 *   <B>NOTE:</B>  This class, and other classes within the
058 *   {@code com.unboundid.ldap.sdk.unboundidds} package structure, are only
059 *   supported for use against Ping Identity, UnboundID, and
060 *   Nokia/Alcatel-Lucent 8661 server products.  These classes provide support
061 *   for proprietary functionality or for external specifications that are not
062 *   considered stable or mature enough to be guaranteed to work in an
063 *   interoperable way with other types of LDAP servers.
064 * </BLOCKQUOTE>
065 */
066@NotExtensible()
067@ThreadSafety(level=ThreadSafetyLevel.INTERFACE_THREADSAFE)
068public interface OperationResultAccessLogMessage
069       extends OperationRequestAccessLogMessage,
070               OperationForwardAccessLogMessage
071{
072  /**
073   * Retrieves the result code for the operation.
074   *
075   * @return  The result code for the operation, or {@code null} if it is not
076   *          included in the log message.
077   */
078  @Nullable()
079  ResultCode getResultCode();
080
081
082
083  /**
084   * Retrieves the diagnostic message for the operation.
085   *
086   * @return  The diagnostic message for the operation, or {@code null} if it is
087   *          not included in the log message.
088   */
089  @Nullable()
090  String getDiagnosticMessage();
091
092
093
094  /**
095   * Retrieves a message with additional information about the result of the
096   * operation.
097   *
098   * @return  A message with additional information about the result of the
099   *          operation, or {@code null} if it is not included in the log
100   *          message.
101   */
102  @Nullable()
103  String getAdditionalInformation();
104
105
106
107  /**
108   * Retrieves the matched DN for the operation.
109   *
110   * @return  The matched DN for the operation, or {@code null} if it is not
111   *          included in the log message.
112   */
113  @Nullable()
114  String getMatchedDN();
115
116
117
118  /**
119   * Retrieves the list of referral URLs for the operation.
120   *
121   * @return  The list of referral URLs for the operation, or an empty list if
122   *          it is not included in the log message.
123   */
124  @NotNull()
125  List<String> getReferralURLs();
126
127
128
129  /**
130   * Retrieves the length of time in milliseconds required to process the
131   * operation.
132   *
133   * @return  The length of time in milliseconds required to process the
134   *          operation, or {@code null} if it is not included in the log
135   *          message.
136   */
137  @Nullable()
138  Double getProcessingTimeMillis();
139
140
141
142  /**
143   * Retrieves the length of time in milliseconds the operation was required to
144   * wait on the work queue.
145   *
146   * @return  The length of time in milliseconds the operation was required to
147   *          wait on the work queue, or {@code null} if it is not included in
148   *          the log message.
149   */
150  @Nullable()
151  Double getWorkQueueWaitTimeMillis();
152
153
154
155  /**
156   * Retrieves the OIDs of any response controls contained in the log message.
157   *
158   * @return  The OIDs of any response controls contained in the log message, or
159   *          an empty list if it is not included in the log message.
160   */
161  @NotNull()
162  Set<String> getResponseControlOIDs();
163
164
165
166  /**
167   * Retrieves the number of intermediate response messages returned in the
168   * course of processing the operation.
169   *
170   * @return  The number of intermediate response messages returned to the
171   *          client in the course of processing the operation, or {@code null}
172   *          if it is not included in the log message.
173   */
174  @Nullable()
175  Long getIntermediateResponsesReturned();
176
177
178
179  /**
180   * Retrieves a list of the additional servers that were accessed in the course
181   * of processing the operation.  For example, if the access log message is
182   * from a Directory Proxy Server instance, then this may contain a list of the
183   * backend servers used to process the operation.
184   *
185   * @return  A list of the additional servers that were accessed in the course
186   *          of processing the operation, or an empty list if it is not
187   *          included in the log message.
188   */
189  @NotNull()
190  List<String> getServersAccessed();
191
192
193
194  /**
195   * Indicates whether the server accessed any uncached data in the course of
196   * processing the operation.
197   *
198   * @return  {@code true} if the server was known to access uncached data in
199   *          the course of processing the operation, {@code false} if the
200   *          server was known not to access uncached data, or {@code null} if
201   *          it is not included in the log message (and the server likely did
202   *          not access uncached data).
203   */
204  @Nullable()
205  Boolean getUncachedDataAccessed();
206
207
208
209  /**
210   * Retrieves the names of any privileges used during the course of processing
211   * the operation.
212   *
213   * @return  The names of any privileges used during the course of processing
214   *          the operation, or an empty list if no privileges were used or this
215   *          is not included in the log message.
216   */
217  @NotNull()
218  Set<String> getUsedPrivileges();
219
220
221
222  /**
223   * Retrieves the names of any privileges used during the course of processing
224   * the operation before an alternate authorization identity was assigned.
225   *
226   * @return  The names of any privileges used during the course of processing
227   *          the operation before an alternate authorization identity was
228   *          assigned, or an empty list if no privileges were used or this is
229   *          not included in the log message.
230   */
231  @NotNull()
232  Set<String> getPreAuthorizationUsedPrivileges();
233
234
235
236  /**
237   * Retrieves the names of any privileges that would have been required for
238   * processing the operation but that the requester did not have.
239   *
240   * @return  The names of any privileges that would have been required for
241   *          processing the operation but that the requester did not have, or
242   *          an empty list if there were no missing privileges or this is not
243   *          included in the log message.
244   */
245  @NotNull()
246  Set<String> getMissingPrivileges();
247}