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