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