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