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 org.forgerock.opendj.config.server.ConfigException;
033import org.opends.server.admin.AdministratorAction;
034import org.opends.server.admin.BooleanPropertyDefinition;
035import org.opends.server.admin.ClassPropertyDefinition;
036import org.opends.server.admin.client.AuthorizationException;
037import org.opends.server.admin.client.CommunicationException;
038import org.opends.server.admin.client.ConcurrentModificationException;
039import org.opends.server.admin.client.IllegalManagedObjectNameException;
040import org.opends.server.admin.client.ManagedObject;
041import org.opends.server.admin.client.ManagedObjectDecodingException;
042import org.opends.server.admin.client.MissingMandatoryPropertiesException;
043import org.opends.server.admin.client.OperationRejectedException;
044import org.opends.server.admin.DefaultBehaviorProvider;
045import org.opends.server.admin.DefinedDefaultBehaviorProvider;
046import org.opends.server.admin.DefinitionDecodingException;
047import org.opends.server.admin.DNPropertyDefinition;
048import org.opends.server.admin.DurationPropertyDefinition;
049import org.opends.server.admin.EnumPropertyDefinition;
050import org.opends.server.admin.InstantiableRelationDefinition;
051import org.opends.server.admin.IntegerPropertyDefinition;
052import org.opends.server.admin.ManagedObjectAlreadyExistsException;
053import org.opends.server.admin.ManagedObjectDefinition;
054import org.opends.server.admin.ManagedObjectNotFoundException;
055import org.opends.server.admin.PropertyException;
056import org.opends.server.admin.PropertyOption;
057import org.opends.server.admin.PropertyProvider;
058import org.opends.server.admin.server.ConfigurationAddListener;
059import org.opends.server.admin.server.ConfigurationChangeListener;
060import org.opends.server.admin.server.ConfigurationDeleteListener;
061import org.opends.server.admin.server.ServerManagedObject;
062import org.opends.server.admin.SizePropertyDefinition;
063import org.opends.server.admin.std.client.BackendIndexCfgClient;
064import org.opends.server.admin.std.client.BackendVLVIndexCfgClient;
065import org.opends.server.admin.std.client.PDBBackendCfgClient;
066import org.opends.server.admin.std.meta.BackendCfgDefn.WritabilityMode;
067import org.opends.server.admin.std.server.BackendCfg;
068import org.opends.server.admin.std.server.BackendIndexCfg;
069import org.opends.server.admin.std.server.BackendVLVIndexCfg;
070import org.opends.server.admin.std.server.PDBBackendCfg;
071import org.opends.server.admin.std.server.PluggableBackendCfg;
072import org.opends.server.admin.StringPropertyDefinition;
073import org.opends.server.admin.Tag;
074import org.opends.server.types.DN;
075
076
077
078/**
079 * An interface for querying the PDB Backend managed object definition
080 * meta information.
081 * <p>
082 * A PDB Backend stores application data in a Persistit database.
083 */
084public final class PDBBackendCfgDefn extends ManagedObjectDefinition<PDBBackendCfgClient, PDBBackendCfg> {
085
086  // The singleton configuration definition instance.
087  private static final PDBBackendCfgDefn INSTANCE = new PDBBackendCfgDefn();
088
089
090
091  // The "db-cache-percent" property definition.
092  private static final IntegerPropertyDefinition PD_DB_CACHE_PERCENT;
093
094
095
096  // The "db-cache-size" property definition.
097  private static final SizePropertyDefinition PD_DB_CACHE_SIZE;
098
099
100
101  // The "db-checkpointer-wakeup-interval" property definition.
102  private static final DurationPropertyDefinition PD_DB_CHECKPOINTER_WAKEUP_INTERVAL;
103
104
105
106  // The "db-directory" property definition.
107  private static final StringPropertyDefinition PD_DB_DIRECTORY;
108
109
110
111  // The "db-directory-permissions" property definition.
112  private static final StringPropertyDefinition PD_DB_DIRECTORY_PERMISSIONS;
113
114
115
116  // The "db-txn-no-sync" property definition.
117  private static final BooleanPropertyDefinition PD_DB_TXN_NO_SYNC;
118
119
120
121  // The "disk-full-threshold" property definition.
122  private static final SizePropertyDefinition PD_DISK_FULL_THRESHOLD;
123
124
125
126  // The "disk-low-threshold" property definition.
127  private static final SizePropertyDefinition PD_DISK_LOW_THRESHOLD;
128
129
130
131  // The "java-class" property definition.
132  private static final ClassPropertyDefinition PD_JAVA_CLASS;
133
134
135
136  // Build the "db-cache-percent" property definition.
137  static {
138      IntegerPropertyDefinition.Builder builder = IntegerPropertyDefinition.createBuilder(INSTANCE, "db-cache-percent");
139      builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "db-cache-percent"));
140      DefaultBehaviorProvider<Integer> provider = new DefinedDefaultBehaviorProvider<Integer>("50");
141      builder.setDefaultBehaviorProvider(provider);
142      builder.setUpperLimit(90);
143      builder.setLowerLimit(1);
144      PD_DB_CACHE_PERCENT = builder.getInstance();
145      INSTANCE.registerPropertyDefinition(PD_DB_CACHE_PERCENT);
146  }
147
148
149
150  // Build the "db-cache-size" property definition.
151  static {
152      SizePropertyDefinition.Builder builder = SizePropertyDefinition.createBuilder(INSTANCE, "db-cache-size");
153      builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "db-cache-size"));
154      DefaultBehaviorProvider<Long> provider = new DefinedDefaultBehaviorProvider<Long>("0 MB");
155      builder.setDefaultBehaviorProvider(provider);
156      builder.setLowerLimit("0 MB");
157      PD_DB_CACHE_SIZE = builder.getInstance();
158      INSTANCE.registerPropertyDefinition(PD_DB_CACHE_SIZE);
159  }
160
161
162
163  // Build the "db-checkpointer-wakeup-interval" property definition.
164  static {
165      DurationPropertyDefinition.Builder builder = DurationPropertyDefinition.createBuilder(INSTANCE, "db-checkpointer-wakeup-interval");
166      builder.setOption(PropertyOption.ADVANCED);
167      builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "db-checkpointer-wakeup-interval"));
168      DefaultBehaviorProvider<Long> provider = new DefinedDefaultBehaviorProvider<Long>("15s");
169      builder.setDefaultBehaviorProvider(provider);
170      builder.setBaseUnit("s");
171      builder.setUpperLimit("3600");
172      builder.setLowerLimit("10");
173      PD_DB_CHECKPOINTER_WAKEUP_INTERVAL = builder.getInstance();
174      INSTANCE.registerPropertyDefinition(PD_DB_CHECKPOINTER_WAKEUP_INTERVAL);
175  }
176
177
178
179  // Build the "db-directory" property definition.
180  static {
181      StringPropertyDefinition.Builder builder = StringPropertyDefinition.createBuilder(INSTANCE, "db-directory");
182      builder.setOption(PropertyOption.MANDATORY);
183      builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.COMPONENT_RESTART, INSTANCE, "db-directory"));
184      DefaultBehaviorProvider<String> provider = new DefinedDefaultBehaviorProvider<String>("db");
185      builder.setDefaultBehaviorProvider(provider);
186      PD_DB_DIRECTORY = builder.getInstance();
187      INSTANCE.registerPropertyDefinition(PD_DB_DIRECTORY);
188  }
189
190
191
192  // Build the "db-directory-permissions" property definition.
193  static {
194      StringPropertyDefinition.Builder builder = StringPropertyDefinition.createBuilder(INSTANCE, "db-directory-permissions");
195      builder.setOption(PropertyOption.ADVANCED);
196      builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.SERVER_RESTART, INSTANCE, "db-directory-permissions"));
197      DefaultBehaviorProvider<String> provider = new DefinedDefaultBehaviorProvider<String>("700");
198      builder.setDefaultBehaviorProvider(provider);
199      builder.setPattern("^7[0-7][0-7]$", "MODE");
200      PD_DB_DIRECTORY_PERMISSIONS = builder.getInstance();
201      INSTANCE.registerPropertyDefinition(PD_DB_DIRECTORY_PERMISSIONS);
202  }
203
204
205
206  // Build the "db-txn-no-sync" property definition.
207  static {
208      BooleanPropertyDefinition.Builder builder = BooleanPropertyDefinition.createBuilder(INSTANCE, "db-txn-no-sync");
209      builder.setOption(PropertyOption.ADVANCED);
210      builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "db-txn-no-sync"));
211      DefaultBehaviorProvider<Boolean> provider = new DefinedDefaultBehaviorProvider<Boolean>("true");
212      builder.setDefaultBehaviorProvider(provider);
213      PD_DB_TXN_NO_SYNC = builder.getInstance();
214      INSTANCE.registerPropertyDefinition(PD_DB_TXN_NO_SYNC);
215  }
216
217
218
219  // Build the "disk-full-threshold" property definition.
220  static {
221      SizePropertyDefinition.Builder builder = SizePropertyDefinition.createBuilder(INSTANCE, "disk-full-threshold");
222      builder.setOption(PropertyOption.ADVANCED);
223      builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "disk-full-threshold"));
224      DefaultBehaviorProvider<Long> provider = new DefinedDefaultBehaviorProvider<Long>("100 megabytes");
225      builder.setDefaultBehaviorProvider(provider);
226      builder.setLowerLimit("0");
227      PD_DISK_FULL_THRESHOLD = builder.getInstance();
228      INSTANCE.registerPropertyDefinition(PD_DISK_FULL_THRESHOLD);
229  }
230
231
232
233  // Build the "disk-low-threshold" property definition.
234  static {
235      SizePropertyDefinition.Builder builder = SizePropertyDefinition.createBuilder(INSTANCE, "disk-low-threshold");
236      builder.setOption(PropertyOption.ADVANCED);
237      builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "disk-low-threshold"));
238      DefaultBehaviorProvider<Long> provider = new DefinedDefaultBehaviorProvider<Long>("200 megabytes");
239      builder.setDefaultBehaviorProvider(provider);
240      builder.setLowerLimit("0");
241      PD_DISK_LOW_THRESHOLD = builder.getInstance();
242      INSTANCE.registerPropertyDefinition(PD_DISK_LOW_THRESHOLD);
243  }
244
245
246
247  // Build the "java-class" property definition.
248  static {
249      ClassPropertyDefinition.Builder builder = ClassPropertyDefinition.createBuilder(INSTANCE, "java-class");
250      builder.setOption(PropertyOption.MANDATORY);
251      builder.setOption(PropertyOption.ADVANCED);
252      builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.COMPONENT_RESTART, INSTANCE, "java-class"));
253      DefaultBehaviorProvider<String> provider = new DefinedDefaultBehaviorProvider<String>("org.opends.server.backends.pdb.PDBBackend");
254      builder.setDefaultBehaviorProvider(provider);
255      builder.addInstanceOf("org.opends.server.api.Backend");
256      PD_JAVA_CLASS = builder.getInstance();
257      INSTANCE.registerPropertyDefinition(PD_JAVA_CLASS);
258  }
259
260
261
262  // Register the tags associated with this managed object definition.
263  static {
264    INSTANCE.registerTag(Tag.valueOf("database"));
265  }
266
267
268
269  /**
270   * Get the PDB Backend configuration definition singleton.
271   *
272   * @return Returns the PDB Backend configuration definition
273   *         singleton.
274   */
275  public static PDBBackendCfgDefn getInstance() {
276    return INSTANCE;
277  }
278
279
280
281  /**
282   * Private constructor.
283   */
284  private PDBBackendCfgDefn() {
285    super("pdb-backend", PluggableBackendCfgDefn.getInstance());
286  }
287
288
289
290  /**
291   * {@inheritDoc}
292   */
293  public PDBBackendCfgClient createClientConfiguration(
294      ManagedObject<? extends PDBBackendCfgClient> impl) {
295    return new PDBBackendCfgClientImpl(impl);
296  }
297
298
299
300  /**
301   * {@inheritDoc}
302   */
303  public PDBBackendCfg createServerConfiguration(
304      ServerManagedObject<? extends PDBBackendCfg> impl) {
305    return new PDBBackendCfgServerImpl(impl);
306  }
307
308
309
310  /**
311   * {@inheritDoc}
312   */
313  public Class<PDBBackendCfg> getServerConfigurationClass() {
314    return PDBBackendCfg.class;
315  }
316
317
318
319  /**
320   * Get the "backend-id" property definition.
321   * <p>
322   * Specifies a name to identify the associated backend.
323   * <p>
324   * The name must be unique among all backends in the server. The
325   * backend ID may not be altered after the backend is created in the
326   * server.
327   *
328   * @return Returns the "backend-id" property definition.
329   */
330  public StringPropertyDefinition getBackendIdPropertyDefinition() {
331    return PluggableBackendCfgDefn.getInstance().getBackendIdPropertyDefinition();
332  }
333
334
335
336  /**
337   * Get the "base-dn" property definition.
338   * <p>
339   * Specifies the base DN(s) for the data that the backend handles.
340   * <p>
341   * A single backend may be responsible for one or more base DNs.
342   * Note that no two backends may have the same base DN although one
343   * backend may have a base DN that is below a base DN provided by
344   * another backend (similar to the use of sub-suffixes in the Sun
345   * Java System Directory Server). If any of the base DNs is
346   * subordinate to a base DN for another backend, then all base DNs
347   * for that backend must be subordinate to that same base DN.
348   *
349   * @return Returns the "base-dn" property definition.
350   */
351  public DNPropertyDefinition getBaseDNPropertyDefinition() {
352    return PluggableBackendCfgDefn.getInstance().getBaseDNPropertyDefinition();
353  }
354
355
356
357  /**
358   * Get the "compact-encoding" property definition.
359   * <p>
360   * Indicates whether the backend should use a compact form when
361   * encoding entries by compressing the attribute descriptions and
362   * object class sets.
363   * <p>
364   * Note that this property applies only to the entries themselves
365   * and does not impact the index data.
366   *
367   * @return Returns the "compact-encoding" property definition.
368   */
369  public BooleanPropertyDefinition getCompactEncodingPropertyDefinition() {
370    return PluggableBackendCfgDefn.getInstance().getCompactEncodingPropertyDefinition();
371  }
372
373
374
375  /**
376   * Get the "db-cache-percent" property definition.
377   * <p>
378   * Specifies the percentage of JVM memory to allocate to the
379   * database cache.
380   * <p>
381   * Specifies the percentage of memory available to the JVM that
382   * should be used for caching database contents. Note that this is
383   * only used if the value of the db-cache-size property is set to "0
384   * MB". Otherwise, the value of that property is used instead to
385   * control the cache size configuration.
386   *
387   * @return Returns the "db-cache-percent" property definition.
388   */
389  public IntegerPropertyDefinition getDBCachePercentPropertyDefinition() {
390    return PD_DB_CACHE_PERCENT;
391  }
392
393
394
395  /**
396   * Get the "db-cache-size" property definition.
397   * <p>
398   * The amount of JVM memory to allocate to the database cache.
399   * <p>
400   * Specifies the amount of memory that should be used for caching
401   * database contents. A value of "0 MB" indicates that the
402   * db-cache-percent property should be used instead to specify the
403   * cache size.
404   *
405   * @return Returns the "db-cache-size" property definition.
406   */
407  public SizePropertyDefinition getDBCacheSizePropertyDefinition() {
408    return PD_DB_CACHE_SIZE;
409  }
410
411
412
413  /**
414   * Get the "db-checkpointer-wakeup-interval" property definition.
415   * <p>
416   * Specifies the maximum length of time that may pass between
417   * checkpoints.
418   * <p>
419   * This setting controls the elapsed time between attempts to write
420   * a checkpoint to the journal. A longer interval allows more updates
421   * to accumulate in buffers before they are required to be written to
422   * disk, but also potentially causes recovery from an abrupt
423   * termination (crash) to take more time.
424   *
425   * @return Returns the "db-checkpointer-wakeup-interval" property definition.
426   */
427  public DurationPropertyDefinition getDBCheckpointerWakeupIntervalPropertyDefinition() {
428    return PD_DB_CHECKPOINTER_WAKEUP_INTERVAL;
429  }
430
431
432
433  /**
434   * Get the "db-directory" property definition.
435   * <p>
436   * Specifies the path to the filesystem directory that is used to
437   * hold the Persistit database files containing the data for this
438   * backend.
439   * <p>
440   * The path may be either an absolute path or a path relative to the
441   * directory containing the base of the OpenDJ directory server
442   * installation. The path may be any valid directory path in which
443   * the server has appropriate permissions to read and write files and
444   * has sufficient space to hold the database contents.
445   *
446   * @return Returns the "db-directory" property definition.
447   */
448  public StringPropertyDefinition getDBDirectoryPropertyDefinition() {
449    return PD_DB_DIRECTORY;
450  }
451
452
453
454  /**
455   * Get the "db-directory-permissions" property definition.
456   * <p>
457   * Specifies the permissions that should be applied to the directory
458   * containing the server database files.
459   * <p>
460   * They should be expressed as three-digit octal values, which is
461   * the traditional representation for UNIX file permissions. The
462   * three digits represent the permissions that are available for the
463   * directory's owner, group members, and other users (in that order),
464   * and each digit is the octal representation of the read, write, and
465   * execute bits. Note that this only impacts permissions on the
466   * database directory and not on the files written into that
467   * directory. On UNIX systems, the user's umask controls permissions
468   * given to the database files.
469   *
470   * @return Returns the "db-directory-permissions" property definition.
471   */
472  public StringPropertyDefinition getDBDirectoryPermissionsPropertyDefinition() {
473    return PD_DB_DIRECTORY_PERMISSIONS;
474  }
475
476
477
478  /**
479   * Get the "db-txn-no-sync" property definition.
480   * <p>
481   * Indicates whether database writes should be primarily written to
482   * an internal buffer but not immediately written to disk.
483   * <p>
484   * Setting the value of this configuration attribute to "true" may
485   * improve write performance but could cause the most recent changes
486   * to be lost if the OpenDJ directory server or the underlying JVM
487   * exits abnormally, or if an OS or hardware failure occurs (a
488   * behavior similar to running with transaction durability disabled
489   * in the Sun Java System Directory Server).
490   *
491   * @return Returns the "db-txn-no-sync" property definition.
492   */
493  public BooleanPropertyDefinition getDBTxnNoSyncPropertyDefinition() {
494    return PD_DB_TXN_NO_SYNC;
495  }
496
497
498
499  /**
500   * Get the "disk-full-threshold" property definition.
501   * <p>
502   * Full disk threshold to limit database updates
503   * <p>
504   * When the available free space on the disk used by this database
505   * instance falls below the value specified, no updates are permitted
506   * and the server returns an UNWILLING_TO_PERFORM error. Updates are
507   * allowed again as soon as free space rises above the threshold.
508   *
509   * @return Returns the "disk-full-threshold" property definition.
510   */
511  public SizePropertyDefinition getDiskFullThresholdPropertyDefinition() {
512    return PD_DISK_FULL_THRESHOLD;
513  }
514
515
516
517  /**
518   * Get the "disk-low-threshold" property definition.
519   * <p>
520   * Low disk threshold to limit database updates
521   * <p>
522   * Specifies the "low" free space on the disk. When the available
523   * free space on the disk used by this database instance falls below
524   * the value specified, protocol updates on this database are
525   * permitted only by a user with the BYPASS_LOCKDOWN privilege.
526   *
527   * @return Returns the "disk-low-threshold" property definition.
528   */
529  public SizePropertyDefinition getDiskLowThresholdPropertyDefinition() {
530    return PD_DISK_LOW_THRESHOLD;
531  }
532
533
534
535  /**
536   * Get the "enabled" property definition.
537   * <p>
538   * Indicates whether the backend is enabled in the server.
539   * <p>
540   * If a backend is not enabled, then its contents are not accessible
541   * when processing operations.
542   *
543   * @return Returns the "enabled" property definition.
544   */
545  public BooleanPropertyDefinition getEnabledPropertyDefinition() {
546    return PluggableBackendCfgDefn.getInstance().getEnabledPropertyDefinition();
547  }
548
549
550
551  /**
552   * Get the "entries-compressed" property definition.
553   * <p>
554   * Indicates whether the backend should attempt to compress entries
555   * before storing them in the database.
556   * <p>
557   * Note that this property applies only to the entries themselves
558   * and does not impact the index data. Further, the effectiveness of
559   * the compression is based on the type of data contained in the
560   * entry.
561   *
562   * @return Returns the "entries-compressed" property definition.
563   */
564  public BooleanPropertyDefinition getEntriesCompressedPropertyDefinition() {
565    return PluggableBackendCfgDefn.getInstance().getEntriesCompressedPropertyDefinition();
566  }
567
568
569
570  /**
571   * Get the "index-entry-limit" property definition.
572   * <p>
573   * Specifies the maximum number of entries that is allowed to match
574   * a given index key before that particular index key is no longer
575   * maintained.
576   * <p>
577   * This property is analogous to the ALL IDs threshold in the Sun
578   * Java System Directory Server. Note that this is the default limit
579   * for the backend, and it may be overridden on a per-attribute
580   * basis.A value of 0 means there is no limit.
581   *
582   * @return Returns the "index-entry-limit" property definition.
583   */
584  public IntegerPropertyDefinition getIndexEntryLimitPropertyDefinition() {
585    return PluggableBackendCfgDefn.getInstance().getIndexEntryLimitPropertyDefinition();
586  }
587
588
589
590  /**
591   * Get the "index-filter-analyzer-enabled" property definition.
592   * <p>
593   * Indicates whether to gather statistical information about the
594   * search filters processed by the directory server while evaluating
595   * the usage of indexes.
596   * <p>
597   * Analyzing indexes requires gathering search filter usage patterns
598   * from user requests, especially for values as specified in the
599   * filters and subsequently looking the status of those values into
600   * the index files. When a search requests is processed, internal or
601   * user generated, a first phase uses indexes to find potential
602   * entries to be returned. Depending on the search filter, if the
603   * index of one of the specified attributes matches too many entries
604   * (exceeds the index entry limit), the search becomes non-indexed.
605   * In any case, all entries thus gathered (or the entire DIT) are
606   * matched against the filter for actually returning the search
607   * result.
608   *
609   * @return Returns the "index-filter-analyzer-enabled" property definition.
610   */
611  public BooleanPropertyDefinition getIndexFilterAnalyzerEnabledPropertyDefinition() {
612    return PluggableBackendCfgDefn.getInstance().getIndexFilterAnalyzerEnabledPropertyDefinition();
613  }
614
615
616
617  /**
618   * Get the "index-filter-analyzer-max-filters" property definition.
619   * <p>
620   * The maximum number of search filter statistics to keep.
621   * <p>
622   * When the maximum number of search filter is reached, the least
623   * used one will be deleted.
624   *
625   * @return Returns the "index-filter-analyzer-max-filters" property definition.
626   */
627  public IntegerPropertyDefinition getIndexFilterAnalyzerMaxFiltersPropertyDefinition() {
628    return PluggableBackendCfgDefn.getInstance().getIndexFilterAnalyzerMaxFiltersPropertyDefinition();
629  }
630
631
632
633  /**
634   * Get the "java-class" property definition.
635   * <p>
636   * Specifies the fully-qualified name of the Java class that
637   * provides the backend implementation.
638   *
639   * @return Returns the "java-class" property definition.
640   */
641  public ClassPropertyDefinition getJavaClassPropertyDefinition() {
642    return PD_JAVA_CLASS;
643  }
644
645
646
647  /**
648   * Get the "preload-time-limit" property definition.
649   * <p>
650   * Specifies the length of time that the backend is allowed to spend
651   * "pre-loading" data when it is initialized.
652   * <p>
653   * The pre-load process is used to pre-populate the database cache,
654   * so that it can be more quickly available when the server is
655   * processing requests. A duration of zero means there is no
656   * pre-load.
657   *
658   * @return Returns the "preload-time-limit" property definition.
659   */
660  public DurationPropertyDefinition getPreloadTimeLimitPropertyDefinition() {
661    return PluggableBackendCfgDefn.getInstance().getPreloadTimeLimitPropertyDefinition();
662  }
663
664
665
666  /**
667   * Get the "writability-mode" property definition.
668   * <p>
669   * Specifies the behavior that the backend should use when
670   * processing write operations.
671   *
672   * @return Returns the "writability-mode" property definition.
673   */
674  public EnumPropertyDefinition<WritabilityMode> getWritabilityModePropertyDefinition() {
675    return PluggableBackendCfgDefn.getInstance().getWritabilityModePropertyDefinition();
676  }
677
678
679
680  /**
681   * Get the "backend-indexes" relation definition.
682   *
683   * @return Returns the "backend-indexes" relation definition.
684   */
685  public InstantiableRelationDefinition<BackendIndexCfgClient,BackendIndexCfg> getBackendIndexesRelationDefinition() {
686    return PluggableBackendCfgDefn.getInstance().getBackendIndexesRelationDefinition();
687  }
688
689
690
691  /**
692   * Get the "backend-vlv-indexes" relation definition.
693   *
694   * @return Returns the "backend-vlv-indexes" relation definition.
695   */
696  public InstantiableRelationDefinition<BackendVLVIndexCfgClient,BackendVLVIndexCfg> getBackendVLVIndexesRelationDefinition() {
697    return PluggableBackendCfgDefn.getInstance().getBackendVLVIndexesRelationDefinition();
698  }
699
700
701
702  /**
703   * Managed object client implementation.
704   */
705  private static class PDBBackendCfgClientImpl implements
706    PDBBackendCfgClient {
707
708    // Private implementation.
709    private ManagedObject<? extends PDBBackendCfgClient> impl;
710
711
712
713    // Private constructor.
714    private PDBBackendCfgClientImpl(
715        ManagedObject<? extends PDBBackendCfgClient> impl) {
716      this.impl = impl;
717    }
718
719
720
721    /**
722     * {@inheritDoc}
723     */
724    public String getBackendId() {
725      return impl.getPropertyValue(INSTANCE.getBackendIdPropertyDefinition());
726    }
727
728
729
730    /**
731     * {@inheritDoc}
732     */
733    public void setBackendId(String value) throws PropertyException {
734      impl.setPropertyValue(INSTANCE.getBackendIdPropertyDefinition(), value);
735    }
736
737
738
739    /**
740     * {@inheritDoc}
741     */
742    public SortedSet<DN> getBaseDN() {
743      return impl.getPropertyValues(INSTANCE.getBaseDNPropertyDefinition());
744    }
745
746
747
748    /**
749     * {@inheritDoc}
750     */
751    public void setBaseDN(Collection<DN> values) {
752      impl.setPropertyValues(INSTANCE.getBaseDNPropertyDefinition(), values);
753    }
754
755
756
757    /**
758     * {@inheritDoc}
759     */
760    public boolean isCompactEncoding() {
761      return impl.getPropertyValue(INSTANCE.getCompactEncodingPropertyDefinition());
762    }
763
764
765
766    /**
767     * {@inheritDoc}
768     */
769    public void setCompactEncoding(Boolean value) {
770      impl.setPropertyValue(INSTANCE.getCompactEncodingPropertyDefinition(), value);
771    }
772
773
774
775    /**
776     * {@inheritDoc}
777     */
778    public int getDBCachePercent() {
779      return impl.getPropertyValue(INSTANCE.getDBCachePercentPropertyDefinition());
780    }
781
782
783
784    /**
785     * {@inheritDoc}
786     */
787    public void setDBCachePercent(Integer value) {
788      impl.setPropertyValue(INSTANCE.getDBCachePercentPropertyDefinition(), value);
789    }
790
791
792
793    /**
794     * {@inheritDoc}
795     */
796    public long getDBCacheSize() {
797      return impl.getPropertyValue(INSTANCE.getDBCacheSizePropertyDefinition());
798    }
799
800
801
802    /**
803     * {@inheritDoc}
804     */
805    public void setDBCacheSize(Long value) {
806      impl.setPropertyValue(INSTANCE.getDBCacheSizePropertyDefinition(), value);
807    }
808
809
810
811    /**
812     * {@inheritDoc}
813     */
814    public long getDBCheckpointerWakeupInterval() {
815      return impl.getPropertyValue(INSTANCE.getDBCheckpointerWakeupIntervalPropertyDefinition());
816    }
817
818
819
820    /**
821     * {@inheritDoc}
822     */
823    public void setDBCheckpointerWakeupInterval(Long value) {
824      impl.setPropertyValue(INSTANCE.getDBCheckpointerWakeupIntervalPropertyDefinition(), value);
825    }
826
827
828
829    /**
830     * {@inheritDoc}
831     */
832    public String getDBDirectory() {
833      return impl.getPropertyValue(INSTANCE.getDBDirectoryPropertyDefinition());
834    }
835
836
837
838    /**
839     * {@inheritDoc}
840     */
841    public void setDBDirectory(String value) {
842      impl.setPropertyValue(INSTANCE.getDBDirectoryPropertyDefinition(), value);
843    }
844
845
846
847    /**
848     * {@inheritDoc}
849     */
850    public String getDBDirectoryPermissions() {
851      return impl.getPropertyValue(INSTANCE.getDBDirectoryPermissionsPropertyDefinition());
852    }
853
854
855
856    /**
857     * {@inheritDoc}
858     */
859    public void setDBDirectoryPermissions(String value) {
860      impl.setPropertyValue(INSTANCE.getDBDirectoryPermissionsPropertyDefinition(), value);
861    }
862
863
864
865    /**
866     * {@inheritDoc}
867     */
868    public boolean isDBTxnNoSync() {
869      return impl.getPropertyValue(INSTANCE.getDBTxnNoSyncPropertyDefinition());
870    }
871
872
873
874    /**
875     * {@inheritDoc}
876     */
877    public void setDBTxnNoSync(Boolean value) {
878      impl.setPropertyValue(INSTANCE.getDBTxnNoSyncPropertyDefinition(), value);
879    }
880
881
882
883    /**
884     * {@inheritDoc}
885     */
886    public long getDiskFullThreshold() {
887      return impl.getPropertyValue(INSTANCE.getDiskFullThresholdPropertyDefinition());
888    }
889
890
891
892    /**
893     * {@inheritDoc}
894     */
895    public void setDiskFullThreshold(Long value) {
896      impl.setPropertyValue(INSTANCE.getDiskFullThresholdPropertyDefinition(), value);
897    }
898
899
900
901    /**
902     * {@inheritDoc}
903     */
904    public long getDiskLowThreshold() {
905      return impl.getPropertyValue(INSTANCE.getDiskLowThresholdPropertyDefinition());
906    }
907
908
909
910    /**
911     * {@inheritDoc}
912     */
913    public void setDiskLowThreshold(Long value) {
914      impl.setPropertyValue(INSTANCE.getDiskLowThresholdPropertyDefinition(), value);
915    }
916
917
918
919    /**
920     * {@inheritDoc}
921     */
922    public Boolean isEnabled() {
923      return impl.getPropertyValue(INSTANCE.getEnabledPropertyDefinition());
924    }
925
926
927
928    /**
929     * {@inheritDoc}
930     */
931    public void setEnabled(boolean value) {
932      impl.setPropertyValue(INSTANCE.getEnabledPropertyDefinition(), value);
933    }
934
935
936
937    /**
938     * {@inheritDoc}
939     */
940    public boolean isEntriesCompressed() {
941      return impl.getPropertyValue(INSTANCE.getEntriesCompressedPropertyDefinition());
942    }
943
944
945
946    /**
947     * {@inheritDoc}
948     */
949    public void setEntriesCompressed(Boolean value) {
950      impl.setPropertyValue(INSTANCE.getEntriesCompressedPropertyDefinition(), value);
951    }
952
953
954
955    /**
956     * {@inheritDoc}
957     */
958    public int getIndexEntryLimit() {
959      return impl.getPropertyValue(INSTANCE.getIndexEntryLimitPropertyDefinition());
960    }
961
962
963
964    /**
965     * {@inheritDoc}
966     */
967    public void setIndexEntryLimit(Integer value) {
968      impl.setPropertyValue(INSTANCE.getIndexEntryLimitPropertyDefinition(), value);
969    }
970
971
972
973    /**
974     * {@inheritDoc}
975     */
976    public boolean isIndexFilterAnalyzerEnabled() {
977      return impl.getPropertyValue(INSTANCE.getIndexFilterAnalyzerEnabledPropertyDefinition());
978    }
979
980
981
982    /**
983     * {@inheritDoc}
984     */
985    public void setIndexFilterAnalyzerEnabled(Boolean value) {
986      impl.setPropertyValue(INSTANCE.getIndexFilterAnalyzerEnabledPropertyDefinition(), value);
987    }
988
989
990
991    /**
992     * {@inheritDoc}
993     */
994    public int getIndexFilterAnalyzerMaxFilters() {
995      return impl.getPropertyValue(INSTANCE.getIndexFilterAnalyzerMaxFiltersPropertyDefinition());
996    }
997
998
999
1000    /**
1001     * {@inheritDoc}
1002     */
1003    public void setIndexFilterAnalyzerMaxFilters(Integer value) {
1004      impl.setPropertyValue(INSTANCE.getIndexFilterAnalyzerMaxFiltersPropertyDefinition(), value);
1005    }
1006
1007
1008
1009    /**
1010     * {@inheritDoc}
1011     */
1012    public String getJavaClass() {
1013      return impl.getPropertyValue(INSTANCE.getJavaClassPropertyDefinition());
1014    }
1015
1016
1017
1018    /**
1019     * {@inheritDoc}
1020     */
1021    public void setJavaClass(String value) {
1022      impl.setPropertyValue(INSTANCE.getJavaClassPropertyDefinition(), value);
1023    }
1024
1025
1026
1027    /**
1028     * {@inheritDoc}
1029     */
1030    public long getPreloadTimeLimit() {
1031      return impl.getPropertyValue(INSTANCE.getPreloadTimeLimitPropertyDefinition());
1032    }
1033
1034
1035
1036    /**
1037     * {@inheritDoc}
1038     */
1039    public void setPreloadTimeLimit(Long value) {
1040      impl.setPropertyValue(INSTANCE.getPreloadTimeLimitPropertyDefinition(), value);
1041    }
1042
1043
1044
1045    /**
1046     * {@inheritDoc}
1047     */
1048    public WritabilityMode getWritabilityMode() {
1049      return impl.getPropertyValue(INSTANCE.getWritabilityModePropertyDefinition());
1050    }
1051
1052
1053
1054    /**
1055     * {@inheritDoc}
1056     */
1057    public void setWritabilityMode(WritabilityMode value) {
1058      impl.setPropertyValue(INSTANCE.getWritabilityModePropertyDefinition(), value);
1059    }
1060
1061
1062
1063    /**
1064     * {@inheritDoc}
1065     */
1066    public String[] listBackendIndexes() throws ConcurrentModificationException,
1067        AuthorizationException, CommunicationException {
1068      return impl.listChildren(INSTANCE.getBackendIndexesRelationDefinition());
1069    }
1070
1071
1072
1073    /**
1074     * {@inheritDoc}
1075     */
1076    public BackendIndexCfgClient getBackendIndex(String name)
1077        throws DefinitionDecodingException, ManagedObjectDecodingException,
1078        ManagedObjectNotFoundException, ConcurrentModificationException,
1079        AuthorizationException, CommunicationException {
1080      return impl.getChild(INSTANCE.getBackendIndexesRelationDefinition(), name).getConfiguration();
1081    }
1082
1083
1084
1085    /**
1086     * {@inheritDoc}
1087     */
1088    public <M extends BackendIndexCfgClient> M createBackendIndex(
1089        ManagedObjectDefinition<M, ? extends BackendIndexCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException {
1090      return impl.createChild(INSTANCE.getBackendIndexesRelationDefinition(), d, name, exceptions).getConfiguration();
1091    }
1092
1093
1094
1095    /**
1096     * {@inheritDoc}
1097     */
1098    public void removeBackendIndex(String name)
1099        throws ManagedObjectNotFoundException, ConcurrentModificationException,
1100        OperationRejectedException, AuthorizationException, CommunicationException {
1101      impl.removeChild(INSTANCE.getBackendIndexesRelationDefinition(), name);
1102    }
1103
1104
1105
1106    /**
1107     * {@inheritDoc}
1108     */
1109    public String[] listBackendVLVIndexes() throws ConcurrentModificationException,
1110        AuthorizationException, CommunicationException {
1111      return impl.listChildren(INSTANCE.getBackendVLVIndexesRelationDefinition());
1112    }
1113
1114
1115
1116    /**
1117     * {@inheritDoc}
1118     */
1119    public BackendVLVIndexCfgClient getBackendVLVIndex(String name)
1120        throws DefinitionDecodingException, ManagedObjectDecodingException,
1121        ManagedObjectNotFoundException, ConcurrentModificationException,
1122        AuthorizationException, CommunicationException {
1123      return impl.getChild(INSTANCE.getBackendVLVIndexesRelationDefinition(), name).getConfiguration();
1124    }
1125
1126
1127
1128    /**
1129     * {@inheritDoc}
1130     */
1131    public <M extends BackendVLVIndexCfgClient> M createBackendVLVIndex(
1132        ManagedObjectDefinition<M, ? extends BackendVLVIndexCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException {
1133      return impl.createChild(INSTANCE.getBackendVLVIndexesRelationDefinition(), d, name, exceptions).getConfiguration();
1134    }
1135
1136
1137
1138    /**
1139     * {@inheritDoc}
1140     */
1141    public void removeBackendVLVIndex(String name)
1142        throws ManagedObjectNotFoundException, ConcurrentModificationException,
1143        OperationRejectedException, AuthorizationException, CommunicationException {
1144      impl.removeChild(INSTANCE.getBackendVLVIndexesRelationDefinition(), name);
1145    }
1146
1147
1148
1149    /**
1150     * {@inheritDoc}
1151     */
1152    public ManagedObjectDefinition<? extends PDBBackendCfgClient, ? extends PDBBackendCfg> definition() {
1153      return INSTANCE;
1154    }
1155
1156
1157
1158    /**
1159     * {@inheritDoc}
1160     */
1161    public PropertyProvider properties() {
1162      return impl;
1163    }
1164
1165
1166
1167    /**
1168     * {@inheritDoc}
1169     */
1170    public void commit() throws ManagedObjectAlreadyExistsException,
1171        MissingMandatoryPropertiesException, ConcurrentModificationException,
1172        OperationRejectedException, AuthorizationException,
1173        CommunicationException {
1174      impl.commit();
1175    }
1176
1177
1178
1179    /** {@inheritDoc} */
1180    public String toString() {
1181      return impl.toString();
1182    }
1183  }
1184
1185
1186
1187  /**
1188   * Managed object server implementation.
1189   */
1190  private static class PDBBackendCfgServerImpl implements
1191    PDBBackendCfg {
1192
1193    // Private implementation.
1194    private ServerManagedObject<? extends PDBBackendCfg> impl;
1195
1196    // The value of the "backend-id" property.
1197    private final String pBackendId;
1198
1199    // The value of the "base-dn" property.
1200    private final SortedSet<DN> pBaseDN;
1201
1202    // The value of the "compact-encoding" property.
1203    private final boolean pCompactEncoding;
1204
1205    // The value of the "db-cache-percent" property.
1206    private final int pDBCachePercent;
1207
1208    // The value of the "db-cache-size" property.
1209    private final long pDBCacheSize;
1210
1211    // The value of the "db-checkpointer-wakeup-interval" property.
1212    private final long pDBCheckpointerWakeupInterval;
1213
1214    // The value of the "db-directory" property.
1215    private final String pDBDirectory;
1216
1217    // The value of the "db-directory-permissions" property.
1218    private final String pDBDirectoryPermissions;
1219
1220    // The value of the "db-txn-no-sync" property.
1221    private final boolean pDBTxnNoSync;
1222
1223    // The value of the "disk-full-threshold" property.
1224    private final long pDiskFullThreshold;
1225
1226    // The value of the "disk-low-threshold" property.
1227    private final long pDiskLowThreshold;
1228
1229    // The value of the "enabled" property.
1230    private final boolean pEnabled;
1231
1232    // The value of the "entries-compressed" property.
1233    private final boolean pEntriesCompressed;
1234
1235    // The value of the "index-entry-limit" property.
1236    private final int pIndexEntryLimit;
1237
1238    // The value of the "index-filter-analyzer-enabled" property.
1239    private final boolean pIndexFilterAnalyzerEnabled;
1240
1241    // The value of the "index-filter-analyzer-max-filters" property.
1242    private final int pIndexFilterAnalyzerMaxFilters;
1243
1244    // The value of the "java-class" property.
1245    private final String pJavaClass;
1246
1247    // The value of the "preload-time-limit" property.
1248    private final long pPreloadTimeLimit;
1249
1250    // The value of the "writability-mode" property.
1251    private final WritabilityMode pWritabilityMode;
1252
1253
1254
1255    // Private constructor.
1256    private PDBBackendCfgServerImpl(ServerManagedObject<? extends PDBBackendCfg> impl) {
1257      this.impl = impl;
1258      this.pBackendId = impl.getPropertyValue(INSTANCE.getBackendIdPropertyDefinition());
1259      this.pBaseDN = impl.getPropertyValues(INSTANCE.getBaseDNPropertyDefinition());
1260      this.pCompactEncoding = impl.getPropertyValue(INSTANCE.getCompactEncodingPropertyDefinition());
1261      this.pDBCachePercent = impl.getPropertyValue(INSTANCE.getDBCachePercentPropertyDefinition());
1262      this.pDBCacheSize = impl.getPropertyValue(INSTANCE.getDBCacheSizePropertyDefinition());
1263      this.pDBCheckpointerWakeupInterval = impl.getPropertyValue(INSTANCE.getDBCheckpointerWakeupIntervalPropertyDefinition());
1264      this.pDBDirectory = impl.getPropertyValue(INSTANCE.getDBDirectoryPropertyDefinition());
1265      this.pDBDirectoryPermissions = impl.getPropertyValue(INSTANCE.getDBDirectoryPermissionsPropertyDefinition());
1266      this.pDBTxnNoSync = impl.getPropertyValue(INSTANCE.getDBTxnNoSyncPropertyDefinition());
1267      this.pDiskFullThreshold = impl.getPropertyValue(INSTANCE.getDiskFullThresholdPropertyDefinition());
1268      this.pDiskLowThreshold = impl.getPropertyValue(INSTANCE.getDiskLowThresholdPropertyDefinition());
1269      this.pEnabled = impl.getPropertyValue(INSTANCE.getEnabledPropertyDefinition());
1270      this.pEntriesCompressed = impl.getPropertyValue(INSTANCE.getEntriesCompressedPropertyDefinition());
1271      this.pIndexEntryLimit = impl.getPropertyValue(INSTANCE.getIndexEntryLimitPropertyDefinition());
1272      this.pIndexFilterAnalyzerEnabled = impl.getPropertyValue(INSTANCE.getIndexFilterAnalyzerEnabledPropertyDefinition());
1273      this.pIndexFilterAnalyzerMaxFilters = impl.getPropertyValue(INSTANCE.getIndexFilterAnalyzerMaxFiltersPropertyDefinition());
1274      this.pJavaClass = impl.getPropertyValue(INSTANCE.getJavaClassPropertyDefinition());
1275      this.pPreloadTimeLimit = impl.getPropertyValue(INSTANCE.getPreloadTimeLimitPropertyDefinition());
1276      this.pWritabilityMode = impl.getPropertyValue(INSTANCE.getWritabilityModePropertyDefinition());
1277    }
1278
1279
1280
1281    /**
1282     * {@inheritDoc}
1283     */
1284    public void addPDBChangeListener(
1285        ConfigurationChangeListener<PDBBackendCfg> listener) {
1286      impl.registerChangeListener(listener);
1287    }
1288
1289
1290
1291    /**
1292     * {@inheritDoc}
1293     */
1294    public void removePDBChangeListener(
1295        ConfigurationChangeListener<PDBBackendCfg> listener) {
1296      impl.deregisterChangeListener(listener);
1297    }
1298    /**
1299     * {@inheritDoc}
1300     */
1301    public void addPluggableChangeListener(
1302        ConfigurationChangeListener<PluggableBackendCfg> listener) {
1303      impl.registerChangeListener(listener);
1304    }
1305
1306
1307
1308    /**
1309     * {@inheritDoc}
1310     */
1311    public void removePluggableChangeListener(
1312        ConfigurationChangeListener<PluggableBackendCfg> listener) {
1313      impl.deregisterChangeListener(listener);
1314    }
1315    /**
1316     * {@inheritDoc}
1317     */
1318    public void addChangeListener(
1319        ConfigurationChangeListener<BackendCfg> listener) {
1320      impl.registerChangeListener(listener);
1321    }
1322
1323
1324
1325    /**
1326     * {@inheritDoc}
1327     */
1328    public void removeChangeListener(
1329        ConfigurationChangeListener<BackendCfg> listener) {
1330      impl.deregisterChangeListener(listener);
1331    }
1332
1333
1334
1335    /**
1336     * {@inheritDoc}
1337     */
1338    public String getBackendId() {
1339      return pBackendId;
1340    }
1341
1342
1343
1344    /**
1345     * {@inheritDoc}
1346     */
1347    public SortedSet<DN> getBaseDN() {
1348      return pBaseDN;
1349    }
1350
1351
1352
1353    /**
1354     * {@inheritDoc}
1355     */
1356    public boolean isCompactEncoding() {
1357      return pCompactEncoding;
1358    }
1359
1360
1361
1362    /**
1363     * {@inheritDoc}
1364     */
1365    public int getDBCachePercent() {
1366      return pDBCachePercent;
1367    }
1368
1369
1370
1371    /**
1372     * {@inheritDoc}
1373     */
1374    public long getDBCacheSize() {
1375      return pDBCacheSize;
1376    }
1377
1378
1379
1380    /**
1381     * {@inheritDoc}
1382     */
1383    public long getDBCheckpointerWakeupInterval() {
1384      return pDBCheckpointerWakeupInterval;
1385    }
1386
1387
1388
1389    /**
1390     * {@inheritDoc}
1391     */
1392    public String getDBDirectory() {
1393      return pDBDirectory;
1394    }
1395
1396
1397
1398    /**
1399     * {@inheritDoc}
1400     */
1401    public String getDBDirectoryPermissions() {
1402      return pDBDirectoryPermissions;
1403    }
1404
1405
1406
1407    /**
1408     * {@inheritDoc}
1409     */
1410    public boolean isDBTxnNoSync() {
1411      return pDBTxnNoSync;
1412    }
1413
1414
1415
1416    /**
1417     * {@inheritDoc}
1418     */
1419    public long getDiskFullThreshold() {
1420      return pDiskFullThreshold;
1421    }
1422
1423
1424
1425    /**
1426     * {@inheritDoc}
1427     */
1428    public long getDiskLowThreshold() {
1429      return pDiskLowThreshold;
1430    }
1431
1432
1433
1434    /**
1435     * {@inheritDoc}
1436     */
1437    public boolean isEnabled() {
1438      return pEnabled;
1439    }
1440
1441
1442
1443    /**
1444     * {@inheritDoc}
1445     */
1446    public boolean isEntriesCompressed() {
1447      return pEntriesCompressed;
1448    }
1449
1450
1451
1452    /**
1453     * {@inheritDoc}
1454     */
1455    public int getIndexEntryLimit() {
1456      return pIndexEntryLimit;
1457    }
1458
1459
1460
1461    /**
1462     * {@inheritDoc}
1463     */
1464    public boolean isIndexFilterAnalyzerEnabled() {
1465      return pIndexFilterAnalyzerEnabled;
1466    }
1467
1468
1469
1470    /**
1471     * {@inheritDoc}
1472     */
1473    public int getIndexFilterAnalyzerMaxFilters() {
1474      return pIndexFilterAnalyzerMaxFilters;
1475    }
1476
1477
1478
1479    /**
1480     * {@inheritDoc}
1481     */
1482    public String getJavaClass() {
1483      return pJavaClass;
1484    }
1485
1486
1487
1488    /**
1489     * {@inheritDoc}
1490     */
1491    public long getPreloadTimeLimit() {
1492      return pPreloadTimeLimit;
1493    }
1494
1495
1496
1497    /**
1498     * {@inheritDoc}
1499     */
1500    public WritabilityMode getWritabilityMode() {
1501      return pWritabilityMode;
1502    }
1503
1504
1505
1506    /**
1507     * {@inheritDoc}
1508     */
1509    public String[] listBackendIndexes() {
1510      return impl.listChildren(INSTANCE.getBackendIndexesRelationDefinition());
1511    }
1512
1513
1514
1515    /**
1516     * {@inheritDoc}
1517     */
1518    public BackendIndexCfg getBackendIndex(String name) throws ConfigException {
1519      return impl.getChild(INSTANCE.getBackendIndexesRelationDefinition(), name).getConfiguration();
1520    }
1521
1522
1523
1524    /**
1525     * {@inheritDoc}
1526     */
1527    public void addBackendIndexAddListener(
1528        ConfigurationAddListener<BackendIndexCfg> listener) throws ConfigException {
1529      impl.registerAddListener(INSTANCE.getBackendIndexesRelationDefinition(), listener);
1530    }
1531
1532
1533
1534    /**
1535     * {@inheritDoc}
1536     */
1537    public void removeBackendIndexAddListener(
1538        ConfigurationAddListener<BackendIndexCfg> listener) {
1539      impl.deregisterAddListener(INSTANCE.getBackendIndexesRelationDefinition(), listener);
1540    }
1541
1542
1543
1544    /**
1545     * {@inheritDoc}
1546     */
1547    public void addBackendIndexDeleteListener(
1548        ConfigurationDeleteListener<BackendIndexCfg> listener) throws ConfigException {
1549      impl.registerDeleteListener(INSTANCE.getBackendIndexesRelationDefinition(), listener);
1550    }
1551
1552
1553
1554    /**
1555     * {@inheritDoc}
1556     */
1557    public void removeBackendIndexDeleteListener(
1558        ConfigurationDeleteListener<BackendIndexCfg> listener) {
1559      impl.deregisterDeleteListener(INSTANCE.getBackendIndexesRelationDefinition(), listener);
1560    }
1561
1562
1563
1564    /**
1565     * {@inheritDoc}
1566     */
1567    public String[] listBackendVLVIndexes() {
1568      return impl.listChildren(INSTANCE.getBackendVLVIndexesRelationDefinition());
1569    }
1570
1571
1572
1573    /**
1574     * {@inheritDoc}
1575     */
1576    public BackendVLVIndexCfg getBackendVLVIndex(String name) throws ConfigException {
1577      return impl.getChild(INSTANCE.getBackendVLVIndexesRelationDefinition(), name).getConfiguration();
1578    }
1579
1580
1581
1582    /**
1583     * {@inheritDoc}
1584     */
1585    public void addBackendVLVIndexAddListener(
1586        ConfigurationAddListener<BackendVLVIndexCfg> listener) throws ConfigException {
1587      impl.registerAddListener(INSTANCE.getBackendVLVIndexesRelationDefinition(), listener);
1588    }
1589
1590
1591
1592    /**
1593     * {@inheritDoc}
1594     */
1595    public void removeBackendVLVIndexAddListener(
1596        ConfigurationAddListener<BackendVLVIndexCfg> listener) {
1597      impl.deregisterAddListener(INSTANCE.getBackendVLVIndexesRelationDefinition(), listener);
1598    }
1599
1600
1601
1602    /**
1603     * {@inheritDoc}
1604     */
1605    public void addBackendVLVIndexDeleteListener(
1606        ConfigurationDeleteListener<BackendVLVIndexCfg> listener) throws ConfigException {
1607      impl.registerDeleteListener(INSTANCE.getBackendVLVIndexesRelationDefinition(), listener);
1608    }
1609
1610
1611
1612    /**
1613     * {@inheritDoc}
1614     */
1615    public void removeBackendVLVIndexDeleteListener(
1616        ConfigurationDeleteListener<BackendVLVIndexCfg> listener) {
1617      impl.deregisterDeleteListener(INSTANCE.getBackendVLVIndexesRelationDefinition(), listener);
1618    }
1619
1620
1621
1622    /**
1623     * {@inheritDoc}
1624     */
1625    public Class<? extends PDBBackendCfg> configurationClass() {
1626      return PDBBackendCfg.class;
1627    }
1628
1629
1630
1631    /**
1632     * {@inheritDoc}
1633     */
1634    public DN dn() {
1635      return impl.getDN();
1636    }
1637
1638
1639
1640    /** {@inheritDoc} */
1641    public String toString() {
1642      return impl.toString();
1643    }
1644  }
1645}