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