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.meta.GlobalCfgDefn.DisabledPrivilege;
026import org.forgerock.opendj.server.config.meta.GlobalCfgDefn.EtimeResolution;
027import org.forgerock.opendj.server.config.meta.GlobalCfgDefn.InvalidAttributeSyntaxBehavior;
028import org.forgerock.opendj.server.config.meta.GlobalCfgDefn.SingleStructuralObjectclassBehavior;
029import org.forgerock.opendj.server.config.meta.GlobalCfgDefn.WritabilityMode;
030import org.forgerock.opendj.server.config.server.GlobalCfg;
031
032
033
034/**
035 * A client-side interface for reading and modifying Global
036 * Configuration settings.
037 * <p>
038 * The Global Configuration contains properties that affect the
039 * overall operation of the OpenDJ.
040 */
041public interface GlobalCfgClient extends ConfigurationClient {
042
043  /**
044   * Get the configuration definition associated with this Global Configuration.
045   *
046   * @return Returns the configuration definition associated with this Global Configuration.
047   */
048  ManagedObjectDefinition<? extends GlobalCfgClient, ? extends GlobalCfg> definition();
049
050
051
052  /**
053   * Gets the "add-missing-rdn-attributes" property.
054   * <p>
055   * Indicates whether the directory server should automatically add
056   * any attribute values contained in the entry's RDN into that entry
057   * when processing an add request.
058   *
059   * @return Returns the value of the "add-missing-rdn-attributes" property.
060   */
061  boolean isAddMissingRDNAttributes();
062
063
064
065  /**
066   * Sets the "add-missing-rdn-attributes" property.
067   * <p>
068   * Indicates whether the directory server should automatically add
069   * any attribute values contained in the entry's RDN into that entry
070   * when processing an add request.
071   *
072   * @param value The value of the "add-missing-rdn-attributes" property.
073   * @throws PropertyException
074   *           If the new value is invalid.
075   */
076  void setAddMissingRDNAttributes(Boolean value) throws PropertyException;
077
078
079
080  /**
081   * Gets the "allow-attribute-name-exceptions" property.
082   * <p>
083   * Indicates whether the directory server should allow underscores
084   * in attribute names and allow attribute names to begin with numeric
085   * digits (both of which are violations of the LDAP standards).
086   *
087   * @return Returns the value of the "allow-attribute-name-exceptions" property.
088   */
089  boolean isAllowAttributeNameExceptions();
090
091
092
093  /**
094   * Sets the "allow-attribute-name-exceptions" property.
095   * <p>
096   * Indicates whether the directory server should allow underscores
097   * in attribute names and allow attribute names to begin with numeric
098   * digits (both of which are violations of the LDAP standards).
099   *
100   * @param value The value of the "allow-attribute-name-exceptions" property.
101   * @throws PropertyException
102   *           If the new value is invalid.
103   */
104  void setAllowAttributeNameExceptions(Boolean value) throws PropertyException;
105
106
107
108  /**
109   * Gets the "allowed-task" property.
110   * <p>
111   * Specifies the fully-qualified name of a Java class that may be
112   * invoked in the server.
113   * <p>
114   * Any attempt to invoke a task not included in the list of allowed
115   * tasks is rejected.
116   *
117   * @return Returns the values of the "allowed-task" property.
118   */
119  SortedSet<String> getAllowedTask();
120
121
122
123  /**
124   * Sets the "allowed-task" property.
125   * <p>
126   * Specifies the fully-qualified name of a Java class that may be
127   * invoked in the server.
128   * <p>
129   * Any attempt to invoke a task not included in the list of allowed
130   * tasks is rejected.
131   *
132   * @param values The values of the "allowed-task" property.
133   * @throws PropertyException
134   *           If one or more of the new values are invalid.
135   */
136  void setAllowedTask(Collection<String> values) throws PropertyException;
137
138
139
140  /**
141   * Gets the "bind-with-dn-requires-password" property.
142   * <p>
143   * Indicates whether the directory server should reject any simple
144   * bind request that contains a DN but no password.
145   * <p>
146   * Although such bind requests are technically allowed by the LDAPv3
147   * specification (and should be treated as anonymous simple
148   * authentication), they may introduce security problems in
149   * applications that do not verify that the client actually provided
150   * a password.
151   *
152   * @return Returns the value of the "bind-with-dn-requires-password" property.
153   */
154  boolean isBindWithDNRequiresPassword();
155
156
157
158  /**
159   * Sets the "bind-with-dn-requires-password" property.
160   * <p>
161   * Indicates whether the directory server should reject any simple
162   * bind request that contains a DN but no password.
163   * <p>
164   * Although such bind requests are technically allowed by the LDAPv3
165   * specification (and should be treated as anonymous simple
166   * authentication), they may introduce security problems in
167   * applications that do not verify that the client actually provided
168   * a password.
169   *
170   * @param value The value of the "bind-with-dn-requires-password" property.
171   * @throws PropertyException
172   *           If the new value is invalid.
173   */
174  void setBindWithDNRequiresPassword(Boolean value) throws PropertyException;
175
176
177
178  /**
179   * Gets the "check-schema" property.
180   * <p>
181   * Indicates whether schema enforcement is active.
182   * <p>
183   * When schema enforcement is activated, the directory server
184   * ensures that all operations result in entries are valid according
185   * to the defined server schema. It is strongly recommended that this
186   * option be left enabled to prevent the inadvertent addition of
187   * invalid data into the server.
188   *
189   * @return Returns the value of the "check-schema" property.
190   */
191  boolean isCheckSchema();
192
193
194
195  /**
196   * Sets the "check-schema" property.
197   * <p>
198   * Indicates whether schema enforcement is active.
199   * <p>
200   * When schema enforcement is activated, the directory server
201   * ensures that all operations result in entries are valid according
202   * to the defined server schema. It is strongly recommended that this
203   * option be left enabled to prevent the inadvertent addition of
204   * invalid data into the server.
205   *
206   * @param value The value of the "check-schema" property.
207   * @throws PropertyException
208   *           If the new value is invalid.
209   */
210  void setCheckSchema(Boolean value) throws PropertyException;
211
212
213
214  /**
215   * Gets the "default-password-policy" property.
216   * <p>
217   * Specifies the name of the password policy that is in effect for
218   * users whose entries do not specify an alternate password policy
219   * (either via a real or virtual attribute).
220   * <p>
221   * In addition, the default password policy will be used for
222   * providing default parameters for sub-entry based password policies
223   * when not provided or supported by the sub-entry itself. This
224   * property must reference a password policy and no other type of
225   * authentication policy.
226   *
227   * @return Returns the value of the "default-password-policy" property.
228   */
229  String getDefaultPasswordPolicy();
230
231
232
233  /**
234   * Sets the "default-password-policy" property.
235   * <p>
236   * Specifies the name of the password policy that is in effect for
237   * users whose entries do not specify an alternate password policy
238   * (either via a real or virtual attribute).
239   * <p>
240   * In addition, the default password policy will be used for
241   * providing default parameters for sub-entry based password policies
242   * when not provided or supported by the sub-entry itself. This
243   * property must reference a password policy and no other type of
244   * authentication policy.
245   *
246   * @param value The value of the "default-password-policy" property.
247   * @throws PropertyException
248   *           If the new value is invalid.
249   */
250  void setDefaultPasswordPolicy(String value) throws PropertyException;
251
252
253
254  /**
255   * Gets the "disabled-privilege" property.
256   * <p>
257   * Specifies the name of a privilege that should not be evaluated by
258   * the server.
259   * <p>
260   * If a privilege is disabled, then it is assumed that all clients
261   * (including unauthenticated clients) have that privilege.
262   *
263   * @return Returns the values of the "disabled-privilege" property.
264   */
265  SortedSet<DisabledPrivilege> getDisabledPrivilege();
266
267
268
269  /**
270   * Sets the "disabled-privilege" property.
271   * <p>
272   * Specifies the name of a privilege that should not be evaluated by
273   * the server.
274   * <p>
275   * If a privilege is disabled, then it is assumed that all clients
276   * (including unauthenticated clients) have that privilege.
277   *
278   * @param values The values of the "disabled-privilege" property.
279   * @throws PropertyException
280   *           If one or more of the new values are invalid.
281   */
282  void setDisabledPrivilege(Collection<DisabledPrivilege> values) throws PropertyException;
283
284
285
286  /**
287   * Gets the "etime-resolution" property.
288   * <p>
289   * Specifies the resolution to use for operation elapsed processing
290   * time (etime) measurements.
291   *
292   * @return Returns the value of the "etime-resolution" property.
293   */
294  EtimeResolution getEtimeResolution();
295
296
297
298  /**
299   * Sets the "etime-resolution" property.
300   * <p>
301   * Specifies the resolution to use for operation elapsed processing
302   * time (etime) measurements.
303   *
304   * @param value The value of the "etime-resolution" property.
305   * @throws PropertyException
306   *           If the new value is invalid.
307   */
308  void setEtimeResolution(EtimeResolution value) throws PropertyException;
309
310
311
312  /**
313   * Gets the "idle-time-limit" property.
314   * <p>
315   * Specifies the maximum length of time that a client connection may
316   * remain established since its last completed operation.
317   * <p>
318   * A value of "0 seconds" indicates that no idle time limit is
319   * enforced.
320   *
321   * @return Returns the value of the "idle-time-limit" property.
322   */
323  long getIdleTimeLimit();
324
325
326
327  /**
328   * Sets the "idle-time-limit" property.
329   * <p>
330   * Specifies the maximum length of time that a client connection may
331   * remain established since its last completed operation.
332   * <p>
333   * A value of "0 seconds" indicates that no idle time limit is
334   * enforced.
335   *
336   * @param value The value of the "idle-time-limit" property.
337   * @throws PropertyException
338   *           If the new value is invalid.
339   */
340  void setIdleTimeLimit(Long value) throws PropertyException;
341
342
343
344  /**
345   * Gets the "invalid-attribute-syntax-behavior" property.
346   * <p>
347   * Specifies how the directory server should handle operations
348   * whenever an attribute value violates the associated attribute
349   * syntax.
350   *
351   * @return Returns the value of the "invalid-attribute-syntax-behavior" property.
352   */
353  InvalidAttributeSyntaxBehavior getInvalidAttributeSyntaxBehavior();
354
355
356
357  /**
358   * Sets the "invalid-attribute-syntax-behavior" property.
359   * <p>
360   * Specifies how the directory server should handle operations
361   * whenever an attribute value violates the associated attribute
362   * syntax.
363   *
364   * @param value The value of the "invalid-attribute-syntax-behavior" property.
365   * @throws PropertyException
366   *           If the new value is invalid.
367   */
368  void setInvalidAttributeSyntaxBehavior(InvalidAttributeSyntaxBehavior value) throws PropertyException;
369
370
371
372  /**
373   * Gets the "lookthrough-limit" property.
374   * <p>
375   * Specifies the maximum number of entries that the directory server
376   * should "look through" in the course of processing a search
377   * request.
378   * <p>
379   * This includes any entry that the server must examine in the
380   * course of processing the request, regardless of whether it
381   * actually matches the search criteria. A value of 0 indicates that
382   * no lookthrough limit is enforced. Note that this is the default
383   * server-wide limit, but it may be overridden on a per-user basis
384   * using the ds-rlim-lookthrough-limit operational attribute.
385   *
386   * @return Returns the value of the "lookthrough-limit" property.
387   */
388  int getLookthroughLimit();
389
390
391
392  /**
393   * Sets the "lookthrough-limit" property.
394   * <p>
395   * Specifies the maximum number of entries that the directory server
396   * should "look through" in the course of processing a search
397   * request.
398   * <p>
399   * This includes any entry that the server must examine in the
400   * course of processing the request, regardless of whether it
401   * actually matches the search criteria. A value of 0 indicates that
402   * no lookthrough limit is enforced. Note that this is the default
403   * server-wide limit, but it may be overridden on a per-user basis
404   * using the ds-rlim-lookthrough-limit operational attribute.
405   *
406   * @param value The value of the "lookthrough-limit" property.
407   * @throws PropertyException
408   *           If the new value is invalid.
409   */
410  void setLookthroughLimit(Integer value) throws PropertyException;
411
412
413
414  /**
415   * Gets the "max-allowed-client-connections" property.
416   * <p>
417   * Specifies the maximum number of client connections that may be
418   * established at any given time
419   * <p>
420   * A value of 0 indicates that unlimited client connection is
421   * allowed.
422   *
423   * @return Returns the value of the "max-allowed-client-connections" property.
424   */
425  int getMaxAllowedClientConnections();
426
427
428
429  /**
430   * Sets the "max-allowed-client-connections" property.
431   * <p>
432   * Specifies the maximum number of client connections that may be
433   * established at any given time
434   * <p>
435   * A value of 0 indicates that unlimited client connection is
436   * allowed.
437   *
438   * @param value The value of the "max-allowed-client-connections" property.
439   * @throws PropertyException
440   *           If the new value is invalid.
441   */
442  void setMaxAllowedClientConnections(Integer value) throws PropertyException;
443
444
445
446  /**
447   * Gets the "max-internal-buffer-size" property.
448   * <p>
449   * The threshold capacity beyond which internal cached buffers used
450   * for encoding and decoding entries and protocol messages will be
451   * trimmed after use.
452   * <p>
453   * Individual buffers may grow very large when encoding and decoding
454   * large entries and protocol messages and should be reduced in size
455   * when they are no longer needed. This setting specifies the
456   * threshold at which a buffer is determined to have grown too big
457   * and should be trimmed down after use.
458   *
459   * @return Returns the value of the "max-internal-buffer-size" property.
460   */
461  long getMaxInternalBufferSize();
462
463
464
465  /**
466   * Sets the "max-internal-buffer-size" property.
467   * <p>
468   * The threshold capacity beyond which internal cached buffers used
469   * for encoding and decoding entries and protocol messages will be
470   * trimmed after use.
471   * <p>
472   * Individual buffers may grow very large when encoding and decoding
473   * large entries and protocol messages and should be reduced in size
474   * when they are no longer needed. This setting specifies the
475   * threshold at which a buffer is determined to have grown too big
476   * and should be trimmed down after use.
477   *
478   * @param value The value of the "max-internal-buffer-size" property.
479   * @throws PropertyException
480   *           If the new value is invalid.
481   */
482  void setMaxInternalBufferSize(Long value) throws PropertyException;
483
484
485
486  /**
487   * Gets the "max-psearches" property.
488   * <p>
489   * Defines the maximum number of concurrent persistent searches that
490   * can be performed on directory server
491   * <p>
492   * The persistent search mechanism provides an active channel
493   * through which entries that change, and information about the
494   * changes that occur, can be communicated. Because each persistent
495   * search operation consumes resources, limiting the number of
496   * simultaneous persistent searches keeps the performance impact
497   * minimal. A value of -1 indicates that there is no limit on the
498   * persistent searches.
499   *
500   * @return Returns the value of the "max-psearches" property.
501   */
502  int getMaxPsearches();
503
504
505
506  /**
507   * Sets the "max-psearches" property.
508   * <p>
509   * Defines the maximum number of concurrent persistent searches that
510   * can be performed on directory server
511   * <p>
512   * The persistent search mechanism provides an active channel
513   * through which entries that change, and information about the
514   * changes that occur, can be communicated. Because each persistent
515   * search operation consumes resources, limiting the number of
516   * simultaneous persistent searches keeps the performance impact
517   * minimal. A value of -1 indicates that there is no limit on the
518   * persistent searches.
519   *
520   * @param value The value of the "max-psearches" property.
521   * @throws PropertyException
522   *           If the new value is invalid.
523   */
524  void setMaxPsearches(Integer value) throws PropertyException;
525
526
527
528  /**
529   * Gets the "notify-abandoned-operations" property.
530   * <p>
531   * Indicates whether the directory server should send a response to
532   * any operation that is interrupted via an abandon request.
533   * <p>
534   * The LDAP specification states that abandoned operations should
535   * not receive any response, but this may cause problems with client
536   * applications that always expect to receive a response to each
537   * request.
538   *
539   * @return Returns the value of the "notify-abandoned-operations" property.
540   */
541  boolean isNotifyAbandonedOperations();
542
543
544
545  /**
546   * Sets the "notify-abandoned-operations" property.
547   * <p>
548   * Indicates whether the directory server should send a response to
549   * any operation that is interrupted via an abandon request.
550   * <p>
551   * The LDAP specification states that abandoned operations should
552   * not receive any response, but this may cause problems with client
553   * applications that always expect to receive a response to each
554   * request.
555   *
556   * @param value The value of the "notify-abandoned-operations" property.
557   * @throws PropertyException
558   *           If the new value is invalid.
559   */
560  void setNotifyAbandonedOperations(Boolean value) throws PropertyException;
561
562
563
564  /**
565   * Gets the "proxied-authorization-identity-mapper" property.
566   * <p>
567   * Specifies the name of the identity mapper to map authorization ID
568   * values (using the "u:" form) provided in the proxied authorization
569   * control to the corresponding user entry.
570   *
571   * @return Returns the value of the "proxied-authorization-identity-mapper" property.
572   */
573  String getProxiedAuthorizationIdentityMapper();
574
575
576
577  /**
578   * Sets the "proxied-authorization-identity-mapper" property.
579   * <p>
580   * Specifies the name of the identity mapper to map authorization ID
581   * values (using the "u:" form) provided in the proxied authorization
582   * control to the corresponding user entry.
583   *
584   * @param value The value of the "proxied-authorization-identity-mapper" property.
585   * @throws PropertyException
586   *           If the new value is invalid.
587   */
588  void setProxiedAuthorizationIdentityMapper(String value) throws PropertyException;
589
590
591
592  /**
593   * Gets the "reject-unauthenticated-requests" property.
594   * <p>
595   * Indicates whether the directory server should reject any request
596   * (other than bind or StartTLS requests) received from a client that
597   * has not yet been authenticated, whose last authentication attempt
598   * was unsuccessful, or whose last authentication attempt used
599   * anonymous authentication.
600   *
601   * @return Returns the value of the "reject-unauthenticated-requests" property.
602   */
603  boolean isRejectUnauthenticatedRequests();
604
605
606
607  /**
608   * Sets the "reject-unauthenticated-requests" property.
609   * <p>
610   * Indicates whether the directory server should reject any request
611   * (other than bind or StartTLS requests) received from a client that
612   * has not yet been authenticated, whose last authentication attempt
613   * was unsuccessful, or whose last authentication attempt used
614   * anonymous authentication.
615   *
616   * @param value The value of the "reject-unauthenticated-requests" property.
617   * @throws PropertyException
618   *           If the new value is invalid.
619   */
620  void setRejectUnauthenticatedRequests(Boolean value) throws PropertyException;
621
622
623
624  /**
625   * Gets the "return-bind-error-messages" property.
626   * <p>
627   * Indicates whether responses for failed bind operations should
628   * include a message string providing the reason for the
629   * authentication failure.
630   * <p>
631   * Note that these messages may include information that could
632   * potentially be used by an attacker. If this option is disabled,
633   * then these messages appears only in the server's access log.
634   *
635   * @return Returns the value of the "return-bind-error-messages" property.
636   */
637  boolean isReturnBindErrorMessages();
638
639
640
641  /**
642   * Sets the "return-bind-error-messages" property.
643   * <p>
644   * Indicates whether responses for failed bind operations should
645   * include a message string providing the reason for the
646   * authentication failure.
647   * <p>
648   * Note that these messages may include information that could
649   * potentially be used by an attacker. If this option is disabled,
650   * then these messages appears only in the server's access log.
651   *
652   * @param value The value of the "return-bind-error-messages" property.
653   * @throws PropertyException
654   *           If the new value is invalid.
655   */
656  void setReturnBindErrorMessages(Boolean value) throws PropertyException;
657
658
659
660  /**
661   * Gets the "save-config-on-successful-startup" property.
662   * <p>
663   * Indicates whether the directory server should save a copy of its
664   * configuration whenever the startup process completes successfully.
665   * <p>
666   * This ensures that the server provides a "last known good"
667   * configuration, which can be used as a reference (or copied into
668   * the active config) if the server fails to start with the current
669   * "active" configuration.
670   *
671   * @return Returns the value of the "save-config-on-successful-startup" property.
672   */
673  boolean isSaveConfigOnSuccessfulStartup();
674
675
676
677  /**
678   * Sets the "save-config-on-successful-startup" property.
679   * <p>
680   * Indicates whether the directory server should save a copy of its
681   * configuration whenever the startup process completes successfully.
682   * <p>
683   * This ensures that the server provides a "last known good"
684   * configuration, which can be used as a reference (or copied into
685   * the active config) if the server fails to start with the current
686   * "active" configuration.
687   *
688   * @param value The value of the "save-config-on-successful-startup" property.
689   * @throws PropertyException
690   *           If the new value is invalid.
691   */
692  void setSaveConfigOnSuccessfulStartup(Boolean value) throws PropertyException;
693
694
695
696  /**
697   * Gets the "server-error-result-code" property.
698   * <p>
699   * Specifies the numeric value of the result code when request
700   * processing fails due to an internal server error.
701   *
702   * @return Returns the value of the "server-error-result-code" property.
703   */
704  int getServerErrorResultCode();
705
706
707
708  /**
709   * Sets the "server-error-result-code" property.
710   * <p>
711   * Specifies the numeric value of the result code when request
712   * processing fails due to an internal server error.
713   *
714   * @param value The value of the "server-error-result-code" property.
715   * @throws PropertyException
716   *           If the new value is invalid.
717   */
718  void setServerErrorResultCode(Integer value) throws PropertyException;
719
720
721
722  /**
723   * Gets the "single-structural-objectclass-behavior" property.
724   * <p>
725   * Specifies how the directory server should handle operations an
726   * entry does not contain a structural object class or contains
727   * multiple structural classes.
728   *
729   * @return Returns the value of the "single-structural-objectclass-behavior" property.
730   */
731  SingleStructuralObjectclassBehavior getSingleStructuralObjectclassBehavior();
732
733
734
735  /**
736   * Sets the "single-structural-objectclass-behavior" property.
737   * <p>
738   * Specifies how the directory server should handle operations an
739   * entry does not contain a structural object class or contains
740   * multiple structural classes.
741   *
742   * @param value The value of the "single-structural-objectclass-behavior" property.
743   * @throws PropertyException
744   *           If the new value is invalid.
745   */
746  void setSingleStructuralObjectclassBehavior(SingleStructuralObjectclassBehavior value) throws PropertyException;
747
748
749
750  /**
751   * Gets the "size-limit" property.
752   * <p>
753   * Specifies the maximum number of entries that can be returned to
754   * the client during a single search operation.
755   * <p>
756   * A value of 0 indicates that no size limit is enforced. Note that
757   * this is the default server-wide limit, but it may be overridden on
758   * a per-user basis using the ds-rlim-size-limit operational
759   * attribute.
760   *
761   * @return Returns the value of the "size-limit" property.
762   */
763  int getSizeLimit();
764
765
766
767  /**
768   * Sets the "size-limit" property.
769   * <p>
770   * Specifies the maximum number of entries that can be returned to
771   * the client during a single search operation.
772   * <p>
773   * A value of 0 indicates that no size limit is enforced. Note that
774   * this is the default server-wide limit, but it may be overridden on
775   * a per-user basis using the ds-rlim-size-limit operational
776   * attribute.
777   *
778   * @param value The value of the "size-limit" property.
779   * @throws PropertyException
780   *           If the new value is invalid.
781   */
782  void setSizeLimit(Integer value) throws PropertyException;
783
784
785
786  /**
787   * Gets the "smtp-server" property.
788   * <p>
789   * Specifies the address (and optional port number) for a mail
790   * server that can be used to send email messages via SMTP.
791   * <p>
792   * It may be an IP address or resolvable hostname, optionally
793   * followed by a colon and a port number.
794   *
795   * @return Returns the values of the "smtp-server" property.
796   */
797  SortedSet<String> getSMTPServer();
798
799
800
801  /**
802   * Sets the "smtp-server" property.
803   * <p>
804   * Specifies the address (and optional port number) for a mail
805   * server that can be used to send email messages via SMTP.
806   * <p>
807   * It may be an IP address or resolvable hostname, optionally
808   * followed by a colon and a port number.
809   *
810   * @param values The values of the "smtp-server" property.
811   * @throws PropertyException
812   *           If one or more of the new values are invalid.
813   */
814  void setSMTPServer(Collection<String> values) throws PropertyException;
815
816
817
818  /**
819   * Gets the "time-limit" property.
820   * <p>
821   * Specifies the maximum length of time that should be spent
822   * processing a single search operation.
823   * <p>
824   * A value of 0 seconds indicates that no time limit is enforced.
825   * Note that this is the default server-wide time limit, but it may
826   * be overridden on a per-user basis using the ds-rlim-time-limit
827   * operational attribute.
828   *
829   * @return Returns the value of the "time-limit" property.
830   */
831  long getTimeLimit();
832
833
834
835  /**
836   * Sets the "time-limit" property.
837   * <p>
838   * Specifies the maximum length of time that should be spent
839   * processing a single search operation.
840   * <p>
841   * A value of 0 seconds indicates that no time limit is enforced.
842   * Note that this is the default server-wide time limit, but it may
843   * be overridden on a per-user basis using the ds-rlim-time-limit
844   * operational attribute.
845   *
846   * @param value The value of the "time-limit" property.
847   * @throws PropertyException
848   *           If the new value is invalid.
849   */
850  void setTimeLimit(Long value) throws PropertyException;
851
852
853
854  /**
855   * Gets the "trust-transaction-ids" property.
856   * <p>
857   * Indicates whether the directory server should trust the
858   * transaction ids that may be received from requests, either through
859   * a LDAP control or through a HTTP header.
860   *
861   * @return Returns the value of the "trust-transaction-ids" property.
862   */
863  boolean isTrustTransactionIds();
864
865
866
867  /**
868   * Sets the "trust-transaction-ids" property.
869   * <p>
870   * Indicates whether the directory server should trust the
871   * transaction ids that may be received from requests, either through
872   * a LDAP control or through a HTTP header.
873   *
874   * @param value The value of the "trust-transaction-ids" property.
875   * @throws PropertyException
876   *           If the new value is invalid.
877   */
878  void setTrustTransactionIds(Boolean value) throws PropertyException;
879
880
881
882  /**
883   * Gets the "writability-mode" property.
884   * <p>
885   * Specifies the kinds of write operations the directory server can
886   * process.
887   *
888   * @return Returns the value of the "writability-mode" property.
889   */
890  WritabilityMode getWritabilityMode();
891
892
893
894  /**
895   * Sets the "writability-mode" property.
896   * <p>
897   * Specifies the kinds of write operations the directory server can
898   * process.
899   *
900   * @param value The value of the "writability-mode" property.
901   * @throws PropertyException
902   *           If the new value is invalid.
903   */
904  void setWritabilityMode(WritabilityMode value) throws PropertyException;
905
906}