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