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 org.forgerock.opendj.config.server.ConfigException; 032import org.opends.server.admin.AdministratorAction; 033import org.opends.server.admin.AliasDefaultBehaviorProvider; 034import org.opends.server.admin.BooleanPropertyDefinition; 035import org.opends.server.admin.ClassPropertyDefinition; 036import org.opends.server.admin.client.AuthorizationException; 037import org.opends.server.admin.client.CommunicationException; 038import org.opends.server.admin.client.ConcurrentModificationException; 039import org.opends.server.admin.client.IllegalManagedObjectNameException; 040import org.opends.server.admin.client.ManagedObject; 041import org.opends.server.admin.client.ManagedObjectDecodingException; 042import org.opends.server.admin.client.MissingMandatoryPropertiesException; 043import org.opends.server.admin.client.OperationRejectedException; 044import org.opends.server.admin.DefaultBehaviorProvider; 045import org.opends.server.admin.DefinedDefaultBehaviorProvider; 046import org.opends.server.admin.DefinitionDecodingException; 047import org.opends.server.admin.DurationPropertyDefinition; 048import org.opends.server.admin.InstantiableRelationDefinition; 049import org.opends.server.admin.IntegerPropertyDefinition; 050import org.opends.server.admin.ManagedObjectAlreadyExistsException; 051import org.opends.server.admin.ManagedObjectDefinition; 052import org.opends.server.admin.ManagedObjectNotFoundException; 053import org.opends.server.admin.OptionalRelationDefinition; 054import org.opends.server.admin.PropertyException; 055import org.opends.server.admin.PropertyOption; 056import org.opends.server.admin.PropertyProvider; 057import org.opends.server.admin.server.ConfigurationAddListener; 058import org.opends.server.admin.server.ConfigurationChangeListener; 059import org.opends.server.admin.server.ConfigurationDeleteListener; 060import org.opends.server.admin.server.ServerManagedObject; 061import org.opends.server.admin.std.client.ReplicationDomainCfgClient; 062import org.opends.server.admin.std.client.ReplicationServerCfgClient; 063import org.opends.server.admin.std.client.ReplicationSynchronizationProviderCfgClient; 064import org.opends.server.admin.std.server.ReplicationDomainCfg; 065import org.opends.server.admin.std.server.ReplicationServerCfg; 066import org.opends.server.admin.std.server.ReplicationSynchronizationProviderCfg; 067import org.opends.server.admin.std.server.SynchronizationProviderCfg; 068import org.opends.server.admin.Tag; 069import org.opends.server.types.DN; 070 071 072 073/** 074 * An interface for querying the Replication Synchronization Provider 075 * managed object definition meta information. 076 * <p> 077 * The Replication Synchronization Provider provides multi-master 078 * replication of data across multiple directory server instances. 079 */ 080public final class ReplicationSynchronizationProviderCfgDefn extends ManagedObjectDefinition<ReplicationSynchronizationProviderCfgClient, ReplicationSynchronizationProviderCfg> { 081 082 // The singleton configuration definition instance. 083 private static final ReplicationSynchronizationProviderCfgDefn INSTANCE = new ReplicationSynchronizationProviderCfgDefn(); 084 085 086 087 // The "connection-timeout" property definition. 088 private static final DurationPropertyDefinition PD_CONNECTION_TIMEOUT; 089 090 091 092 // The "java-class" property definition. 093 private static final ClassPropertyDefinition PD_JAVA_CLASS; 094 095 096 097 // The "num-update-replay-threads" property definition. 098 private static final IntegerPropertyDefinition PD_NUM_UPDATE_REPLAY_THREADS; 099 100 101 102 // The "replication-domains" relation definition. 103 private static final InstantiableRelationDefinition<ReplicationDomainCfgClient, ReplicationDomainCfg> RD_REPLICATION_DOMAINS; 104 105 106 107 // The "replication-server" relation definition. 108 private static final OptionalRelationDefinition<ReplicationServerCfgClient, ReplicationServerCfg> RD_REPLICATION_SERVER; 109 110 111 112 // Build the "connection-timeout" property definition. 113 static { 114 DurationPropertyDefinition.Builder builder = DurationPropertyDefinition.createBuilder(INSTANCE, "connection-timeout"); 115 builder.setOption(PropertyOption.ADVANCED); 116 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "connection-timeout")); 117 DefaultBehaviorProvider<Long> provider = new DefinedDefaultBehaviorProvider<Long>("5 seconds"); 118 builder.setDefaultBehaviorProvider(provider); 119 builder.setBaseUnit("ms"); 120 builder.setLowerLimit("0"); 121 PD_CONNECTION_TIMEOUT = builder.getInstance(); 122 INSTANCE.registerPropertyDefinition(PD_CONNECTION_TIMEOUT); 123 } 124 125 126 127 // Build the "java-class" property definition. 128 static { 129 ClassPropertyDefinition.Builder builder = ClassPropertyDefinition.createBuilder(INSTANCE, "java-class"); 130 builder.setOption(PropertyOption.MANDATORY); 131 builder.setOption(PropertyOption.ADVANCED); 132 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "java-class")); 133 DefaultBehaviorProvider<String> provider = new DefinedDefaultBehaviorProvider<String>("org.opends.server.replication.plugin.MultimasterReplication"); 134 builder.setDefaultBehaviorProvider(provider); 135 builder.addInstanceOf("org.opends.server.api.SynchronizationProvider"); 136 PD_JAVA_CLASS = builder.getInstance(); 137 INSTANCE.registerPropertyDefinition(PD_JAVA_CLASS); 138 } 139 140 141 142 // Build the "num-update-replay-threads" property definition. 143 static { 144 IntegerPropertyDefinition.Builder builder = IntegerPropertyDefinition.createBuilder(INSTANCE, "num-update-replay-threads"); 145 builder.setOption(PropertyOption.ADVANCED); 146 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "num-update-replay-threads")); 147 builder.setDefaultBehaviorProvider(new AliasDefaultBehaviorProvider<Integer>(INSTANCE, "num-update-replay-threads")); 148 builder.setUpperLimit(65535); 149 builder.setLowerLimit(1); 150 PD_NUM_UPDATE_REPLAY_THREADS = builder.getInstance(); 151 INSTANCE.registerPropertyDefinition(PD_NUM_UPDATE_REPLAY_THREADS); 152 } 153 154 155 156 // Build the "replication-domains" relation definition. 157 static { 158 InstantiableRelationDefinition.Builder<ReplicationDomainCfgClient, ReplicationDomainCfg> builder = 159 new InstantiableRelationDefinition.Builder<ReplicationDomainCfgClient, ReplicationDomainCfg>(INSTANCE, "replication-domain", "replication-domains", ReplicationDomainCfgDefn.getInstance()); 160 RD_REPLICATION_DOMAINS = builder.getInstance(); 161 INSTANCE.registerRelationDefinition(RD_REPLICATION_DOMAINS); 162 } 163 164 165 166 // Build the "replication-server" relation definition. 167 static { 168 OptionalRelationDefinition.Builder<ReplicationServerCfgClient, ReplicationServerCfg> builder = 169 new OptionalRelationDefinition.Builder<ReplicationServerCfgClient, ReplicationServerCfg>(INSTANCE, "replication-server", ReplicationServerCfgDefn.getInstance()); 170 RD_REPLICATION_SERVER = builder.getInstance(); 171 INSTANCE.registerRelationDefinition(RD_REPLICATION_SERVER); 172 } 173 174 175 176 // Register the tags associated with this managed object definition. 177 static { 178 INSTANCE.registerTag(Tag.valueOf("replication")); 179 } 180 181 182 183 /** 184 * Get the Replication Synchronization Provider configuration 185 * definition singleton. 186 * 187 * @return Returns the Replication Synchronization Provider 188 * configuration definition singleton. 189 */ 190 public static ReplicationSynchronizationProviderCfgDefn getInstance() { 191 return INSTANCE; 192 } 193 194 195 196 /** 197 * Private constructor. 198 */ 199 private ReplicationSynchronizationProviderCfgDefn() { 200 super("replication-synchronization-provider", SynchronizationProviderCfgDefn.getInstance()); 201 } 202 203 204 205 /** 206 * {@inheritDoc} 207 */ 208 public ReplicationSynchronizationProviderCfgClient createClientConfiguration( 209 ManagedObject<? extends ReplicationSynchronizationProviderCfgClient> impl) { 210 return new ReplicationSynchronizationProviderCfgClientImpl(impl); 211 } 212 213 214 215 /** 216 * {@inheritDoc} 217 */ 218 public ReplicationSynchronizationProviderCfg createServerConfiguration( 219 ServerManagedObject<? extends ReplicationSynchronizationProviderCfg> impl) { 220 return new ReplicationSynchronizationProviderCfgServerImpl(impl); 221 } 222 223 224 225 /** 226 * {@inheritDoc} 227 */ 228 public Class<ReplicationSynchronizationProviderCfg> getServerConfigurationClass() { 229 return ReplicationSynchronizationProviderCfg.class; 230 } 231 232 233 234 /** 235 * Get the "connection-timeout" property definition. 236 * <p> 237 * Specifies the timeout used when connecting to peers and when 238 * performing SSL negotiation. 239 * 240 * @return Returns the "connection-timeout" property definition. 241 */ 242 public DurationPropertyDefinition getConnectionTimeoutPropertyDefinition() { 243 return PD_CONNECTION_TIMEOUT; 244 } 245 246 247 248 /** 249 * Get the "enabled" property definition. 250 * <p> 251 * Indicates whether the Replication Synchronization Provider is 252 * enabled for use. 253 * 254 * @return Returns the "enabled" property definition. 255 */ 256 public BooleanPropertyDefinition getEnabledPropertyDefinition() { 257 return SynchronizationProviderCfgDefn.getInstance().getEnabledPropertyDefinition(); 258 } 259 260 261 262 /** 263 * Get the "java-class" property definition. 264 * <p> 265 * Specifies the fully-qualified name of the Java class that 266 * provides the Replication Synchronization Provider implementation. 267 * 268 * @return Returns the "java-class" property definition. 269 */ 270 public ClassPropertyDefinition getJavaClassPropertyDefinition() { 271 return PD_JAVA_CLASS; 272 } 273 274 275 276 /** 277 * Get the "num-update-replay-threads" property definition. 278 * <p> 279 * Specifies the number of update replay threads. 280 * <p> 281 * This value is the number of threads created for replaying every 282 * updates received for all the replication domains. 283 * 284 * @return Returns the "num-update-replay-threads" property definition. 285 */ 286 public IntegerPropertyDefinition getNumUpdateReplayThreadsPropertyDefinition() { 287 return PD_NUM_UPDATE_REPLAY_THREADS; 288 } 289 290 291 292 /** 293 * Get the "replication-domains" relation definition. 294 * 295 * @return Returns the "replication-domains" relation definition. 296 */ 297 public InstantiableRelationDefinition<ReplicationDomainCfgClient,ReplicationDomainCfg> getReplicationDomainsRelationDefinition() { 298 return RD_REPLICATION_DOMAINS; 299 } 300 301 302 303 /** 304 * Get the "replication-server" relation definition. 305 * 306 * @return Returns the "replication-server" relation definition. 307 */ 308 public OptionalRelationDefinition<ReplicationServerCfgClient,ReplicationServerCfg> getReplicationServerRelationDefinition() { 309 return RD_REPLICATION_SERVER; 310 } 311 312 313 314 /** 315 * Managed object client implementation. 316 */ 317 private static class ReplicationSynchronizationProviderCfgClientImpl implements 318 ReplicationSynchronizationProviderCfgClient { 319 320 // Private implementation. 321 private ManagedObject<? extends ReplicationSynchronizationProviderCfgClient> impl; 322 323 324 325 // Private constructor. 326 private ReplicationSynchronizationProviderCfgClientImpl( 327 ManagedObject<? extends ReplicationSynchronizationProviderCfgClient> impl) { 328 this.impl = impl; 329 } 330 331 332 333 /** 334 * {@inheritDoc} 335 */ 336 public long getConnectionTimeout() { 337 return impl.getPropertyValue(INSTANCE.getConnectionTimeoutPropertyDefinition()); 338 } 339 340 341 342 /** 343 * {@inheritDoc} 344 */ 345 public void setConnectionTimeout(Long value) { 346 impl.setPropertyValue(INSTANCE.getConnectionTimeoutPropertyDefinition(), value); 347 } 348 349 350 351 /** 352 * {@inheritDoc} 353 */ 354 public Boolean isEnabled() { 355 return impl.getPropertyValue(INSTANCE.getEnabledPropertyDefinition()); 356 } 357 358 359 360 /** 361 * {@inheritDoc} 362 */ 363 public void setEnabled(boolean value) { 364 impl.setPropertyValue(INSTANCE.getEnabledPropertyDefinition(), value); 365 } 366 367 368 369 /** 370 * {@inheritDoc} 371 */ 372 public String getJavaClass() { 373 return impl.getPropertyValue(INSTANCE.getJavaClassPropertyDefinition()); 374 } 375 376 377 378 /** 379 * {@inheritDoc} 380 */ 381 public void setJavaClass(String value) { 382 impl.setPropertyValue(INSTANCE.getJavaClassPropertyDefinition(), value); 383 } 384 385 386 387 /** 388 * {@inheritDoc} 389 */ 390 public Integer getNumUpdateReplayThreads() { 391 return impl.getPropertyValue(INSTANCE.getNumUpdateReplayThreadsPropertyDefinition()); 392 } 393 394 395 396 /** 397 * {@inheritDoc} 398 */ 399 public void setNumUpdateReplayThreads(Integer value) { 400 impl.setPropertyValue(INSTANCE.getNumUpdateReplayThreadsPropertyDefinition(), value); 401 } 402 403 404 405 /** 406 * {@inheritDoc} 407 */ 408 public String[] listReplicationDomains() throws ConcurrentModificationException, 409 AuthorizationException, CommunicationException { 410 return impl.listChildren(INSTANCE.getReplicationDomainsRelationDefinition()); 411 } 412 413 414 415 /** 416 * {@inheritDoc} 417 */ 418 public ReplicationDomainCfgClient getReplicationDomain(String name) 419 throws DefinitionDecodingException, ManagedObjectDecodingException, 420 ManagedObjectNotFoundException, ConcurrentModificationException, 421 AuthorizationException, CommunicationException { 422 return impl.getChild(INSTANCE.getReplicationDomainsRelationDefinition(), name).getConfiguration(); 423 } 424 425 426 427 /** 428 * {@inheritDoc} 429 */ 430 public <M extends ReplicationDomainCfgClient> M createReplicationDomain( 431 ManagedObjectDefinition<M, ? extends ReplicationDomainCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException { 432 return impl.createChild(INSTANCE.getReplicationDomainsRelationDefinition(), d, name, exceptions).getConfiguration(); 433 } 434 435 436 437 /** 438 * {@inheritDoc} 439 */ 440 public void removeReplicationDomain(String name) 441 throws ManagedObjectNotFoundException, ConcurrentModificationException, 442 OperationRejectedException, AuthorizationException, CommunicationException { 443 impl.removeChild(INSTANCE.getReplicationDomainsRelationDefinition(), name); 444 } 445 446 447 448 /** 449 * {@inheritDoc} 450 */ 451 public boolean hasReplicationServer() throws ConcurrentModificationException, 452 AuthorizationException, CommunicationException { 453 return impl.hasChild(INSTANCE.getReplicationServerRelationDefinition()); 454 } 455 456 457 458 /** 459 * {@inheritDoc} 460 */ 461 public ReplicationServerCfgClient getReplicationServer() 462 throws DefinitionDecodingException, ManagedObjectDecodingException, 463 ManagedObjectNotFoundException, ConcurrentModificationException, 464 AuthorizationException, CommunicationException { 465 return impl.getChild(INSTANCE.getReplicationServerRelationDefinition()).getConfiguration(); 466 } 467 468 469 470 /** 471 * {@inheritDoc} 472 */ 473 public <M extends ReplicationServerCfgClient> M createReplicationServer( 474 ManagedObjectDefinition<M, ? extends ReplicationServerCfg> d, Collection<PropertyException> exceptions) { 475 return impl.createChild(INSTANCE.getReplicationServerRelationDefinition(), d, exceptions).getConfiguration(); 476 } 477 478 479 480 /** 481 * {@inheritDoc} 482 */ 483 public void removeReplicationServer() 484 throws ManagedObjectNotFoundException, ConcurrentModificationException, 485 OperationRejectedException, AuthorizationException, CommunicationException { 486 impl.removeChild(INSTANCE.getReplicationServerRelationDefinition()); 487 } 488 489 490 491 /** 492 * {@inheritDoc} 493 */ 494 public ManagedObjectDefinition<? extends ReplicationSynchronizationProviderCfgClient, ? extends ReplicationSynchronizationProviderCfg> definition() { 495 return INSTANCE; 496 } 497 498 499 500 /** 501 * {@inheritDoc} 502 */ 503 public PropertyProvider properties() { 504 return impl; 505 } 506 507 508 509 /** 510 * {@inheritDoc} 511 */ 512 public void commit() throws ManagedObjectAlreadyExistsException, 513 MissingMandatoryPropertiesException, ConcurrentModificationException, 514 OperationRejectedException, AuthorizationException, 515 CommunicationException { 516 impl.commit(); 517 } 518 519 520 521 /** {@inheritDoc} */ 522 public String toString() { 523 return impl.toString(); 524 } 525 } 526 527 528 529 /** 530 * Managed object server implementation. 531 */ 532 private static class ReplicationSynchronizationProviderCfgServerImpl implements 533 ReplicationSynchronizationProviderCfg { 534 535 // Private implementation. 536 private ServerManagedObject<? extends ReplicationSynchronizationProviderCfg> impl; 537 538 // The value of the "connection-timeout" property. 539 private final long pConnectionTimeout; 540 541 // The value of the "enabled" property. 542 private final boolean pEnabled; 543 544 // The value of the "java-class" property. 545 private final String pJavaClass; 546 547 // The value of the "num-update-replay-threads" property. 548 private final Integer pNumUpdateReplayThreads; 549 550 551 552 // Private constructor. 553 private ReplicationSynchronizationProviderCfgServerImpl(ServerManagedObject<? extends ReplicationSynchronizationProviderCfg> impl) { 554 this.impl = impl; 555 this.pConnectionTimeout = impl.getPropertyValue(INSTANCE.getConnectionTimeoutPropertyDefinition()); 556 this.pEnabled = impl.getPropertyValue(INSTANCE.getEnabledPropertyDefinition()); 557 this.pJavaClass = impl.getPropertyValue(INSTANCE.getJavaClassPropertyDefinition()); 558 this.pNumUpdateReplayThreads = impl.getPropertyValue(INSTANCE.getNumUpdateReplayThreadsPropertyDefinition()); 559 } 560 561 562 563 /** 564 * {@inheritDoc} 565 */ 566 public void addReplicationChangeListener( 567 ConfigurationChangeListener<ReplicationSynchronizationProviderCfg> listener) { 568 impl.registerChangeListener(listener); 569 } 570 571 572 573 /** 574 * {@inheritDoc} 575 */ 576 public void removeReplicationChangeListener( 577 ConfigurationChangeListener<ReplicationSynchronizationProviderCfg> listener) { 578 impl.deregisterChangeListener(listener); 579 } 580 /** 581 * {@inheritDoc} 582 */ 583 public void addChangeListener( 584 ConfigurationChangeListener<SynchronizationProviderCfg> listener) { 585 impl.registerChangeListener(listener); 586 } 587 588 589 590 /** 591 * {@inheritDoc} 592 */ 593 public void removeChangeListener( 594 ConfigurationChangeListener<SynchronizationProviderCfg> listener) { 595 impl.deregisterChangeListener(listener); 596 } 597 598 599 600 /** 601 * {@inheritDoc} 602 */ 603 public long getConnectionTimeout() { 604 return pConnectionTimeout; 605 } 606 607 608 609 /** 610 * {@inheritDoc} 611 */ 612 public boolean isEnabled() { 613 return pEnabled; 614 } 615 616 617 618 /** 619 * {@inheritDoc} 620 */ 621 public String getJavaClass() { 622 return pJavaClass; 623 } 624 625 626 627 /** 628 * {@inheritDoc} 629 */ 630 public Integer getNumUpdateReplayThreads() { 631 return pNumUpdateReplayThreads; 632 } 633 634 635 636 /** 637 * {@inheritDoc} 638 */ 639 public String[] listReplicationDomains() { 640 return impl.listChildren(INSTANCE.getReplicationDomainsRelationDefinition()); 641 } 642 643 644 645 /** 646 * {@inheritDoc} 647 */ 648 public ReplicationDomainCfg getReplicationDomain(String name) throws ConfigException { 649 return impl.getChild(INSTANCE.getReplicationDomainsRelationDefinition(), name).getConfiguration(); 650 } 651 652 653 654 /** 655 * {@inheritDoc} 656 */ 657 public void addReplicationDomainAddListener( 658 ConfigurationAddListener<ReplicationDomainCfg> listener) throws ConfigException { 659 impl.registerAddListener(INSTANCE.getReplicationDomainsRelationDefinition(), listener); 660 } 661 662 663 664 /** 665 * {@inheritDoc} 666 */ 667 public void removeReplicationDomainAddListener( 668 ConfigurationAddListener<ReplicationDomainCfg> listener) { 669 impl.deregisterAddListener(INSTANCE.getReplicationDomainsRelationDefinition(), listener); 670 } 671 672 673 674 /** 675 * {@inheritDoc} 676 */ 677 public void addReplicationDomainDeleteListener( 678 ConfigurationDeleteListener<ReplicationDomainCfg> listener) throws ConfigException { 679 impl.registerDeleteListener(INSTANCE.getReplicationDomainsRelationDefinition(), listener); 680 } 681 682 683 684 /** 685 * {@inheritDoc} 686 */ 687 public void removeReplicationDomainDeleteListener( 688 ConfigurationDeleteListener<ReplicationDomainCfg> listener) { 689 impl.deregisterDeleteListener(INSTANCE.getReplicationDomainsRelationDefinition(), listener); 690 } 691 692 693 694 /** 695 * {@inheritDoc} 696 */ 697 public boolean hasReplicationServer() { 698 return impl.hasChild(INSTANCE.getReplicationServerRelationDefinition()); 699 } 700 701 702 703 /** 704 * {@inheritDoc} 705 */ 706 public ReplicationServerCfg getReplicationServer() throws ConfigException { 707 return impl.getChild(INSTANCE.getReplicationServerRelationDefinition()).getConfiguration(); 708 } 709 710 711 712 /** 713 * {@inheritDoc} 714 */ 715 public void addReplicationServerAddListener( 716 ConfigurationAddListener<ReplicationServerCfg> listener) throws ConfigException { 717 impl.registerAddListener(INSTANCE.getReplicationServerRelationDefinition(), listener); 718 } 719 720 721 722 /** 723 * {@inheritDoc} 724 */ 725 public void removeReplicationServerAddListener( 726 ConfigurationAddListener<ReplicationServerCfg> listener) { 727 impl.deregisterAddListener(INSTANCE.getReplicationServerRelationDefinition(), listener); 728 } 729 730 731 732 /** 733 * {@inheritDoc} 734 */ 735 public void addReplicationServerDeleteListener( 736 ConfigurationDeleteListener<ReplicationServerCfg> listener) throws ConfigException { 737 impl.registerDeleteListener(INSTANCE.getReplicationServerRelationDefinition(), listener); 738 } 739 740 741 742 /** 743 * {@inheritDoc} 744 */ 745 public void removeReplicationServerDeleteListener( 746 ConfigurationDeleteListener<ReplicationServerCfg> listener) { 747 impl.deregisterDeleteListener(INSTANCE.getReplicationServerRelationDefinition(), listener); 748 } 749 750 751 752 /** 753 * {@inheritDoc} 754 */ 755 public Class<? extends ReplicationSynchronizationProviderCfg> configurationClass() { 756 return ReplicationSynchronizationProviderCfg.class; 757 } 758 759 760 761 /** 762 * {@inheritDoc} 763 */ 764 public DN dn() { 765 return impl.getDN(); 766 } 767 768 769 770 /** {@inheritDoc} */ 771 public String toString() { 772 return impl.toString(); 773 } 774 } 775}