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