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 * docs/licenses/cddl.txt
011 * or http://www.opensource.org/licenses/cddl1.php.
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 * docs/licenses/cddl.txt. 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 2010-2013 UnboundID Corp.
026 */
027 package com.unboundid.directory.sdk.common.api;
028
029
030
031 import java.security.cert.Certificate;
032 import java.util.Collections;
033 import java.util.List;
034 import java.util.Map;
035
036 import com.unboundid.directory.sdk.common.config.AccessLoggerConfig;
037 import com.unboundid.directory.sdk.common.internal.ExampleUsageProvider;
038 import com.unboundid.directory.sdk.common.internal.Reconfigurable;
039 import com.unboundid.directory.sdk.common.internal.UnboundIDExtension;
040 import com.unboundid.directory.sdk.common.operation.AbandonRequest;
041 import com.unboundid.directory.sdk.common.operation.AddRequest;
042 import com.unboundid.directory.sdk.common.operation.AddResult;
043 import com.unboundid.directory.sdk.common.operation.BindResult;
044 import com.unboundid.directory.sdk.common.operation.CompareRequest;
045 import com.unboundid.directory.sdk.common.operation.CompareResult;
046 import com.unboundid.directory.sdk.common.operation.DeleteRequest;
047 import com.unboundid.directory.sdk.common.operation.DeleteResult;
048 import com.unboundid.directory.sdk.common.operation.ExtendedRequest;
049 import com.unboundid.directory.sdk.common.operation.ExtendedResult;
050 import com.unboundid.directory.sdk.common.operation.GenericResult;
051 import com.unboundid.directory.sdk.common.operation.ModifyRequest;
052 import com.unboundid.directory.sdk.common.operation.ModifyResult;
053 import com.unboundid.directory.sdk.common.operation.ModifyDNRequest;
054 import com.unboundid.directory.sdk.common.operation.ModifyDNResult;
055 import com.unboundid.directory.sdk.common.operation.SASLBindRequest;
056 import com.unboundid.directory.sdk.common.operation.SearchRequest;
057 import com.unboundid.directory.sdk.common.operation.SearchResult;
058 import com.unboundid.directory.sdk.common.operation.SimpleBindRequest;
059 import com.unboundid.directory.sdk.common.operation.UnbindRequest;
060 import com.unboundid.directory.sdk.common.types.ClientContext;
061 import com.unboundid.directory.sdk.common.types.CompletedOperationContext;
062 import com.unboundid.directory.sdk.common.types.CompletedSearchOperationContext;
063 import com.unboundid.directory.sdk.common.types.DisconnectReason;
064 import com.unboundid.directory.sdk.common.types.Entry;
065 import com.unboundid.directory.sdk.common.types.ForwardTarget;
066 import com.unboundid.directory.sdk.common.types.OperationContext;
067 import com.unboundid.directory.sdk.common.types.ServerContext;
068 import com.unboundid.directory.sdk.ds.internal.DirectoryServerExtension;
069 import com.unboundid.directory.sdk.metrics.internal.MetricsEngineExtension;
070 import com.unboundid.directory.sdk.proxy.internal.DirectoryProxyServerExtension;
071 import com.unboundid.directory.sdk.sync.internal.SynchronizationServerExtension;
072 import com.unboundid.ldap.sdk.Control;
073 import com.unboundid.ldap.sdk.IntermediateResponse;
074 import com.unboundid.ldap.sdk.LDAPException;
075 import com.unboundid.ldap.sdk.ResultCode;
076 import com.unboundid.util.Extensible;
077 import com.unboundid.util.ThreadSafety;
078 import com.unboundid.util.ThreadSafetyLevel;
079 import com.unboundid.util.args.ArgumentException;
080 import com.unboundid.util.args.ArgumentParser;
081
082
083
084 /**
085 * This class defines an API that must be implemented by extensions which
086 * record information about interaction with clients, including connections
087 * established and received and operations requested and completed. Access
088 * loggers may write information to files, but they may also write to other
089 * locations, including databases, message, queues, e-mail messages, or other
090 * targets.
091 * <BR><BR>
092 * Access loggers will be invoked for the following events:
093 * <UL>
094 * <LI>Whenever a new connection is established.</LI>
095 * <LI>Whenever an existing connection is closed or terminated.</LI>
096 * <LI>Whenever an abandon, add, bind, compare, delete, extended, modify,
097 * modify DN, search, or unbind request is received.</LI>
098 * <LI>Whenever an abandon, add, bind, compare, delete, extended, modify,
099 * modify DN, or search request is forwarded to another server for
100 * processing.</LI>
101 * <LI>If a forwarded add, bind, compare, delete, extended, modify, modify DN,
102 * or search operation fails.</LI>
103 * <LI>After sending the result for an add, bind, compare, delete, extended,
104 * modify, modify DN, or search operation.</LI>
105 * <LI>After completing processing for an abandon operation.</LI>
106 * <LI>After sending a search result entry, search result reference, or
107 * intermediate response message to the client.</LI>
108 * </UL>
109 * <BR><BR>
110 * Each access logger may configured to indicate whether to include or exclude
111 * internal and/or replicated operations, and criteria may be used to provide
112 * filtered logging. This is handled automatically by the server, so individual
113 * access logger implementations do not need to attempt to perform that
114 * filtering on their own. However, they may perform additional processing if
115 * desired to further narrow the set of messages that should be logged.
116 * <BR>
117 * <H2>Configuring Access Loggers</H2>
118 * In order to configure an access logger created using this API, use a command
119 * like:
120 * <PRE>
121 * dsconfig create-log-publisher \
122 * --publisher-name "<I>{logger-name}</I>" \
123 * --type third-party-access \
124 * --set enabled:true \
125 * --set "extension-class:<I>{class-name}</I>" \
126 * --set "extension-argument:<I>{name=value}</I>"
127 * </PRE>
128 * where "<I>{logger-name}</I>" is the name to use for the access logger
129 * instance, "<I>{class-name}</I>" is the fully-qualified name of the Java class
130 * that extends {@code com.unboundid.directory.sdk.common.api.AccessLogger},
131 * and "<I>{name=value}</I>" represents name-value pairs for any arguments to
132 * provide to the logger. If multiple arguments should be provided to the
133 * logger, then the "<CODE>--set extension-argument:<I>{name=value}</I></CODE>"
134 * option should be provided multiple times.
135 *
136 * @see FileBasedAccessLogger
137 * @see com.unboundid.directory.sdk.common.scripting.ScriptedAccessLogger
138 * @see
139 * com.unboundid.directory.sdk.common.scripting.ScriptedFileBasedAccessLogger
140 */
141 @Extensible()
142 @DirectoryServerExtension()
143 @DirectoryProxyServerExtension(appliesToLocalContent=true,
144 appliesToRemoteContent=true)
145 @SynchronizationServerExtension(appliesToLocalContent=true,
146 appliesToSynchronizedContent=false)
147 @MetricsEngineExtension()
148 @ThreadSafety(level=ThreadSafetyLevel.INTERFACE_THREADSAFE)
149 public abstract class AccessLogger
150 implements UnboundIDExtension, Reconfigurable<AccessLoggerConfig>,
151 ExampleUsageProvider
152 {
153 /**
154 * Creates a new instance of this access logger. All access logger
155 * implementations must include a default constructor, but any initialization
156 * should generally be done in the {@code initializeAccessLogger} method.
157 */
158 public AccessLogger()
159 {
160 // No implementation is required.
161 }
162
163
164
165 /**
166 * {@inheritDoc}
167 */
168 public abstract String getExtensionName();
169
170
171
172 /**
173 * {@inheritDoc}
174 */
175 public abstract String[] getExtensionDescription();
176
177
178
179 /**
180 * {@inheritDoc}
181 */
182 public void defineConfigArguments(final ArgumentParser parser)
183 throws ArgumentException
184 {
185 // No arguments will be allowed by default.
186 }
187
188
189
190 /**
191 * Initializes this access logger.
192 *
193 * @param serverContext A handle to the server context for the server in
194 * which this extension is running.
195 * @param config The general configuration for this access logger.
196 * @param parser The argument parser which has been initialized from
197 * the configuration for this access logger.
198 *
199 * @throws LDAPException If a problem occurs while initializing this access
200 * logger.
201 */
202 public void initializeAccessLogger(final ServerContext serverContext,
203 final AccessLoggerConfig config,
204 final ArgumentParser parser)
205 throws LDAPException
206 {
207 // No initialization will be performed by default.
208 }
209
210
211
212 /**
213 * {@inheritDoc}
214 */
215 public boolean isConfigurationAcceptable(final AccessLoggerConfig config,
216 final ArgumentParser parser,
217 final List<String> unacceptableReasons)
218 {
219 // No extended validation will be performed by default.
220 return true;
221 }
222
223
224
225 /**
226 * {@inheritDoc}
227 */
228 public ResultCode applyConfiguration(final AccessLoggerConfig config,
229 final ArgumentParser parser,
230 final List<String> adminActionsRequired,
231 final List<String> messages)
232 {
233 // By default, no configuration changes will be applied. If there are any
234 // arguments, then add an admin action message indicating that the extension
235 // needs to be restarted for any changes to take effect.
236 if (! parser.getNamedArguments().isEmpty())
237 {
238 adminActionsRequired.add(
239 "No configuration change has actually been applied. The new " +
240 "configuration will not take effect until this access logger " +
241 "is disabled and re-enabled or until the server is restarted.");
242 }
243
244 return ResultCode.SUCCESS;
245 }
246
247
248
249 /**
250 * Performs any cleanup which may be necessary when this access logger is to
251 * be taken out of service.
252 */
253 public void finalizeAccessLogger()
254 {
255 // No implementation is required.
256 }
257
258
259
260 /**
261 * Logs a message indicating that a new connection has been established.
262 *
263 * @param clientContext Information about the client connection that has
264 * been accepted.
265 */
266 public void logConnect(final ClientContext clientContext)
267 {
268 // No action will be taken by default.
269 }
270
271
272
273 /**
274 * Logs a message indicating that a connection has been closed.
275 *
276 * @param clientContext Information about the client connection that has
277 * been closed.
278 * @param disconnectReason A general reason that the connection has been
279 * closed.
280 * @param message A message with additional information about the
281 * closure. It may be {@code null} if none is
282 * available.
283 */
284 public void logDisconnect(final ClientContext clientContext,
285 final DisconnectReason disconnectReason,
286 final String message)
287 {
288 // No action will be taken by default.
289 }
290
291
292
293 /**
294 * Logs a message about a certificate chain presented by a client.
295 *
296 * @param clientContext Information about the client that presented the
297 * certificate chain.
298 * @param certChain The certificate chain presented by the client.
299 * @param authDN The DN of the user as whom the client was
300 * automatically authenticated, or {@code null} if the
301 * client was not automatically authenticated.
302 */
303 public void logClientCertificateChain(final ClientContext clientContext,
304 final Certificate[] certChain,
305 final String authDN)
306 {
307 // No action will be taken by default.
308 }
309
310
311
312 /**
313 * Logs a message about an abandon request received from a client.
314 *
315 * @param opContext The operation context for the abandon operation.
316 * @param request The abandon request that was received.
317 */
318 public void logAbandonRequest(final OperationContext opContext,
319 final AbandonRequest request)
320 {
321 // No action will be taken by default.
322 }
323
324
325
326 /**
327 * Logs a message about an abandon request that will be forwarded to another
328 * server.
329 *
330 * @param opContext The operation context for the abandon operation.
331 * @param request The abandon request that was received.
332 * @param target Information about the server to which the request will
333 * be forwarded.
334 */
335 public void logAbandonForward(final OperationContext opContext,
336 final AbandonRequest request,
337 final ForwardTarget target)
338 {
339 // No action will be taken by default.
340 }
341
342
343
344 /**
345 * Logs a message about the result of processing an abandon request.
346 *
347 * @param opContext The operation context for the abandon operation.
348 * @param request The abandon request that was received.
349 * @param result The result of processing the abandon request.
350 */
351 public void logAbandonResult(final CompletedOperationContext opContext,
352 final AbandonRequest request,
353 final GenericResult result)
354 {
355 // No action will be taken by default.
356 }
357
358
359
360 /**
361 * Logs a message about an add request received from a client.
362 *
363 * @param opContext The operation context for the add operation.
364 * @param request The add request that was received.
365 */
366 public void logAddRequest(final OperationContext opContext,
367 final AddRequest request)
368 {
369 // No action will be taken by default.
370 }
371
372
373
374 /**
375 * Logs a message about an add request that will be forwarded to another
376 * server.
377 *
378 * @param opContext The operation context for the add operation.
379 * @param request The add request that was received.
380 * @param target Information about the server to which the request will
381 * be forwarded.
382 */
383 public void logAddForward(final OperationContext opContext,
384 final AddRequest request,
385 final ForwardTarget target)
386 {
387 // No action will be taken by default.
388 }
389
390
391
392 /**
393 * Logs a message about a failure encountered while attempting to forward an
394 * add request to another server.
395 *
396 * @param opContext The operation context for the add operation.
397 * @param request The add request that was received.
398 * @param target Information about the server to which the request was
399 * forwarded.
400 * @param failure The exception that was received when attempting to
401 * forward the request.
402 */
403 public void logAddForwardFailure(final OperationContext opContext,
404 final AddRequest request,
405 final ForwardTarget target,
406 final LDAPException failure)
407 {
408 // No action will be taken by default.
409 }
410
411
412
413 /**
414 * Logs a message about the result of processing an add request.
415 *
416 * @param opContext The operation context for the add operation.
417 * @param request The add request that was received.
418 * @param result The result of processing the add request.
419 */
420 public void logAddResponse(final CompletedOperationContext opContext,
421 final AddRequest request,
422 final AddResult result)
423 {
424 // No action will be taken by default.
425 }
426
427
428
429 /**
430 * Logs a message about a simple bind request received from a client.
431 *
432 * @param opContext The operation context for the bind operation.
433 * @param request The bind request that was received.
434 */
435 public void logBindRequest(final OperationContext opContext,
436 final SimpleBindRequest request)
437 {
438 // No action will be taken by default.
439 }
440
441
442
443 /**
444 * Logs a message about a simple bind request that will be forwarded to
445 * another server.
446 *
447 * @param opContext The operation context for the bind operation.
448 * @param request The bind request that was received.
449 * @param target Information about the server to which the request will
450 * be forwarded.
451 */
452 public void logBindForward(final OperationContext opContext,
453 final SimpleBindRequest request,
454 final ForwardTarget target)
455 {
456 // No action will be taken by default.
457 }
458
459
460
461 /**
462 * Logs a message about a failure encountered while attempting to forward a
463 * simple bind request to another server.
464 *
465 * @param opContext The operation context for the bind operation.
466 * @param request The bind request that was received.
467 * @param target Information about the server to which the request was
468 * forwarded.
469 * @param failure The exception that was received when attempting to
470 * forward the request.
471 */
472 public void logBindForwardFailure(final OperationContext opContext,
473 final SimpleBindRequest request,
474 final ForwardTarget target,
475 final LDAPException failure)
476 {
477 // No action will be taken by default.
478 }
479
480
481
482 /**
483 * Logs a message about the result of processing a simple bind request.
484 *
485 * @param opContext The operation context for the bind operation.
486 * @param request The bind request that was received.
487 * @param result The result of processing the bind request.
488 */
489 public void logBindResponse(final CompletedOperationContext opContext,
490 final SimpleBindRequest request,
491 final BindResult result)
492 {
493 // No action will be taken by default.
494 }
495
496
497
498 /**
499 * Logs a message about a SASL bind request received from a client.
500 *
501 * @param opContext The operation context for the bind operation.
502 * @param request The bind request that was received.
503 */
504 public void logBindRequest(final OperationContext opContext,
505 final SASLBindRequest request)
506 {
507 // No action will be taken by default.
508 }
509
510
511
512 /**
513 * Logs a message about a SASL bind request that will be forwarded to
514 * another server.
515 *
516 * @param opContext The operation context for the bind operation.
517 * @param request The bind request that was received.
518 * @param target Information about the server to which the request will
519 * be forwarded.
520 */
521 public void logBindForward(final OperationContext opContext,
522 final SASLBindRequest request,
523 final ForwardTarget target)
524 {
525 // No action will be taken by default.
526 }
527
528
529
530 /**
531 * Logs a message about a failure encountered while attempting to forward a
532 * SASL bind request to another server.
533 *
534 * @param opContext The operation context for the bind operation.
535 * @param request The bind request that was received.
536 * @param target Information about the server to which the request was
537 * forwarded.
538 * @param failure The exception that was received when attempting to
539 * forward the request.
540 */
541 public void logBindForwardFailure(final OperationContext opContext,
542 final SASLBindRequest request,
543 final ForwardTarget target,
544 final LDAPException failure)
545 {
546 // No action will be taken by default.
547 }
548
549
550
551 /**
552 * Logs a message about the result of processing a SASL bind request.
553 *
554 * @param opContext The operation context for the bind operation.
555 * @param request The bind request that was received.
556 * @param result The result of processing the bind request.
557 */
558 public void logBindResponse(final CompletedOperationContext opContext,
559 final SASLBindRequest request,
560 final BindResult result)
561 {
562 // No action will be taken by default.
563 }
564
565
566
567 /**
568 * Logs a message about a compare request received from a client.
569 *
570 * @param opContext The operation context for the compare operation.
571 * @param request The compare request that was received.
572 */
573 public void logCompareRequest(final OperationContext opContext,
574 final CompareRequest request)
575 {
576 // No action will be taken by default.
577 }
578
579
580
581 /**
582 * Logs a message about a compare request that will be forwarded to another
583 * server.
584 *
585 * @param opContext The operation context for the compare operation.
586 * @param request The compare request that was received.
587 * @param target Information about the server to which the request will
588 * be forwarded.
589 */
590 public void logCompareForward(final OperationContext opContext,
591 final CompareRequest request,
592 final ForwardTarget target)
593 {
594 // No action will be taken by default.
595 }
596
597
598
599 /**
600 * Logs a message about a failure encountered while attempting to forward a
601 * compare request to another server.
602 *
603 * @param opContext The operation context for the compare operation.
604 * @param request The compare request that was received.
605 * @param target Information about the server to which the request was
606 * forwarded.
607 * @param failure The exception that was received when attempting to
608 * forward the request.
609 */
610 public void logCompareForwardFailure(final OperationContext opContext,
611 final CompareRequest request,
612 final ForwardTarget target,
613 final LDAPException failure)
614 {
615 // No action will be taken by default.
616 }
617
618
619
620 /**
621 * Logs a message about the result of processing a compare request.
622 *
623 * @param opContext The operation context for the compare operation.
624 * @param request The compare request that was received.
625 * @param result The result of processing the compare request.
626 */
627 public void logCompareResponse(final CompletedOperationContext opContext,
628 final CompareRequest request,
629 final CompareResult result)
630 {
631 // No action will be taken by default.
632 }
633
634
635
636 /**
637 * Logs a message about a delete request received from a client.
638 *
639 * @param opContext The operation context for the delete operation.
640 * @param request The delete request that was received.
641 */
642 public void logDeleteRequest(final OperationContext opContext,
643 final DeleteRequest request)
644 {
645 // No action will be taken by default.
646 }
647
648
649
650 /**
651 * Logs a message about a delete request that will be forwarded to another
652 * server.
653 *
654 * @param opContext The operation context for the delete operation.
655 * @param request The delete request that was received.
656 * @param target Information about the server to which the request will
657 * be forwarded.
658 */
659 public void logDeleteForward(final OperationContext opContext,
660 final DeleteRequest request,
661 final ForwardTarget target)
662 {
663 // No action will be taken by default.
664 }
665
666
667
668 /**
669 * Logs a message about a failure encountered while attempting to forward a
670 * delete request to another server.
671 *
672 * @param opContext The operation context for the delete operation.
673 * @param request The delete request that was received.
674 * @param target Information about the server to which the request was
675 * forwarded.
676 * @param failure The exception that was received when attempting to
677 * forward the request.
678 */
679 public void logDeleteForwardFailure(final OperationContext opContext,
680 final DeleteRequest request,
681 final ForwardTarget target,
682 final LDAPException failure)
683 {
684 // No action will be taken by default.
685 }
686
687
688
689 /**
690 * Logs a message about the result of processing a delete request.
691 *
692 * @param opContext The operation context for the delete operation.
693 * @param request The delete request that was received.
694 * @param result The result of processing the delete request.
695 */
696 public void logDeleteResponse(final CompletedOperationContext opContext,
697 final DeleteRequest request,
698 final DeleteResult result)
699 {
700 // No action will be taken by default.
701 }
702
703
704
705 /**
706 * Logs a message about an extended request received from a client.
707 *
708 * @param opContext The operation context for the extended operation.
709 * @param request The extended request that was received.
710 */
711 public void logExtendedRequest(final OperationContext opContext,
712 final ExtendedRequest request)
713 {
714 // No action will be taken by default.
715 }
716
717
718
719 /**
720 * Logs a message about an extended request that will be forwarded to another
721 * server.
722 *
723 * @param opContext The operation context for the extended operation.
724 * @param request The extended request that was received.
725 * @param target Information about the server to which the request will
726 * be forwarded.
727 */
728 public void logExtendedForward(final OperationContext opContext,
729 final ExtendedRequest request,
730 final ForwardTarget target)
731 {
732 // No action will be taken by default.
733 }
734
735
736
737 /**
738 * Logs a message about a failure encountered while attempting to forward an
739 * extended request to another server.
740 *
741 * @param opContext The operation context for the extended operation.
742 * @param request The extended request that was received.
743 * @param target Information about the server to which the request was
744 * forwarded.
745 * @param failure The exception that was received when attempting to
746 * forward the request.
747 */
748 public void logExtendedForwardFailure(final OperationContext opContext,
749 final ExtendedRequest request,
750 final ForwardTarget target,
751 final LDAPException failure)
752 {
753 // No action will be taken by default.
754 }
755
756
757
758 /**
759 * Logs a message about the result of processing an extended request.
760 *
761 * @param opContext The operation context for the extended operation.
762 * @param request The extended request that was received.
763 * @param result The result of processing the extended request.
764 */
765 public void logExtendedResponse(final CompletedOperationContext opContext,
766 final ExtendedRequest request,
767 final ExtendedResult result)
768 {
769 // No action will be taken by default.
770 }
771
772
773
774 /**
775 * Logs a message about a modify request received from a client.
776 *
777 * @param opContext The operation context for the modify operation.
778 * @param request The modify request that was received.
779 */
780 public void logModifyRequest(final OperationContext opContext,
781 final ModifyRequest request)
782 {
783 // No action will be taken by default.
784 }
785
786
787
788 /**
789 * Logs a message about a modify request that will be forwarded to another
790 * server.
791 *
792 * @param opContext The operation context for the modify operation.
793 * @param request The modify request that was received.
794 * @param target Information about the server to which the request will
795 * be forwarded.
796 */
797 public void logModifyForward(final OperationContext opContext,
798 final ModifyRequest request,
799 final ForwardTarget target)
800 {
801 // No action will be taken by default.
802 }
803
804
805
806 /**
807 * Logs a message about a failure encountered while attempting to forward a
808 * modify request to another server.
809 *
810 * @param opContext The operation context for the modify operation.
811 * @param request The modify request that was received.
812 * @param target Information about the server to which the request was
813 * forwarded.
814 * @param failure The exception that was received when attempting to
815 * forward the request.
816 */
817 public void logModifyForwardFailure(final OperationContext opContext,
818 final ModifyRequest request,
819 final ForwardTarget target,
820 final LDAPException failure)
821 {
822 // No action will be taken by default.
823 }
824
825
826
827 /**
828 * Logs a message about the result of processing a modify request.
829 *
830 * @param opContext The operation context for the modify operation.
831 * @param request The modify request that was received.
832 * @param result The result of processing the modify request.
833 */
834 public void logModifyResponse(final CompletedOperationContext opContext,
835 final ModifyRequest request,
836 final ModifyResult result)
837 {
838 // No action will be taken by default.
839 }
840
841
842
843 /**
844 * Logs a message about a modify DN request received from a client.
845 *
846 * @param opContext The operation context for the modify DN operation.
847 * @param request The modify DN request that was received.
848 */
849 public void logModifyDNRequest(final OperationContext opContext,
850 final ModifyDNRequest request)
851 {
852 // No action will be taken by default.
853 }
854
855
856
857 /**
858 * Logs a message about a modify DN request that will be forwarded to another
859 * server.
860 *
861 * @param opContext The operation context for the modify DN operation.
862 * @param request The modify DN request that was received.
863 * @param target Information about the server to which the request will
864 * be forwarded.
865 */
866 public void logModifyDNForward(final OperationContext opContext,
867 final ModifyDNRequest request,
868 final ForwardTarget target)
869 {
870 // No action will be taken by default.
871 }
872
873
874
875 /**
876 * Logs a message about a failure encountered while attempting to forward a
877 * modify DN request to another server.
878 *
879 * @param opContext The operation context for the modify DN operation.
880 * @param request The modify DN request that was received.
881 * @param target Information about the server to which the request was
882 * forwarded.
883 * @param failure The exception that was received when attempting to
884 * forward the request.
885 */
886 public void logModifyDNForwardFailure(final OperationContext opContext,
887 final ModifyDNRequest request,
888 final ForwardTarget target,
889 final LDAPException failure)
890 {
891 // No action will be taken by default.
892 }
893
894
895
896 /**
897 * Logs a message about the result of processing a modify DN request.
898 *
899 * @param opContext The operation context for the modify DN operation.
900 * @param request The modify DN request that was received.
901 * @param result The result of processing the modify DN request.
902 */
903 public void logModifyDNResponse(final CompletedOperationContext opContext,
904 final ModifyDNRequest request,
905 final ModifyDNResult result)
906 {
907 // No action will be taken by default.
908 }
909
910
911
912 /**
913 * Logs a message about a search request received from a client.
914 *
915 * @param opContext The operation context for the search operation.
916 * @param request The search request that was received.
917 */
918 public void logSearchRequest(final OperationContext opContext,
919 final SearchRequest request)
920 {
921 // No action will be taken by default.
922 }
923
924
925
926 /**
927 * Logs a message about a search request that will be forwarded to another
928 * server.
929 *
930 * @param opContext The operation context for the search operation.
931 * @param request The search request that was received.
932 * @param target Information about the server to which the request will
933 * be forwarded.
934 */
935 public void logSearchForward(final OperationContext opContext,
936 final SearchRequest request,
937 final ForwardTarget target)
938 {
939 // No action will be taken by default.
940 }
941
942
943
944 /**
945 * Logs a message about a failure encountered while attempting to forward a
946 * search request to another server.
947 *
948 * @param opContext The operation context for the search operation.
949 * @param request The search request that was received.
950 * @param target Information about the server to which the request was
951 * forwarded.
952 * @param failure The exception that was received when attempting to
953 * forward the request.
954 */
955 public void logSearchForwardFailure(final OperationContext opContext,
956 final SearchRequest request,
957 final ForwardTarget target,
958 final LDAPException failure)
959 {
960 // No action will be taken by default.
961 }
962
963
964
965 /**
966 * Logs a message about a search result entry that was returned to the client.
967 *
968 * @param opContext The operation context for the search operation.
969 * @param request The search request that was received.
970 * @param entry The entry that was returned.
971 * @param controls The set of controls included with the entry, or an empty
972 * list if there were none.
973 */
974 public void logSearchResultEntry(final OperationContext opContext,
975 final SearchRequest request,
976 final Entry entry,
977 final List<Control> controls)
978 {
979 // No action will be taken by default.
980 }
981
982
983
984 /**
985 * Logs a message about a search result reference that was returned to the
986 * client.
987 *
988 * @param opContext The operation context for the search operation.
989 * @param request The search request that was received.
990 * @param referralURLs The referral URLs for the reference that was
991 * returned.
992 * @param controls The set of controls included with the reference, or
993 * an empty list if there were none.
994 */
995 public void logSearchResultReference(final OperationContext opContext,
996 final SearchRequest request,
997 final List<String> referralURLs,
998 final List<Control> controls)
999 {
1000 // No action will be taken by default.
1001 }
1002
1003
1004
1005 /**
1006 * Logs a message about the result of processing a search request.
1007 *
1008 * @param opContext The operation context for the search operation.
1009 * @param request The search request that was received.
1010 * @param result The result of processing the search request.
1011 */
1012 public void logSearchResultDone(
1013 final CompletedSearchOperationContext opContext,
1014 final SearchRequest request, final SearchResult result)
1015 {
1016 // No action will be taken by default.
1017 }
1018
1019
1020
1021 /**
1022 * Logs a message about an unbind request received from a client.
1023 *
1024 * @param opContext The operation context for the unbind operation.
1025 * @param request The unbind request that was received.
1026 */
1027 public void logUnbindRequest(final OperationContext opContext,
1028 final UnbindRequest request)
1029 {
1030 // No action will be taken by default.
1031 }
1032
1033
1034
1035 /**
1036 * Logs a message about an intermediate response that was returned to the
1037 * client.
1038 *
1039 * @param opContext The operation context for the associated
1040 * operation.
1041 * @param intermediateResponse The intermediate response that was returned.
1042 */
1043 public void logIntermediateResponse(final OperationContext opContext,
1044 final IntermediateResponse intermediateResponse)
1045 {
1046 // No action will be taken by default.
1047 }
1048
1049
1050
1051 /**
1052 * {@inheritDoc}
1053 */
1054 public Map<List<String>,String> getExamplesArgumentSets()
1055 {
1056 return Collections.emptyMap();
1057 }
1058 }