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