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.ManagedObjectDefinition;
023import org.forgerock.opendj.config.PropertyException;
024import org.forgerock.opendj.server.config.server.CsvFileHTTPAccessLogPublisherCfg;
025
026
027
028/**
029 * A client-side interface for reading and modifying Csv File HTTP
030 * Access Log Publisher settings.
031 * <p>
032 * Csv File HTTP Access Log Publishers publish HTTP access messages to
033 * CSV files.
034 */
035public interface CsvFileHTTPAccessLogPublisherCfgClient extends HTTPAccessLogPublisherCfgClient {
036
037  /**
038   * Get the configuration definition associated with this Csv File HTTP Access Log Publisher.
039   *
040   * @return Returns the configuration definition associated with this Csv File HTTP Access Log Publisher.
041   */
042  ManagedObjectDefinition<? extends CsvFileHTTPAccessLogPublisherCfgClient, ? extends CsvFileHTTPAccessLogPublisherCfg> definition();
043
044
045
046  /**
047   * Gets the "asynchronous" property.
048   * <p>
049   * Indicates whether the Csv File HTTP Access Log Publisher will
050   * publish records asynchronously.
051   *
052   * @return Returns the value of the "asynchronous" property.
053   */
054  boolean isAsynchronous();
055
056
057
058  /**
059   * Sets the "asynchronous" property.
060   * <p>
061   * Indicates whether the Csv File HTTP Access Log Publisher will
062   * publish records asynchronously.
063   *
064   * @param value The value of the "asynchronous" property.
065   * @throws PropertyException
066   *           If the new value is invalid.
067   */
068  void setAsynchronous(boolean value) throws PropertyException;
069
070
071
072  /**
073   * Gets the "auto-flush" property.
074   * <p>
075   * Specifies whether to flush the writer after every log record.
076   * <p>
077   * If the asynchronous writes option is used, the writer is flushed
078   * after all the log records in the queue are written.
079   *
080   * @return Returns the value of the "auto-flush" property.
081   */
082  boolean isAutoFlush();
083
084
085
086  /**
087   * Sets the "auto-flush" property.
088   * <p>
089   * Specifies whether to flush the writer after every log record.
090   * <p>
091   * If the asynchronous writes option is used, the writer is flushed
092   * after all the log records in the queue are written.
093   *
094   * @param value The value of the "auto-flush" property.
095   * @throws PropertyException
096   *           If the new value is invalid.
097   */
098  void setAutoFlush(Boolean value) throws PropertyException;
099
100
101
102  /**
103   * Gets the "csv-delimiter-char" property.
104   * <p>
105   * The delimiter character to use when writing in CSV format.
106   *
107   * @return Returns the value of the "csv-delimiter-char" property.
108   */
109  String getCsvDelimiterChar();
110
111
112
113  /**
114   * Sets the "csv-delimiter-char" property.
115   * <p>
116   * The delimiter character to use when writing in CSV format.
117   *
118   * @param value The value of the "csv-delimiter-char" property.
119   * @throws PropertyException
120   *           If the new value is invalid.
121   */
122  void setCsvDelimiterChar(String value) throws PropertyException;
123
124
125
126  /**
127   * Gets the "csv-eol-symbols" property.
128   * <p>
129   * The string that marks the end of a line.
130   *
131   * @return Returns the value of the "csv-eol-symbols" property.
132   */
133  String getCsvEolSymbols();
134
135
136
137  /**
138   * Sets the "csv-eol-symbols" property.
139   * <p>
140   * The string that marks the end of a line.
141   *
142   * @param value The value of the "csv-eol-symbols" property.
143   * @throws PropertyException
144   *           If the new value is invalid.
145   */
146  void setCsvEolSymbols(String value) throws PropertyException;
147
148
149
150  /**
151   * Gets the "csv-quote-char" property.
152   * <p>
153   * The character to append and prepend to a CSV field when writing
154   * in CSV format.
155   *
156   * @return Returns the value of the "csv-quote-char" property.
157   */
158  String getCsvQuoteChar();
159
160
161
162  /**
163   * Sets the "csv-quote-char" property.
164   * <p>
165   * The character to append and prepend to a CSV field when writing
166   * in CSV format.
167   *
168   * @param value The value of the "csv-quote-char" property.
169   * @throws PropertyException
170   *           If the new value is invalid.
171   */
172  void setCsvQuoteChar(String value) throws PropertyException;
173
174
175
176  /**
177   * Gets the "java-class" property.
178   * <p>
179   * The fully-qualified name of the Java class that provides the Csv
180   * File HTTP Access Log Publisher implementation.
181   *
182   * @return Returns the value of the "java-class" property.
183   */
184  String getJavaClass();
185
186
187
188  /**
189   * Sets the "java-class" property.
190   * <p>
191   * The fully-qualified name of the Java class that provides the Csv
192   * File HTTP Access Log Publisher implementation.
193   *
194   * @param value The value of the "java-class" property.
195   * @throws PropertyException
196   *           If the new value is invalid.
197   */
198  void setJavaClass(String value) throws PropertyException;
199
200
201
202  /**
203   * Gets the "key-store-file" property.
204   * <p>
205   * Specifies the path to the file that contains the private key
206   * information. This may be an absolute path, or a path that is
207   * relative to the OpenDJ instance root.
208   * <p>
209   * Changes to this property will take effect the next time that the
210   * key store is accessed.
211   *
212   * @return Returns the value of the "key-store-file" property.
213   */
214  String getKeyStoreFile();
215
216
217
218  /**
219   * Sets the "key-store-file" property.
220   * <p>
221   * Specifies the path to the file that contains the private key
222   * information. This may be an absolute path, or a path that is
223   * relative to the OpenDJ instance root.
224   * <p>
225   * Changes to this property will take effect the next time that the
226   * key store is accessed.
227   *
228   * @param value The value of the "key-store-file" property.
229   * @throws PropertyException
230   *           If the new value is invalid.
231   */
232  void setKeyStoreFile(String value) throws PropertyException;
233
234
235
236  /**
237   * Gets the "key-store-pin-file" property.
238   * <p>
239   * Specifies the path to the text file whose only contents should be
240   * a single line containing the clear-text PIN needed to access the
241   * Csv File HTTP Access Log Publisher .
242   *
243   * @return Returns the value of the "key-store-pin-file" property.
244   */
245  String getKeyStorePinFile();
246
247
248
249  /**
250   * Sets the "key-store-pin-file" property.
251   * <p>
252   * Specifies the path to the text file whose only contents should be
253   * a single line containing the clear-text PIN needed to access the
254   * Csv File HTTP Access Log Publisher .
255   *
256   * @param value The value of the "key-store-pin-file" property.
257   * @throws PropertyException
258   *           If the new value is invalid.
259   */
260  void setKeyStorePinFile(String value) throws PropertyException;
261
262
263
264  /**
265   * Gets the "log-directory" property.
266   * <p>
267   * The directory to use for the log files generated by the Csv File
268   * HTTP Access Log Publisher. The path to the directory is relative
269   * to the server root.
270   *
271   * @return Returns the value of the "log-directory" property.
272   */
273  String getLogDirectory();
274
275
276
277  /**
278   * Sets the "log-directory" property.
279   * <p>
280   * The directory to use for the log files generated by the Csv File
281   * HTTP Access Log Publisher. The path to the directory is relative
282   * to the server root.
283   *
284   * @param value The value of the "log-directory" property.
285   * @throws PropertyException
286   *           If the new value is invalid.
287   */
288  void setLogDirectory(String value) throws PropertyException;
289
290
291
292  /**
293   * Gets the "retention-policy" property.
294   * <p>
295   * The retention policy to use for the Csv File HTTP Access Log
296   * Publisher .
297   * <p>
298   * When multiple policies are used, log files are cleaned when any
299   * of the policy's conditions are met.
300   *
301   * @return Returns the values of the "retention-policy" property.
302   */
303  SortedSet<String> getRetentionPolicy();
304
305
306
307  /**
308   * Sets the "retention-policy" property.
309   * <p>
310   * The retention policy to use for the Csv File HTTP Access Log
311   * Publisher .
312   * <p>
313   * When multiple policies are used, log files are cleaned when any
314   * of the policy's conditions are met.
315   *
316   * @param values The values of the "retention-policy" property.
317   * @throws PropertyException
318   *           If one or more of the new values are invalid.
319   */
320  void setRetentionPolicy(Collection<String> values) throws PropertyException;
321
322
323
324  /**
325   * Gets the "rotation-policy" property.
326   * <p>
327   * The rotation policy to use for the Csv File HTTP Access Log
328   * Publisher .
329   * <p>
330   * When multiple policies are used, rotation will occur if any
331   * policy's conditions are met.
332   *
333   * @return Returns the values of the "rotation-policy" property.
334   */
335  SortedSet<String> getRotationPolicy();
336
337
338
339  /**
340   * Sets the "rotation-policy" property.
341   * <p>
342   * The rotation policy to use for the Csv File HTTP Access Log
343   * Publisher .
344   * <p>
345   * When multiple policies are used, rotation will occur if any
346   * policy's conditions are met.
347   *
348   * @param values The values of the "rotation-policy" property.
349   * @throws PropertyException
350   *           If one or more of the new values are invalid.
351   */
352  void setRotationPolicy(Collection<String> values) throws PropertyException;
353
354
355
356  /**
357   * Gets the "signature-time-interval" property.
358   * <p>
359   * Specifies the interval at which to sign the log file when secure
360   * option is enabled.
361   *
362   * @return Returns the value of the "signature-time-interval" property.
363   */
364  long getSignatureTimeInterval();
365
366
367
368  /**
369   * Sets the "signature-time-interval" property.
370   * <p>
371   * Specifies the interval at which to sign the log file when secure
372   * option is enabled.
373   *
374   * @param value The value of the "signature-time-interval" property.
375   * @throws PropertyException
376   *           If the new value is invalid.
377   */
378  void setSignatureTimeInterval(Long value) throws PropertyException;
379
380
381
382  /**
383   * Gets the "tamper-evident" property.
384   * <p>
385   * Specifies whether the log should be signed in order to detect
386   * tampering.
387   * <p>
388   * Every log record will be signed, making it possible to verify
389   * that the log has not been tampered with. This feature has a
390   * significative impact on performance of the server.
391   *
392   * @return Returns the value of the "tamper-evident" property.
393   */
394  boolean isTamperEvident();
395
396
397
398  /**
399   * Sets the "tamper-evident" property.
400   * <p>
401   * Specifies whether the log should be signed in order to detect
402   * tampering.
403   * <p>
404   * Every log record will be signed, making it possible to verify
405   * that the log has not been tampered with. This feature has a
406   * significative impact on performance of the server.
407   *
408   * @param value The value of the "tamper-evident" property.
409   * @throws PropertyException
410   *           If the new value is invalid.
411   */
412  void setTamperEvident(Boolean value) throws PropertyException;
413
414}