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 legal-notices/CDDLv1_0.txt 010 * or http://forgerock.org/license/CDDLv1.0.html. 011 * See the License for the specific language governing permissions 012 * and limitations under the License. 013 * 014 * When distributing Covered Code, include this CDDL HEADER in each 015 * file and include the License file at legal-notices/CDDLv1_0.txt. 016 * If applicable, add the following below this CDDL HEADER, with the 017 * fields enclosed by brackets "[]" replaced with your own identifying 018 * information: 019 * Portions Copyright [yyyy] [name of copyright owner] 020 * 021 * CDDL HEADER END 022 * 023 * 024 * Copyright 2008 Sun Microsystems, Inc. 025 */ 026package org.forgerock.opendj.server.config.meta; 027 028 029 030import java.util.Collection; 031import java.util.SortedSet; 032import java.util.TreeSet; 033import org.forgerock.opendj.config.AdministratorAction; 034import org.forgerock.opendj.config.AggregationPropertyDefinition; 035import org.forgerock.opendj.config.AliasDefaultBehaviorProvider; 036import org.forgerock.opendj.config.BooleanPropertyDefinition; 037import org.forgerock.opendj.config.ClassPropertyDefinition; 038import org.forgerock.opendj.config.client.ConcurrentModificationException; 039import org.forgerock.opendj.config.client.IllegalManagedObjectNameException; 040import org.forgerock.opendj.config.client.ManagedObject; 041import org.forgerock.opendj.config.client.ManagedObjectDecodingException; 042import org.forgerock.opendj.config.client.MissingMandatoryPropertiesException; 043import org.forgerock.opendj.config.client.OperationRejectedException; 044import org.forgerock.opendj.config.DefaultBehaviorProvider; 045import org.forgerock.opendj.config.DefinedDefaultBehaviorProvider; 046import org.forgerock.opendj.config.DefinitionDecodingException; 047import org.forgerock.opendj.config.DurationPropertyDefinition; 048import org.forgerock.opendj.config.EnumPropertyDefinition; 049import org.forgerock.opendj.config.InstantiableRelationDefinition; 050import org.forgerock.opendj.config.IntegerPropertyDefinition; 051import org.forgerock.opendj.config.ManagedObjectAlreadyExistsException; 052import org.forgerock.opendj.config.ManagedObjectDefinition; 053import org.forgerock.opendj.config.ManagedObjectNotFoundException; 054import org.forgerock.opendj.config.PropertyException; 055import org.forgerock.opendj.config.PropertyOption; 056import org.forgerock.opendj.config.PropertyProvider; 057import org.forgerock.opendj.config.server.ConfigException; 058import org.forgerock.opendj.config.server.ConfigurationAddListener; 059import org.forgerock.opendj.config.server.ConfigurationChangeListener; 060import org.forgerock.opendj.config.server.ConfigurationDeleteListener; 061import org.forgerock.opendj.config.server.ServerManagedObject; 062import org.forgerock.opendj.config.SizePropertyDefinition; 063import org.forgerock.opendj.config.StringPropertyDefinition; 064import org.forgerock.opendj.config.Tag; 065import org.forgerock.opendj.config.UndefinedDefaultBehaviorProvider; 066import org.forgerock.opendj.ldap.DN; 067import org.forgerock.opendj.ldap.LdapException; 068import org.forgerock.opendj.server.config.client.AccessLogFilteringCriteriaCfgClient; 069import org.forgerock.opendj.server.config.client.FileBasedAccessLogPublisherCfgClient; 070import org.forgerock.opendj.server.config.client.LogRetentionPolicyCfgClient; 071import org.forgerock.opendj.server.config.client.LogRotationPolicyCfgClient; 072import org.forgerock.opendj.server.config.meta.AccessLogPublisherCfgDefn.FilteringPolicy; 073import org.forgerock.opendj.server.config.server.AccessLogFilteringCriteriaCfg; 074import org.forgerock.opendj.server.config.server.AccessLogPublisherCfg; 075import org.forgerock.opendj.server.config.server.FileBasedAccessLogPublisherCfg; 076import org.forgerock.opendj.server.config.server.LogPublisherCfg; 077import org.forgerock.opendj.server.config.server.LogRetentionPolicyCfg; 078import org.forgerock.opendj.server.config.server.LogRotationPolicyCfg; 079 080 081 082/** 083 * An interface for querying the File Based Access Log Publisher 084 * managed object definition meta information. 085 * <p> 086 * File Based Access Log Publishers publish access messages to the 087 * file system. 088 */ 089public final class FileBasedAccessLogPublisherCfgDefn extends ManagedObjectDefinition<FileBasedAccessLogPublisherCfgClient, FileBasedAccessLogPublisherCfg> { 090 091 /** The singleton configuration definition instance. */ 092 private static final FileBasedAccessLogPublisherCfgDefn INSTANCE = new FileBasedAccessLogPublisherCfgDefn(); 093 094 095 096 /** 097 * Defines the set of permissable values for the "log-format" property. 098 * <p> 099 * Specifies how log records should be formatted and written to the 100 * access log. 101 */ 102 public static enum LogFormat { 103 104 /** 105 * Combine log records for operation requests and responses into a 106 * single record. This format should be used when log records are 107 * to be filtered based on response criteria (e.g. result code). 108 */ 109 COMBINED("combined"), 110 111 112 113 /** 114 * Outputs separate log records for operation requests and 115 * responses. 116 */ 117 MULTI_LINE("multi-line"); 118 119 120 121 /** String representation of the value. */ 122 private final String name; 123 124 125 126 /** Private constructor. */ 127 private LogFormat(String name) { this.name = name; } 128 129 130 131 /** {@inheritDoc} */ 132 public String toString() { return name; } 133 134 } 135 136 137 138 /** The "append" property definition. */ 139 private static final BooleanPropertyDefinition PD_APPEND; 140 141 142 143 /** The "asynchronous" property definition. */ 144 private static final BooleanPropertyDefinition PD_ASYNCHRONOUS; 145 146 147 148 /** The "auto-flush" property definition. */ 149 private static final BooleanPropertyDefinition PD_AUTO_FLUSH; 150 151 152 153 /** The "buffer-size" property definition. */ 154 private static final SizePropertyDefinition PD_BUFFER_SIZE; 155 156 157 158 /** The "java-class" property definition. */ 159 private static final ClassPropertyDefinition PD_JAVA_CLASS; 160 161 162 163 /** The "log-control-oids" property definition. */ 164 private static final BooleanPropertyDefinition PD_LOG_CONTROL_OIDS; 165 166 167 168 /** The "log-file" property definition. */ 169 private static final StringPropertyDefinition PD_LOG_FILE; 170 171 172 173 /** The "log-file-permissions" property definition. */ 174 private static final StringPropertyDefinition PD_LOG_FILE_PERMISSIONS; 175 176 177 178 /** The "log-format" property definition. */ 179 private static final EnumPropertyDefinition<LogFormat> PD_LOG_FORMAT; 180 181 182 183 /** The "log-record-time-format" property definition. */ 184 private static final StringPropertyDefinition PD_LOG_RECORD_TIME_FORMAT; 185 186 187 188 /** The "queue-size" property definition. */ 189 private static final IntegerPropertyDefinition PD_QUEUE_SIZE; 190 191 192 193 /** The "retention-policy" property definition. */ 194 private static final AggregationPropertyDefinition<LogRetentionPolicyCfgClient, LogRetentionPolicyCfg> PD_RETENTION_POLICY; 195 196 197 198 /** The "rotation-policy" property definition. */ 199 private static final AggregationPropertyDefinition<LogRotationPolicyCfgClient, LogRotationPolicyCfg> PD_ROTATION_POLICY; 200 201 202 203 /** The "time-interval" property definition. */ 204 private static final DurationPropertyDefinition PD_TIME_INTERVAL; 205 206 207 208 /** Build the "append" property definition. */ 209 static { 210 BooleanPropertyDefinition.Builder builder = BooleanPropertyDefinition.createBuilder(INSTANCE, "append"); 211 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "append")); 212 DefaultBehaviorProvider<Boolean> provider = new DefinedDefaultBehaviorProvider<Boolean>("true"); 213 builder.setDefaultBehaviorProvider(provider); 214 PD_APPEND = builder.getInstance(); 215 INSTANCE.registerPropertyDefinition(PD_APPEND); 216 } 217 218 219 220 /** Build the "asynchronous" property definition. */ 221 static { 222 BooleanPropertyDefinition.Builder builder = BooleanPropertyDefinition.createBuilder(INSTANCE, "asynchronous"); 223 builder.setOption(PropertyOption.MANDATORY); 224 builder.setOption(PropertyOption.ADVANCED); 225 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "asynchronous")); 226 DefaultBehaviorProvider<Boolean> provider = new DefinedDefaultBehaviorProvider<Boolean>("true"); 227 builder.setDefaultBehaviorProvider(provider); 228 PD_ASYNCHRONOUS = builder.getInstance(); 229 INSTANCE.registerPropertyDefinition(PD_ASYNCHRONOUS); 230 } 231 232 233 234 /** Build the "auto-flush" property definition. */ 235 static { 236 BooleanPropertyDefinition.Builder builder = BooleanPropertyDefinition.createBuilder(INSTANCE, "auto-flush"); 237 builder.setOption(PropertyOption.ADVANCED); 238 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "auto-flush")); 239 DefaultBehaviorProvider<Boolean> provider = new DefinedDefaultBehaviorProvider<Boolean>("true"); 240 builder.setDefaultBehaviorProvider(provider); 241 PD_AUTO_FLUSH = builder.getInstance(); 242 INSTANCE.registerPropertyDefinition(PD_AUTO_FLUSH); 243 } 244 245 246 247 /** Build the "buffer-size" property definition. */ 248 static { 249 SizePropertyDefinition.Builder builder = SizePropertyDefinition.createBuilder(INSTANCE, "buffer-size"); 250 builder.setOption(PropertyOption.ADVANCED); 251 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "buffer-size")); 252 DefaultBehaviorProvider<Long> provider = new DefinedDefaultBehaviorProvider<Long>("64kb"); 253 builder.setDefaultBehaviorProvider(provider); 254 builder.setLowerLimit("1"); 255 PD_BUFFER_SIZE = builder.getInstance(); 256 INSTANCE.registerPropertyDefinition(PD_BUFFER_SIZE); 257 } 258 259 260 261 /** Build the "java-class" property definition. */ 262 static { 263 ClassPropertyDefinition.Builder builder = ClassPropertyDefinition.createBuilder(INSTANCE, "java-class"); 264 builder.setOption(PropertyOption.MANDATORY); 265 builder.setOption(PropertyOption.ADVANCED); 266 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "java-class")); 267 DefaultBehaviorProvider<String> provider = new DefinedDefaultBehaviorProvider<String>("org.opends.server.loggers.TextAccessLogPublisher"); 268 builder.setDefaultBehaviorProvider(provider); 269 builder.addInstanceOf("org.opends.server.loggers.LogPublisher"); 270 PD_JAVA_CLASS = builder.getInstance(); 271 INSTANCE.registerPropertyDefinition(PD_JAVA_CLASS); 272 } 273 274 275 276 /** Build the "log-control-oids" property definition. */ 277 static { 278 BooleanPropertyDefinition.Builder builder = BooleanPropertyDefinition.createBuilder(INSTANCE, "log-control-oids"); 279 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "log-control-oids")); 280 DefaultBehaviorProvider<Boolean> provider = new DefinedDefaultBehaviorProvider<Boolean>("false"); 281 builder.setDefaultBehaviorProvider(provider); 282 PD_LOG_CONTROL_OIDS = builder.getInstance(); 283 INSTANCE.registerPropertyDefinition(PD_LOG_CONTROL_OIDS); 284 } 285 286 287 288 /** Build the "log-file" property definition. */ 289 static { 290 StringPropertyDefinition.Builder builder = StringPropertyDefinition.createBuilder(INSTANCE, "log-file"); 291 builder.setOption(PropertyOption.MANDATORY); 292 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.COMPONENT_RESTART, INSTANCE, "log-file")); 293 builder.setDefaultBehaviorProvider(new UndefinedDefaultBehaviorProvider<String>()); 294 builder.setPattern(".*", "FILE"); 295 PD_LOG_FILE = builder.getInstance(); 296 INSTANCE.registerPropertyDefinition(PD_LOG_FILE); 297 } 298 299 300 301 /** Build the "log-file-permissions" property definition. */ 302 static { 303 StringPropertyDefinition.Builder builder = StringPropertyDefinition.createBuilder(INSTANCE, "log-file-permissions"); 304 builder.setOption(PropertyOption.MANDATORY); 305 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "log-file-permissions")); 306 DefaultBehaviorProvider<String> provider = new DefinedDefaultBehaviorProvider<String>("640"); 307 builder.setDefaultBehaviorProvider(provider); 308 builder.setPattern("^([0-7][0-7][0-7])$", "MODE"); 309 PD_LOG_FILE_PERMISSIONS = builder.getInstance(); 310 INSTANCE.registerPropertyDefinition(PD_LOG_FILE_PERMISSIONS); 311 } 312 313 314 315 /** Build the "log-format" property definition. */ 316 static { 317 EnumPropertyDefinition.Builder<LogFormat> builder = EnumPropertyDefinition.createBuilder(INSTANCE, "log-format"); 318 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "log-format")); 319 DefaultBehaviorProvider<LogFormat> provider = new DefinedDefaultBehaviorProvider<LogFormat>("multi-line"); 320 builder.setDefaultBehaviorProvider(provider); 321 builder.setEnumClass(LogFormat.class); 322 PD_LOG_FORMAT = builder.getInstance(); 323 INSTANCE.registerPropertyDefinition(PD_LOG_FORMAT); 324 } 325 326 327 328 /** Build the "log-record-time-format" property definition. */ 329 static { 330 StringPropertyDefinition.Builder builder = StringPropertyDefinition.createBuilder(INSTANCE, "log-record-time-format"); 331 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "log-record-time-format")); 332 DefaultBehaviorProvider<String> provider = new DefinedDefaultBehaviorProvider<String>("dd/MMM/yyyy:HH:mm:ss Z"); 333 builder.setDefaultBehaviorProvider(provider); 334 builder.setPattern(".*", "STRING"); 335 PD_LOG_RECORD_TIME_FORMAT = builder.getInstance(); 336 INSTANCE.registerPropertyDefinition(PD_LOG_RECORD_TIME_FORMAT); 337 } 338 339 340 341 /** Build the "queue-size" property definition. */ 342 static { 343 IntegerPropertyDefinition.Builder builder = IntegerPropertyDefinition.createBuilder(INSTANCE, "queue-size"); 344 builder.setOption(PropertyOption.ADVANCED); 345 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "queue-size")); 346 DefaultBehaviorProvider<Integer> provider = new DefinedDefaultBehaviorProvider<Integer>("5000"); 347 builder.setDefaultBehaviorProvider(provider); 348 builder.setLowerLimit(1); 349 PD_QUEUE_SIZE = builder.getInstance(); 350 INSTANCE.registerPropertyDefinition(PD_QUEUE_SIZE); 351 } 352 353 354 355 /** Build the "retention-policy" property definition. */ 356 static { 357 AggregationPropertyDefinition.Builder<LogRetentionPolicyCfgClient, LogRetentionPolicyCfg> builder = AggregationPropertyDefinition.createBuilder(INSTANCE, "retention-policy"); 358 builder.setOption(PropertyOption.MULTI_VALUED); 359 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "retention-policy")); 360 builder.setDefaultBehaviorProvider(new AliasDefaultBehaviorProvider<String>(INSTANCE, "retention-policy")); 361 builder.setParentPath("/"); 362 builder.setRelationDefinition("log-retention-policy"); 363 PD_RETENTION_POLICY = builder.getInstance(); 364 INSTANCE.registerPropertyDefinition(PD_RETENTION_POLICY); 365 INSTANCE.registerConstraint(PD_RETENTION_POLICY.getSourceConstraint()); 366 } 367 368 369 370 /** Build the "rotation-policy" property definition. */ 371 static { 372 AggregationPropertyDefinition.Builder<LogRotationPolicyCfgClient, LogRotationPolicyCfg> builder = AggregationPropertyDefinition.createBuilder(INSTANCE, "rotation-policy"); 373 builder.setOption(PropertyOption.MULTI_VALUED); 374 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "rotation-policy")); 375 builder.setDefaultBehaviorProvider(new AliasDefaultBehaviorProvider<String>(INSTANCE, "rotation-policy")); 376 builder.setParentPath("/"); 377 builder.setRelationDefinition("log-rotation-policy"); 378 PD_ROTATION_POLICY = builder.getInstance(); 379 INSTANCE.registerPropertyDefinition(PD_ROTATION_POLICY); 380 INSTANCE.registerConstraint(PD_ROTATION_POLICY.getSourceConstraint()); 381 } 382 383 384 385 /** Build the "time-interval" property definition. */ 386 static { 387 DurationPropertyDefinition.Builder builder = DurationPropertyDefinition.createBuilder(INSTANCE, "time-interval"); 388 builder.setOption(PropertyOption.ADVANCED); 389 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "time-interval")); 390 DefaultBehaviorProvider<Long> provider = new DefinedDefaultBehaviorProvider<Long>("5s"); 391 builder.setDefaultBehaviorProvider(provider); 392 builder.setBaseUnit("ms"); 393 builder.setLowerLimit("1"); 394 PD_TIME_INTERVAL = builder.getInstance(); 395 INSTANCE.registerPropertyDefinition(PD_TIME_INTERVAL); 396 } 397 398 399 400 // Register the tags associated with this managed object definition. 401 static { 402 INSTANCE.registerTag(Tag.valueOf("logging")); 403 } 404 405 406 407 /** 408 * Get the File Based Access Log Publisher configuration definition 409 * singleton. 410 * 411 * @return Returns the File Based Access Log Publisher configuration 412 * definition singleton. 413 */ 414 public static FileBasedAccessLogPublisherCfgDefn getInstance() { 415 return INSTANCE; 416 } 417 418 419 420 /** 421 * Private constructor. 422 */ 423 private FileBasedAccessLogPublisherCfgDefn() { 424 super("file-based-access-log-publisher", AccessLogPublisherCfgDefn.getInstance()); 425 } 426 427 428 429 /** {@inheritDoc} */ 430 public FileBasedAccessLogPublisherCfgClient createClientConfiguration( 431 ManagedObject<? extends FileBasedAccessLogPublisherCfgClient> impl) { 432 return new FileBasedAccessLogPublisherCfgClientImpl(impl); 433 } 434 435 436 437 /** {@inheritDoc} */ 438 public FileBasedAccessLogPublisherCfg createServerConfiguration( 439 ServerManagedObject<? extends FileBasedAccessLogPublisherCfg> impl) { 440 return new FileBasedAccessLogPublisherCfgServerImpl(impl); 441 } 442 443 444 445 /** {@inheritDoc} */ 446 public Class<FileBasedAccessLogPublisherCfg> getServerConfigurationClass() { 447 return FileBasedAccessLogPublisherCfg.class; 448 } 449 450 451 452 /** 453 * Get the "append" property definition. 454 * <p> 455 * Specifies whether to append to existing log files. 456 * 457 * @return Returns the "append" property definition. 458 */ 459 public BooleanPropertyDefinition getAppendPropertyDefinition() { 460 return PD_APPEND; 461 } 462 463 464 465 /** 466 * Get the "asynchronous" property definition. 467 * <p> 468 * Indicates whether the File Based Access Log Publisher will 469 * publish records asynchronously. 470 * 471 * @return Returns the "asynchronous" property definition. 472 */ 473 public BooleanPropertyDefinition getAsynchronousPropertyDefinition() { 474 return PD_ASYNCHRONOUS; 475 } 476 477 478 479 /** 480 * Get the "auto-flush" property definition. 481 * <p> 482 * Specifies whether to flush the writer after every log record. 483 * <p> 484 * If the asynchronous writes option is used, the writer is flushed 485 * after all the log records in the queue are written. 486 * 487 * @return Returns the "auto-flush" property definition. 488 */ 489 public BooleanPropertyDefinition getAutoFlushPropertyDefinition() { 490 return PD_AUTO_FLUSH; 491 } 492 493 494 495 /** 496 * Get the "buffer-size" property definition. 497 * <p> 498 * Specifies the log file buffer size. 499 * 500 * @return Returns the "buffer-size" property definition. 501 */ 502 public SizePropertyDefinition getBufferSizePropertyDefinition() { 503 return PD_BUFFER_SIZE; 504 } 505 506 507 508 /** 509 * Get the "enabled" property definition. 510 * <p> 511 * Indicates whether the File Based Access Log Publisher is enabled 512 * for use. 513 * 514 * @return Returns the "enabled" property definition. 515 */ 516 public BooleanPropertyDefinition getEnabledPropertyDefinition() { 517 return AccessLogPublisherCfgDefn.getInstance().getEnabledPropertyDefinition(); 518 } 519 520 521 522 /** 523 * Get the "filtering-policy" property definition. 524 * <p> 525 * Specifies how filtering criteria should be applied to log 526 * records. 527 * 528 * @return Returns the "filtering-policy" property definition. 529 */ 530 public EnumPropertyDefinition<FilteringPolicy> getFilteringPolicyPropertyDefinition() { 531 return AccessLogPublisherCfgDefn.getInstance().getFilteringPolicyPropertyDefinition(); 532 } 533 534 535 536 /** 537 * Get the "java-class" property definition. 538 * <p> 539 * The fully-qualified name of the Java class that provides the File 540 * Based Access Log Publisher implementation. 541 * 542 * @return Returns the "java-class" property definition. 543 */ 544 public ClassPropertyDefinition getJavaClassPropertyDefinition() { 545 return PD_JAVA_CLASS; 546 } 547 548 549 550 /** 551 * Get the "log-control-oids" property definition. 552 * <p> 553 * Specifies whether control OIDs will be included in operation log 554 * records. 555 * 556 * @return Returns the "log-control-oids" property definition. 557 */ 558 public BooleanPropertyDefinition getLogControlOidsPropertyDefinition() { 559 return PD_LOG_CONTROL_OIDS; 560 } 561 562 563 564 /** 565 * Get the "log-file" property definition. 566 * <p> 567 * The file name to use for the log files generated by the File 568 * Based Access Log Publisher. The path to the file is relative to 569 * the server root. 570 * 571 * @return Returns the "log-file" property definition. 572 */ 573 public StringPropertyDefinition getLogFilePropertyDefinition() { 574 return PD_LOG_FILE; 575 } 576 577 578 579 /** 580 * Get the "log-file-permissions" property definition. 581 * <p> 582 * The UNIX permissions of the log files created by this File Based 583 * Access Log Publisher. 584 * 585 * @return Returns the "log-file-permissions" property definition. 586 */ 587 public StringPropertyDefinition getLogFilePermissionsPropertyDefinition() { 588 return PD_LOG_FILE_PERMISSIONS; 589 } 590 591 592 593 /** 594 * Get the "log-format" property definition. 595 * <p> 596 * Specifies how log records should be formatted and written to the 597 * access log. 598 * 599 * @return Returns the "log-format" property definition. 600 */ 601 public EnumPropertyDefinition<LogFormat> getLogFormatPropertyDefinition() { 602 return PD_LOG_FORMAT; 603 } 604 605 606 607 /** 608 * Get the "log-record-time-format" property definition. 609 * <p> 610 * Specifies the format string that is used to generate log record 611 * timestamps. 612 * 613 * @return Returns the "log-record-time-format" property definition. 614 */ 615 public StringPropertyDefinition getLogRecordTimeFormatPropertyDefinition() { 616 return PD_LOG_RECORD_TIME_FORMAT; 617 } 618 619 620 621 /** 622 * Get the "queue-size" property definition. 623 * <p> 624 * The maximum number of log records that can be stored in the 625 * asynchronous queue. 626 * 627 * @return Returns the "queue-size" property definition. 628 */ 629 public IntegerPropertyDefinition getQueueSizePropertyDefinition() { 630 return PD_QUEUE_SIZE; 631 } 632 633 634 635 /** 636 * Get the "retention-policy" property definition. 637 * <p> 638 * The retention policy to use for the File Based Access Log 639 * Publisher . 640 * <p> 641 * When multiple policies are used, log files are cleaned when any 642 * of the policy's conditions are met. 643 * 644 * @return Returns the "retention-policy" property definition. 645 */ 646 public AggregationPropertyDefinition<LogRetentionPolicyCfgClient, LogRetentionPolicyCfg> getRetentionPolicyPropertyDefinition() { 647 return PD_RETENTION_POLICY; 648 } 649 650 651 652 /** 653 * Get the "rotation-policy" property definition. 654 * <p> 655 * The rotation policy to use for the File Based Access Log 656 * Publisher . 657 * <p> 658 * When multiple policies are used, rotation will occur if any 659 * policy's conditions are met. 660 * 661 * @return Returns the "rotation-policy" property definition. 662 */ 663 public AggregationPropertyDefinition<LogRotationPolicyCfgClient, LogRotationPolicyCfg> getRotationPolicyPropertyDefinition() { 664 return PD_ROTATION_POLICY; 665 } 666 667 668 669 /** 670 * Get the "suppress-internal-operations" property definition. 671 * <p> 672 * Indicates whether internal operations (for example, operations 673 * that are initiated by plugins) should be logged along with the 674 * operations that are requested by users. 675 * 676 * @return Returns the "suppress-internal-operations" property definition. 677 */ 678 public BooleanPropertyDefinition getSuppressInternalOperationsPropertyDefinition() { 679 return AccessLogPublisherCfgDefn.getInstance().getSuppressInternalOperationsPropertyDefinition(); 680 } 681 682 683 684 /** 685 * Get the "suppress-synchronization-operations" property definition. 686 * <p> 687 * Indicates whether access messages that are generated by 688 * synchronization operations should be suppressed. 689 * 690 * @return Returns the "suppress-synchronization-operations" property definition. 691 */ 692 public BooleanPropertyDefinition getSuppressSynchronizationOperationsPropertyDefinition() { 693 return AccessLogPublisherCfgDefn.getInstance().getSuppressSynchronizationOperationsPropertyDefinition(); 694 } 695 696 697 698 /** 699 * Get the "time-interval" property definition. 700 * <p> 701 * Specifies the interval at which to check whether the log files 702 * need to be rotated. 703 * 704 * @return Returns the "time-interval" property definition. 705 */ 706 public DurationPropertyDefinition getTimeIntervalPropertyDefinition() { 707 return PD_TIME_INTERVAL; 708 } 709 710 711 712 /** 713 * Get the "access-log-filtering-criteria" relation definition. 714 * 715 * @return Returns the "access-log-filtering-criteria" relation definition. 716 */ 717 public InstantiableRelationDefinition<AccessLogFilteringCriteriaCfgClient,AccessLogFilteringCriteriaCfg> getAccessLogFilteringCriteriaRelationDefinition() { 718 return AccessLogPublisherCfgDefn.getInstance().getAccessLogFilteringCriteriaRelationDefinition(); 719 } 720 721 722 723 /** 724 * Managed object client implementation. 725 */ 726 private static class FileBasedAccessLogPublisherCfgClientImpl implements 727 FileBasedAccessLogPublisherCfgClient { 728 729 /** Private implementation. */ 730 private ManagedObject<? extends FileBasedAccessLogPublisherCfgClient> impl; 731 732 733 734 /** Private constructor. */ 735 private FileBasedAccessLogPublisherCfgClientImpl( 736 ManagedObject<? extends FileBasedAccessLogPublisherCfgClient> impl) { 737 this.impl = impl; 738 } 739 740 741 742 /** {@inheritDoc} */ 743 public boolean isAppend() { 744 return impl.getPropertyValue(INSTANCE.getAppendPropertyDefinition()); 745 } 746 747 748 749 /** {@inheritDoc} */ 750 public void setAppend(Boolean value) { 751 impl.setPropertyValue(INSTANCE.getAppendPropertyDefinition(), value); 752 } 753 754 755 756 /** {@inheritDoc} */ 757 public boolean isAsynchronous() { 758 return impl.getPropertyValue(INSTANCE.getAsynchronousPropertyDefinition()); 759 } 760 761 762 763 /** {@inheritDoc} */ 764 public void setAsynchronous(boolean value) { 765 impl.setPropertyValue(INSTANCE.getAsynchronousPropertyDefinition(), value); 766 } 767 768 769 770 /** {@inheritDoc} */ 771 public boolean isAutoFlush() { 772 return impl.getPropertyValue(INSTANCE.getAutoFlushPropertyDefinition()); 773 } 774 775 776 777 /** {@inheritDoc} */ 778 public void setAutoFlush(Boolean value) { 779 impl.setPropertyValue(INSTANCE.getAutoFlushPropertyDefinition(), value); 780 } 781 782 783 784 /** {@inheritDoc} */ 785 public long getBufferSize() { 786 return impl.getPropertyValue(INSTANCE.getBufferSizePropertyDefinition()); 787 } 788 789 790 791 /** {@inheritDoc} */ 792 public void setBufferSize(Long value) { 793 impl.setPropertyValue(INSTANCE.getBufferSizePropertyDefinition(), value); 794 } 795 796 797 798 /** {@inheritDoc} */ 799 public Boolean isEnabled() { 800 return impl.getPropertyValue(INSTANCE.getEnabledPropertyDefinition()); 801 } 802 803 804 805 /** {@inheritDoc} */ 806 public void setEnabled(boolean value) { 807 impl.setPropertyValue(INSTANCE.getEnabledPropertyDefinition(), value); 808 } 809 810 811 812 /** {@inheritDoc} */ 813 public FilteringPolicy getFilteringPolicy() { 814 return impl.getPropertyValue(INSTANCE.getFilteringPolicyPropertyDefinition()); 815 } 816 817 818 819 /** {@inheritDoc} */ 820 public void setFilteringPolicy(FilteringPolicy value) { 821 impl.setPropertyValue(INSTANCE.getFilteringPolicyPropertyDefinition(), value); 822 } 823 824 825 826 /** {@inheritDoc} */ 827 public String getJavaClass() { 828 return impl.getPropertyValue(INSTANCE.getJavaClassPropertyDefinition()); 829 } 830 831 832 833 /** {@inheritDoc} */ 834 public void setJavaClass(String value) { 835 impl.setPropertyValue(INSTANCE.getJavaClassPropertyDefinition(), value); 836 } 837 838 839 840 /** {@inheritDoc} */ 841 public boolean isLogControlOids() { 842 return impl.getPropertyValue(INSTANCE.getLogControlOidsPropertyDefinition()); 843 } 844 845 846 847 /** {@inheritDoc} */ 848 public void setLogControlOids(Boolean value) { 849 impl.setPropertyValue(INSTANCE.getLogControlOidsPropertyDefinition(), value); 850 } 851 852 853 854 /** {@inheritDoc} */ 855 public String getLogFile() { 856 return impl.getPropertyValue(INSTANCE.getLogFilePropertyDefinition()); 857 } 858 859 860 861 /** {@inheritDoc} */ 862 public void setLogFile(String value) { 863 impl.setPropertyValue(INSTANCE.getLogFilePropertyDefinition(), value); 864 } 865 866 867 868 /** {@inheritDoc} */ 869 public String getLogFilePermissions() { 870 return impl.getPropertyValue(INSTANCE.getLogFilePermissionsPropertyDefinition()); 871 } 872 873 874 875 /** {@inheritDoc} */ 876 public void setLogFilePermissions(String value) { 877 impl.setPropertyValue(INSTANCE.getLogFilePermissionsPropertyDefinition(), value); 878 } 879 880 881 882 /** {@inheritDoc} */ 883 public LogFormat getLogFormat() { 884 return impl.getPropertyValue(INSTANCE.getLogFormatPropertyDefinition()); 885 } 886 887 888 889 /** {@inheritDoc} */ 890 public void setLogFormat(LogFormat value) { 891 impl.setPropertyValue(INSTANCE.getLogFormatPropertyDefinition(), value); 892 } 893 894 895 896 /** {@inheritDoc} */ 897 public String getLogRecordTimeFormat() { 898 return impl.getPropertyValue(INSTANCE.getLogRecordTimeFormatPropertyDefinition()); 899 } 900 901 902 903 /** {@inheritDoc} */ 904 public void setLogRecordTimeFormat(String value) { 905 impl.setPropertyValue(INSTANCE.getLogRecordTimeFormatPropertyDefinition(), value); 906 } 907 908 909 910 /** {@inheritDoc} */ 911 public int getQueueSize() { 912 return impl.getPropertyValue(INSTANCE.getQueueSizePropertyDefinition()); 913 } 914 915 916 917 /** {@inheritDoc} */ 918 public void setQueueSize(Integer value) { 919 impl.setPropertyValue(INSTANCE.getQueueSizePropertyDefinition(), value); 920 } 921 922 923 924 /** {@inheritDoc} */ 925 public SortedSet<String> getRetentionPolicy() { 926 return impl.getPropertyValues(INSTANCE.getRetentionPolicyPropertyDefinition()); 927 } 928 929 930 931 /** {@inheritDoc} */ 932 public void setRetentionPolicy(Collection<String> values) { 933 impl.setPropertyValues(INSTANCE.getRetentionPolicyPropertyDefinition(), values); 934 } 935 936 937 938 /** {@inheritDoc} */ 939 public SortedSet<String> getRotationPolicy() { 940 return impl.getPropertyValues(INSTANCE.getRotationPolicyPropertyDefinition()); 941 } 942 943 944 945 /** {@inheritDoc} */ 946 public void setRotationPolicy(Collection<String> values) { 947 impl.setPropertyValues(INSTANCE.getRotationPolicyPropertyDefinition(), values); 948 } 949 950 951 952 /** {@inheritDoc} */ 953 public boolean isSuppressInternalOperations() { 954 return impl.getPropertyValue(INSTANCE.getSuppressInternalOperationsPropertyDefinition()); 955 } 956 957 958 959 /** {@inheritDoc} */ 960 public void setSuppressInternalOperations(Boolean value) { 961 impl.setPropertyValue(INSTANCE.getSuppressInternalOperationsPropertyDefinition(), value); 962 } 963 964 965 966 /** {@inheritDoc} */ 967 public boolean isSuppressSynchronizationOperations() { 968 return impl.getPropertyValue(INSTANCE.getSuppressSynchronizationOperationsPropertyDefinition()); 969 } 970 971 972 973 /** {@inheritDoc} */ 974 public void setSuppressSynchronizationOperations(Boolean value) { 975 impl.setPropertyValue(INSTANCE.getSuppressSynchronizationOperationsPropertyDefinition(), value); 976 } 977 978 979 980 /** {@inheritDoc} */ 981 public long getTimeInterval() { 982 return impl.getPropertyValue(INSTANCE.getTimeIntervalPropertyDefinition()); 983 } 984 985 986 987 /** {@inheritDoc} */ 988 public void setTimeInterval(Long value) { 989 impl.setPropertyValue(INSTANCE.getTimeIntervalPropertyDefinition(), value); 990 } 991 992 993 994 /** {@inheritDoc} */ 995 public String[] listAccessLogFilteringCriteria() throws ConcurrentModificationException, 996 LdapException { 997 return impl.listChildren(INSTANCE.getAccessLogFilteringCriteriaRelationDefinition()); 998 } 999 1000 1001 1002 /** {@inheritDoc} */ 1003 public AccessLogFilteringCriteriaCfgClient getAccessLogFilteringCriteria(String name) 1004 throws DefinitionDecodingException, ManagedObjectDecodingException, 1005 ManagedObjectNotFoundException, ConcurrentModificationException, 1006 LdapException { 1007 return impl.getChild(INSTANCE.getAccessLogFilteringCriteriaRelationDefinition(), name).getConfiguration(); 1008 } 1009 1010 1011 1012 /** {@inheritDoc} */ 1013 public <M extends AccessLogFilteringCriteriaCfgClient> M createAccessLogFilteringCriteria( 1014 ManagedObjectDefinition<M, ? extends AccessLogFilteringCriteriaCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException { 1015 return impl.createChild(INSTANCE.getAccessLogFilteringCriteriaRelationDefinition(), d, name, exceptions).getConfiguration(); 1016 } 1017 1018 1019 1020 /** {@inheritDoc} */ 1021 public void removeAccessLogFilteringCriteria(String name) 1022 throws ManagedObjectNotFoundException, ConcurrentModificationException, 1023 OperationRejectedException, LdapException { 1024 impl.removeChild(INSTANCE.getAccessLogFilteringCriteriaRelationDefinition(), name); 1025 } 1026 1027 1028 1029 /** {@inheritDoc} */ 1030 public ManagedObjectDefinition<? extends FileBasedAccessLogPublisherCfgClient, ? extends FileBasedAccessLogPublisherCfg> definition() { 1031 return INSTANCE; 1032 } 1033 1034 1035 1036 /** {@inheritDoc} */ 1037 public PropertyProvider properties() { 1038 return impl; 1039 } 1040 1041 1042 1043 /** {@inheritDoc} */ 1044 public void commit() throws ManagedObjectAlreadyExistsException, 1045 MissingMandatoryPropertiesException, ConcurrentModificationException, 1046 OperationRejectedException, LdapException { 1047 impl.commit(); 1048 } 1049 1050 1051 1052 /** {@inheritDoc} */ 1053 public String toString() { 1054 return impl.toString(); 1055 } 1056 } 1057 1058 1059 1060 /** 1061 * Managed object server implementation. 1062 */ 1063 private static class FileBasedAccessLogPublisherCfgServerImpl implements 1064 FileBasedAccessLogPublisherCfg { 1065 1066 /** Private implementation. */ 1067 private ServerManagedObject<? extends FileBasedAccessLogPublisherCfg> impl; 1068 1069 /** The value of the "append" property. */ 1070 private final boolean pAppend; 1071 1072 /** The value of the "asynchronous" property. */ 1073 private final boolean pAsynchronous; 1074 1075 /** The value of the "auto-flush" property. */ 1076 private final boolean pAutoFlush; 1077 1078 /** The value of the "buffer-size" property. */ 1079 private final long pBufferSize; 1080 1081 /** The value of the "enabled" property. */ 1082 private final boolean pEnabled; 1083 1084 /** The value of the "filtering-policy" property. */ 1085 private final FilteringPolicy pFilteringPolicy; 1086 1087 /** The value of the "java-class" property. */ 1088 private final String pJavaClass; 1089 1090 /** The value of the "log-control-oids" property. */ 1091 private final boolean pLogControlOids; 1092 1093 /** The value of the "log-file" property. */ 1094 private final String pLogFile; 1095 1096 /** The value of the "log-file-permissions" property. */ 1097 private final String pLogFilePermissions; 1098 1099 /** The value of the "log-format" property. */ 1100 private final LogFormat pLogFormat; 1101 1102 /** The value of the "log-record-time-format" property. */ 1103 private final String pLogRecordTimeFormat; 1104 1105 /** The value of the "queue-size" property. */ 1106 private final int pQueueSize; 1107 1108 /** The value of the "retention-policy" property. */ 1109 private final SortedSet<String> pRetentionPolicy; 1110 1111 /** The value of the "rotation-policy" property. */ 1112 private final SortedSet<String> pRotationPolicy; 1113 1114 /** The value of the "suppress-internal-operations" property. */ 1115 private final boolean pSuppressInternalOperations; 1116 1117 /** The value of the "suppress-synchronization-operations" property. */ 1118 private final boolean pSuppressSynchronizationOperations; 1119 1120 /** The value of the "time-interval" property. */ 1121 private final long pTimeInterval; 1122 1123 1124 1125 /** Private constructor. */ 1126 private FileBasedAccessLogPublisherCfgServerImpl(ServerManagedObject<? extends FileBasedAccessLogPublisherCfg> impl) { 1127 this.impl = impl; 1128 this.pAppend = impl.getPropertyValue(INSTANCE.getAppendPropertyDefinition()); 1129 this.pAsynchronous = impl.getPropertyValue(INSTANCE.getAsynchronousPropertyDefinition()); 1130 this.pAutoFlush = impl.getPropertyValue(INSTANCE.getAutoFlushPropertyDefinition()); 1131 this.pBufferSize = impl.getPropertyValue(INSTANCE.getBufferSizePropertyDefinition()); 1132 this.pEnabled = impl.getPropertyValue(INSTANCE.getEnabledPropertyDefinition()); 1133 this.pFilteringPolicy = impl.getPropertyValue(INSTANCE.getFilteringPolicyPropertyDefinition()); 1134 this.pJavaClass = impl.getPropertyValue(INSTANCE.getJavaClassPropertyDefinition()); 1135 this.pLogControlOids = impl.getPropertyValue(INSTANCE.getLogControlOidsPropertyDefinition()); 1136 this.pLogFile = impl.getPropertyValue(INSTANCE.getLogFilePropertyDefinition()); 1137 this.pLogFilePermissions = impl.getPropertyValue(INSTANCE.getLogFilePermissionsPropertyDefinition()); 1138 this.pLogFormat = impl.getPropertyValue(INSTANCE.getLogFormatPropertyDefinition()); 1139 this.pLogRecordTimeFormat = impl.getPropertyValue(INSTANCE.getLogRecordTimeFormatPropertyDefinition()); 1140 this.pQueueSize = impl.getPropertyValue(INSTANCE.getQueueSizePropertyDefinition()); 1141 this.pRetentionPolicy = impl.getPropertyValues(INSTANCE.getRetentionPolicyPropertyDefinition()); 1142 this.pRotationPolicy = impl.getPropertyValues(INSTANCE.getRotationPolicyPropertyDefinition()); 1143 this.pSuppressInternalOperations = impl.getPropertyValue(INSTANCE.getSuppressInternalOperationsPropertyDefinition()); 1144 this.pSuppressSynchronizationOperations = impl.getPropertyValue(INSTANCE.getSuppressSynchronizationOperationsPropertyDefinition()); 1145 this.pTimeInterval = impl.getPropertyValue(INSTANCE.getTimeIntervalPropertyDefinition()); 1146 } 1147 1148 1149 1150 /** {@inheritDoc} */ 1151 public void addFileBasedAccessChangeListener( 1152 ConfigurationChangeListener<FileBasedAccessLogPublisherCfg> listener) { 1153 impl.registerChangeListener(listener); 1154 } 1155 1156 1157 1158 /** {@inheritDoc} */ 1159 public void removeFileBasedAccessChangeListener( 1160 ConfigurationChangeListener<FileBasedAccessLogPublisherCfg> listener) { 1161 impl.deregisterChangeListener(listener); 1162 } 1163 /** {@inheritDoc} */ 1164 public void addAccessChangeListener( 1165 ConfigurationChangeListener<AccessLogPublisherCfg> listener) { 1166 impl.registerChangeListener(listener); 1167 } 1168 1169 1170 1171 /** {@inheritDoc} */ 1172 public void removeAccessChangeListener( 1173 ConfigurationChangeListener<AccessLogPublisherCfg> listener) { 1174 impl.deregisterChangeListener(listener); 1175 } 1176 /** {@inheritDoc} */ 1177 public void addChangeListener( 1178 ConfigurationChangeListener<LogPublisherCfg> listener) { 1179 impl.registerChangeListener(listener); 1180 } 1181 1182 1183 1184 /** {@inheritDoc} */ 1185 public void removeChangeListener( 1186 ConfigurationChangeListener<LogPublisherCfg> listener) { 1187 impl.deregisterChangeListener(listener); 1188 } 1189 1190 1191 1192 /** {@inheritDoc} */ 1193 public boolean isAppend() { 1194 return pAppend; 1195 } 1196 1197 1198 1199 /** {@inheritDoc} */ 1200 public boolean isAsynchronous() { 1201 return pAsynchronous; 1202 } 1203 1204 1205 1206 /** {@inheritDoc} */ 1207 public boolean isAutoFlush() { 1208 return pAutoFlush; 1209 } 1210 1211 1212 1213 /** {@inheritDoc} */ 1214 public long getBufferSize() { 1215 return pBufferSize; 1216 } 1217 1218 1219 1220 /** {@inheritDoc} */ 1221 public boolean isEnabled() { 1222 return pEnabled; 1223 } 1224 1225 1226 1227 /** {@inheritDoc} */ 1228 public FilteringPolicy getFilteringPolicy() { 1229 return pFilteringPolicy; 1230 } 1231 1232 1233 1234 /** {@inheritDoc} */ 1235 public String getJavaClass() { 1236 return pJavaClass; 1237 } 1238 1239 1240 1241 /** {@inheritDoc} */ 1242 public boolean isLogControlOids() { 1243 return pLogControlOids; 1244 } 1245 1246 1247 1248 /** {@inheritDoc} */ 1249 public String getLogFile() { 1250 return pLogFile; 1251 } 1252 1253 1254 1255 /** {@inheritDoc} */ 1256 public String getLogFilePermissions() { 1257 return pLogFilePermissions; 1258 } 1259 1260 1261 1262 /** {@inheritDoc} */ 1263 public LogFormat getLogFormat() { 1264 return pLogFormat; 1265 } 1266 1267 1268 1269 /** {@inheritDoc} */ 1270 public String getLogRecordTimeFormat() { 1271 return pLogRecordTimeFormat; 1272 } 1273 1274 1275 1276 /** {@inheritDoc} */ 1277 public int getQueueSize() { 1278 return pQueueSize; 1279 } 1280 1281 1282 1283 /** {@inheritDoc} */ 1284 public SortedSet<String> getRetentionPolicy() { 1285 return pRetentionPolicy; 1286 } 1287 1288 1289 1290 /** 1291 * {@inheritDoc} 1292 */ 1293 public SortedSet<DN> getRetentionPolicyDNs() { 1294 SortedSet<String> values = getRetentionPolicy(); 1295 SortedSet<DN> dnValues = new TreeSet<DN>(); 1296 for (String value : values) { 1297 DN dn = INSTANCE.getRetentionPolicyPropertyDefinition().getChildDN(value); 1298 dnValues.add(dn); 1299 } 1300 return dnValues; 1301 } 1302 1303 1304 1305 /** {@inheritDoc} */ 1306 public SortedSet<String> getRotationPolicy() { 1307 return pRotationPolicy; 1308 } 1309 1310 1311 1312 /** 1313 * {@inheritDoc} 1314 */ 1315 public SortedSet<DN> getRotationPolicyDNs() { 1316 SortedSet<String> values = getRotationPolicy(); 1317 SortedSet<DN> dnValues = new TreeSet<DN>(); 1318 for (String value : values) { 1319 DN dn = INSTANCE.getRotationPolicyPropertyDefinition().getChildDN(value); 1320 dnValues.add(dn); 1321 } 1322 return dnValues; 1323 } 1324 1325 1326 1327 /** {@inheritDoc} */ 1328 public boolean isSuppressInternalOperations() { 1329 return pSuppressInternalOperations; 1330 } 1331 1332 1333 1334 /** {@inheritDoc} */ 1335 public boolean isSuppressSynchronizationOperations() { 1336 return pSuppressSynchronizationOperations; 1337 } 1338 1339 1340 1341 /** {@inheritDoc} */ 1342 public long getTimeInterval() { 1343 return pTimeInterval; 1344 } 1345 1346 1347 1348 /** {@inheritDoc} */ 1349 public String[] listAccessLogFilteringCriteria() { 1350 return impl.listChildren(INSTANCE.getAccessLogFilteringCriteriaRelationDefinition()); 1351 } 1352 1353 1354 1355 /** {@inheritDoc} */ 1356 public AccessLogFilteringCriteriaCfg getAccessLogFilteringCriteria(String name) throws ConfigException { 1357 return impl.getChild(INSTANCE.getAccessLogFilteringCriteriaRelationDefinition(), name).getConfiguration(); 1358 } 1359 1360 1361 1362 /** {@inheritDoc} */ 1363 public void addAccessLogFilteringCriteriaAddListener( 1364 ConfigurationAddListener<AccessLogFilteringCriteriaCfg> listener) throws ConfigException { 1365 impl.registerAddListener(INSTANCE.getAccessLogFilteringCriteriaRelationDefinition(), listener); 1366 } 1367 1368 1369 1370 /** {@inheritDoc} */ 1371 public void removeAccessLogFilteringCriteriaAddListener( 1372 ConfigurationAddListener<AccessLogFilteringCriteriaCfg> listener) { 1373 impl.deregisterAddListener(INSTANCE.getAccessLogFilteringCriteriaRelationDefinition(), listener); 1374 } 1375 1376 1377 1378 /** {@inheritDoc} */ 1379 public void addAccessLogFilteringCriteriaDeleteListener( 1380 ConfigurationDeleteListener<AccessLogFilteringCriteriaCfg> listener) throws ConfigException { 1381 impl.registerDeleteListener(INSTANCE.getAccessLogFilteringCriteriaRelationDefinition(), listener); 1382 } 1383 1384 1385 1386 /** {@inheritDoc} */ 1387 public void removeAccessLogFilteringCriteriaDeleteListener( 1388 ConfigurationDeleteListener<AccessLogFilteringCriteriaCfg> listener) { 1389 impl.deregisterDeleteListener(INSTANCE.getAccessLogFilteringCriteriaRelationDefinition(), listener); 1390 } 1391 1392 1393 1394 /** {@inheritDoc} */ 1395 public Class<? extends FileBasedAccessLogPublisherCfg> configurationClass() { 1396 return FileBasedAccessLogPublisherCfg.class; 1397 } 1398 1399 1400 1401 /** {@inheritDoc} */ 1402 public DN dn() { 1403 return impl.getDN(); 1404 } 1405 1406 1407 1408 /** {@inheritDoc} */ 1409 public String toString() { 1410 return impl.toString(); 1411 } 1412 } 1413}