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.server.ConfigurationChangeListener;
022import org.forgerock.opendj.ldap.DN;
023
024
025
026/**
027 * A server-side interface for querying Csv File HTTP Access Log
028 * Publisher settings.
029 * <p>
030 * Csv File HTTP Access Log Publishers publish HTTP access messages to
031 * CSV files.
032 */
033public interface CsvFileHTTPAccessLogPublisherCfg extends HTTPAccessLogPublisherCfg {
034
035  /**
036   * Gets the configuration class associated with this Csv File HTTP Access Log Publisher.
037   *
038   * @return Returns the configuration class associated with this Csv File HTTP Access Log Publisher.
039   */
040  Class<? extends CsvFileHTTPAccessLogPublisherCfg> configurationClass();
041
042
043
044  /**
045   * Register to be notified when this Csv File HTTP Access Log Publisher is changed.
046   *
047   * @param listener
048   *          The Csv File HTTP Access Log Publisher configuration change listener.
049   */
050  void addCsvFileHTTPAccessChangeListener(ConfigurationChangeListener<CsvFileHTTPAccessLogPublisherCfg> listener);
051
052
053
054  /**
055   * Deregister an existing Csv File HTTP Access Log Publisher configuration change listener.
056   *
057   * @param listener
058   *          The Csv File HTTP Access Log Publisher configuration change listener.
059   */
060  void removeCsvFileHTTPAccessChangeListener(ConfigurationChangeListener<CsvFileHTTPAccessLogPublisherCfg> listener);
061
062
063
064  /**
065   * Gets the "asynchronous" property.
066   * <p>
067   * Indicates whether the Csv File HTTP Access Log Publisher will
068   * publish records asynchronously.
069   *
070   * @return Returns the value of the "asynchronous" property.
071   */
072  boolean isAsynchronous();
073
074
075
076  /**
077   * Gets the "auto-flush" property.
078   * <p>
079   * Specifies whether to flush the writer after every log record.
080   * <p>
081   * If the asynchronous writes option is used, the writer is flushed
082   * after all the log records in the queue are written.
083   *
084   * @return Returns the value of the "auto-flush" property.
085   */
086  boolean isAutoFlush();
087
088
089
090  /**
091   * Gets the "csv-delimiter-char" property.
092   * <p>
093   * The delimiter character to use when writing in CSV format.
094   *
095   * @return Returns the value of the "csv-delimiter-char" property.
096   */
097  String getCsvDelimiterChar();
098
099
100
101  /**
102   * Gets the "csv-eol-symbols" property.
103   * <p>
104   * The string that marks the end of a line.
105   *
106   * @return Returns the value of the "csv-eol-symbols" property.
107   */
108  String getCsvEolSymbols();
109
110
111
112  /**
113   * Gets the "csv-quote-char" property.
114   * <p>
115   * The character to append and prepend to a CSV field when writing
116   * in CSV format.
117   *
118   * @return Returns the value of the "csv-quote-char" property.
119   */
120  String getCsvQuoteChar();
121
122
123
124  /**
125   * Gets the "java-class" property.
126   * <p>
127   * The fully-qualified name of the Java class that provides the Csv
128   * File HTTP Access Log Publisher implementation.
129   *
130   * @return Returns the value of the "java-class" property.
131   */
132  String getJavaClass();
133
134
135
136  /**
137   * Gets the "key-store-file" property.
138   * <p>
139   * Specifies the path to the file that contains the private key
140   * information. This may be an absolute path, or a path that is
141   * relative to the OpenDJ instance root.
142   * <p>
143   * Changes to this property will take effect the next time that the
144   * key store is accessed.
145   *
146   * @return Returns the value of the "key-store-file" property.
147   */
148  String getKeyStoreFile();
149
150
151
152  /**
153   * Gets the "key-store-pin-file" property.
154   * <p>
155   * Specifies the path to the text file whose only contents should be
156   * a single line containing the clear-text PIN needed to access the
157   * Csv File HTTP Access Log Publisher .
158   *
159   * @return Returns the value of the "key-store-pin-file" property.
160   */
161  String getKeyStorePinFile();
162
163
164
165  /**
166   * Gets the "log-directory" property.
167   * <p>
168   * The directory to use for the log files generated by the Csv File
169   * HTTP Access Log Publisher. The path to the directory is relative
170   * to the server root.
171   *
172   * @return Returns the value of the "log-directory" property.
173   */
174  String getLogDirectory();
175
176
177
178  /**
179   * Gets the "retention-policy" property.
180   * <p>
181   * The retention policy to use for the Csv File HTTP Access Log
182   * Publisher .
183   * <p>
184   * When multiple policies are used, log files are cleaned when any
185   * of the policy's conditions are met.
186   *
187   * @return Returns an unmodifiable set containing the values of the "retention-policy" property.
188   */
189  SortedSet<String> getRetentionPolicy();
190
191
192
193  /**
194   * Gets the "retention-policy" property as a set of DNs.
195   * <p>
196   * The retention policy to use for the Csv File HTTP Access Log
197   * Publisher .
198   * <p>
199   * When multiple policies are used, log files are cleaned when any
200   * of the policy's conditions are met.
201   *
202   * @return Returns the DN values of the "retention-policy" property.
203   */
204  SortedSet<DN> getRetentionPolicyDNs();
205
206
207
208  /**
209   * Gets the "rotation-policy" property.
210   * <p>
211   * The rotation policy to use for the Csv File HTTP Access Log
212   * Publisher .
213   * <p>
214   * When multiple policies are used, rotation will occur if any
215   * policy's conditions are met.
216   *
217   * @return Returns an unmodifiable set containing the values of the "rotation-policy" property.
218   */
219  SortedSet<String> getRotationPolicy();
220
221
222
223  /**
224   * Gets the "rotation-policy" property as a set of DNs.
225   * <p>
226   * The rotation policy to use for the Csv File HTTP Access Log
227   * Publisher .
228   * <p>
229   * When multiple policies are used, rotation will occur if any
230   * policy's conditions are met.
231   *
232   * @return Returns the DN values of the "rotation-policy" property.
233   */
234  SortedSet<DN> getRotationPolicyDNs();
235
236
237
238  /**
239   * Gets the "signature-time-interval" property.
240   * <p>
241   * Specifies the interval at which to sign the log file when secure
242   * option is enabled.
243   *
244   * @return Returns the value of the "signature-time-interval" property.
245   */
246  long getSignatureTimeInterval();
247
248
249
250  /**
251   * Gets the "tamper-evident" property.
252   * <p>
253   * Specifies whether the log should be signed in order to detect
254   * tampering.
255   * <p>
256   * Every log record will be signed, making it possible to verify
257   * that the log has not been tampered with. This feature has a
258   * significative impact on performance of the server.
259   *
260   * @return Returns the value of the "tamper-evident" property.
261   */
262  boolean isTamperEvident();
263
264}