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.AliasDefaultBehaviorProvider; 035import org.opends.server.admin.BooleanPropertyDefinition; 036import org.opends.server.admin.ClassPropertyDefinition; 037import org.opends.server.admin.client.AuthorizationException; 038import org.opends.server.admin.client.CommunicationException; 039import org.opends.server.admin.client.ConcurrentModificationException; 040import org.opends.server.admin.client.IllegalManagedObjectNameException; 041import org.opends.server.admin.client.ManagedObject; 042import org.opends.server.admin.client.ManagedObjectDecodingException; 043import org.opends.server.admin.client.MissingMandatoryPropertiesException; 044import org.opends.server.admin.client.OperationRejectedException; 045import org.opends.server.admin.condition.Conditions; 046import org.opends.server.admin.DefaultBehaviorProvider; 047import org.opends.server.admin.DefinedDefaultBehaviorProvider; 048import org.opends.server.admin.DefinitionDecodingException; 049import org.opends.server.admin.DNPropertyDefinition; 050import org.opends.server.admin.DurationPropertyDefinition; 051import org.opends.server.admin.EnumPropertyDefinition; 052import org.opends.server.admin.GenericConstraint; 053import org.opends.server.admin.InstantiableRelationDefinition; 054import org.opends.server.admin.IntegerPropertyDefinition; 055import org.opends.server.admin.ManagedObjectAlreadyExistsException; 056import org.opends.server.admin.ManagedObjectDefinition; 057import org.opends.server.admin.ManagedObjectNotFoundException; 058import org.opends.server.admin.PropertyException; 059import org.opends.server.admin.PropertyOption; 060import org.opends.server.admin.PropertyProvider; 061import org.opends.server.admin.server.ConfigurationAddListener; 062import org.opends.server.admin.server.ConfigurationChangeListener; 063import org.opends.server.admin.server.ConfigurationDeleteListener; 064import org.opends.server.admin.server.ServerManagedObject; 065import org.opends.server.admin.SizePropertyDefinition; 066import org.opends.server.admin.std.client.BackendIndexCfgClient; 067import org.opends.server.admin.std.client.BackendVLVIndexCfgClient; 068import org.opends.server.admin.std.client.JEBackendCfgClient; 069import org.opends.server.admin.std.meta.BackendCfgDefn.WritabilityMode; 070import org.opends.server.admin.std.server.BackendCfg; 071import org.opends.server.admin.std.server.BackendIndexCfg; 072import org.opends.server.admin.std.server.BackendVLVIndexCfg; 073import org.opends.server.admin.std.server.JEBackendCfg; 074import org.opends.server.admin.std.server.PluggableBackendCfg; 075import org.opends.server.admin.StringPropertyDefinition; 076import org.opends.server.admin.Tag; 077import org.opends.server.admin.UndefinedDefaultBehaviorProvider; 078import org.opends.server.types.DN; 079 080 081 082/** 083 * An interface for querying the JE Backend managed object definition 084 * meta information. 085 * <p> 086 * A JE Backend stores application data in a Berkeley DB Java Edition 087 * database. 088 */ 089public final class JEBackendCfgDefn extends ManagedObjectDefinition<JEBackendCfgClient, JEBackendCfg> { 090 091 // The singleton configuration definition instance. 092 private static final JEBackendCfgDefn INSTANCE = new JEBackendCfgDefn(); 093 094 095 096 // The "db-cache-percent" property definition. 097 private static final IntegerPropertyDefinition PD_DB_CACHE_PERCENT; 098 099 100 101 // The "db-cache-size" property definition. 102 private static final SizePropertyDefinition PD_DB_CACHE_SIZE; 103 104 105 106 // The "db-checkpointer-bytes-interval" property definition. 107 private static final SizePropertyDefinition PD_DB_CHECKPOINTER_BYTES_INTERVAL; 108 109 110 111 // The "db-checkpointer-wakeup-interval" property definition. 112 private static final DurationPropertyDefinition PD_DB_CHECKPOINTER_WAKEUP_INTERVAL; 113 114 115 116 // The "db-cleaner-min-utilization" property definition. 117 private static final IntegerPropertyDefinition PD_DB_CLEANER_MIN_UTILIZATION; 118 119 120 121 // The "db-directory" property definition. 122 private static final StringPropertyDefinition PD_DB_DIRECTORY; 123 124 125 126 // The "db-directory-permissions" property definition. 127 private static final StringPropertyDefinition PD_DB_DIRECTORY_PERMISSIONS; 128 129 130 131 // The "db-evictor-core-threads" property definition. 132 private static final IntegerPropertyDefinition PD_DB_EVICTOR_CORE_THREADS; 133 134 135 136 // The "db-evictor-keep-alive" property definition. 137 private static final DurationPropertyDefinition PD_DB_EVICTOR_KEEP_ALIVE; 138 139 140 141 // The "db-evictor-lru-only" property definition. 142 private static final BooleanPropertyDefinition PD_DB_EVICTOR_LRU_ONLY; 143 144 145 146 // The "db-evictor-max-threads" property definition. 147 private static final IntegerPropertyDefinition PD_DB_EVICTOR_MAX_THREADS; 148 149 150 151 // The "db-evictor-nodes-per-scan" property definition. 152 private static final IntegerPropertyDefinition PD_DB_EVICTOR_NODES_PER_SCAN; 153 154 155 156 // The "db-log-filecache-size" property definition. 157 private static final IntegerPropertyDefinition PD_DB_LOG_FILECACHE_SIZE; 158 159 160 161 // The "db-log-file-max" property definition. 162 private static final SizePropertyDefinition PD_DB_LOG_FILE_MAX; 163 164 165 166 // The "db-logging-file-handler-on" property definition. 167 private static final BooleanPropertyDefinition PD_DB_LOGGING_FILE_HANDLER_ON; 168 169 170 171 // The "db-logging-level" property definition. 172 private static final StringPropertyDefinition PD_DB_LOGGING_LEVEL; 173 174 175 176 // The "db-num-cleaner-threads" property definition. 177 private static final IntegerPropertyDefinition PD_DB_NUM_CLEANER_THREADS; 178 179 180 181 // The "db-num-lock-tables" property definition. 182 private static final IntegerPropertyDefinition PD_DB_NUM_LOCK_TABLES; 183 184 185 186 // The "db-run-cleaner" property definition. 187 private static final BooleanPropertyDefinition PD_DB_RUN_CLEANER; 188 189 190 191 // The "db-txn-no-sync" property definition. 192 private static final BooleanPropertyDefinition PD_DB_TXN_NO_SYNC; 193 194 195 196 // The "db-txn-write-no-sync" property definition. 197 private static final BooleanPropertyDefinition PD_DB_TXN_WRITE_NO_SYNC; 198 199 200 201 // The "disk-full-threshold" property definition. 202 private static final SizePropertyDefinition PD_DISK_FULL_THRESHOLD; 203 204 205 206 // The "disk-low-threshold" property definition. 207 private static final SizePropertyDefinition PD_DISK_LOW_THRESHOLD; 208 209 210 211 // The "java-class" property definition. 212 private static final ClassPropertyDefinition PD_JAVA_CLASS; 213 214 215 216 // The "je-property" property definition. 217 private static final StringPropertyDefinition PD_JE_PROPERTY; 218 219 220 221 // Build the "db-cache-percent" property definition. 222 static { 223 IntegerPropertyDefinition.Builder builder = IntegerPropertyDefinition.createBuilder(INSTANCE, "db-cache-percent"); 224 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "db-cache-percent")); 225 DefaultBehaviorProvider<Integer> provider = new DefinedDefaultBehaviorProvider<Integer>("50"); 226 builder.setDefaultBehaviorProvider(provider); 227 builder.setUpperLimit(90); 228 builder.setLowerLimit(1); 229 PD_DB_CACHE_PERCENT = builder.getInstance(); 230 INSTANCE.registerPropertyDefinition(PD_DB_CACHE_PERCENT); 231 } 232 233 234 235 // Build the "db-cache-size" property definition. 236 static { 237 SizePropertyDefinition.Builder builder = SizePropertyDefinition.createBuilder(INSTANCE, "db-cache-size"); 238 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "db-cache-size")); 239 DefaultBehaviorProvider<Long> provider = new DefinedDefaultBehaviorProvider<Long>("0 MB"); 240 builder.setDefaultBehaviorProvider(provider); 241 builder.setLowerLimit("0 MB"); 242 PD_DB_CACHE_SIZE = builder.getInstance(); 243 INSTANCE.registerPropertyDefinition(PD_DB_CACHE_SIZE); 244 } 245 246 247 248 // Build the "db-checkpointer-bytes-interval" property definition. 249 static { 250 SizePropertyDefinition.Builder builder = SizePropertyDefinition.createBuilder(INSTANCE, "db-checkpointer-bytes-interval"); 251 builder.setOption(PropertyOption.ADVANCED); 252 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.SERVER_RESTART, INSTANCE, "db-checkpointer-bytes-interval")); 253 DefaultBehaviorProvider<Long> provider = new DefinedDefaultBehaviorProvider<Long>("500mb"); 254 builder.setDefaultBehaviorProvider(provider); 255 builder.setUpperLimit("9223372036854775807b"); 256 builder.setLowerLimit("0b"); 257 PD_DB_CHECKPOINTER_BYTES_INTERVAL = builder.getInstance(); 258 INSTANCE.registerPropertyDefinition(PD_DB_CHECKPOINTER_BYTES_INTERVAL); 259 } 260 261 262 263 // Build the "db-checkpointer-wakeup-interval" property definition. 264 static { 265 DurationPropertyDefinition.Builder builder = DurationPropertyDefinition.createBuilder(INSTANCE, "db-checkpointer-wakeup-interval"); 266 builder.setOption(PropertyOption.ADVANCED); 267 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.COMPONENT_RESTART, INSTANCE, "db-checkpointer-wakeup-interval")); 268 DefaultBehaviorProvider<Long> provider = new DefinedDefaultBehaviorProvider<Long>("30s"); 269 builder.setDefaultBehaviorProvider(provider); 270 builder.setBaseUnit("s"); 271 builder.setUpperLimit("4294"); 272 builder.setLowerLimit("1"); 273 PD_DB_CHECKPOINTER_WAKEUP_INTERVAL = builder.getInstance(); 274 INSTANCE.registerPropertyDefinition(PD_DB_CHECKPOINTER_WAKEUP_INTERVAL); 275 } 276 277 278 279 // Build the "db-cleaner-min-utilization" property definition. 280 static { 281 IntegerPropertyDefinition.Builder builder = IntegerPropertyDefinition.createBuilder(INSTANCE, "db-cleaner-min-utilization"); 282 builder.setOption(PropertyOption.ADVANCED); 283 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "db-cleaner-min-utilization")); 284 DefaultBehaviorProvider<Integer> provider = new DefinedDefaultBehaviorProvider<Integer>("50"); 285 builder.setDefaultBehaviorProvider(provider); 286 builder.setUpperLimit(90); 287 builder.setLowerLimit(0); 288 PD_DB_CLEANER_MIN_UTILIZATION = builder.getInstance(); 289 INSTANCE.registerPropertyDefinition(PD_DB_CLEANER_MIN_UTILIZATION); 290 } 291 292 293 294 // Build the "db-directory" property definition. 295 static { 296 StringPropertyDefinition.Builder builder = StringPropertyDefinition.createBuilder(INSTANCE, "db-directory"); 297 builder.setOption(PropertyOption.MANDATORY); 298 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.COMPONENT_RESTART, INSTANCE, "db-directory")); 299 DefaultBehaviorProvider<String> provider = new DefinedDefaultBehaviorProvider<String>("db"); 300 builder.setDefaultBehaviorProvider(provider); 301 PD_DB_DIRECTORY = builder.getInstance(); 302 INSTANCE.registerPropertyDefinition(PD_DB_DIRECTORY); 303 } 304 305 306 307 // Build the "db-directory-permissions" property definition. 308 static { 309 StringPropertyDefinition.Builder builder = StringPropertyDefinition.createBuilder(INSTANCE, "db-directory-permissions"); 310 builder.setOption(PropertyOption.ADVANCED); 311 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.SERVER_RESTART, INSTANCE, "db-directory-permissions")); 312 DefaultBehaviorProvider<String> provider = new DefinedDefaultBehaviorProvider<String>("700"); 313 builder.setDefaultBehaviorProvider(provider); 314 builder.setPattern("^7[0-7][0-7]$", "MODE"); 315 PD_DB_DIRECTORY_PERMISSIONS = builder.getInstance(); 316 INSTANCE.registerPropertyDefinition(PD_DB_DIRECTORY_PERMISSIONS); 317 } 318 319 320 321 // Build the "db-evictor-core-threads" property definition. 322 static { 323 IntegerPropertyDefinition.Builder builder = IntegerPropertyDefinition.createBuilder(INSTANCE, "db-evictor-core-threads"); 324 builder.setOption(PropertyOption.ADVANCED); 325 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "db-evictor-core-threads")); 326 DefaultBehaviorProvider<Integer> provider = new DefinedDefaultBehaviorProvider<Integer>("1"); 327 builder.setDefaultBehaviorProvider(provider); 328 builder.setUpperLimit(2147483647); 329 builder.setLowerLimit(0); 330 PD_DB_EVICTOR_CORE_THREADS = builder.getInstance(); 331 INSTANCE.registerPropertyDefinition(PD_DB_EVICTOR_CORE_THREADS); 332 } 333 334 335 336 // Build the "db-evictor-keep-alive" property definition. 337 static { 338 DurationPropertyDefinition.Builder builder = DurationPropertyDefinition.createBuilder(INSTANCE, "db-evictor-keep-alive"); 339 builder.setOption(PropertyOption.ADVANCED); 340 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "db-evictor-keep-alive")); 341 DefaultBehaviorProvider<Long> provider = new DefinedDefaultBehaviorProvider<Long>("600s"); 342 builder.setDefaultBehaviorProvider(provider); 343 builder.setBaseUnit("s"); 344 builder.setUpperLimit("86400"); 345 builder.setLowerLimit("1"); 346 PD_DB_EVICTOR_KEEP_ALIVE = builder.getInstance(); 347 INSTANCE.registerPropertyDefinition(PD_DB_EVICTOR_KEEP_ALIVE); 348 } 349 350 351 352 // Build the "db-evictor-lru-only" property definition. 353 static { 354 BooleanPropertyDefinition.Builder builder = BooleanPropertyDefinition.createBuilder(INSTANCE, "db-evictor-lru-only"); 355 builder.setOption(PropertyOption.ADVANCED); 356 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.COMPONENT_RESTART, INSTANCE, "db-evictor-lru-only")); 357 DefaultBehaviorProvider<Boolean> provider = new DefinedDefaultBehaviorProvider<Boolean>("false"); 358 builder.setDefaultBehaviorProvider(provider); 359 PD_DB_EVICTOR_LRU_ONLY = builder.getInstance(); 360 INSTANCE.registerPropertyDefinition(PD_DB_EVICTOR_LRU_ONLY); 361 } 362 363 364 365 // Build the "db-evictor-max-threads" property definition. 366 static { 367 IntegerPropertyDefinition.Builder builder = IntegerPropertyDefinition.createBuilder(INSTANCE, "db-evictor-max-threads"); 368 builder.setOption(PropertyOption.ADVANCED); 369 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "db-evictor-max-threads")); 370 DefaultBehaviorProvider<Integer> provider = new DefinedDefaultBehaviorProvider<Integer>("10"); 371 builder.setDefaultBehaviorProvider(provider); 372 builder.setUpperLimit(2147483647); 373 builder.setLowerLimit(1); 374 PD_DB_EVICTOR_MAX_THREADS = builder.getInstance(); 375 INSTANCE.registerPropertyDefinition(PD_DB_EVICTOR_MAX_THREADS); 376 } 377 378 379 380 // Build the "db-evictor-nodes-per-scan" property definition. 381 static { 382 IntegerPropertyDefinition.Builder builder = IntegerPropertyDefinition.createBuilder(INSTANCE, "db-evictor-nodes-per-scan"); 383 builder.setOption(PropertyOption.ADVANCED); 384 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.COMPONENT_RESTART, INSTANCE, "db-evictor-nodes-per-scan")); 385 DefaultBehaviorProvider<Integer> provider = new DefinedDefaultBehaviorProvider<Integer>("10"); 386 builder.setDefaultBehaviorProvider(provider); 387 builder.setUpperLimit(1000); 388 builder.setLowerLimit(1); 389 PD_DB_EVICTOR_NODES_PER_SCAN = builder.getInstance(); 390 INSTANCE.registerPropertyDefinition(PD_DB_EVICTOR_NODES_PER_SCAN); 391 } 392 393 394 395 // Build the "db-log-filecache-size" property definition. 396 static { 397 IntegerPropertyDefinition.Builder builder = IntegerPropertyDefinition.createBuilder(INSTANCE, "db-log-filecache-size"); 398 builder.setOption(PropertyOption.ADVANCED); 399 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.COMPONENT_RESTART, INSTANCE, "db-log-filecache-size")); 400 DefaultBehaviorProvider<Integer> provider = new DefinedDefaultBehaviorProvider<Integer>("100"); 401 builder.setDefaultBehaviorProvider(provider); 402 builder.setUpperLimit(2147483647); 403 builder.setLowerLimit(3); 404 PD_DB_LOG_FILECACHE_SIZE = builder.getInstance(); 405 INSTANCE.registerPropertyDefinition(PD_DB_LOG_FILECACHE_SIZE); 406 } 407 408 409 410 // Build the "db-log-file-max" property definition. 411 static { 412 SizePropertyDefinition.Builder builder = SizePropertyDefinition.createBuilder(INSTANCE, "db-log-file-max"); 413 builder.setOption(PropertyOption.ADVANCED); 414 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.COMPONENT_RESTART, INSTANCE, "db-log-file-max")); 415 DefaultBehaviorProvider<Long> provider = new DefinedDefaultBehaviorProvider<Long>("100mb"); 416 builder.setDefaultBehaviorProvider(provider); 417 builder.setUpperLimit("4gib"); 418 builder.setLowerLimit("1mb"); 419 PD_DB_LOG_FILE_MAX = builder.getInstance(); 420 INSTANCE.registerPropertyDefinition(PD_DB_LOG_FILE_MAX); 421 } 422 423 424 425 // Build the "db-logging-file-handler-on" property definition. 426 static { 427 BooleanPropertyDefinition.Builder builder = BooleanPropertyDefinition.createBuilder(INSTANCE, "db-logging-file-handler-on"); 428 builder.setOption(PropertyOption.ADVANCED); 429 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.COMPONENT_RESTART, INSTANCE, "db-logging-file-handler-on")); 430 DefaultBehaviorProvider<Boolean> provider = new DefinedDefaultBehaviorProvider<Boolean>("true"); 431 builder.setDefaultBehaviorProvider(provider); 432 PD_DB_LOGGING_FILE_HANDLER_ON = builder.getInstance(); 433 INSTANCE.registerPropertyDefinition(PD_DB_LOGGING_FILE_HANDLER_ON); 434 } 435 436 437 438 // Build the "db-logging-level" property definition. 439 static { 440 StringPropertyDefinition.Builder builder = StringPropertyDefinition.createBuilder(INSTANCE, "db-logging-level"); 441 builder.setOption(PropertyOption.ADVANCED); 442 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.COMPONENT_RESTART, INSTANCE, "db-logging-level")); 443 DefaultBehaviorProvider<String> provider = new DefinedDefaultBehaviorProvider<String>("CONFIG"); 444 builder.setDefaultBehaviorProvider(provider); 445 PD_DB_LOGGING_LEVEL = builder.getInstance(); 446 INSTANCE.registerPropertyDefinition(PD_DB_LOGGING_LEVEL); 447 } 448 449 450 451 // Build the "db-num-cleaner-threads" property definition. 452 static { 453 IntegerPropertyDefinition.Builder builder = IntegerPropertyDefinition.createBuilder(INSTANCE, "db-num-cleaner-threads"); 454 builder.setOption(PropertyOption.ADVANCED); 455 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "db-num-cleaner-threads")); 456 builder.setDefaultBehaviorProvider(new AliasDefaultBehaviorProvider<Integer>(INSTANCE, "db-num-cleaner-threads")); 457 builder.setLowerLimit(1); 458 PD_DB_NUM_CLEANER_THREADS = builder.getInstance(); 459 INSTANCE.registerPropertyDefinition(PD_DB_NUM_CLEANER_THREADS); 460 } 461 462 463 464 // Build the "db-num-lock-tables" property definition. 465 static { 466 IntegerPropertyDefinition.Builder builder = IntegerPropertyDefinition.createBuilder(INSTANCE, "db-num-lock-tables"); 467 builder.setOption(PropertyOption.ADVANCED); 468 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.COMPONENT_RESTART, INSTANCE, "db-num-lock-tables")); 469 builder.setDefaultBehaviorProvider(new AliasDefaultBehaviorProvider<Integer>(INSTANCE, "db-num-lock-tables")); 470 builder.setUpperLimit(32767); 471 builder.setLowerLimit(1); 472 PD_DB_NUM_LOCK_TABLES = builder.getInstance(); 473 INSTANCE.registerPropertyDefinition(PD_DB_NUM_LOCK_TABLES); 474 } 475 476 477 478 // Build the "db-run-cleaner" property definition. 479 static { 480 BooleanPropertyDefinition.Builder builder = BooleanPropertyDefinition.createBuilder(INSTANCE, "db-run-cleaner"); 481 builder.setOption(PropertyOption.ADVANCED); 482 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "db-run-cleaner")); 483 DefaultBehaviorProvider<Boolean> provider = new DefinedDefaultBehaviorProvider<Boolean>("true"); 484 builder.setDefaultBehaviorProvider(provider); 485 PD_DB_RUN_CLEANER = builder.getInstance(); 486 INSTANCE.registerPropertyDefinition(PD_DB_RUN_CLEANER); 487 } 488 489 490 491 // Build the "db-txn-no-sync" property definition. 492 static { 493 BooleanPropertyDefinition.Builder builder = BooleanPropertyDefinition.createBuilder(INSTANCE, "db-txn-no-sync"); 494 builder.setOption(PropertyOption.ADVANCED); 495 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "db-txn-no-sync")); 496 DefaultBehaviorProvider<Boolean> provider = new DefinedDefaultBehaviorProvider<Boolean>("false"); 497 builder.setDefaultBehaviorProvider(provider); 498 PD_DB_TXN_NO_SYNC = builder.getInstance(); 499 INSTANCE.registerPropertyDefinition(PD_DB_TXN_NO_SYNC); 500 } 501 502 503 504 // Build the "db-txn-write-no-sync" property definition. 505 static { 506 BooleanPropertyDefinition.Builder builder = BooleanPropertyDefinition.createBuilder(INSTANCE, "db-txn-write-no-sync"); 507 builder.setOption(PropertyOption.ADVANCED); 508 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "db-txn-write-no-sync")); 509 DefaultBehaviorProvider<Boolean> provider = new DefinedDefaultBehaviorProvider<Boolean>("true"); 510 builder.setDefaultBehaviorProvider(provider); 511 PD_DB_TXN_WRITE_NO_SYNC = builder.getInstance(); 512 INSTANCE.registerPropertyDefinition(PD_DB_TXN_WRITE_NO_SYNC); 513 } 514 515 516 517 // Build the "disk-full-threshold" property definition. 518 static { 519 SizePropertyDefinition.Builder builder = SizePropertyDefinition.createBuilder(INSTANCE, "disk-full-threshold"); 520 builder.setOption(PropertyOption.ADVANCED); 521 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "disk-full-threshold")); 522 DefaultBehaviorProvider<Long> provider = new DefinedDefaultBehaviorProvider<Long>("100 megabytes"); 523 builder.setDefaultBehaviorProvider(provider); 524 builder.setLowerLimit("0"); 525 PD_DISK_FULL_THRESHOLD = builder.getInstance(); 526 INSTANCE.registerPropertyDefinition(PD_DISK_FULL_THRESHOLD); 527 } 528 529 530 531 // Build the "disk-low-threshold" property definition. 532 static { 533 SizePropertyDefinition.Builder builder = SizePropertyDefinition.createBuilder(INSTANCE, "disk-low-threshold"); 534 builder.setOption(PropertyOption.ADVANCED); 535 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "disk-low-threshold")); 536 DefaultBehaviorProvider<Long> provider = new DefinedDefaultBehaviorProvider<Long>("200 megabytes"); 537 builder.setDefaultBehaviorProvider(provider); 538 builder.setLowerLimit("0"); 539 PD_DISK_LOW_THRESHOLD = builder.getInstance(); 540 INSTANCE.registerPropertyDefinition(PD_DISK_LOW_THRESHOLD); 541 } 542 543 544 545 // Build the "java-class" property definition. 546 static { 547 ClassPropertyDefinition.Builder builder = ClassPropertyDefinition.createBuilder(INSTANCE, "java-class"); 548 builder.setOption(PropertyOption.MANDATORY); 549 builder.setOption(PropertyOption.ADVANCED); 550 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.COMPONENT_RESTART, INSTANCE, "java-class")); 551 DefaultBehaviorProvider<String> provider = new DefinedDefaultBehaviorProvider<String>("org.opends.server.backends.jeb.JEBackend"); 552 builder.setDefaultBehaviorProvider(provider); 553 builder.addInstanceOf("org.opends.server.api.Backend"); 554 PD_JAVA_CLASS = builder.getInstance(); 555 INSTANCE.registerPropertyDefinition(PD_JAVA_CLASS); 556 } 557 558 559 560 // Build the "je-property" property definition. 561 static { 562 StringPropertyDefinition.Builder builder = StringPropertyDefinition.createBuilder(INSTANCE, "je-property"); 563 builder.setOption(PropertyOption.MULTI_VALUED); 564 builder.setOption(PropertyOption.ADVANCED); 565 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "je-property")); 566 builder.setDefaultBehaviorProvider(new UndefinedDefaultBehaviorProvider<String>()); 567 PD_JE_PROPERTY = builder.getInstance(); 568 INSTANCE.registerPropertyDefinition(PD_JE_PROPERTY); 569 } 570 571 572 573 // Register the tags associated with this managed object definition. 574 static { 575 INSTANCE.registerTag(Tag.valueOf("database")); 576 } 577 578 579 580 // Register the constraints associated with this managed object definition. 581 static { 582 INSTANCE.registerConstraint(new GenericConstraint(INSTANCE, 1, Conditions.implies(Conditions.contains("enabled", "true"), Conditions.not(Conditions.and(Conditions.contains("db-txn-no-sync", "true"), Conditions.contains("db-txn-write-no-sync", "true")))))); 583 } 584 585 586 587 /** 588 * Get the JE Backend configuration definition singleton. 589 * 590 * @return Returns the JE Backend configuration definition 591 * singleton. 592 */ 593 public static JEBackendCfgDefn getInstance() { 594 return INSTANCE; 595 } 596 597 598 599 /** 600 * Private constructor. 601 */ 602 private JEBackendCfgDefn() { 603 super("je-backend", PluggableBackendCfgDefn.getInstance()); 604 } 605 606 607 608 /** 609 * {@inheritDoc} 610 */ 611 public JEBackendCfgClient createClientConfiguration( 612 ManagedObject<? extends JEBackendCfgClient> impl) { 613 return new JEBackendCfgClientImpl(impl); 614 } 615 616 617 618 /** 619 * {@inheritDoc} 620 */ 621 public JEBackendCfg createServerConfiguration( 622 ServerManagedObject<? extends JEBackendCfg> impl) { 623 return new JEBackendCfgServerImpl(impl); 624 } 625 626 627 628 /** 629 * {@inheritDoc} 630 */ 631 public Class<JEBackendCfg> getServerConfigurationClass() { 632 return JEBackendCfg.class; 633 } 634 635 636 637 /** 638 * Get the "backend-id" property definition. 639 * <p> 640 * Specifies a name to identify the associated backend. 641 * <p> 642 * The name must be unique among all backends in the server. The 643 * backend ID may not be altered after the backend is created in the 644 * server. 645 * 646 * @return Returns the "backend-id" property definition. 647 */ 648 public StringPropertyDefinition getBackendIdPropertyDefinition() { 649 return PluggableBackendCfgDefn.getInstance().getBackendIdPropertyDefinition(); 650 } 651 652 653 654 /** 655 * Get the "base-dn" property definition. 656 * <p> 657 * Specifies the base DN(s) for the data that the backend handles. 658 * <p> 659 * A single backend may be responsible for one or more base DNs. 660 * Note that no two backends may have the same base DN although one 661 * backend may have a base DN that is below a base DN provided by 662 * another backend (similar to the use of sub-suffixes in the Sun 663 * Java System Directory Server). If any of the base DNs is 664 * subordinate to a base DN for another backend, then all base DNs 665 * for that backend must be subordinate to that same base DN. 666 * 667 * @return Returns the "base-dn" property definition. 668 */ 669 public DNPropertyDefinition getBaseDNPropertyDefinition() { 670 return PluggableBackendCfgDefn.getInstance().getBaseDNPropertyDefinition(); 671 } 672 673 674 675 /** 676 * Get the "compact-encoding" property definition. 677 * <p> 678 * Indicates whether the backend should use a compact form when 679 * encoding entries by compressing the attribute descriptions and 680 * object class sets. 681 * <p> 682 * Note that this property applies only to the entries themselves 683 * and does not impact the index data. 684 * 685 * @return Returns the "compact-encoding" property definition. 686 */ 687 public BooleanPropertyDefinition getCompactEncodingPropertyDefinition() { 688 return PluggableBackendCfgDefn.getInstance().getCompactEncodingPropertyDefinition(); 689 } 690 691 692 693 /** 694 * Get the "db-cache-percent" property definition. 695 * <p> 696 * Specifies the percentage of JVM memory to allocate to the 697 * database cache. 698 * <p> 699 * Specifies the percentage of memory available to the JVM that 700 * should be used for caching database contents. Note that this is 701 * only used if the value of the db-cache-size property is set to "0 702 * MB". Otherwise, the value of that property is used instead to 703 * control the cache size configuration. 704 * 705 * @return Returns the "db-cache-percent" property definition. 706 */ 707 public IntegerPropertyDefinition getDBCachePercentPropertyDefinition() { 708 return PD_DB_CACHE_PERCENT; 709 } 710 711 712 713 /** 714 * Get the "db-cache-size" property definition. 715 * <p> 716 * The amount of JVM memory to allocate to the database cache. 717 * <p> 718 * Specifies the amount of memory that should be used for caching 719 * database contents. A value of "0 MB" indicates that the 720 * db-cache-percent property should be used instead to specify the 721 * cache size. 722 * 723 * @return Returns the "db-cache-size" property definition. 724 */ 725 public SizePropertyDefinition getDBCacheSizePropertyDefinition() { 726 return PD_DB_CACHE_SIZE; 727 } 728 729 730 731 /** 732 * Get the "db-checkpointer-bytes-interval" property definition. 733 * <p> 734 * Specifies the maximum number of bytes that may be written to the 735 * database before it is forced to perform a checkpoint. 736 * <p> 737 * This can be used to bound the recovery time that may be required 738 * if the database environment is opened without having been properly 739 * closed. If this property is set to a non-zero value, the 740 * checkpointer wakeup interval is not used. To use time-based 741 * checkpointing, set this property to zero. 742 * 743 * @return Returns the "db-checkpointer-bytes-interval" property definition. 744 */ 745 public SizePropertyDefinition getDBCheckpointerBytesIntervalPropertyDefinition() { 746 return PD_DB_CHECKPOINTER_BYTES_INTERVAL; 747 } 748 749 750 751 /** 752 * Get the "db-checkpointer-wakeup-interval" property definition. 753 * <p> 754 * Specifies the maximum length of time that may pass between 755 * checkpoints. 756 * <p> 757 * Note that this is only used if the value of the checkpointer 758 * bytes interval is zero. 759 * 760 * @return Returns the "db-checkpointer-wakeup-interval" property definition. 761 */ 762 public DurationPropertyDefinition getDBCheckpointerWakeupIntervalPropertyDefinition() { 763 return PD_DB_CHECKPOINTER_WAKEUP_INTERVAL; 764 } 765 766 767 768 /** 769 * Get the "db-cleaner-min-utilization" property definition. 770 * <p> 771 * Specifies the occupancy percentage for "live" data in this 772 * backend's database. 773 * <p> 774 * When the amount of "live" data in the database drops below this 775 * value, cleaners will act to increase the occupancy percentage by 776 * compacting the database. 777 * 778 * @return Returns the "db-cleaner-min-utilization" property definition. 779 */ 780 public IntegerPropertyDefinition getDBCleanerMinUtilizationPropertyDefinition() { 781 return PD_DB_CLEANER_MIN_UTILIZATION; 782 } 783 784 785 786 /** 787 * Get the "db-directory" property definition. 788 * <p> 789 * Specifies the path to the filesystem directory that is used to 790 * hold the Berkeley DB Java Edition database files containing the 791 * data for this backend. 792 * <p> 793 * The path may be either an absolute path or a path relative to the 794 * directory containing the base of the OpenDJ directory server 795 * installation. The path may be any valid directory path in which 796 * the server has appropriate permissions to read and write files and 797 * has sufficient space to hold the database contents. 798 * 799 * @return Returns the "db-directory" property definition. 800 */ 801 public StringPropertyDefinition getDBDirectoryPropertyDefinition() { 802 return PD_DB_DIRECTORY; 803 } 804 805 806 807 /** 808 * Get the "db-directory-permissions" property definition. 809 * <p> 810 * Specifies the permissions that should be applied to the directory 811 * containing the server database files. 812 * <p> 813 * They should be expressed as three-digit octal values, which is 814 * the traditional representation for UNIX file permissions. The 815 * three digits represent the permissions that are available for the 816 * directory's owner, group members, and other users (in that order), 817 * and each digit is the octal representation of the read, write, and 818 * execute bits. Note that this only impacts permissions on the 819 * database directory and not on the files written into that 820 * directory. On UNIX systems, the user's umask controls permissions 821 * given to the database files. 822 * 823 * @return Returns the "db-directory-permissions" property definition. 824 */ 825 public StringPropertyDefinition getDBDirectoryPermissionsPropertyDefinition() { 826 return PD_DB_DIRECTORY_PERMISSIONS; 827 } 828 829 830 831 /** 832 * Get the "db-evictor-core-threads" property definition. 833 * <p> 834 * Specifies the core number of threads in the eviction thread pool. 835 * <p> 836 * Specifies the core number of threads in the eviction thread pool. 837 * These threads help keep memory usage within cache bounds, 838 * offloading work from application threads. db-evictor-core-threads, 839 * db-evictor-max-threads and db-evictor-keep-alive are used to 840 * configure the core, max and keepalive attributes for the eviction 841 * thread pool. 842 * 843 * @return Returns the "db-evictor-core-threads" property definition. 844 */ 845 public IntegerPropertyDefinition getDBEvictorCoreThreadsPropertyDefinition() { 846 return PD_DB_EVICTOR_CORE_THREADS; 847 } 848 849 850 851 /** 852 * Get the "db-evictor-keep-alive" property definition. 853 * <p> 854 * The duration that excess threads in the eviction thread pool will 855 * stay idle. After this period, idle threads will terminate. 856 * <p> 857 * The duration that excess threads in the eviction thread pool will 858 * stay idle. After this period, idle threads will terminate. 859 * db-evictor-core-threads, db-evictor-max-threads and 860 * db-evictor-keep-alive are used to configure the core, max and 861 * keepalive attributes for the eviction thread pool. 862 * 863 * @return Returns the "db-evictor-keep-alive" property definition. 864 */ 865 public DurationPropertyDefinition getDBEvictorKeepAlivePropertyDefinition() { 866 return PD_DB_EVICTOR_KEEP_ALIVE; 867 } 868 869 870 871 /** 872 * Get the "db-evictor-lru-only" property definition. 873 * <p> 874 * Indicates whether the database should evict existing data from 875 * the cache based on an LRU policy (where the least recently used 876 * information will be evicted first). 877 * <p> 878 * If set to "false", then the eviction keeps internal nodes of the 879 * underlying Btree in the cache over leaf nodes, even if the leaf 880 * nodes have been accessed more recently. This may be a better 881 * configuration for databases in which only a very small portion of 882 * the data is cached. 883 * 884 * @return Returns the "db-evictor-lru-only" property definition. 885 */ 886 public BooleanPropertyDefinition getDBEvictorLruOnlyPropertyDefinition() { 887 return PD_DB_EVICTOR_LRU_ONLY; 888 } 889 890 891 892 /** 893 * Get the "db-evictor-max-threads" property definition. 894 * <p> 895 * Specifies the maximum number of threads in the eviction thread 896 * pool. 897 * <p> 898 * Specifies the maximum number of threads in the eviction thread 899 * pool. These threads help keep memory usage within cache bounds, 900 * offloading work from application threads. db-evictor-core-threads, 901 * db-evictor-max-threads and db-evictor-keep-alive are used to 902 * configure the core, max and keepalive attributes for the eviction 903 * thread pool. 904 * 905 * @return Returns the "db-evictor-max-threads" property definition. 906 */ 907 public IntegerPropertyDefinition getDBEvictorMaxThreadsPropertyDefinition() { 908 return PD_DB_EVICTOR_MAX_THREADS; 909 } 910 911 912 913 /** 914 * Get the "db-evictor-nodes-per-scan" property definition. 915 * <p> 916 * Specifies the number of Btree nodes that should be evicted from 917 * the cache in a single pass if it is determined that it is 918 * necessary to free existing data in order to make room for new 919 * information. 920 * <p> 921 * Changes to this property do not take effect until the backend is 922 * restarted. It is recommended that you also change this property 923 * when you set db-evictor-lru-only to false. This setting controls 924 * the number of Btree nodes that are considered, or sampled, each 925 * time a node is evicted. A setting of 10 often produces good 926 * results, but this may vary from application to application. The 927 * larger the nodes per scan, the more accurate the algorithm. 928 * However, don't set it too high. When considering larger numbers of 929 * nodes for each eviction, the evictor may delay the completion of a 930 * given database operation, which impacts the response time of the 931 * application thread. In JE 4.1 and later, setting this value too 932 * high in an application that is largely CPU bound can reduce the 933 * effectiveness of cache eviction. It's best to start with the 934 * default value, and increase it gradually to see if it is 935 * beneficial for your application. 936 * 937 * @return Returns the "db-evictor-nodes-per-scan" property definition. 938 */ 939 public IntegerPropertyDefinition getDBEvictorNodesPerScanPropertyDefinition() { 940 return PD_DB_EVICTOR_NODES_PER_SCAN; 941 } 942 943 944 945 /** 946 * Get the "db-log-filecache-size" property definition. 947 * <p> 948 * Specifies the size of the file handle cache. 949 * <p> 950 * The file handle cache is used to keep as much opened log files as 951 * possible. When the cache is smaller than the number of logs, the 952 * database needs to close some handles and open log files it needs, 953 * resulting in less optimal performances. Ideally, the size of the 954 * cache should be higher than the number of files contained in the 955 * database. Make sure the OS number of open files per process is 956 * also tuned appropriately. 957 * 958 * @return Returns the "db-log-filecache-size" property definition. 959 */ 960 public IntegerPropertyDefinition getDBLogFilecacheSizePropertyDefinition() { 961 return PD_DB_LOG_FILECACHE_SIZE; 962 } 963 964 965 966 /** 967 * Get the "db-log-file-max" property definition. 968 * <p> 969 * Specifies the maximum size for a database log file. 970 * 971 * @return Returns the "db-log-file-max" property definition. 972 */ 973 public SizePropertyDefinition getDBLogFileMaxPropertyDefinition() { 974 return PD_DB_LOG_FILE_MAX; 975 } 976 977 978 979 /** 980 * Get the "db-logging-file-handler-on" property definition. 981 * <p> 982 * Indicates whether the database should maintain a je.info file in 983 * the same directory as the database log directory. 984 * <p> 985 * This file contains information about the internal processing 986 * performed by the underlying database. 987 * 988 * @return Returns the "db-logging-file-handler-on" property definition. 989 */ 990 public BooleanPropertyDefinition getDBLoggingFileHandlerOnPropertyDefinition() { 991 return PD_DB_LOGGING_FILE_HANDLER_ON; 992 } 993 994 995 996 /** 997 * Get the "db-logging-level" property definition. 998 * <p> 999 * Specifies the log level that should be used by the database when 1000 * it is writing information into the je.info file. 1001 * <p> 1002 * The database trace logging level is (in increasing order of 1003 * verbosity) chosen from: OFF, SEVERE, WARNING, INFO, CONFIG, FINE, 1004 * FINER, FINEST, ALL. 1005 * 1006 * @return Returns the "db-logging-level" property definition. 1007 */ 1008 public StringPropertyDefinition getDBLoggingLevelPropertyDefinition() { 1009 return PD_DB_LOGGING_LEVEL; 1010 } 1011 1012 1013 1014 /** 1015 * Get the "db-num-cleaner-threads" property definition. 1016 * <p> 1017 * Specifies the number of threads that the backend should maintain 1018 * to keep the database log files at or near the desired utilization. 1019 * <p> 1020 * In environments with high write throughput, multiple cleaner 1021 * threads may be required to maintain the desired utilization. 1022 * 1023 * @return Returns the "db-num-cleaner-threads" property definition. 1024 */ 1025 public IntegerPropertyDefinition getDBNumCleanerThreadsPropertyDefinition() { 1026 return PD_DB_NUM_CLEANER_THREADS; 1027 } 1028 1029 1030 1031 /** 1032 * Get the "db-num-lock-tables" property definition. 1033 * <p> 1034 * Specifies the number of lock tables that are used by the 1035 * underlying database. 1036 * <p> 1037 * This can be particularly important to help improve scalability by 1038 * avoiding contention on systems with large numbers of CPUs. The 1039 * value of this configuration property should be set to a prime 1040 * number that is less than or equal to the number of worker threads 1041 * configured for use in the server. 1042 * 1043 * @return Returns the "db-num-lock-tables" property definition. 1044 */ 1045 public IntegerPropertyDefinition getDBNumLockTablesPropertyDefinition() { 1046 return PD_DB_NUM_LOCK_TABLES; 1047 } 1048 1049 1050 1051 /** 1052 * Get the "db-run-cleaner" property definition. 1053 * <p> 1054 * Indicates whether the cleaner threads should be enabled to 1055 * compact the database. 1056 * <p> 1057 * The cleaner threads are used to periodically compact the database 1058 * when it reaches a percentage of occupancy lower than the amount 1059 * specified by the db-cleaner-min-utilization property. They 1060 * identify database files with a low percentage of live data, and 1061 * relocate their remaining live data to the end of the log. 1062 * 1063 * @return Returns the "db-run-cleaner" property definition. 1064 */ 1065 public BooleanPropertyDefinition getDBRunCleanerPropertyDefinition() { 1066 return PD_DB_RUN_CLEANER; 1067 } 1068 1069 1070 1071 /** 1072 * Get the "db-txn-no-sync" property definition. 1073 * <p> 1074 * Indicates whether database writes should be primarily written to 1075 * an internal buffer but not immediately written to disk. 1076 * <p> 1077 * Setting the value of this configuration attribute to "true" may 1078 * improve write performance but could cause the most recent changes 1079 * to be lost if the OpenDJ directory server or the underlying JVM 1080 * exits abnormally, or if an OS or hardware failure occurs (a 1081 * behavior similar to running with transaction durability disabled 1082 * in the Sun Java System Directory Server). 1083 * 1084 * @return Returns the "db-txn-no-sync" property definition. 1085 */ 1086 public BooleanPropertyDefinition getDBTxnNoSyncPropertyDefinition() { 1087 return PD_DB_TXN_NO_SYNC; 1088 } 1089 1090 1091 1092 /** 1093 * Get the "db-txn-write-no-sync" property definition. 1094 * <p> 1095 * Indicates whether the database should synchronously flush data as 1096 * it is written to disk. 1097 * <p> 1098 * If this value is set to "false", then all data written to disk is 1099 * synchronously flushed to persistent storage and thereby providing 1100 * full durability. If it is set to "true", then data may be cached 1101 * for a period of time by the underlying operating system before 1102 * actually being written to disk. This may improve performance, but 1103 * could cause the most recent changes to be lost in the event of an 1104 * underlying OS or hardware failure (but not in the case that the 1105 * OpenDJ directory server or the JVM exits abnormally). 1106 * 1107 * @return Returns the "db-txn-write-no-sync" property definition. 1108 */ 1109 public BooleanPropertyDefinition getDBTxnWriteNoSyncPropertyDefinition() { 1110 return PD_DB_TXN_WRITE_NO_SYNC; 1111 } 1112 1113 1114 1115 /** 1116 * Get the "disk-full-threshold" property definition. 1117 * <p> 1118 * Full disk threshold to limit database updates 1119 * <p> 1120 * When the available free space on the disk used by this database 1121 * instance falls below the value specified, no updates are permitted 1122 * and the server returns an UNWILLING_TO_PERFORM error. Updates are 1123 * allowed again as soon as free space rises above the threshold. 1124 * 1125 * @return Returns the "disk-full-threshold" property definition. 1126 */ 1127 public SizePropertyDefinition getDiskFullThresholdPropertyDefinition() { 1128 return PD_DISK_FULL_THRESHOLD; 1129 } 1130 1131 1132 1133 /** 1134 * Get the "disk-low-threshold" property definition. 1135 * <p> 1136 * Low disk threshold to limit database updates 1137 * <p> 1138 * Specifies the "low" free space on the disk. When the available 1139 * free space on the disk used by this database instance falls below 1140 * the value specified, protocol updates on this database are 1141 * permitted only by a user with the BYPASS_LOCKDOWN privilege. 1142 * 1143 * @return Returns the "disk-low-threshold" property definition. 1144 */ 1145 public SizePropertyDefinition getDiskLowThresholdPropertyDefinition() { 1146 return PD_DISK_LOW_THRESHOLD; 1147 } 1148 1149 1150 1151 /** 1152 * Get the "enabled" property definition. 1153 * <p> 1154 * Indicates whether the backend is enabled in the server. 1155 * <p> 1156 * If a backend is not enabled, then its contents are not accessible 1157 * when processing operations. 1158 * 1159 * @return Returns the "enabled" property definition. 1160 */ 1161 public BooleanPropertyDefinition getEnabledPropertyDefinition() { 1162 return PluggableBackendCfgDefn.getInstance().getEnabledPropertyDefinition(); 1163 } 1164 1165 1166 1167 /** 1168 * Get the "entries-compressed" property definition. 1169 * <p> 1170 * Indicates whether the backend should attempt to compress entries 1171 * before storing them in the database. 1172 * <p> 1173 * Note that this property applies only to the entries themselves 1174 * and does not impact the index data. Further, the effectiveness of 1175 * the compression is based on the type of data contained in the 1176 * entry. 1177 * 1178 * @return Returns the "entries-compressed" property definition. 1179 */ 1180 public BooleanPropertyDefinition getEntriesCompressedPropertyDefinition() { 1181 return PluggableBackendCfgDefn.getInstance().getEntriesCompressedPropertyDefinition(); 1182 } 1183 1184 1185 1186 /** 1187 * Get the "index-entry-limit" property definition. 1188 * <p> 1189 * Specifies the maximum number of entries that is allowed to match 1190 * a given index key before that particular index key is no longer 1191 * maintained. 1192 * <p> 1193 * This property is analogous to the ALL IDs threshold in the Sun 1194 * Java System Directory Server. Note that this is the default limit 1195 * for the backend, and it may be overridden on a per-attribute 1196 * basis.A value of 0 means there is no limit. 1197 * 1198 * @return Returns the "index-entry-limit" property definition. 1199 */ 1200 public IntegerPropertyDefinition getIndexEntryLimitPropertyDefinition() { 1201 return PluggableBackendCfgDefn.getInstance().getIndexEntryLimitPropertyDefinition(); 1202 } 1203 1204 1205 1206 /** 1207 * Get the "index-filter-analyzer-enabled" property definition. 1208 * <p> 1209 * Indicates whether to gather statistical information about the 1210 * search filters processed by the directory server while evaluating 1211 * the usage of indexes. 1212 * <p> 1213 * Analyzing indexes requires gathering search filter usage patterns 1214 * from user requests, especially for values as specified in the 1215 * filters and subsequently looking the status of those values into 1216 * the index files. When a search requests is processed, internal or 1217 * user generated, a first phase uses indexes to find potential 1218 * entries to be returned. Depending on the search filter, if the 1219 * index of one of the specified attributes matches too many entries 1220 * (exceeds the index entry limit), the search becomes non-indexed. 1221 * In any case, all entries thus gathered (or the entire DIT) are 1222 * matched against the filter for actually returning the search 1223 * result. 1224 * 1225 * @return Returns the "index-filter-analyzer-enabled" property definition. 1226 */ 1227 public BooleanPropertyDefinition getIndexFilterAnalyzerEnabledPropertyDefinition() { 1228 return PluggableBackendCfgDefn.getInstance().getIndexFilterAnalyzerEnabledPropertyDefinition(); 1229 } 1230 1231 1232 1233 /** 1234 * Get the "index-filter-analyzer-max-filters" property definition. 1235 * <p> 1236 * The maximum number of search filter statistics to keep. 1237 * <p> 1238 * When the maximum number of search filter is reached, the least 1239 * used one will be deleted. 1240 * 1241 * @return Returns the "index-filter-analyzer-max-filters" property definition. 1242 */ 1243 public IntegerPropertyDefinition getIndexFilterAnalyzerMaxFiltersPropertyDefinition() { 1244 return PluggableBackendCfgDefn.getInstance().getIndexFilterAnalyzerMaxFiltersPropertyDefinition(); 1245 } 1246 1247 1248 1249 /** 1250 * Get the "java-class" property definition. 1251 * <p> 1252 * Specifies the fully-qualified name of the Java class that 1253 * provides the backend implementation. 1254 * 1255 * @return Returns the "java-class" property definition. 1256 */ 1257 public ClassPropertyDefinition getJavaClassPropertyDefinition() { 1258 return PD_JAVA_CLASS; 1259 } 1260 1261 1262 1263 /** 1264 * Get the "je-property" property definition. 1265 * <p> 1266 * Specifies the database and environment properties for the 1267 * Berkeley DB Java Edition database serving the data for this 1268 * backend. 1269 * <p> 1270 * Any Berkeley DB Java Edition property can be specified using the 1271 * following form: property-name=property-value. Refer to OpenDJ 1272 * documentation for further information on related properties, their 1273 * implications, and range values. The definitive identification of 1274 * all the property parameters is available in the example.properties 1275 * file of Berkeley DB Java Edition distribution. 1276 * 1277 * @return Returns the "je-property" property definition. 1278 */ 1279 public StringPropertyDefinition getJEPropertyPropertyDefinition() { 1280 return PD_JE_PROPERTY; 1281 } 1282 1283 1284 1285 /** 1286 * Get the "preload-time-limit" property definition. 1287 * <p> 1288 * Specifies the length of time that the backend is allowed to spend 1289 * "pre-loading" data when it is initialized. 1290 * <p> 1291 * The pre-load process is used to pre-populate the database cache, 1292 * so that it can be more quickly available when the server is 1293 * processing requests. A duration of zero means there is no 1294 * pre-load. 1295 * 1296 * @return Returns the "preload-time-limit" property definition. 1297 */ 1298 public DurationPropertyDefinition getPreloadTimeLimitPropertyDefinition() { 1299 return PluggableBackendCfgDefn.getInstance().getPreloadTimeLimitPropertyDefinition(); 1300 } 1301 1302 1303 1304 /** 1305 * Get the "writability-mode" property definition. 1306 * <p> 1307 * Specifies the behavior that the backend should use when 1308 * processing write operations. 1309 * 1310 * @return Returns the "writability-mode" property definition. 1311 */ 1312 public EnumPropertyDefinition<WritabilityMode> getWritabilityModePropertyDefinition() { 1313 return PluggableBackendCfgDefn.getInstance().getWritabilityModePropertyDefinition(); 1314 } 1315 1316 1317 1318 /** 1319 * Get the "backend-indexes" relation definition. 1320 * 1321 * @return Returns the "backend-indexes" relation definition. 1322 */ 1323 public InstantiableRelationDefinition<BackendIndexCfgClient,BackendIndexCfg> getBackendIndexesRelationDefinition() { 1324 return PluggableBackendCfgDefn.getInstance().getBackendIndexesRelationDefinition(); 1325 } 1326 1327 1328 1329 /** 1330 * Get the "backend-vlv-indexes" relation definition. 1331 * 1332 * @return Returns the "backend-vlv-indexes" relation definition. 1333 */ 1334 public InstantiableRelationDefinition<BackendVLVIndexCfgClient,BackendVLVIndexCfg> getBackendVLVIndexesRelationDefinition() { 1335 return PluggableBackendCfgDefn.getInstance().getBackendVLVIndexesRelationDefinition(); 1336 } 1337 1338 1339 1340 /** 1341 * Managed object client implementation. 1342 */ 1343 private static class JEBackendCfgClientImpl implements 1344 JEBackendCfgClient { 1345 1346 // Private implementation. 1347 private ManagedObject<? extends JEBackendCfgClient> impl; 1348 1349 1350 1351 // Private constructor. 1352 private JEBackendCfgClientImpl( 1353 ManagedObject<? extends JEBackendCfgClient> impl) { 1354 this.impl = impl; 1355 } 1356 1357 1358 1359 /** 1360 * {@inheritDoc} 1361 */ 1362 public String getBackendId() { 1363 return impl.getPropertyValue(INSTANCE.getBackendIdPropertyDefinition()); 1364 } 1365 1366 1367 1368 /** 1369 * {@inheritDoc} 1370 */ 1371 public void setBackendId(String value) throws PropertyException { 1372 impl.setPropertyValue(INSTANCE.getBackendIdPropertyDefinition(), value); 1373 } 1374 1375 1376 1377 /** 1378 * {@inheritDoc} 1379 */ 1380 public SortedSet<DN> getBaseDN() { 1381 return impl.getPropertyValues(INSTANCE.getBaseDNPropertyDefinition()); 1382 } 1383 1384 1385 1386 /** 1387 * {@inheritDoc} 1388 */ 1389 public void setBaseDN(Collection<DN> values) { 1390 impl.setPropertyValues(INSTANCE.getBaseDNPropertyDefinition(), values); 1391 } 1392 1393 1394 1395 /** 1396 * {@inheritDoc} 1397 */ 1398 public boolean isCompactEncoding() { 1399 return impl.getPropertyValue(INSTANCE.getCompactEncodingPropertyDefinition()); 1400 } 1401 1402 1403 1404 /** 1405 * {@inheritDoc} 1406 */ 1407 public void setCompactEncoding(Boolean value) { 1408 impl.setPropertyValue(INSTANCE.getCompactEncodingPropertyDefinition(), value); 1409 } 1410 1411 1412 1413 /** 1414 * {@inheritDoc} 1415 */ 1416 public int getDBCachePercent() { 1417 return impl.getPropertyValue(INSTANCE.getDBCachePercentPropertyDefinition()); 1418 } 1419 1420 1421 1422 /** 1423 * {@inheritDoc} 1424 */ 1425 public void setDBCachePercent(Integer value) { 1426 impl.setPropertyValue(INSTANCE.getDBCachePercentPropertyDefinition(), value); 1427 } 1428 1429 1430 1431 /** 1432 * {@inheritDoc} 1433 */ 1434 public long getDBCacheSize() { 1435 return impl.getPropertyValue(INSTANCE.getDBCacheSizePropertyDefinition()); 1436 } 1437 1438 1439 1440 /** 1441 * {@inheritDoc} 1442 */ 1443 public void setDBCacheSize(Long value) { 1444 impl.setPropertyValue(INSTANCE.getDBCacheSizePropertyDefinition(), value); 1445 } 1446 1447 1448 1449 /** 1450 * {@inheritDoc} 1451 */ 1452 public long getDBCheckpointerBytesInterval() { 1453 return impl.getPropertyValue(INSTANCE.getDBCheckpointerBytesIntervalPropertyDefinition()); 1454 } 1455 1456 1457 1458 /** 1459 * {@inheritDoc} 1460 */ 1461 public void setDBCheckpointerBytesInterval(Long value) { 1462 impl.setPropertyValue(INSTANCE.getDBCheckpointerBytesIntervalPropertyDefinition(), value); 1463 } 1464 1465 1466 1467 /** 1468 * {@inheritDoc} 1469 */ 1470 public long getDBCheckpointerWakeupInterval() { 1471 return impl.getPropertyValue(INSTANCE.getDBCheckpointerWakeupIntervalPropertyDefinition()); 1472 } 1473 1474 1475 1476 /** 1477 * {@inheritDoc} 1478 */ 1479 public void setDBCheckpointerWakeupInterval(Long value) { 1480 impl.setPropertyValue(INSTANCE.getDBCheckpointerWakeupIntervalPropertyDefinition(), value); 1481 } 1482 1483 1484 1485 /** 1486 * {@inheritDoc} 1487 */ 1488 public int getDBCleanerMinUtilization() { 1489 return impl.getPropertyValue(INSTANCE.getDBCleanerMinUtilizationPropertyDefinition()); 1490 } 1491 1492 1493 1494 /** 1495 * {@inheritDoc} 1496 */ 1497 public void setDBCleanerMinUtilization(Integer value) { 1498 impl.setPropertyValue(INSTANCE.getDBCleanerMinUtilizationPropertyDefinition(), value); 1499 } 1500 1501 1502 1503 /** 1504 * {@inheritDoc} 1505 */ 1506 public String getDBDirectory() { 1507 return impl.getPropertyValue(INSTANCE.getDBDirectoryPropertyDefinition()); 1508 } 1509 1510 1511 1512 /** 1513 * {@inheritDoc} 1514 */ 1515 public void setDBDirectory(String value) { 1516 impl.setPropertyValue(INSTANCE.getDBDirectoryPropertyDefinition(), value); 1517 } 1518 1519 1520 1521 /** 1522 * {@inheritDoc} 1523 */ 1524 public String getDBDirectoryPermissions() { 1525 return impl.getPropertyValue(INSTANCE.getDBDirectoryPermissionsPropertyDefinition()); 1526 } 1527 1528 1529 1530 /** 1531 * {@inheritDoc} 1532 */ 1533 public void setDBDirectoryPermissions(String value) { 1534 impl.setPropertyValue(INSTANCE.getDBDirectoryPermissionsPropertyDefinition(), value); 1535 } 1536 1537 1538 1539 /** 1540 * {@inheritDoc} 1541 */ 1542 public int getDBEvictorCoreThreads() { 1543 return impl.getPropertyValue(INSTANCE.getDBEvictorCoreThreadsPropertyDefinition()); 1544 } 1545 1546 1547 1548 /** 1549 * {@inheritDoc} 1550 */ 1551 public void setDBEvictorCoreThreads(Integer value) { 1552 impl.setPropertyValue(INSTANCE.getDBEvictorCoreThreadsPropertyDefinition(), value); 1553 } 1554 1555 1556 1557 /** 1558 * {@inheritDoc} 1559 */ 1560 public long getDBEvictorKeepAlive() { 1561 return impl.getPropertyValue(INSTANCE.getDBEvictorKeepAlivePropertyDefinition()); 1562 } 1563 1564 1565 1566 /** 1567 * {@inheritDoc} 1568 */ 1569 public void setDBEvictorKeepAlive(Long value) { 1570 impl.setPropertyValue(INSTANCE.getDBEvictorKeepAlivePropertyDefinition(), value); 1571 } 1572 1573 1574 1575 /** 1576 * {@inheritDoc} 1577 */ 1578 public boolean isDBEvictorLruOnly() { 1579 return impl.getPropertyValue(INSTANCE.getDBEvictorLruOnlyPropertyDefinition()); 1580 } 1581 1582 1583 1584 /** 1585 * {@inheritDoc} 1586 */ 1587 public void setDBEvictorLruOnly(Boolean value) { 1588 impl.setPropertyValue(INSTANCE.getDBEvictorLruOnlyPropertyDefinition(), value); 1589 } 1590 1591 1592 1593 /** 1594 * {@inheritDoc} 1595 */ 1596 public int getDBEvictorMaxThreads() { 1597 return impl.getPropertyValue(INSTANCE.getDBEvictorMaxThreadsPropertyDefinition()); 1598 } 1599 1600 1601 1602 /** 1603 * {@inheritDoc} 1604 */ 1605 public void setDBEvictorMaxThreads(Integer value) { 1606 impl.setPropertyValue(INSTANCE.getDBEvictorMaxThreadsPropertyDefinition(), value); 1607 } 1608 1609 1610 1611 /** 1612 * {@inheritDoc} 1613 */ 1614 public int getDBEvictorNodesPerScan() { 1615 return impl.getPropertyValue(INSTANCE.getDBEvictorNodesPerScanPropertyDefinition()); 1616 } 1617 1618 1619 1620 /** 1621 * {@inheritDoc} 1622 */ 1623 public void setDBEvictorNodesPerScan(Integer value) { 1624 impl.setPropertyValue(INSTANCE.getDBEvictorNodesPerScanPropertyDefinition(), value); 1625 } 1626 1627 1628 1629 /** 1630 * {@inheritDoc} 1631 */ 1632 public int getDBLogFilecacheSize() { 1633 return impl.getPropertyValue(INSTANCE.getDBLogFilecacheSizePropertyDefinition()); 1634 } 1635 1636 1637 1638 /** 1639 * {@inheritDoc} 1640 */ 1641 public void setDBLogFilecacheSize(Integer value) { 1642 impl.setPropertyValue(INSTANCE.getDBLogFilecacheSizePropertyDefinition(), value); 1643 } 1644 1645 1646 1647 /** 1648 * {@inheritDoc} 1649 */ 1650 public long getDBLogFileMax() { 1651 return impl.getPropertyValue(INSTANCE.getDBLogFileMaxPropertyDefinition()); 1652 } 1653 1654 1655 1656 /** 1657 * {@inheritDoc} 1658 */ 1659 public void setDBLogFileMax(Long value) { 1660 impl.setPropertyValue(INSTANCE.getDBLogFileMaxPropertyDefinition(), value); 1661 } 1662 1663 1664 1665 /** 1666 * {@inheritDoc} 1667 */ 1668 public boolean isDBLoggingFileHandlerOn() { 1669 return impl.getPropertyValue(INSTANCE.getDBLoggingFileHandlerOnPropertyDefinition()); 1670 } 1671 1672 1673 1674 /** 1675 * {@inheritDoc} 1676 */ 1677 public void setDBLoggingFileHandlerOn(Boolean value) { 1678 impl.setPropertyValue(INSTANCE.getDBLoggingFileHandlerOnPropertyDefinition(), value); 1679 } 1680 1681 1682 1683 /** 1684 * {@inheritDoc} 1685 */ 1686 public String getDBLoggingLevel() { 1687 return impl.getPropertyValue(INSTANCE.getDBLoggingLevelPropertyDefinition()); 1688 } 1689 1690 1691 1692 /** 1693 * {@inheritDoc} 1694 */ 1695 public void setDBLoggingLevel(String value) { 1696 impl.setPropertyValue(INSTANCE.getDBLoggingLevelPropertyDefinition(), value); 1697 } 1698 1699 1700 1701 /** 1702 * {@inheritDoc} 1703 */ 1704 public Integer getDBNumCleanerThreads() { 1705 return impl.getPropertyValue(INSTANCE.getDBNumCleanerThreadsPropertyDefinition()); 1706 } 1707 1708 1709 1710 /** 1711 * {@inheritDoc} 1712 */ 1713 public void setDBNumCleanerThreads(Integer value) { 1714 impl.setPropertyValue(INSTANCE.getDBNumCleanerThreadsPropertyDefinition(), value); 1715 } 1716 1717 1718 1719 /** 1720 * {@inheritDoc} 1721 */ 1722 public Integer getDBNumLockTables() { 1723 return impl.getPropertyValue(INSTANCE.getDBNumLockTablesPropertyDefinition()); 1724 } 1725 1726 1727 1728 /** 1729 * {@inheritDoc} 1730 */ 1731 public void setDBNumLockTables(Integer value) { 1732 impl.setPropertyValue(INSTANCE.getDBNumLockTablesPropertyDefinition(), value); 1733 } 1734 1735 1736 1737 /** 1738 * {@inheritDoc} 1739 */ 1740 public boolean isDBRunCleaner() { 1741 return impl.getPropertyValue(INSTANCE.getDBRunCleanerPropertyDefinition()); 1742 } 1743 1744 1745 1746 /** 1747 * {@inheritDoc} 1748 */ 1749 public void setDBRunCleaner(Boolean value) { 1750 impl.setPropertyValue(INSTANCE.getDBRunCleanerPropertyDefinition(), value); 1751 } 1752 1753 1754 1755 /** 1756 * {@inheritDoc} 1757 */ 1758 public boolean isDBTxnNoSync() { 1759 return impl.getPropertyValue(INSTANCE.getDBTxnNoSyncPropertyDefinition()); 1760 } 1761 1762 1763 1764 /** 1765 * {@inheritDoc} 1766 */ 1767 public void setDBTxnNoSync(Boolean value) { 1768 impl.setPropertyValue(INSTANCE.getDBTxnNoSyncPropertyDefinition(), value); 1769 } 1770 1771 1772 1773 /** 1774 * {@inheritDoc} 1775 */ 1776 public boolean isDBTxnWriteNoSync() { 1777 return impl.getPropertyValue(INSTANCE.getDBTxnWriteNoSyncPropertyDefinition()); 1778 } 1779 1780 1781 1782 /** 1783 * {@inheritDoc} 1784 */ 1785 public void setDBTxnWriteNoSync(Boolean value) { 1786 impl.setPropertyValue(INSTANCE.getDBTxnWriteNoSyncPropertyDefinition(), value); 1787 } 1788 1789 1790 1791 /** 1792 * {@inheritDoc} 1793 */ 1794 public long getDiskFullThreshold() { 1795 return impl.getPropertyValue(INSTANCE.getDiskFullThresholdPropertyDefinition()); 1796 } 1797 1798 1799 1800 /** 1801 * {@inheritDoc} 1802 */ 1803 public void setDiskFullThreshold(Long value) { 1804 impl.setPropertyValue(INSTANCE.getDiskFullThresholdPropertyDefinition(), value); 1805 } 1806 1807 1808 1809 /** 1810 * {@inheritDoc} 1811 */ 1812 public long getDiskLowThreshold() { 1813 return impl.getPropertyValue(INSTANCE.getDiskLowThresholdPropertyDefinition()); 1814 } 1815 1816 1817 1818 /** 1819 * {@inheritDoc} 1820 */ 1821 public void setDiskLowThreshold(Long value) { 1822 impl.setPropertyValue(INSTANCE.getDiskLowThresholdPropertyDefinition(), value); 1823 } 1824 1825 1826 1827 /** 1828 * {@inheritDoc} 1829 */ 1830 public Boolean isEnabled() { 1831 return impl.getPropertyValue(INSTANCE.getEnabledPropertyDefinition()); 1832 } 1833 1834 1835 1836 /** 1837 * {@inheritDoc} 1838 */ 1839 public void setEnabled(boolean value) { 1840 impl.setPropertyValue(INSTANCE.getEnabledPropertyDefinition(), value); 1841 } 1842 1843 1844 1845 /** 1846 * {@inheritDoc} 1847 */ 1848 public boolean isEntriesCompressed() { 1849 return impl.getPropertyValue(INSTANCE.getEntriesCompressedPropertyDefinition()); 1850 } 1851 1852 1853 1854 /** 1855 * {@inheritDoc} 1856 */ 1857 public void setEntriesCompressed(Boolean value) { 1858 impl.setPropertyValue(INSTANCE.getEntriesCompressedPropertyDefinition(), value); 1859 } 1860 1861 1862 1863 /** 1864 * {@inheritDoc} 1865 */ 1866 public int getIndexEntryLimit() { 1867 return impl.getPropertyValue(INSTANCE.getIndexEntryLimitPropertyDefinition()); 1868 } 1869 1870 1871 1872 /** 1873 * {@inheritDoc} 1874 */ 1875 public void setIndexEntryLimit(Integer value) { 1876 impl.setPropertyValue(INSTANCE.getIndexEntryLimitPropertyDefinition(), value); 1877 } 1878 1879 1880 1881 /** 1882 * {@inheritDoc} 1883 */ 1884 public boolean isIndexFilterAnalyzerEnabled() { 1885 return impl.getPropertyValue(INSTANCE.getIndexFilterAnalyzerEnabledPropertyDefinition()); 1886 } 1887 1888 1889 1890 /** 1891 * {@inheritDoc} 1892 */ 1893 public void setIndexFilterAnalyzerEnabled(Boolean value) { 1894 impl.setPropertyValue(INSTANCE.getIndexFilterAnalyzerEnabledPropertyDefinition(), value); 1895 } 1896 1897 1898 1899 /** 1900 * {@inheritDoc} 1901 */ 1902 public int getIndexFilterAnalyzerMaxFilters() { 1903 return impl.getPropertyValue(INSTANCE.getIndexFilterAnalyzerMaxFiltersPropertyDefinition()); 1904 } 1905 1906 1907 1908 /** 1909 * {@inheritDoc} 1910 */ 1911 public void setIndexFilterAnalyzerMaxFilters(Integer value) { 1912 impl.setPropertyValue(INSTANCE.getIndexFilterAnalyzerMaxFiltersPropertyDefinition(), value); 1913 } 1914 1915 1916 1917 /** 1918 * {@inheritDoc} 1919 */ 1920 public String getJavaClass() { 1921 return impl.getPropertyValue(INSTANCE.getJavaClassPropertyDefinition()); 1922 } 1923 1924 1925 1926 /** 1927 * {@inheritDoc} 1928 */ 1929 public void setJavaClass(String value) { 1930 impl.setPropertyValue(INSTANCE.getJavaClassPropertyDefinition(), value); 1931 } 1932 1933 1934 1935 /** 1936 * {@inheritDoc} 1937 */ 1938 public SortedSet<String> getJEProperty() { 1939 return impl.getPropertyValues(INSTANCE.getJEPropertyPropertyDefinition()); 1940 } 1941 1942 1943 1944 /** 1945 * {@inheritDoc} 1946 */ 1947 public void setJEProperty(Collection<String> values) { 1948 impl.setPropertyValues(INSTANCE.getJEPropertyPropertyDefinition(), values); 1949 } 1950 1951 1952 1953 /** 1954 * {@inheritDoc} 1955 */ 1956 public long getPreloadTimeLimit() { 1957 return impl.getPropertyValue(INSTANCE.getPreloadTimeLimitPropertyDefinition()); 1958 } 1959 1960 1961 1962 /** 1963 * {@inheritDoc} 1964 */ 1965 public void setPreloadTimeLimit(Long value) { 1966 impl.setPropertyValue(INSTANCE.getPreloadTimeLimitPropertyDefinition(), value); 1967 } 1968 1969 1970 1971 /** 1972 * {@inheritDoc} 1973 */ 1974 public WritabilityMode getWritabilityMode() { 1975 return impl.getPropertyValue(INSTANCE.getWritabilityModePropertyDefinition()); 1976 } 1977 1978 1979 1980 /** 1981 * {@inheritDoc} 1982 */ 1983 public void setWritabilityMode(WritabilityMode value) { 1984 impl.setPropertyValue(INSTANCE.getWritabilityModePropertyDefinition(), value); 1985 } 1986 1987 1988 1989 /** 1990 * {@inheritDoc} 1991 */ 1992 public String[] listBackendIndexes() throws ConcurrentModificationException, 1993 AuthorizationException, CommunicationException { 1994 return impl.listChildren(INSTANCE.getBackendIndexesRelationDefinition()); 1995 } 1996 1997 1998 1999 /** 2000 * {@inheritDoc} 2001 */ 2002 public BackendIndexCfgClient getBackendIndex(String name) 2003 throws DefinitionDecodingException, ManagedObjectDecodingException, 2004 ManagedObjectNotFoundException, ConcurrentModificationException, 2005 AuthorizationException, CommunicationException { 2006 return impl.getChild(INSTANCE.getBackendIndexesRelationDefinition(), name).getConfiguration(); 2007 } 2008 2009 2010 2011 /** 2012 * {@inheritDoc} 2013 */ 2014 public <M extends BackendIndexCfgClient> M createBackendIndex( 2015 ManagedObjectDefinition<M, ? extends BackendIndexCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException { 2016 return impl.createChild(INSTANCE.getBackendIndexesRelationDefinition(), d, name, exceptions).getConfiguration(); 2017 } 2018 2019 2020 2021 /** 2022 * {@inheritDoc} 2023 */ 2024 public void removeBackendIndex(String name) 2025 throws ManagedObjectNotFoundException, ConcurrentModificationException, 2026 OperationRejectedException, AuthorizationException, CommunicationException { 2027 impl.removeChild(INSTANCE.getBackendIndexesRelationDefinition(), name); 2028 } 2029 2030 2031 2032 /** 2033 * {@inheritDoc} 2034 */ 2035 public String[] listBackendVLVIndexes() throws ConcurrentModificationException, 2036 AuthorizationException, CommunicationException { 2037 return impl.listChildren(INSTANCE.getBackendVLVIndexesRelationDefinition()); 2038 } 2039 2040 2041 2042 /** 2043 * {@inheritDoc} 2044 */ 2045 public BackendVLVIndexCfgClient getBackendVLVIndex(String name) 2046 throws DefinitionDecodingException, ManagedObjectDecodingException, 2047 ManagedObjectNotFoundException, ConcurrentModificationException, 2048 AuthorizationException, CommunicationException { 2049 return impl.getChild(INSTANCE.getBackendVLVIndexesRelationDefinition(), name).getConfiguration(); 2050 } 2051 2052 2053 2054 /** 2055 * {@inheritDoc} 2056 */ 2057 public <M extends BackendVLVIndexCfgClient> M createBackendVLVIndex( 2058 ManagedObjectDefinition<M, ? extends BackendVLVIndexCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException { 2059 return impl.createChild(INSTANCE.getBackendVLVIndexesRelationDefinition(), d, name, exceptions).getConfiguration(); 2060 } 2061 2062 2063 2064 /** 2065 * {@inheritDoc} 2066 */ 2067 public void removeBackendVLVIndex(String name) 2068 throws ManagedObjectNotFoundException, ConcurrentModificationException, 2069 OperationRejectedException, AuthorizationException, CommunicationException { 2070 impl.removeChild(INSTANCE.getBackendVLVIndexesRelationDefinition(), name); 2071 } 2072 2073 2074 2075 /** 2076 * {@inheritDoc} 2077 */ 2078 public ManagedObjectDefinition<? extends JEBackendCfgClient, ? extends JEBackendCfg> definition() { 2079 return INSTANCE; 2080 } 2081 2082 2083 2084 /** 2085 * {@inheritDoc} 2086 */ 2087 public PropertyProvider properties() { 2088 return impl; 2089 } 2090 2091 2092 2093 /** 2094 * {@inheritDoc} 2095 */ 2096 public void commit() throws ManagedObjectAlreadyExistsException, 2097 MissingMandatoryPropertiesException, ConcurrentModificationException, 2098 OperationRejectedException, AuthorizationException, 2099 CommunicationException { 2100 impl.commit(); 2101 } 2102 2103 2104 2105 /** {@inheritDoc} */ 2106 public String toString() { 2107 return impl.toString(); 2108 } 2109 } 2110 2111 2112 2113 /** 2114 * Managed object server implementation. 2115 */ 2116 private static class JEBackendCfgServerImpl implements 2117 JEBackendCfg { 2118 2119 // Private implementation. 2120 private ServerManagedObject<? extends JEBackendCfg> impl; 2121 2122 // The value of the "backend-id" property. 2123 private final String pBackendId; 2124 2125 // The value of the "base-dn" property. 2126 private final SortedSet<DN> pBaseDN; 2127 2128 // The value of the "compact-encoding" property. 2129 private final boolean pCompactEncoding; 2130 2131 // The value of the "db-cache-percent" property. 2132 private final int pDBCachePercent; 2133 2134 // The value of the "db-cache-size" property. 2135 private final long pDBCacheSize; 2136 2137 // The value of the "db-checkpointer-bytes-interval" property. 2138 private final long pDBCheckpointerBytesInterval; 2139 2140 // The value of the "db-checkpointer-wakeup-interval" property. 2141 private final long pDBCheckpointerWakeupInterval; 2142 2143 // The value of the "db-cleaner-min-utilization" property. 2144 private final int pDBCleanerMinUtilization; 2145 2146 // The value of the "db-directory" property. 2147 private final String pDBDirectory; 2148 2149 // The value of the "db-directory-permissions" property. 2150 private final String pDBDirectoryPermissions; 2151 2152 // The value of the "db-evictor-core-threads" property. 2153 private final int pDBEvictorCoreThreads; 2154 2155 // The value of the "db-evictor-keep-alive" property. 2156 private final long pDBEvictorKeepAlive; 2157 2158 // The value of the "db-evictor-lru-only" property. 2159 private final boolean pDBEvictorLruOnly; 2160 2161 // The value of the "db-evictor-max-threads" property. 2162 private final int pDBEvictorMaxThreads; 2163 2164 // The value of the "db-evictor-nodes-per-scan" property. 2165 private final int pDBEvictorNodesPerScan; 2166 2167 // The value of the "db-log-filecache-size" property. 2168 private final int pDBLogFilecacheSize; 2169 2170 // The value of the "db-log-file-max" property. 2171 private final long pDBLogFileMax; 2172 2173 // The value of the "db-logging-file-handler-on" property. 2174 private final boolean pDBLoggingFileHandlerOn; 2175 2176 // The value of the "db-logging-level" property. 2177 private final String pDBLoggingLevel; 2178 2179 // The value of the "db-num-cleaner-threads" property. 2180 private final Integer pDBNumCleanerThreads; 2181 2182 // The value of the "db-num-lock-tables" property. 2183 private final Integer pDBNumLockTables; 2184 2185 // The value of the "db-run-cleaner" property. 2186 private final boolean pDBRunCleaner; 2187 2188 // The value of the "db-txn-no-sync" property. 2189 private final boolean pDBTxnNoSync; 2190 2191 // The value of the "db-txn-write-no-sync" property. 2192 private final boolean pDBTxnWriteNoSync; 2193 2194 // The value of the "disk-full-threshold" property. 2195 private final long pDiskFullThreshold; 2196 2197 // The value of the "disk-low-threshold" property. 2198 private final long pDiskLowThreshold; 2199 2200 // The value of the "enabled" property. 2201 private final boolean pEnabled; 2202 2203 // The value of the "entries-compressed" property. 2204 private final boolean pEntriesCompressed; 2205 2206 // The value of the "index-entry-limit" property. 2207 private final int pIndexEntryLimit; 2208 2209 // The value of the "index-filter-analyzer-enabled" property. 2210 private final boolean pIndexFilterAnalyzerEnabled; 2211 2212 // The value of the "index-filter-analyzer-max-filters" property. 2213 private final int pIndexFilterAnalyzerMaxFilters; 2214 2215 // The value of the "java-class" property. 2216 private final String pJavaClass; 2217 2218 // The value of the "je-property" property. 2219 private final SortedSet<String> pJEProperty; 2220 2221 // The value of the "preload-time-limit" property. 2222 private final long pPreloadTimeLimit; 2223 2224 // The value of the "writability-mode" property. 2225 private final WritabilityMode pWritabilityMode; 2226 2227 2228 2229 // Private constructor. 2230 private JEBackendCfgServerImpl(ServerManagedObject<? extends JEBackendCfg> impl) { 2231 this.impl = impl; 2232 this.pBackendId = impl.getPropertyValue(INSTANCE.getBackendIdPropertyDefinition()); 2233 this.pBaseDN = impl.getPropertyValues(INSTANCE.getBaseDNPropertyDefinition()); 2234 this.pCompactEncoding = impl.getPropertyValue(INSTANCE.getCompactEncodingPropertyDefinition()); 2235 this.pDBCachePercent = impl.getPropertyValue(INSTANCE.getDBCachePercentPropertyDefinition()); 2236 this.pDBCacheSize = impl.getPropertyValue(INSTANCE.getDBCacheSizePropertyDefinition()); 2237 this.pDBCheckpointerBytesInterval = impl.getPropertyValue(INSTANCE.getDBCheckpointerBytesIntervalPropertyDefinition()); 2238 this.pDBCheckpointerWakeupInterval = impl.getPropertyValue(INSTANCE.getDBCheckpointerWakeupIntervalPropertyDefinition()); 2239 this.pDBCleanerMinUtilization = impl.getPropertyValue(INSTANCE.getDBCleanerMinUtilizationPropertyDefinition()); 2240 this.pDBDirectory = impl.getPropertyValue(INSTANCE.getDBDirectoryPropertyDefinition()); 2241 this.pDBDirectoryPermissions = impl.getPropertyValue(INSTANCE.getDBDirectoryPermissionsPropertyDefinition()); 2242 this.pDBEvictorCoreThreads = impl.getPropertyValue(INSTANCE.getDBEvictorCoreThreadsPropertyDefinition()); 2243 this.pDBEvictorKeepAlive = impl.getPropertyValue(INSTANCE.getDBEvictorKeepAlivePropertyDefinition()); 2244 this.pDBEvictorLruOnly = impl.getPropertyValue(INSTANCE.getDBEvictorLruOnlyPropertyDefinition()); 2245 this.pDBEvictorMaxThreads = impl.getPropertyValue(INSTANCE.getDBEvictorMaxThreadsPropertyDefinition()); 2246 this.pDBEvictorNodesPerScan = impl.getPropertyValue(INSTANCE.getDBEvictorNodesPerScanPropertyDefinition()); 2247 this.pDBLogFilecacheSize = impl.getPropertyValue(INSTANCE.getDBLogFilecacheSizePropertyDefinition()); 2248 this.pDBLogFileMax = impl.getPropertyValue(INSTANCE.getDBLogFileMaxPropertyDefinition()); 2249 this.pDBLoggingFileHandlerOn = impl.getPropertyValue(INSTANCE.getDBLoggingFileHandlerOnPropertyDefinition()); 2250 this.pDBLoggingLevel = impl.getPropertyValue(INSTANCE.getDBLoggingLevelPropertyDefinition()); 2251 this.pDBNumCleanerThreads = impl.getPropertyValue(INSTANCE.getDBNumCleanerThreadsPropertyDefinition()); 2252 this.pDBNumLockTables = impl.getPropertyValue(INSTANCE.getDBNumLockTablesPropertyDefinition()); 2253 this.pDBRunCleaner = impl.getPropertyValue(INSTANCE.getDBRunCleanerPropertyDefinition()); 2254 this.pDBTxnNoSync = impl.getPropertyValue(INSTANCE.getDBTxnNoSyncPropertyDefinition()); 2255 this.pDBTxnWriteNoSync = impl.getPropertyValue(INSTANCE.getDBTxnWriteNoSyncPropertyDefinition()); 2256 this.pDiskFullThreshold = impl.getPropertyValue(INSTANCE.getDiskFullThresholdPropertyDefinition()); 2257 this.pDiskLowThreshold = impl.getPropertyValue(INSTANCE.getDiskLowThresholdPropertyDefinition()); 2258 this.pEnabled = impl.getPropertyValue(INSTANCE.getEnabledPropertyDefinition()); 2259 this.pEntriesCompressed = impl.getPropertyValue(INSTANCE.getEntriesCompressedPropertyDefinition()); 2260 this.pIndexEntryLimit = impl.getPropertyValue(INSTANCE.getIndexEntryLimitPropertyDefinition()); 2261 this.pIndexFilterAnalyzerEnabled = impl.getPropertyValue(INSTANCE.getIndexFilterAnalyzerEnabledPropertyDefinition()); 2262 this.pIndexFilterAnalyzerMaxFilters = impl.getPropertyValue(INSTANCE.getIndexFilterAnalyzerMaxFiltersPropertyDefinition()); 2263 this.pJavaClass = impl.getPropertyValue(INSTANCE.getJavaClassPropertyDefinition()); 2264 this.pJEProperty = impl.getPropertyValues(INSTANCE.getJEPropertyPropertyDefinition()); 2265 this.pPreloadTimeLimit = impl.getPropertyValue(INSTANCE.getPreloadTimeLimitPropertyDefinition()); 2266 this.pWritabilityMode = impl.getPropertyValue(INSTANCE.getWritabilityModePropertyDefinition()); 2267 } 2268 2269 2270 2271 /** 2272 * {@inheritDoc} 2273 */ 2274 public void addJEChangeListener( 2275 ConfigurationChangeListener<JEBackendCfg> listener) { 2276 impl.registerChangeListener(listener); 2277 } 2278 2279 2280 2281 /** 2282 * {@inheritDoc} 2283 */ 2284 public void removeJEChangeListener( 2285 ConfigurationChangeListener<JEBackendCfg> listener) { 2286 impl.deregisterChangeListener(listener); 2287 } 2288 /** 2289 * {@inheritDoc} 2290 */ 2291 public void addPluggableChangeListener( 2292 ConfigurationChangeListener<PluggableBackendCfg> listener) { 2293 impl.registerChangeListener(listener); 2294 } 2295 2296 2297 2298 /** 2299 * {@inheritDoc} 2300 */ 2301 public void removePluggableChangeListener( 2302 ConfigurationChangeListener<PluggableBackendCfg> listener) { 2303 impl.deregisterChangeListener(listener); 2304 } 2305 /** 2306 * {@inheritDoc} 2307 */ 2308 public void addChangeListener( 2309 ConfigurationChangeListener<BackendCfg> listener) { 2310 impl.registerChangeListener(listener); 2311 } 2312 2313 2314 2315 /** 2316 * {@inheritDoc} 2317 */ 2318 public void removeChangeListener( 2319 ConfigurationChangeListener<BackendCfg> listener) { 2320 impl.deregisterChangeListener(listener); 2321 } 2322 2323 2324 2325 /** 2326 * {@inheritDoc} 2327 */ 2328 public String getBackendId() { 2329 return pBackendId; 2330 } 2331 2332 2333 2334 /** 2335 * {@inheritDoc} 2336 */ 2337 public SortedSet<DN> getBaseDN() { 2338 return pBaseDN; 2339 } 2340 2341 2342 2343 /** 2344 * {@inheritDoc} 2345 */ 2346 public boolean isCompactEncoding() { 2347 return pCompactEncoding; 2348 } 2349 2350 2351 2352 /** 2353 * {@inheritDoc} 2354 */ 2355 public int getDBCachePercent() { 2356 return pDBCachePercent; 2357 } 2358 2359 2360 2361 /** 2362 * {@inheritDoc} 2363 */ 2364 public long getDBCacheSize() { 2365 return pDBCacheSize; 2366 } 2367 2368 2369 2370 /** 2371 * {@inheritDoc} 2372 */ 2373 public long getDBCheckpointerBytesInterval() { 2374 return pDBCheckpointerBytesInterval; 2375 } 2376 2377 2378 2379 /** 2380 * {@inheritDoc} 2381 */ 2382 public long getDBCheckpointerWakeupInterval() { 2383 return pDBCheckpointerWakeupInterval; 2384 } 2385 2386 2387 2388 /** 2389 * {@inheritDoc} 2390 */ 2391 public int getDBCleanerMinUtilization() { 2392 return pDBCleanerMinUtilization; 2393 } 2394 2395 2396 2397 /** 2398 * {@inheritDoc} 2399 */ 2400 public String getDBDirectory() { 2401 return pDBDirectory; 2402 } 2403 2404 2405 2406 /** 2407 * {@inheritDoc} 2408 */ 2409 public String getDBDirectoryPermissions() { 2410 return pDBDirectoryPermissions; 2411 } 2412 2413 2414 2415 /** 2416 * {@inheritDoc} 2417 */ 2418 public int getDBEvictorCoreThreads() { 2419 return pDBEvictorCoreThreads; 2420 } 2421 2422 2423 2424 /** 2425 * {@inheritDoc} 2426 */ 2427 public long getDBEvictorKeepAlive() { 2428 return pDBEvictorKeepAlive; 2429 } 2430 2431 2432 2433 /** 2434 * {@inheritDoc} 2435 */ 2436 public boolean isDBEvictorLruOnly() { 2437 return pDBEvictorLruOnly; 2438 } 2439 2440 2441 2442 /** 2443 * {@inheritDoc} 2444 */ 2445 public int getDBEvictorMaxThreads() { 2446 return pDBEvictorMaxThreads; 2447 } 2448 2449 2450 2451 /** 2452 * {@inheritDoc} 2453 */ 2454 public int getDBEvictorNodesPerScan() { 2455 return pDBEvictorNodesPerScan; 2456 } 2457 2458 2459 2460 /** 2461 * {@inheritDoc} 2462 */ 2463 public int getDBLogFilecacheSize() { 2464 return pDBLogFilecacheSize; 2465 } 2466 2467 2468 2469 /** 2470 * {@inheritDoc} 2471 */ 2472 public long getDBLogFileMax() { 2473 return pDBLogFileMax; 2474 } 2475 2476 2477 2478 /** 2479 * {@inheritDoc} 2480 */ 2481 public boolean isDBLoggingFileHandlerOn() { 2482 return pDBLoggingFileHandlerOn; 2483 } 2484 2485 2486 2487 /** 2488 * {@inheritDoc} 2489 */ 2490 public String getDBLoggingLevel() { 2491 return pDBLoggingLevel; 2492 } 2493 2494 2495 2496 /** 2497 * {@inheritDoc} 2498 */ 2499 public Integer getDBNumCleanerThreads() { 2500 return pDBNumCleanerThreads; 2501 } 2502 2503 2504 2505 /** 2506 * {@inheritDoc} 2507 */ 2508 public Integer getDBNumLockTables() { 2509 return pDBNumLockTables; 2510 } 2511 2512 2513 2514 /** 2515 * {@inheritDoc} 2516 */ 2517 public boolean isDBRunCleaner() { 2518 return pDBRunCleaner; 2519 } 2520 2521 2522 2523 /** 2524 * {@inheritDoc} 2525 */ 2526 public boolean isDBTxnNoSync() { 2527 return pDBTxnNoSync; 2528 } 2529 2530 2531 2532 /** 2533 * {@inheritDoc} 2534 */ 2535 public boolean isDBTxnWriteNoSync() { 2536 return pDBTxnWriteNoSync; 2537 } 2538 2539 2540 2541 /** 2542 * {@inheritDoc} 2543 */ 2544 public long getDiskFullThreshold() { 2545 return pDiskFullThreshold; 2546 } 2547 2548 2549 2550 /** 2551 * {@inheritDoc} 2552 */ 2553 public long getDiskLowThreshold() { 2554 return pDiskLowThreshold; 2555 } 2556 2557 2558 2559 /** 2560 * {@inheritDoc} 2561 */ 2562 public boolean isEnabled() { 2563 return pEnabled; 2564 } 2565 2566 2567 2568 /** 2569 * {@inheritDoc} 2570 */ 2571 public boolean isEntriesCompressed() { 2572 return pEntriesCompressed; 2573 } 2574 2575 2576 2577 /** 2578 * {@inheritDoc} 2579 */ 2580 public int getIndexEntryLimit() { 2581 return pIndexEntryLimit; 2582 } 2583 2584 2585 2586 /** 2587 * {@inheritDoc} 2588 */ 2589 public boolean isIndexFilterAnalyzerEnabled() { 2590 return pIndexFilterAnalyzerEnabled; 2591 } 2592 2593 2594 2595 /** 2596 * {@inheritDoc} 2597 */ 2598 public int getIndexFilterAnalyzerMaxFilters() { 2599 return pIndexFilterAnalyzerMaxFilters; 2600 } 2601 2602 2603 2604 /** 2605 * {@inheritDoc} 2606 */ 2607 public String getJavaClass() { 2608 return pJavaClass; 2609 } 2610 2611 2612 2613 /** 2614 * {@inheritDoc} 2615 */ 2616 public SortedSet<String> getJEProperty() { 2617 return pJEProperty; 2618 } 2619 2620 2621 2622 /** 2623 * {@inheritDoc} 2624 */ 2625 public long getPreloadTimeLimit() { 2626 return pPreloadTimeLimit; 2627 } 2628 2629 2630 2631 /** 2632 * {@inheritDoc} 2633 */ 2634 public WritabilityMode getWritabilityMode() { 2635 return pWritabilityMode; 2636 } 2637 2638 2639 2640 /** 2641 * {@inheritDoc} 2642 */ 2643 public String[] listBackendIndexes() { 2644 return impl.listChildren(INSTANCE.getBackendIndexesRelationDefinition()); 2645 } 2646 2647 2648 2649 /** 2650 * {@inheritDoc} 2651 */ 2652 public BackendIndexCfg getBackendIndex(String name) throws ConfigException { 2653 return impl.getChild(INSTANCE.getBackendIndexesRelationDefinition(), name).getConfiguration(); 2654 } 2655 2656 2657 2658 /** 2659 * {@inheritDoc} 2660 */ 2661 public void addBackendIndexAddListener( 2662 ConfigurationAddListener<BackendIndexCfg> listener) throws ConfigException { 2663 impl.registerAddListener(INSTANCE.getBackendIndexesRelationDefinition(), listener); 2664 } 2665 2666 2667 2668 /** 2669 * {@inheritDoc} 2670 */ 2671 public void removeBackendIndexAddListener( 2672 ConfigurationAddListener<BackendIndexCfg> listener) { 2673 impl.deregisterAddListener(INSTANCE.getBackendIndexesRelationDefinition(), listener); 2674 } 2675 2676 2677 2678 /** 2679 * {@inheritDoc} 2680 */ 2681 public void addBackendIndexDeleteListener( 2682 ConfigurationDeleteListener<BackendIndexCfg> listener) throws ConfigException { 2683 impl.registerDeleteListener(INSTANCE.getBackendIndexesRelationDefinition(), listener); 2684 } 2685 2686 2687 2688 /** 2689 * {@inheritDoc} 2690 */ 2691 public void removeBackendIndexDeleteListener( 2692 ConfigurationDeleteListener<BackendIndexCfg> listener) { 2693 impl.deregisterDeleteListener(INSTANCE.getBackendIndexesRelationDefinition(), listener); 2694 } 2695 2696 2697 2698 /** 2699 * {@inheritDoc} 2700 */ 2701 public String[] listBackendVLVIndexes() { 2702 return impl.listChildren(INSTANCE.getBackendVLVIndexesRelationDefinition()); 2703 } 2704 2705 2706 2707 /** 2708 * {@inheritDoc} 2709 */ 2710 public BackendVLVIndexCfg getBackendVLVIndex(String name) throws ConfigException { 2711 return impl.getChild(INSTANCE.getBackendVLVIndexesRelationDefinition(), name).getConfiguration(); 2712 } 2713 2714 2715 2716 /** 2717 * {@inheritDoc} 2718 */ 2719 public void addBackendVLVIndexAddListener( 2720 ConfigurationAddListener<BackendVLVIndexCfg> listener) throws ConfigException { 2721 impl.registerAddListener(INSTANCE.getBackendVLVIndexesRelationDefinition(), listener); 2722 } 2723 2724 2725 2726 /** 2727 * {@inheritDoc} 2728 */ 2729 public void removeBackendVLVIndexAddListener( 2730 ConfigurationAddListener<BackendVLVIndexCfg> listener) { 2731 impl.deregisterAddListener(INSTANCE.getBackendVLVIndexesRelationDefinition(), listener); 2732 } 2733 2734 2735 2736 /** 2737 * {@inheritDoc} 2738 */ 2739 public void addBackendVLVIndexDeleteListener( 2740 ConfigurationDeleteListener<BackendVLVIndexCfg> listener) throws ConfigException { 2741 impl.registerDeleteListener(INSTANCE.getBackendVLVIndexesRelationDefinition(), listener); 2742 } 2743 2744 2745 2746 /** 2747 * {@inheritDoc} 2748 */ 2749 public void removeBackendVLVIndexDeleteListener( 2750 ConfigurationDeleteListener<BackendVLVIndexCfg> listener) { 2751 impl.deregisterDeleteListener(INSTANCE.getBackendVLVIndexesRelationDefinition(), listener); 2752 } 2753 2754 2755 2756 /** 2757 * {@inheritDoc} 2758 */ 2759 public Class<? extends JEBackendCfg> configurationClass() { 2760 return JEBackendCfg.class; 2761 } 2762 2763 2764 2765 /** 2766 * {@inheritDoc} 2767 */ 2768 public DN dn() { 2769 return impl.getDN(); 2770 } 2771 2772 2773 2774 /** {@inheritDoc} */ 2775 public String toString() { 2776 return impl.toString(); 2777 } 2778 } 2779}