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