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