001/*
002 * The contents of this file are subject to the terms of the Common Development and
003 * Distribution License (the License). You may not use this file except in compliance with the
004 * License.
005 *
006 * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
007 * specific language governing permission and limitations under the License.
008 *
009 * When distributing Covered Software, include this CDDL Header Notice in each file and include
010 * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
011 * Header, with the fields enclosed by brackets [] replaced by your own identifying
012 * information: "Portions Copyright [year] [name of copyright owner]".
013 *
014 * Copyright 2008 Sun Microsystems, Inc.
015 */
016package org.forgerock.opendj.server.config.server;
017
018
019
020import java.util.SortedSet;
021import org.forgerock.opendj.config.Configuration;
022import org.forgerock.opendj.config.server.ConfigurationChangeListener;
023
024
025
026/**
027 * A server-side interface for querying External Changelog Domain
028 * settings.
029 * <p>
030 * The External Changelog Domain provides configuration of the
031 * external changelog for the replication domain.
032 */
033public interface ExternalChangelogDomainCfg extends Configuration {
034
035  /**
036   * Gets the configuration class associated with this External Changelog Domain.
037   *
038   * @return Returns the configuration class associated with this External Changelog Domain.
039   */
040  Class<? extends ExternalChangelogDomainCfg> configurationClass();
041
042
043
044  /**
045   * Register to be notified when this External Changelog Domain is changed.
046   *
047   * @param listener
048   *          The External Changelog Domain configuration change listener.
049   */
050  void addChangeListener(ConfigurationChangeListener<ExternalChangelogDomainCfg> listener);
051
052
053
054  /**
055   * Deregister an existing External Changelog Domain configuration change listener.
056   *
057   * @param listener
058   *          The External Changelog Domain configuration change listener.
059   */
060  void removeChangeListener(ConfigurationChangeListener<ExternalChangelogDomainCfg> listener);
061
062
063
064  /**
065   * Gets the "ecl-include" property.
066   * <p>
067   * Specifies a list of attributes which should be published with
068   * every change log entry, regardless of whether the attribute itself
069   * has changed.
070   * <p>
071   * The list of attributes may include wild cards such as "*" and "+"
072   * as well as object class references prefixed with an ampersand, for
073   * example "@person". The included attributes will be published using
074   * the "includedAttributes" operational attribute as a single LDIF
075   * value rather like the "changes" attribute. For modify and modifyDN
076   * operations the included attributes will be taken from the entry
077   * before any changes were applied.
078   *
079   * @return Returns an unmodifiable set containing the values of the "ecl-include" property.
080   */
081  SortedSet<String> getECLInclude();
082
083
084
085  /**
086   * Gets the "ecl-include-for-deletes" property.
087   * <p>
088   * Specifies a list of attributes which should be published with
089   * every delete operation change log entry, in addition to those
090   * specified by the "ecl-include" property.
091   * <p>
092   * This property provides a means for applications to archive
093   * entries after they have been deleted. See the description of the
094   * "ecl-include" property for further information about how the
095   * included attributes are published.
096   *
097   * @return Returns an unmodifiable set containing the values of the "ecl-include-for-deletes" property.
098   */
099  SortedSet<String> getECLIncludeForDeletes();
100
101
102
103  /**
104   * Gets the "enabled" property.
105   * <p>
106   * Indicates whether the External Changelog Domain is enabled. To
107   * enable computing the change numbers, set the Replication Server's
108   * "ds-cfg-compute-change-number" property to true.
109   *
110   * @return Returns the value of the "enabled" property.
111   */
112  boolean isEnabled();
113
114}