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