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