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.client;
017
018
019
020import java.util.Collection;
021import java.util.SortedSet;
022import org.forgerock.opendj.config.ConfigurationClient;
023import org.forgerock.opendj.config.ManagedObjectDefinition;
024import org.forgerock.opendj.config.PropertyException;
025import org.forgerock.opendj.server.config.server.ExternalChangelogDomainCfg;
026
027
028
029/**
030 * A client-side interface for reading and modifying External
031 * Changelog Domain settings.
032 * <p>
033 * The External Changelog Domain provides configuration of the
034 * external changelog for the replication domain.
035 */
036public interface ExternalChangelogDomainCfgClient extends ConfigurationClient {
037
038  /**
039   * Get the configuration definition associated with this External Changelog Domain.
040   *
041   * @return Returns the configuration definition associated with this External Changelog Domain.
042   */
043  ManagedObjectDefinition<? extends ExternalChangelogDomainCfgClient, ? extends ExternalChangelogDomainCfg> definition();
044
045
046
047  /**
048   * Gets the "ecl-include" property.
049   * <p>
050   * Specifies a list of attributes which should be published with
051   * every change log entry, regardless of whether the attribute itself
052   * has changed.
053   * <p>
054   * The list of attributes may include wild cards such as "*" and "+"
055   * as well as object class references prefixed with an ampersand, for
056   * example "@person". The included attributes will be published using
057   * the "includedAttributes" operational attribute as a single LDIF
058   * value rather like the "changes" attribute. For modify and modifyDN
059   * operations the included attributes will be taken from the entry
060   * before any changes were applied.
061   *
062   * @return Returns the values of the "ecl-include" property.
063   */
064  SortedSet<String> getECLInclude();
065
066
067
068  /**
069   * Sets the "ecl-include" property.
070   * <p>
071   * Specifies a list of attributes which should be published with
072   * every change log entry, regardless of whether the attribute itself
073   * has changed.
074   * <p>
075   * The list of attributes may include wild cards such as "*" and "+"
076   * as well as object class references prefixed with an ampersand, for
077   * example "@person". The included attributes will be published using
078   * the "includedAttributes" operational attribute as a single LDIF
079   * value rather like the "changes" attribute. For modify and modifyDN
080   * operations the included attributes will be taken from the entry
081   * before any changes were applied.
082   *
083   * @param values The values of the "ecl-include" property.
084   * @throws PropertyException
085   *           If one or more of the new values are invalid.
086   */
087  void setECLInclude(Collection<String> values) throws PropertyException;
088
089
090
091  /**
092   * Gets the "ecl-include-for-deletes" property.
093   * <p>
094   * Specifies a list of attributes which should be published with
095   * every delete operation change log entry, in addition to those
096   * specified by the "ecl-include" property.
097   * <p>
098   * This property provides a means for applications to archive
099   * entries after they have been deleted. See the description of the
100   * "ecl-include" property for further information about how the
101   * included attributes are published.
102   *
103   * @return Returns the values of the "ecl-include-for-deletes" property.
104   */
105  SortedSet<String> getECLIncludeForDeletes();
106
107
108
109  /**
110   * Sets the "ecl-include-for-deletes" property.
111   * <p>
112   * Specifies a list of attributes which should be published with
113   * every delete operation change log entry, in addition to those
114   * specified by the "ecl-include" property.
115   * <p>
116   * This property provides a means for applications to archive
117   * entries after they have been deleted. See the description of the
118   * "ecl-include" property for further information about how the
119   * included attributes are published.
120   *
121   * @param values The values of the "ecl-include-for-deletes" property.
122   * @throws PropertyException
123   *           If one or more of the new values are invalid.
124   */
125  void setECLIncludeForDeletes(Collection<String> values) throws PropertyException;
126
127
128
129  /**
130   * Gets the "enabled" property.
131   * <p>
132   * Indicates whether the External Changelog Domain is enabled. To
133   * enable computing the change numbers, set the Replication Server's
134   * "ds-cfg-compute-change-number" property to true.
135   *
136   * @return Returns the value of the "enabled" property.
137   */
138  Boolean isEnabled();
139
140
141
142  /**
143   * Sets the "enabled" property.
144   * <p>
145   * Indicates whether the External Changelog Domain is enabled. To
146   * enable computing the change numbers, set the Replication Server's
147   * "ds-cfg-compute-change-number" property to true.
148   *
149   * @param value The value of the "enabled" property.
150   * @throws PropertyException
151   *           If the new value is invalid.
152   */
153  void setEnabled(boolean value) throws PropertyException;
154
155}