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}