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 org.forgerock.opendj.config.AdministratorAction;
032import org.forgerock.opendj.config.BooleanPropertyDefinition;
033import org.forgerock.opendj.config.ClassPropertyDefinition;
034import org.forgerock.opendj.config.client.ConcurrentModificationException;
035import org.forgerock.opendj.config.client.IllegalManagedObjectNameException;
036import org.forgerock.opendj.config.client.ManagedObject;
037import org.forgerock.opendj.config.client.ManagedObjectDecodingException;
038import org.forgerock.opendj.config.client.MissingMandatoryPropertiesException;
039import org.forgerock.opendj.config.client.OperationRejectedException;
040import org.forgerock.opendj.config.DefaultBehaviorProvider;
041import org.forgerock.opendj.config.DefinedDefaultBehaviorProvider;
042import org.forgerock.opendj.config.DefinitionDecodingException;
043import org.forgerock.opendj.config.InstantiableRelationDefinition;
044import org.forgerock.opendj.config.IntegerPropertyDefinition;
045import org.forgerock.opendj.config.ManagedObjectAlreadyExistsException;
046import org.forgerock.opendj.config.ManagedObjectDefinition;
047import org.forgerock.opendj.config.ManagedObjectNotFoundException;
048import org.forgerock.opendj.config.PropertyException;
049import org.forgerock.opendj.config.PropertyOption;
050import org.forgerock.opendj.config.PropertyProvider;
051import org.forgerock.opendj.config.server.ConfigException;
052import org.forgerock.opendj.config.server.ConfigurationAddListener;
053import org.forgerock.opendj.config.server.ConfigurationChangeListener;
054import org.forgerock.opendj.config.server.ConfigurationDeleteListener;
055import org.forgerock.opendj.config.server.ServerManagedObject;
056import org.forgerock.opendj.config.Tag;
057import org.forgerock.opendj.ldap.DN;
058import org.forgerock.opendj.ldap.LdapException;
059import org.forgerock.opendj.server.config.client.DebugLogPublisherCfgClient;
060import org.forgerock.opendj.server.config.client.DebugTargetCfgClient;
061import org.forgerock.opendj.server.config.server.DebugLogPublisherCfg;
062import org.forgerock.opendj.server.config.server.DebugTargetCfg;
063import org.forgerock.opendj.server.config.server.LogPublisherCfg;
064
065
066
067/**
068 * An interface for querying the Debug Log Publisher managed object
069 * definition meta information.
070 * <p>
071 * Debug Log Publishers are responsible for distributing debug log
072 * messages from the debug logger to a destination.
073 */
074public final class DebugLogPublisherCfgDefn extends ManagedObjectDefinition<DebugLogPublisherCfgClient, DebugLogPublisherCfg> {
075
076  /** The singleton configuration definition instance. */
077  private static final DebugLogPublisherCfgDefn INSTANCE = new DebugLogPublisherCfgDefn();
078
079
080
081  /** The "default-debug-exceptions-only" property definition. */
082  private static final BooleanPropertyDefinition PD_DEFAULT_DEBUG_EXCEPTIONS_ONLY;
083
084
085
086  /** The "default-include-throwable-cause" property definition. */
087  private static final BooleanPropertyDefinition PD_DEFAULT_INCLUDE_THROWABLE_CAUSE;
088
089
090
091  /** The "default-omit-method-entry-arguments" property definition. */
092  private static final BooleanPropertyDefinition PD_DEFAULT_OMIT_METHOD_ENTRY_ARGUMENTS;
093
094
095
096  /** The "default-omit-method-return-value" property definition. */
097  private static final BooleanPropertyDefinition PD_DEFAULT_OMIT_METHOD_RETURN_VALUE;
098
099
100
101  /** The "default-throwable-stack-frames" property definition. */
102  private static final IntegerPropertyDefinition PD_DEFAULT_THROWABLE_STACK_FRAMES;
103
104
105
106  /** The "java-class" property definition. */
107  private static final ClassPropertyDefinition PD_JAVA_CLASS;
108
109
110
111  /** The "debug-targets" relation definition. */
112  private static final InstantiableRelationDefinition<DebugTargetCfgClient, DebugTargetCfg> RD_DEBUG_TARGETS;
113
114
115
116  /** Build the "default-debug-exceptions-only" property definition. */
117  static {
118      BooleanPropertyDefinition.Builder builder = BooleanPropertyDefinition.createBuilder(INSTANCE, "default-debug-exceptions-only");
119      builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "default-debug-exceptions-only"));
120      DefaultBehaviorProvider<Boolean> provider = new DefinedDefaultBehaviorProvider<Boolean>("false");
121      builder.setDefaultBehaviorProvider(provider);
122      PD_DEFAULT_DEBUG_EXCEPTIONS_ONLY = builder.getInstance();
123      INSTANCE.registerPropertyDefinition(PD_DEFAULT_DEBUG_EXCEPTIONS_ONLY);
124  }
125
126
127
128  /** Build the "default-include-throwable-cause" property definition. */
129  static {
130      BooleanPropertyDefinition.Builder builder = BooleanPropertyDefinition.createBuilder(INSTANCE, "default-include-throwable-cause");
131      builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "default-include-throwable-cause"));
132      DefaultBehaviorProvider<Boolean> provider = new DefinedDefaultBehaviorProvider<Boolean>("true");
133      builder.setDefaultBehaviorProvider(provider);
134      PD_DEFAULT_INCLUDE_THROWABLE_CAUSE = builder.getInstance();
135      INSTANCE.registerPropertyDefinition(PD_DEFAULT_INCLUDE_THROWABLE_CAUSE);
136  }
137
138
139
140  /** Build the "default-omit-method-entry-arguments" property definition. */
141  static {
142      BooleanPropertyDefinition.Builder builder = BooleanPropertyDefinition.createBuilder(INSTANCE, "default-omit-method-entry-arguments");
143      builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "default-omit-method-entry-arguments"));
144      DefaultBehaviorProvider<Boolean> provider = new DefinedDefaultBehaviorProvider<Boolean>("false");
145      builder.setDefaultBehaviorProvider(provider);
146      PD_DEFAULT_OMIT_METHOD_ENTRY_ARGUMENTS = builder.getInstance();
147      INSTANCE.registerPropertyDefinition(PD_DEFAULT_OMIT_METHOD_ENTRY_ARGUMENTS);
148  }
149
150
151
152  /** Build the "default-omit-method-return-value" property definition. */
153  static {
154      BooleanPropertyDefinition.Builder builder = BooleanPropertyDefinition.createBuilder(INSTANCE, "default-omit-method-return-value");
155      builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "default-omit-method-return-value"));
156      DefaultBehaviorProvider<Boolean> provider = new DefinedDefaultBehaviorProvider<Boolean>("false");
157      builder.setDefaultBehaviorProvider(provider);
158      PD_DEFAULT_OMIT_METHOD_RETURN_VALUE = builder.getInstance();
159      INSTANCE.registerPropertyDefinition(PD_DEFAULT_OMIT_METHOD_RETURN_VALUE);
160  }
161
162
163
164  /** Build the "default-throwable-stack-frames" property definition. */
165  static {
166      IntegerPropertyDefinition.Builder builder = IntegerPropertyDefinition.createBuilder(INSTANCE, "default-throwable-stack-frames");
167      builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "default-throwable-stack-frames"));
168      DefaultBehaviorProvider<Integer> provider = new DefinedDefaultBehaviorProvider<Integer>("2147483647");
169      builder.setDefaultBehaviorProvider(provider);
170      builder.setUpperLimit(2147483647);
171      builder.setLowerLimit(0);
172      PD_DEFAULT_THROWABLE_STACK_FRAMES = builder.getInstance();
173      INSTANCE.registerPropertyDefinition(PD_DEFAULT_THROWABLE_STACK_FRAMES);
174  }
175
176
177
178  /** Build the "java-class" property definition. */
179  static {
180      ClassPropertyDefinition.Builder builder = ClassPropertyDefinition.createBuilder(INSTANCE, "java-class");
181      builder.setOption(PropertyOption.MANDATORY);
182      builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "java-class"));
183      DefaultBehaviorProvider<String> provider = new DefinedDefaultBehaviorProvider<String>("org.opends.server.loggers.DebugLogPublisher");
184      builder.setDefaultBehaviorProvider(provider);
185      builder.addInstanceOf("org.opends.server.loggers.LogPublisher");
186      PD_JAVA_CLASS = builder.getInstance();
187      INSTANCE.registerPropertyDefinition(PD_JAVA_CLASS);
188  }
189
190
191
192  // Build the "debug-targets" relation definition.
193  static {
194    InstantiableRelationDefinition.Builder<DebugTargetCfgClient, DebugTargetCfg> builder =
195      new InstantiableRelationDefinition.Builder<DebugTargetCfgClient, DebugTargetCfg>(INSTANCE, "debug-target", "debug-targets", DebugTargetCfgDefn.getInstance());
196    builder.setNamingProperty(DebugTargetCfgDefn.getInstance().getDebugScopePropertyDefinition());
197    RD_DEBUG_TARGETS = builder.getInstance();
198    INSTANCE.registerRelationDefinition(RD_DEBUG_TARGETS);
199  }
200
201
202
203  // Register the tags associated with this managed object definition.
204  static {
205    INSTANCE.registerTag(Tag.valueOf("logging"));
206  }
207
208
209
210  /**
211   * Get the Debug Log Publisher configuration definition singleton.
212   *
213   * @return Returns the Debug Log Publisher configuration definition
214   *         singleton.
215   */
216  public static DebugLogPublisherCfgDefn getInstance() {
217    return INSTANCE;
218  }
219
220
221
222  /**
223   * Private constructor.
224   */
225  private DebugLogPublisherCfgDefn() {
226    super("debug-log-publisher", LogPublisherCfgDefn.getInstance());
227  }
228
229
230
231  /** {@inheritDoc} */
232  public DebugLogPublisherCfgClient createClientConfiguration(
233      ManagedObject<? extends DebugLogPublisherCfgClient> impl) {
234    return new DebugLogPublisherCfgClientImpl(impl);
235  }
236
237
238
239  /** {@inheritDoc} */
240  public DebugLogPublisherCfg createServerConfiguration(
241      ServerManagedObject<? extends DebugLogPublisherCfg> impl) {
242    return new DebugLogPublisherCfgServerImpl(impl);
243  }
244
245
246
247  /** {@inheritDoc} */
248  public Class<DebugLogPublisherCfg> getServerConfigurationClass() {
249    return DebugLogPublisherCfg.class;
250  }
251
252
253
254  /**
255   * Get the "default-debug-exceptions-only" property definition.
256   * <p>
257   * Indicates whether only logs with exception should be logged.
258   *
259   * @return Returns the "default-debug-exceptions-only" property definition.
260   */
261  public BooleanPropertyDefinition getDefaultDebugExceptionsOnlyPropertyDefinition() {
262    return PD_DEFAULT_DEBUG_EXCEPTIONS_ONLY;
263  }
264
265
266
267  /**
268   * Get the "default-include-throwable-cause" property definition.
269   * <p>
270   * Indicates whether to include the cause of exceptions in exception
271   * thrown and caught messages logged by default.
272   *
273   * @return Returns the "default-include-throwable-cause" property definition.
274   */
275  public BooleanPropertyDefinition getDefaultIncludeThrowableCausePropertyDefinition() {
276    return PD_DEFAULT_INCLUDE_THROWABLE_CAUSE;
277  }
278
279
280
281  /**
282   * Get the "default-omit-method-entry-arguments" property definition.
283   * <p>
284   * Indicates whether to include method arguments in debug messages
285   * logged by default.
286   *
287   * @return Returns the "default-omit-method-entry-arguments" property definition.
288   */
289  public BooleanPropertyDefinition getDefaultOmitMethodEntryArgumentsPropertyDefinition() {
290    return PD_DEFAULT_OMIT_METHOD_ENTRY_ARGUMENTS;
291  }
292
293
294
295  /**
296   * Get the "default-omit-method-return-value" property definition.
297   * <p>
298   * Indicates whether to include the return value in debug messages
299   * logged by default.
300   *
301   * @return Returns the "default-omit-method-return-value" property definition.
302   */
303  public BooleanPropertyDefinition getDefaultOmitMethodReturnValuePropertyDefinition() {
304    return PD_DEFAULT_OMIT_METHOD_RETURN_VALUE;
305  }
306
307
308
309  /**
310   * Get the "default-throwable-stack-frames" property definition.
311   * <p>
312   * Indicates the number of stack frames to include in the stack
313   * trace for method entry and exception thrown messages.
314   *
315   * @return Returns the "default-throwable-stack-frames" property definition.
316   */
317  public IntegerPropertyDefinition getDefaultThrowableStackFramesPropertyDefinition() {
318    return PD_DEFAULT_THROWABLE_STACK_FRAMES;
319  }
320
321
322
323  /**
324   * Get the "enabled" property definition.
325   * <p>
326   * Indicates whether the Debug Log Publisher is enabled for use.
327   *
328   * @return Returns the "enabled" property definition.
329   */
330  public BooleanPropertyDefinition getEnabledPropertyDefinition() {
331    return LogPublisherCfgDefn.getInstance().getEnabledPropertyDefinition();
332  }
333
334
335
336  /**
337   * Get the "java-class" property definition.
338   * <p>
339   * The fully-qualified name of the Java class that provides the
340   * Debug Log Publisher implementation.
341   *
342   * @return Returns the "java-class" property definition.
343   */
344  public ClassPropertyDefinition getJavaClassPropertyDefinition() {
345    return PD_JAVA_CLASS;
346  }
347
348
349
350  /**
351   * Get the "debug-targets" relation definition.
352   *
353   * @return Returns the "debug-targets" relation definition.
354   */
355  public InstantiableRelationDefinition<DebugTargetCfgClient,DebugTargetCfg> getDebugTargetsRelationDefinition() {
356    return RD_DEBUG_TARGETS;
357  }
358
359
360
361  /**
362   * Managed object client implementation.
363   */
364  private static class DebugLogPublisherCfgClientImpl implements
365    DebugLogPublisherCfgClient {
366
367    /** Private implementation. */
368    private ManagedObject<? extends DebugLogPublisherCfgClient> impl;
369
370
371
372    /** Private constructor. */
373    private DebugLogPublisherCfgClientImpl(
374        ManagedObject<? extends DebugLogPublisherCfgClient> impl) {
375      this.impl = impl;
376    }
377
378
379
380    /** {@inheritDoc} */
381    public boolean isDefaultDebugExceptionsOnly() {
382      return impl.getPropertyValue(INSTANCE.getDefaultDebugExceptionsOnlyPropertyDefinition());
383    }
384
385
386
387    /** {@inheritDoc} */
388    public void setDefaultDebugExceptionsOnly(Boolean value) {
389      impl.setPropertyValue(INSTANCE.getDefaultDebugExceptionsOnlyPropertyDefinition(), value);
390    }
391
392
393
394    /** {@inheritDoc} */
395    public boolean isDefaultIncludeThrowableCause() {
396      return impl.getPropertyValue(INSTANCE.getDefaultIncludeThrowableCausePropertyDefinition());
397    }
398
399
400
401    /** {@inheritDoc} */
402    public void setDefaultIncludeThrowableCause(Boolean value) {
403      impl.setPropertyValue(INSTANCE.getDefaultIncludeThrowableCausePropertyDefinition(), value);
404    }
405
406
407
408    /** {@inheritDoc} */
409    public boolean isDefaultOmitMethodEntryArguments() {
410      return impl.getPropertyValue(INSTANCE.getDefaultOmitMethodEntryArgumentsPropertyDefinition());
411    }
412
413
414
415    /** {@inheritDoc} */
416    public void setDefaultOmitMethodEntryArguments(Boolean value) {
417      impl.setPropertyValue(INSTANCE.getDefaultOmitMethodEntryArgumentsPropertyDefinition(), value);
418    }
419
420
421
422    /** {@inheritDoc} */
423    public boolean isDefaultOmitMethodReturnValue() {
424      return impl.getPropertyValue(INSTANCE.getDefaultOmitMethodReturnValuePropertyDefinition());
425    }
426
427
428
429    /** {@inheritDoc} */
430    public void setDefaultOmitMethodReturnValue(Boolean value) {
431      impl.setPropertyValue(INSTANCE.getDefaultOmitMethodReturnValuePropertyDefinition(), value);
432    }
433
434
435
436    /** {@inheritDoc} */
437    public int getDefaultThrowableStackFrames() {
438      return impl.getPropertyValue(INSTANCE.getDefaultThrowableStackFramesPropertyDefinition());
439    }
440
441
442
443    /** {@inheritDoc} */
444    public void setDefaultThrowableStackFrames(Integer value) {
445      impl.setPropertyValue(INSTANCE.getDefaultThrowableStackFramesPropertyDefinition(), value);
446    }
447
448
449
450    /** {@inheritDoc} */
451    public Boolean isEnabled() {
452      return impl.getPropertyValue(INSTANCE.getEnabledPropertyDefinition());
453    }
454
455
456
457    /** {@inheritDoc} */
458    public void setEnabled(boolean value) {
459      impl.setPropertyValue(INSTANCE.getEnabledPropertyDefinition(), value);
460    }
461
462
463
464    /** {@inheritDoc} */
465    public String getJavaClass() {
466      return impl.getPropertyValue(INSTANCE.getJavaClassPropertyDefinition());
467    }
468
469
470
471    /** {@inheritDoc} */
472    public void setJavaClass(String value) {
473      impl.setPropertyValue(INSTANCE.getJavaClassPropertyDefinition(), value);
474    }
475
476
477
478    /** {@inheritDoc} */
479    public String[] listDebugTargets() throws ConcurrentModificationException,
480        LdapException {
481      return impl.listChildren(INSTANCE.getDebugTargetsRelationDefinition());
482    }
483
484
485
486    /** {@inheritDoc} */
487    public DebugTargetCfgClient getDebugTarget(String name)
488        throws DefinitionDecodingException, ManagedObjectDecodingException,
489        ManagedObjectNotFoundException, ConcurrentModificationException,
490        LdapException {
491      return impl.getChild(INSTANCE.getDebugTargetsRelationDefinition(), name).getConfiguration();
492    }
493
494
495
496    /** {@inheritDoc} */
497    public <M extends DebugTargetCfgClient> M createDebugTarget(
498        ManagedObjectDefinition<M, ? extends DebugTargetCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException {
499      return impl.createChild(INSTANCE.getDebugTargetsRelationDefinition(), d, name, exceptions).getConfiguration();
500    }
501
502
503
504    /** {@inheritDoc} */
505    public void removeDebugTarget(String name)
506        throws ManagedObjectNotFoundException, ConcurrentModificationException,
507        OperationRejectedException, LdapException {
508      impl.removeChild(INSTANCE.getDebugTargetsRelationDefinition(), name);
509    }
510
511
512
513    /** {@inheritDoc} */
514    public ManagedObjectDefinition<? extends DebugLogPublisherCfgClient, ? extends DebugLogPublisherCfg> definition() {
515      return INSTANCE;
516    }
517
518
519
520    /** {@inheritDoc} */
521    public PropertyProvider properties() {
522      return impl;
523    }
524
525
526
527    /** {@inheritDoc} */
528    public void commit() throws ManagedObjectAlreadyExistsException,
529        MissingMandatoryPropertiesException, ConcurrentModificationException,
530        OperationRejectedException, LdapException {
531      impl.commit();
532    }
533
534
535
536    /** {@inheritDoc} */
537    public String toString() {
538      return impl.toString();
539    }
540  }
541
542
543
544  /**
545   * Managed object server implementation.
546   */
547  private static class DebugLogPublisherCfgServerImpl implements
548    DebugLogPublisherCfg {
549
550    /** Private implementation. */
551    private ServerManagedObject<? extends DebugLogPublisherCfg> impl;
552
553    /** The value of the "default-debug-exceptions-only" property. */
554    private final boolean pDefaultDebugExceptionsOnly;
555
556    /** The value of the "default-include-throwable-cause" property. */
557    private final boolean pDefaultIncludeThrowableCause;
558
559    /** The value of the "default-omit-method-entry-arguments" property. */
560    private final boolean pDefaultOmitMethodEntryArguments;
561
562    /** The value of the "default-omit-method-return-value" property. */
563    private final boolean pDefaultOmitMethodReturnValue;
564
565    /** The value of the "default-throwable-stack-frames" property. */
566    private final int pDefaultThrowableStackFrames;
567
568    /** The value of the "enabled" property. */
569    private final boolean pEnabled;
570
571    /** The value of the "java-class" property. */
572    private final String pJavaClass;
573
574
575
576    /** Private constructor. */
577    private DebugLogPublisherCfgServerImpl(ServerManagedObject<? extends DebugLogPublisherCfg> impl) {
578      this.impl = impl;
579      this.pDefaultDebugExceptionsOnly = impl.getPropertyValue(INSTANCE.getDefaultDebugExceptionsOnlyPropertyDefinition());
580      this.pDefaultIncludeThrowableCause = impl.getPropertyValue(INSTANCE.getDefaultIncludeThrowableCausePropertyDefinition());
581      this.pDefaultOmitMethodEntryArguments = impl.getPropertyValue(INSTANCE.getDefaultOmitMethodEntryArgumentsPropertyDefinition());
582      this.pDefaultOmitMethodReturnValue = impl.getPropertyValue(INSTANCE.getDefaultOmitMethodReturnValuePropertyDefinition());
583      this.pDefaultThrowableStackFrames = impl.getPropertyValue(INSTANCE.getDefaultThrowableStackFramesPropertyDefinition());
584      this.pEnabled = impl.getPropertyValue(INSTANCE.getEnabledPropertyDefinition());
585      this.pJavaClass = impl.getPropertyValue(INSTANCE.getJavaClassPropertyDefinition());
586    }
587
588
589
590    /** {@inheritDoc} */
591    public void addDebugChangeListener(
592        ConfigurationChangeListener<DebugLogPublisherCfg> listener) {
593      impl.registerChangeListener(listener);
594    }
595
596
597
598    /** {@inheritDoc} */
599    public void removeDebugChangeListener(
600        ConfigurationChangeListener<DebugLogPublisherCfg> listener) {
601      impl.deregisterChangeListener(listener);
602    }
603    /** {@inheritDoc} */
604    public void addChangeListener(
605        ConfigurationChangeListener<LogPublisherCfg> listener) {
606      impl.registerChangeListener(listener);
607    }
608
609
610
611    /** {@inheritDoc} */
612    public void removeChangeListener(
613        ConfigurationChangeListener<LogPublisherCfg> listener) {
614      impl.deregisterChangeListener(listener);
615    }
616
617
618
619    /** {@inheritDoc} */
620    public boolean isDefaultDebugExceptionsOnly() {
621      return pDefaultDebugExceptionsOnly;
622    }
623
624
625
626    /** {@inheritDoc} */
627    public boolean isDefaultIncludeThrowableCause() {
628      return pDefaultIncludeThrowableCause;
629    }
630
631
632
633    /** {@inheritDoc} */
634    public boolean isDefaultOmitMethodEntryArguments() {
635      return pDefaultOmitMethodEntryArguments;
636    }
637
638
639
640    /** {@inheritDoc} */
641    public boolean isDefaultOmitMethodReturnValue() {
642      return pDefaultOmitMethodReturnValue;
643    }
644
645
646
647    /** {@inheritDoc} */
648    public int getDefaultThrowableStackFrames() {
649      return pDefaultThrowableStackFrames;
650    }
651
652
653
654    /** {@inheritDoc} */
655    public boolean isEnabled() {
656      return pEnabled;
657    }
658
659
660
661    /** {@inheritDoc} */
662    public String getJavaClass() {
663      return pJavaClass;
664    }
665
666
667
668    /** {@inheritDoc} */
669    public String[] listDebugTargets() {
670      return impl.listChildren(INSTANCE.getDebugTargetsRelationDefinition());
671    }
672
673
674
675    /** {@inheritDoc} */
676    public DebugTargetCfg getDebugTarget(String name) throws ConfigException {
677      return impl.getChild(INSTANCE.getDebugTargetsRelationDefinition(), name).getConfiguration();
678    }
679
680
681
682    /** {@inheritDoc} */
683    public void addDebugTargetAddListener(
684        ConfigurationAddListener<DebugTargetCfg> listener) throws ConfigException {
685      impl.registerAddListener(INSTANCE.getDebugTargetsRelationDefinition(), listener);
686    }
687
688
689
690    /** {@inheritDoc} */
691    public void removeDebugTargetAddListener(
692        ConfigurationAddListener<DebugTargetCfg> listener) {
693      impl.deregisterAddListener(INSTANCE.getDebugTargetsRelationDefinition(), listener);
694    }
695
696
697
698    /** {@inheritDoc} */
699    public void addDebugTargetDeleteListener(
700        ConfigurationDeleteListener<DebugTargetCfg> listener) throws ConfigException {
701      impl.registerDeleteListener(INSTANCE.getDebugTargetsRelationDefinition(), listener);
702    }
703
704
705
706    /** {@inheritDoc} */
707    public void removeDebugTargetDeleteListener(
708        ConfigurationDeleteListener<DebugTargetCfg> listener) {
709      impl.deregisterDeleteListener(INSTANCE.getDebugTargetsRelationDefinition(), listener);
710    }
711
712
713
714    /** {@inheritDoc} */
715    public Class<? extends DebugLogPublisherCfg> configurationClass() {
716      return DebugLogPublisherCfg.class;
717    }
718
719
720
721    /** {@inheritDoc} */
722    public DN dn() {
723      return impl.getDN();
724    }
725
726
727
728    /** {@inheritDoc} */
729    public String toString() {
730      return impl.toString();
731    }
732  }
733}