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 org.forgerock.opendj.config.client.ConcurrentModificationException;
022import org.forgerock.opendj.config.client.IllegalManagedObjectNameException;
023import org.forgerock.opendj.config.client.ManagedObjectDecodingException;
024import org.forgerock.opendj.config.client.OperationRejectedException;
025import org.forgerock.opendj.config.ConfigurationClient;
026import org.forgerock.opendj.config.DefinitionDecodingException;
027import org.forgerock.opendj.config.ManagedObjectDefinition;
028import org.forgerock.opendj.config.ManagedObjectNotFoundException;
029import org.forgerock.opendj.config.PropertyException;
030import org.forgerock.opendj.ldap.LdapException;
031import org.forgerock.opendj.server.config.server.AccountStatusNotificationHandlerCfg;
032import org.forgerock.opendj.server.config.server.AlertHandlerCfg;
033import org.forgerock.opendj.server.config.server.AttributeSyntaxCfg;
034import org.forgerock.opendj.server.config.server.AuthenticationPolicyCfg;
035import org.forgerock.opendj.server.config.server.BackendCfg;
036import org.forgerock.opendj.server.config.server.CertificateMapperCfg;
037import org.forgerock.opendj.server.config.server.ConnectionHandlerCfg;
038import org.forgerock.opendj.server.config.server.EntryCacheCfg;
039import org.forgerock.opendj.server.config.server.ExtendedOperationHandlerCfg;
040import org.forgerock.opendj.server.config.server.GroupImplementationCfg;
041import org.forgerock.opendj.server.config.server.IdentityMapperCfg;
042import org.forgerock.opendj.server.config.server.KeyManagerProviderCfg;
043import org.forgerock.opendj.server.config.server.LogPublisherCfg;
044import org.forgerock.opendj.server.config.server.LogRetentionPolicyCfg;
045import org.forgerock.opendj.server.config.server.LogRotationPolicyCfg;
046import org.forgerock.opendj.server.config.server.MatchingRuleCfg;
047import org.forgerock.opendj.server.config.server.MonitorProviderCfg;
048import org.forgerock.opendj.server.config.server.PasswordGeneratorCfg;
049import org.forgerock.opendj.server.config.server.PasswordStorageSchemeCfg;
050import org.forgerock.opendj.server.config.server.PasswordValidatorCfg;
051import org.forgerock.opendj.server.config.server.RootCfg;
052import org.forgerock.opendj.server.config.server.SASLMechanismHandlerCfg;
053import org.forgerock.opendj.server.config.server.SchemaProviderCfg;
054import org.forgerock.opendj.server.config.server.SynchronizationProviderCfg;
055import org.forgerock.opendj.server.config.server.TrustManagerProviderCfg;
056import org.forgerock.opendj.server.config.server.VirtualAttributeCfg;
057
058
059
060/**
061 * A client-side interface for reading and modifying Root settings.
062 * <p>
063 * The root configuration provides an entry point to the rest of the
064 * OpenDJ configuration.
065 */
066public interface RootCfgClient extends ConfigurationClient {
067
068  /**
069   * Get the configuration definition associated with this Root.
070   *
071   * @return Returns the configuration definition associated with this Root.
072   */
073  ManagedObjectDefinition<? extends RootCfgClient, ? extends RootCfg> definition();
074
075
076
077  /**
078   * Gets the Access Control Handler.
079   *
080   * @return Returns the Access Control Handler.
081   * @throws DefinitionDecodingException
082   *           If the Access Control Handler was found but its type
083   *           could not be determined.
084   * @throws ManagedObjectDecodingException
085   *           If the Access Control Handler was found but one or more
086   *           of its properties could not be decoded.
087   * @throws ManagedObjectNotFoundException
088   *           If the Access Control Handler could not be found on the
089   *           server.
090   * @throws ConcurrentModificationException
091   *           If this Root has been removed from the server by
092   *           another client.
093   * @throws LdapException
094   *           If any other error occurs.
095   */
096  AccessControlHandlerCfgClient getAccessControlHandler()
097      throws DefinitionDecodingException, ManagedObjectDecodingException,
098      ManagedObjectNotFoundException, ConcurrentModificationException,
099      LdapException;
100
101
102
103  /**
104   * Lists the Account Status Notification Handlers.
105   *
106   * @return Returns an array containing the names of the Account
107   *         Status Notification Handlers.
108   * @throws ConcurrentModificationException
109   *           If this Root has been removed from the server by
110   *           another client.
111   * @throws LdapException
112   *           If any other error occurs.
113   */
114  String[] listAccountStatusNotificationHandlers() throws ConcurrentModificationException,
115      LdapException;
116
117
118
119  /**
120   * Gets the named Account Status Notification Handler.
121   *
122   * @param name
123   *           The name of the Account Status Notification Handler to
124   *           retrieve.
125   * @return Returns the named Account Status Notification Handler.
126   * @throws DefinitionDecodingException
127   *           If the named Account Status Notification Handler was
128   *           found but its type could not be determined.
129   * @throws ManagedObjectDecodingException
130   *           If the named Account Status Notification Handler was
131   *           found but one or more of its properties could not be
132   *           decoded.
133   * @throws ManagedObjectNotFoundException
134   *           If the named Account Status Notification Handler was
135   *           not found on the server.
136   * @throws ConcurrentModificationException
137   *           If this Root has been removed from the server by
138   *           another client.
139   * @throws LdapException
140   *           If any other error occurs.
141   */
142  AccountStatusNotificationHandlerCfgClient getAccountStatusNotificationHandler(String name)
143      throws DefinitionDecodingException, ManagedObjectDecodingException,
144      ManagedObjectNotFoundException, ConcurrentModificationException,
145      LdapException;
146
147
148
149  /**
150   * Creates a new Account Status Notification Handler. The new
151   * Account Status Notification Handler will initially not contain any
152   * property values (including mandatory properties). Once the Account
153   * Status Notification Handler has been configured it can be added to
154   * the server using the {@link #commit()} method.
155   *
156   * @param <C>
157   *          The type of the Account Status Notification Handler
158   *          being created.
159   * @param d
160   *          The definition of the Account Status Notification
161   *          Handler to be created.
162   * @param name
163   *          The name of the new Account Status Notification Handler.
164   * @param exceptions
165   *          An optional collection in which to place any {@link
166   *          PropertyException}s that occurred whilst attempting to
167   *          determine the default values of the Account Status
168   *          Notification Handler. This argument can be
169   *          <code>null<code>.
170   * @return Returns a new Account Status Notification Handler
171   *         configuration instance.
172   * @throws IllegalManagedObjectNameException
173   *          If the name of the new Account Status Notification
174   *          Handler is invalid.
175   */
176  <C extends AccountStatusNotificationHandlerCfgClient> C createAccountStatusNotificationHandler(
177      ManagedObjectDefinition<C, ? extends AccountStatusNotificationHandlerCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
178
179
180
181  /**
182   * Removes the named Account Status Notification Handler.
183   *
184   * @param name
185   *          The name of the Account Status Notification Handler to
186   *          remove.
187   * @throws ManagedObjectNotFoundException
188   *           If the Account Status Notification Handler does not
189   *           exist.
190   * @throws OperationRejectedException
191   *           If the server refuses to remove the Account Status
192   *           Notification Handler due to some server-side constraint
193   *           which cannot be satisfied (for example, if it is
194   *           referenced by another managed object).
195   * @throws ConcurrentModificationException
196   *           If this Root has been removed from the server by
197   *           another client.
198   * @throws LdapException
199   *           If any other error occurs.
200   */
201  void removeAccountStatusNotificationHandler(String name)
202      throws ManagedObjectNotFoundException, OperationRejectedException,
203      ConcurrentModificationException, LdapException;
204
205
206
207  /**
208   * Gets the Administration Connector.
209   *
210   * @return Returns the Administration Connector.
211   * @throws DefinitionDecodingException
212   *           If the Administration Connector was found but its type
213   *           could not be determined.
214   * @throws ManagedObjectDecodingException
215   *           If the Administration Connector was found but one or
216   *           more of its properties could not be decoded.
217   * @throws ManagedObjectNotFoundException
218   *           If the Administration Connector could not be found on
219   *           the server.
220   * @throws ConcurrentModificationException
221   *           If this Root has been removed from the server by
222   *           another client.
223   * @throws LdapException
224   *           If any other error occurs.
225   */
226  AdministrationConnectorCfgClient getAdministrationConnector()
227      throws DefinitionDecodingException, ManagedObjectDecodingException,
228      ManagedObjectNotFoundException, ConcurrentModificationException,
229      LdapException;
230
231
232
233  /**
234   * Lists the Alert Handlers.
235   *
236   * @return Returns an array containing the names of the Alert
237   *         Handlers.
238   * @throws ConcurrentModificationException
239   *           If this Root has been removed from the server by
240   *           another client.
241   * @throws LdapException
242   *           If any other error occurs.
243   */
244  String[] listAlertHandlers() throws ConcurrentModificationException,
245      LdapException;
246
247
248
249  /**
250   * Gets the named Alert Handler.
251   *
252   * @param name
253   *           The name of the Alert Handler to retrieve.
254   * @return Returns the named Alert Handler.
255   * @throws DefinitionDecodingException
256   *           If the named Alert Handler was found but its type could
257   *           not be determined.
258   * @throws ManagedObjectDecodingException
259   *           If the named Alert Handler was found but one or more of
260   *           its properties could not be decoded.
261   * @throws ManagedObjectNotFoundException
262   *           If the named Alert Handler was not found on the server.
263   * @throws ConcurrentModificationException
264   *           If this Root has been removed from the server by
265   *           another client.
266   * @throws LdapException
267   *           If any other error occurs.
268   */
269  AlertHandlerCfgClient getAlertHandler(String name)
270      throws DefinitionDecodingException, ManagedObjectDecodingException,
271      ManagedObjectNotFoundException, ConcurrentModificationException,
272      LdapException;
273
274
275
276  /**
277   * Creates a new Alert Handler. The new Alert Handler will initially
278   * not contain any property values (including mandatory properties).
279   * Once the Alert Handler has been configured it can be added to the
280   * server using the {@link #commit()} method.
281   *
282   * @param <C>
283   *          The type of the Alert Handler being created.
284   * @param d
285   *          The definition of the Alert Handler to be created.
286   * @param name
287   *          The name of the new Alert Handler.
288   * @param exceptions
289   *          An optional collection in which to place any {@link
290   *          PropertyException}s that occurred whilst attempting to
291   *          determine the default values of the Alert Handler. This
292   *          argument can be <code>null<code>.
293   * @return Returns a new Alert Handler configuration instance.
294   * @throws IllegalManagedObjectNameException
295   *          If the name of the new Alert Handler is invalid.
296   */
297  <C extends AlertHandlerCfgClient> C createAlertHandler(
298      ManagedObjectDefinition<C, ? extends AlertHandlerCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
299
300
301
302  /**
303   * Removes the named Alert Handler.
304   *
305   * @param name
306   *          The name of the Alert Handler to remove.
307   * @throws ManagedObjectNotFoundException
308   *           If the Alert Handler does not exist.
309   * @throws OperationRejectedException
310   *           If the server refuses to remove the Alert Handler due
311   *           to some server-side constraint which cannot be satisfied
312   *           (for example, if it is referenced by another managed
313   *           object).
314   * @throws ConcurrentModificationException
315   *           If this Root has been removed from the server by
316   *           another client.
317   * @throws LdapException
318   *           If any other error occurs.
319   */
320  void removeAlertHandler(String name)
321      throws ManagedObjectNotFoundException, OperationRejectedException,
322      ConcurrentModificationException, LdapException;
323
324
325
326  /**
327   * Lists the Attribute Syntaxes.
328   *
329   * @return Returns an array containing the names of the Attribute
330   *         Syntaxes.
331   * @throws ConcurrentModificationException
332   *           If this Root has been removed from the server by
333   *           another client.
334   * @throws LdapException
335   *           If any other error occurs.
336   */
337  String[] listAttributeSyntaxes() throws ConcurrentModificationException,
338      LdapException;
339
340
341
342  /**
343   * Gets the named Attribute Syntax.
344   *
345   * @param name
346   *           The name of the Attribute Syntax to retrieve.
347   * @return Returns the named Attribute Syntax.
348   * @throws DefinitionDecodingException
349   *           If the named Attribute Syntax was found but its type
350   *           could not be determined.
351   * @throws ManagedObjectDecodingException
352   *           If the named Attribute Syntax was found but one or more
353   *           of its properties could not be decoded.
354   * @throws ManagedObjectNotFoundException
355   *           If the named Attribute Syntax was not found on the
356   *           server.
357   * @throws ConcurrentModificationException
358   *           If this Root has been removed from the server by
359   *           another client.
360   * @throws LdapException
361   *           If any other error occurs.
362   */
363  AttributeSyntaxCfgClient getAttributeSyntax(String name)
364      throws DefinitionDecodingException, ManagedObjectDecodingException,
365      ManagedObjectNotFoundException, ConcurrentModificationException,
366      LdapException;
367
368
369
370  /**
371   * Creates a new Attribute Syntax. The new Attribute Syntax will
372   * initially not contain any property values (including mandatory
373   * properties). Once the Attribute Syntax has been configured it can
374   * be added to the server using the {@link #commit()} method.
375   *
376   * @param <C>
377   *          The type of the Attribute Syntax being created.
378   * @param d
379   *          The definition of the Attribute Syntax to be created.
380   * @param name
381   *          The name of the new Attribute Syntax.
382   * @param exceptions
383   *          An optional collection in which to place any {@link
384   *          PropertyException}s that occurred whilst attempting to
385   *          determine the default values of the Attribute Syntax.
386   *          This argument can be <code>null<code>.
387   * @return Returns a new Attribute Syntax configuration instance.
388   * @throws IllegalManagedObjectNameException
389   *          If the name of the new Attribute Syntax is invalid.
390   */
391  <C extends AttributeSyntaxCfgClient> C createAttributeSyntax(
392      ManagedObjectDefinition<C, ? extends AttributeSyntaxCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
393
394
395
396  /**
397   * Removes the named Attribute Syntax.
398   *
399   * @param name
400   *          The name of the Attribute Syntax to remove.
401   * @throws ManagedObjectNotFoundException
402   *           If the Attribute Syntax does not exist.
403   * @throws OperationRejectedException
404   *           If the server refuses to remove the Attribute Syntax
405   *           due to some server-side constraint which cannot be
406   *           satisfied (for example, if it is referenced by another
407   *           managed object).
408   * @throws ConcurrentModificationException
409   *           If this Root has been removed from the server by
410   *           another client.
411   * @throws LdapException
412   *           If any other error occurs.
413   */
414  void removeAttributeSyntax(String name)
415      throws ManagedObjectNotFoundException, OperationRejectedException,
416      ConcurrentModificationException, LdapException;
417
418
419
420  /**
421   * Lists the Backends.
422   *
423   * @return Returns an array containing the names of the Backends.
424   * @throws ConcurrentModificationException
425   *           If this Root has been removed from the server by
426   *           another client.
427   * @throws LdapException
428   *           If any other error occurs.
429   */
430  String[] listBackends() throws ConcurrentModificationException,
431      LdapException;
432
433
434
435  /**
436   * Gets the named Backend.
437   *
438   * @param name
439   *           The name of the Backend to retrieve.
440   * @return Returns the named Backend.
441   * @throws DefinitionDecodingException
442   *           If the named Backend was found but its type could not
443   *           be determined.
444   * @throws ManagedObjectDecodingException
445   *           If the named Backend was found but one or more of its
446   *           properties could not be decoded.
447   * @throws ManagedObjectNotFoundException
448   *           If the named Backend was not found on the server.
449   * @throws ConcurrentModificationException
450   *           If this Root has been removed from the server by
451   *           another client.
452   * @throws LdapException
453   *           If any other error occurs.
454   */
455  BackendCfgClient getBackend(String name)
456      throws DefinitionDecodingException, ManagedObjectDecodingException,
457      ManagedObjectNotFoundException, ConcurrentModificationException,
458      LdapException;
459
460
461
462  /**
463   * Creates a new Backend. The new Backend will initially not contain
464   * any property values (including mandatory properties). Once the
465   * Backend has been configured it can be added to the server using
466   * the {@link #commit()} method.
467   *
468   * @param <C>
469   *          The type of the Backend being created.
470   * @param d
471   *          The definition of the Backend to be created.
472   * @param name
473   *          The name of the new Backend.
474   * @param exceptions
475   *          An optional collection in which to place any {@link
476   *          PropertyException}s that occurred whilst attempting to
477   *          determine the default values of the Backend. This
478   *          argument can be <code>null<code>.
479   * @return Returns a new Backend configuration instance.
480   * @throws IllegalManagedObjectNameException
481   *          If the name of the new Backend is invalid.
482   */
483  <C extends BackendCfgClient> C createBackend(
484      ManagedObjectDefinition<C, ? extends BackendCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
485
486
487
488  /**
489   * Removes the named Backend.
490   *
491   * @param name
492   *          The name of the Backend to remove.
493   * @throws ManagedObjectNotFoundException
494   *           If the Backend does not exist.
495   * @throws OperationRejectedException
496   *           If the server refuses to remove the Backend due to some
497   *           server-side constraint which cannot be satisfied (for
498   *           example, if it is referenced by another managed object).
499   * @throws ConcurrentModificationException
500   *           If this Root has been removed from the server by
501   *           another client.
502   * @throws LdapException
503   *           If any other error occurs.
504   */
505  void removeBackend(String name)
506      throws ManagedObjectNotFoundException, OperationRejectedException,
507      ConcurrentModificationException, LdapException;
508
509
510
511  /**
512   * Lists the Certificate Mappers.
513   *
514   * @return Returns an array containing the names of the Certificate
515   *         Mappers.
516   * @throws ConcurrentModificationException
517   *           If this Root has been removed from the server by
518   *           another client.
519   * @throws LdapException
520   *           If any other error occurs.
521   */
522  String[] listCertificateMappers() throws ConcurrentModificationException,
523      LdapException;
524
525
526
527  /**
528   * Gets the named Certificate Mapper.
529   *
530   * @param name
531   *           The name of the Certificate Mapper to retrieve.
532   * @return Returns the named Certificate Mapper.
533   * @throws DefinitionDecodingException
534   *           If the named Certificate Mapper was found but its type
535   *           could not be determined.
536   * @throws ManagedObjectDecodingException
537   *           If the named Certificate Mapper was found but one or
538   *           more of its properties could not be decoded.
539   * @throws ManagedObjectNotFoundException
540   *           If the named Certificate Mapper was not found on the
541   *           server.
542   * @throws ConcurrentModificationException
543   *           If this Root has been removed from the server by
544   *           another client.
545   * @throws LdapException
546   *           If any other error occurs.
547   */
548  CertificateMapperCfgClient getCertificateMapper(String name)
549      throws DefinitionDecodingException, ManagedObjectDecodingException,
550      ManagedObjectNotFoundException, ConcurrentModificationException,
551      LdapException;
552
553
554
555  /**
556   * Creates a new Certificate Mapper. The new Certificate Mapper will
557   * initially not contain any property values (including mandatory
558   * properties). Once the Certificate Mapper has been configured it
559   * can be added to the server using the {@link #commit()} method.
560   *
561   * @param <C>
562   *          The type of the Certificate Mapper being created.
563   * @param d
564   *          The definition of the Certificate Mapper to be created.
565   * @param name
566   *          The name of the new Certificate Mapper.
567   * @param exceptions
568   *          An optional collection in which to place any {@link
569   *          PropertyException}s that occurred whilst attempting to
570   *          determine the default values of the Certificate Mapper.
571   *          This argument can be <code>null<code>.
572   * @return Returns a new Certificate Mapper configuration instance.
573   * @throws IllegalManagedObjectNameException
574   *          If the name of the new Certificate Mapper is invalid.
575   */
576  <C extends CertificateMapperCfgClient> C createCertificateMapper(
577      ManagedObjectDefinition<C, ? extends CertificateMapperCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
578
579
580
581  /**
582   * Removes the named Certificate Mapper.
583   *
584   * @param name
585   *          The name of the Certificate Mapper to remove.
586   * @throws ManagedObjectNotFoundException
587   *           If the Certificate Mapper does not exist.
588   * @throws OperationRejectedException
589   *           If the server refuses to remove the Certificate Mapper
590   *           due to some server-side constraint which cannot be
591   *           satisfied (for example, if it is referenced by another
592   *           managed object).
593   * @throws ConcurrentModificationException
594   *           If this Root has been removed from the server by
595   *           another client.
596   * @throws LdapException
597   *           If any other error occurs.
598   */
599  void removeCertificateMapper(String name)
600      throws ManagedObjectNotFoundException, OperationRejectedException,
601      ConcurrentModificationException, LdapException;
602
603
604
605  /**
606   * Lists the Connection Handlers.
607   *
608   * @return Returns an array containing the names of the Connection
609   *         Handlers.
610   * @throws ConcurrentModificationException
611   *           If this Root has been removed from the server by
612   *           another client.
613   * @throws LdapException
614   *           If any other error occurs.
615   */
616  String[] listConnectionHandlers() throws ConcurrentModificationException,
617      LdapException;
618
619
620
621  /**
622   * Gets the named Connection Handler.
623   *
624   * @param name
625   *           The name of the Connection Handler to retrieve.
626   * @return Returns the named Connection Handler.
627   * @throws DefinitionDecodingException
628   *           If the named Connection Handler was found but its type
629   *           could not be determined.
630   * @throws ManagedObjectDecodingException
631   *           If the named Connection Handler was found but one or
632   *           more of its properties could not be decoded.
633   * @throws ManagedObjectNotFoundException
634   *           If the named Connection Handler was not found on the
635   *           server.
636   * @throws ConcurrentModificationException
637   *           If this Root has been removed from the server by
638   *           another client.
639   * @throws LdapException
640   *           If any other error occurs.
641   */
642  ConnectionHandlerCfgClient getConnectionHandler(String name)
643      throws DefinitionDecodingException, ManagedObjectDecodingException,
644      ManagedObjectNotFoundException, ConcurrentModificationException,
645      LdapException;
646
647
648
649  /**
650   * Creates a new Connection Handler. The new Connection Handler will
651   * initially not contain any property values (including mandatory
652   * properties). Once the Connection Handler has been configured it
653   * can be added to the server using the {@link #commit()} method.
654   *
655   * @param <C>
656   *          The type of the Connection Handler being created.
657   * @param d
658   *          The definition of the Connection Handler to be created.
659   * @param name
660   *          The name of the new Connection Handler.
661   * @param exceptions
662   *          An optional collection in which to place any {@link
663   *          PropertyException}s that occurred whilst attempting to
664   *          determine the default values of the Connection Handler.
665   *          This argument can be <code>null<code>.
666   * @return Returns a new Connection Handler configuration instance.
667   * @throws IllegalManagedObjectNameException
668   *          If the name of the new Connection Handler is invalid.
669   */
670  <C extends ConnectionHandlerCfgClient> C createConnectionHandler(
671      ManagedObjectDefinition<C, ? extends ConnectionHandlerCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
672
673
674
675  /**
676   * Removes the named Connection Handler.
677   *
678   * @param name
679   *          The name of the Connection Handler to remove.
680   * @throws ManagedObjectNotFoundException
681   *           If the Connection Handler does not exist.
682   * @throws OperationRejectedException
683   *           If the server refuses to remove the Connection Handler
684   *           due to some server-side constraint which cannot be
685   *           satisfied (for example, if it is referenced by another
686   *           managed object).
687   * @throws ConcurrentModificationException
688   *           If this Root has been removed from the server by
689   *           another client.
690   * @throws LdapException
691   *           If any other error occurs.
692   */
693  void removeConnectionHandler(String name)
694      throws ManagedObjectNotFoundException, OperationRejectedException,
695      ConcurrentModificationException, LdapException;
696
697
698
699  /**
700   * Gets the Crypto Manager.
701   *
702   * @return Returns the Crypto Manager.
703   * @throws DefinitionDecodingException
704   *           If the Crypto Manager was found but its type could not
705   *           be determined.
706   * @throws ManagedObjectDecodingException
707   *           If the Crypto Manager was found but one or more of its
708   *           properties could not be decoded.
709   * @throws ManagedObjectNotFoundException
710   *           If the Crypto Manager could not be found on the server.
711   * @throws ConcurrentModificationException
712   *           If this Root has been removed from the server by
713   *           another client.
714   * @throws LdapException
715   *           If any other error occurs.
716   */
717  CryptoManagerCfgClient getCryptoManager()
718      throws DefinitionDecodingException, ManagedObjectDecodingException,
719      ManagedObjectNotFoundException, ConcurrentModificationException,
720      LdapException;
721
722
723
724  /**
725   * Lists the Entry Caches.
726   *
727   * @return Returns an array containing the names of the Entry
728   *         Caches.
729   * @throws ConcurrentModificationException
730   *           If this Root has been removed from the server by
731   *           another client.
732   * @throws LdapException
733   *           If any other error occurs.
734   */
735  String[] listEntryCaches() throws ConcurrentModificationException,
736      LdapException;
737
738
739
740  /**
741   * Gets the named Entry Cache.
742   *
743   * @param name
744   *           The name of the Entry Cache to retrieve.
745   * @return Returns the named Entry Cache.
746   * @throws DefinitionDecodingException
747   *           If the named Entry Cache was found but its type could
748   *           not be determined.
749   * @throws ManagedObjectDecodingException
750   *           If the named Entry Cache was found but one or more of
751   *           its properties could not be decoded.
752   * @throws ManagedObjectNotFoundException
753   *           If the named Entry Cache was not found on the server.
754   * @throws ConcurrentModificationException
755   *           If this Root has been removed from the server by
756   *           another client.
757   * @throws LdapException
758   *           If any other error occurs.
759   */
760  EntryCacheCfgClient getEntryCache(String name)
761      throws DefinitionDecodingException, ManagedObjectDecodingException,
762      ManagedObjectNotFoundException, ConcurrentModificationException,
763      LdapException;
764
765
766
767  /**
768   * Creates a new Entry Cache. The new Entry Cache will initially not
769   * contain any property values (including mandatory properties). Once
770   * the Entry Cache has been configured it can be added to the server
771   * using the {@link #commit()} method.
772   *
773   * @param <C>
774   *          The type of the Entry Cache being created.
775   * @param d
776   *          The definition of the Entry Cache to be created.
777   * @param name
778   *          The name of the new Entry Cache.
779   * @param exceptions
780   *          An optional collection in which to place any {@link
781   *          PropertyException}s that occurred whilst attempting to
782   *          determine the default values of the Entry Cache. This
783   *          argument can be <code>null<code>.
784   * @return Returns a new Entry Cache configuration instance.
785   * @throws IllegalManagedObjectNameException
786   *          If the name of the new Entry Cache is invalid.
787   */
788  <C extends EntryCacheCfgClient> C createEntryCache(
789      ManagedObjectDefinition<C, ? extends EntryCacheCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
790
791
792
793  /**
794   * Removes the named Entry Cache.
795   *
796   * @param name
797   *          The name of the Entry Cache to remove.
798   * @throws ManagedObjectNotFoundException
799   *           If the Entry Cache does not exist.
800   * @throws OperationRejectedException
801   *           If the server refuses to remove the Entry Cache due to
802   *           some server-side constraint which cannot be satisfied
803   *           (for example, if it is referenced by another managed
804   *           object).
805   * @throws ConcurrentModificationException
806   *           If this Root has been removed from the server by
807   *           another client.
808   * @throws LdapException
809   *           If any other error occurs.
810   */
811  void removeEntryCache(String name)
812      throws ManagedObjectNotFoundException, OperationRejectedException,
813      ConcurrentModificationException, LdapException;
814
815
816
817  /**
818   * Lists the Extended Operation Handlers.
819   *
820   * @return Returns an array containing the names of the Extended
821   *         Operation Handlers.
822   * @throws ConcurrentModificationException
823   *           If this Root has been removed from the server by
824   *           another client.
825   * @throws LdapException
826   *           If any other error occurs.
827   */
828  String[] listExtendedOperationHandlers() throws ConcurrentModificationException,
829      LdapException;
830
831
832
833  /**
834   * Gets the named Extended Operation Handler.
835   *
836   * @param name
837   *           The name of the Extended Operation Handler to retrieve.
838   * @return Returns the named Extended Operation Handler.
839   * @throws DefinitionDecodingException
840   *           If the named Extended Operation Handler was found but
841   *           its type could not be determined.
842   * @throws ManagedObjectDecodingException
843   *           If the named Extended Operation Handler was found but
844   *           one or more of its properties could not be decoded.
845   * @throws ManagedObjectNotFoundException
846   *           If the named Extended Operation Handler was not found
847   *           on the server.
848   * @throws ConcurrentModificationException
849   *           If this Root has been removed from the server by
850   *           another client.
851   * @throws LdapException
852   *           If any other error occurs.
853   */
854  ExtendedOperationHandlerCfgClient getExtendedOperationHandler(String name)
855      throws DefinitionDecodingException, ManagedObjectDecodingException,
856      ManagedObjectNotFoundException, ConcurrentModificationException,
857      LdapException;
858
859
860
861  /**
862   * Creates a new Extended Operation Handler. The new Extended
863   * Operation Handler will initially not contain any property values
864   * (including mandatory properties). Once the Extended Operation
865   * Handler has been configured it can be added to the server using
866   * the {@link #commit()} method.
867   *
868   * @param <C>
869   *          The type of the Extended Operation Handler being
870   *          created.
871   * @param d
872   *          The definition of the Extended Operation Handler to be
873   *          created.
874   * @param name
875   *          The name of the new Extended Operation Handler.
876   * @param exceptions
877   *          An optional collection in which to place any {@link
878   *          PropertyException}s that occurred whilst attempting to
879   *          determine the default values of the Extended Operation
880   *          Handler. This argument can be <code>null<code>.
881   * @return Returns a new Extended Operation Handler configuration
882   *         instance.
883   * @throws IllegalManagedObjectNameException
884   *          If the name of the new Extended Operation Handler is
885   *          invalid.
886   */
887  <C extends ExtendedOperationHandlerCfgClient> C createExtendedOperationHandler(
888      ManagedObjectDefinition<C, ? extends ExtendedOperationHandlerCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
889
890
891
892  /**
893   * Removes the named Extended Operation Handler.
894   *
895   * @param name
896   *          The name of the Extended Operation Handler to remove.
897   * @throws ManagedObjectNotFoundException
898   *           If the Extended Operation Handler does not exist.
899   * @throws OperationRejectedException
900   *           If the server refuses to remove the Extended Operation
901   *           Handler due to some server-side constraint which cannot
902   *           be satisfied (for example, if it is referenced by
903   *           another managed object).
904   * @throws ConcurrentModificationException
905   *           If this Root has been removed from the server by
906   *           another client.
907   * @throws LdapException
908   *           If any other error occurs.
909   */
910  void removeExtendedOperationHandler(String name)
911      throws ManagedObjectNotFoundException, OperationRejectedException,
912      ConcurrentModificationException, LdapException;
913
914
915
916  /**
917   * Gets the Global Configuration.
918   *
919   * @return Returns the Global Configuration.
920   * @throws DefinitionDecodingException
921   *           If the Global Configuration was found but its type
922   *           could not be determined.
923   * @throws ManagedObjectDecodingException
924   *           If the Global Configuration was found but one or more
925   *           of its properties could not be decoded.
926   * @throws ManagedObjectNotFoundException
927   *           If the Global Configuration could not be found on the
928   *           server.
929   * @throws ConcurrentModificationException
930   *           If this Root has been removed from the server by
931   *           another client.
932   * @throws LdapException
933   *           If any other error occurs.
934   */
935  GlobalCfgClient getGlobalConfiguration()
936      throws DefinitionDecodingException, ManagedObjectDecodingException,
937      ManagedObjectNotFoundException, ConcurrentModificationException,
938      LdapException;
939
940
941
942  /**
943   * Lists the Group Implementations.
944   *
945   * @return Returns an array containing the names of the Group
946   *         Implementations.
947   * @throws ConcurrentModificationException
948   *           If this Root has been removed from the server by
949   *           another client.
950   * @throws LdapException
951   *           If any other error occurs.
952   */
953  String[] listGroupImplementations() throws ConcurrentModificationException,
954      LdapException;
955
956
957
958  /**
959   * Gets the named Group Implementation.
960   *
961   * @param name
962   *           The name of the Group Implementation to retrieve.
963   * @return Returns the named Group Implementation.
964   * @throws DefinitionDecodingException
965   *           If the named Group Implementation was found but its
966   *           type could not be determined.
967   * @throws ManagedObjectDecodingException
968   *           If the named Group Implementation was found but one or
969   *           more of its properties could not be decoded.
970   * @throws ManagedObjectNotFoundException
971   *           If the named Group Implementation was not found on the
972   *           server.
973   * @throws ConcurrentModificationException
974   *           If this Root has been removed from the server by
975   *           another client.
976   * @throws LdapException
977   *           If any other error occurs.
978   */
979  GroupImplementationCfgClient getGroupImplementation(String name)
980      throws DefinitionDecodingException, ManagedObjectDecodingException,
981      ManagedObjectNotFoundException, ConcurrentModificationException,
982      LdapException;
983
984
985
986  /**
987   * Creates a new Group Implementation. The new Group Implementation
988   * will initially not contain any property values (including
989   * mandatory properties). Once the Group Implementation has been
990   * configured it can be added to the server using the {@link
991   * #commit()} method.
992   *
993   * @param <C>
994   *          The type of the Group Implementation being created.
995   * @param d
996   *          The definition of the Group Implementation to be
997   *          created.
998   * @param name
999   *          The name of the new Group Implementation.
1000   * @param exceptions
1001   *          An optional collection in which to place any {@link
1002   *          PropertyException}s that occurred whilst attempting to
1003   *          determine the default values of the Group Implementation.
1004   *          This argument can be <code>null<code>.
1005   * @return Returns a new Group Implementation configuration
1006   *         instance.
1007   * @throws IllegalManagedObjectNameException
1008   *          If the name of the new Group Implementation is invalid.
1009   */
1010  <C extends GroupImplementationCfgClient> C createGroupImplementation(
1011      ManagedObjectDefinition<C, ? extends GroupImplementationCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
1012
1013
1014
1015  /**
1016   * Removes the named Group Implementation.
1017   *
1018   * @param name
1019   *          The name of the Group Implementation to remove.
1020   * @throws ManagedObjectNotFoundException
1021   *           If the Group Implementation does not exist.
1022   * @throws OperationRejectedException
1023   *           If the server refuses to remove the Group
1024   *           Implementation due to some server-side constraint which
1025   *           cannot be satisfied (for example, if it is referenced by
1026   *           another managed object).
1027   * @throws ConcurrentModificationException
1028   *           If this Root has been removed from the server by
1029   *           another client.
1030   * @throws LdapException
1031   *           If any other error occurs.
1032   */
1033  void removeGroupImplementation(String name)
1034      throws ManagedObjectNotFoundException, OperationRejectedException,
1035      ConcurrentModificationException, LdapException;
1036
1037
1038
1039  /**
1040   * Lists the Identity Mappers.
1041   *
1042   * @return Returns an array containing the names of the Identity
1043   *         Mappers.
1044   * @throws ConcurrentModificationException
1045   *           If this Root has been removed from the server by
1046   *           another client.
1047   * @throws LdapException
1048   *           If any other error occurs.
1049   */
1050  String[] listIdentityMappers() throws ConcurrentModificationException,
1051      LdapException;
1052
1053
1054
1055  /**
1056   * Gets the named Identity Mapper.
1057   *
1058   * @param name
1059   *           The name of the Identity Mapper to retrieve.
1060   * @return Returns the named Identity Mapper.
1061   * @throws DefinitionDecodingException
1062   *           If the named Identity Mapper was found but its type
1063   *           could not be determined.
1064   * @throws ManagedObjectDecodingException
1065   *           If the named Identity Mapper was found but one or more
1066   *           of its properties could not be decoded.
1067   * @throws ManagedObjectNotFoundException
1068   *           If the named Identity Mapper was not found on the
1069   *           server.
1070   * @throws ConcurrentModificationException
1071   *           If this Root has been removed from the server by
1072   *           another client.
1073   * @throws LdapException
1074   *           If any other error occurs.
1075   */
1076  IdentityMapperCfgClient getIdentityMapper(String name)
1077      throws DefinitionDecodingException, ManagedObjectDecodingException,
1078      ManagedObjectNotFoundException, ConcurrentModificationException,
1079      LdapException;
1080
1081
1082
1083  /**
1084   * Creates a new Identity Mapper. The new Identity Mapper will
1085   * initially not contain any property values (including mandatory
1086   * properties). Once the Identity Mapper has been configured it can
1087   * be added to the server using the {@link #commit()} method.
1088   *
1089   * @param <C>
1090   *          The type of the Identity Mapper being created.
1091   * @param d
1092   *          The definition of the Identity Mapper to be created.
1093   * @param name
1094   *          The name of the new Identity Mapper.
1095   * @param exceptions
1096   *          An optional collection in which to place any {@link
1097   *          PropertyException}s that occurred whilst attempting to
1098   *          determine the default values of the Identity Mapper. This
1099   *          argument can be <code>null<code>.
1100   * @return Returns a new Identity Mapper configuration instance.
1101   * @throws IllegalManagedObjectNameException
1102   *          If the name of the new Identity Mapper is invalid.
1103   */
1104  <C extends IdentityMapperCfgClient> C createIdentityMapper(
1105      ManagedObjectDefinition<C, ? extends IdentityMapperCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
1106
1107
1108
1109  /**
1110   * Removes the named Identity Mapper.
1111   *
1112   * @param name
1113   *          The name of the Identity Mapper to remove.
1114   * @throws ManagedObjectNotFoundException
1115   *           If the Identity Mapper does not exist.
1116   * @throws OperationRejectedException
1117   *           If the server refuses to remove the Identity Mapper due
1118   *           to some server-side constraint which cannot be satisfied
1119   *           (for example, if it is referenced by another managed
1120   *           object).
1121   * @throws ConcurrentModificationException
1122   *           If this Root has been removed from the server by
1123   *           another client.
1124   * @throws LdapException
1125   *           If any other error occurs.
1126   */
1127  void removeIdentityMapper(String name)
1128      throws ManagedObjectNotFoundException, OperationRejectedException,
1129      ConcurrentModificationException, LdapException;
1130
1131
1132
1133  /**
1134   * Lists the Key Manager Providers.
1135   *
1136   * @return Returns an array containing the names of the Key Manager
1137   *         Providers.
1138   * @throws ConcurrentModificationException
1139   *           If this Root has been removed from the server by
1140   *           another client.
1141   * @throws LdapException
1142   *           If any other error occurs.
1143   */
1144  String[] listKeyManagerProviders() throws ConcurrentModificationException,
1145      LdapException;
1146
1147
1148
1149  /**
1150   * Gets the named Key Manager Provider.
1151   *
1152   * @param name
1153   *           The name of the Key Manager Provider to retrieve.
1154   * @return Returns the named Key Manager Provider.
1155   * @throws DefinitionDecodingException
1156   *           If the named Key Manager Provider was found but its
1157   *           type could not be determined.
1158   * @throws ManagedObjectDecodingException
1159   *           If the named Key Manager Provider was found but one or
1160   *           more of its properties could not be decoded.
1161   * @throws ManagedObjectNotFoundException
1162   *           If the named Key Manager Provider was not found on the
1163   *           server.
1164   * @throws ConcurrentModificationException
1165   *           If this Root has been removed from the server by
1166   *           another client.
1167   * @throws LdapException
1168   *           If any other error occurs.
1169   */
1170  KeyManagerProviderCfgClient getKeyManagerProvider(String name)
1171      throws DefinitionDecodingException, ManagedObjectDecodingException,
1172      ManagedObjectNotFoundException, ConcurrentModificationException,
1173      LdapException;
1174
1175
1176
1177  /**
1178   * Creates a new Key Manager Provider. The new Key Manager Provider
1179   * will initially not contain any property values (including
1180   * mandatory properties). Once the Key Manager Provider has been
1181   * configured it can be added to the server using the {@link
1182   * #commit()} method.
1183   *
1184   * @param <C>
1185   *          The type of the Key Manager Provider being created.
1186   * @param d
1187   *          The definition of the Key Manager Provider to be
1188   *          created.
1189   * @param name
1190   *          The name of the new Key Manager Provider.
1191   * @param exceptions
1192   *          An optional collection in which to place any {@link
1193   *          PropertyException}s that occurred whilst attempting to
1194   *          determine the default values of the Key Manager Provider.
1195   *          This argument can be <code>null<code>.
1196   * @return Returns a new Key Manager Provider configuration
1197   *         instance.
1198   * @throws IllegalManagedObjectNameException
1199   *          If the name of the new Key Manager Provider is invalid.
1200   */
1201  <C extends KeyManagerProviderCfgClient> C createKeyManagerProvider(
1202      ManagedObjectDefinition<C, ? extends KeyManagerProviderCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
1203
1204
1205
1206  /**
1207   * Removes the named Key Manager Provider.
1208   *
1209   * @param name
1210   *          The name of the Key Manager Provider to remove.
1211   * @throws ManagedObjectNotFoundException
1212   *           If the Key Manager Provider does not exist.
1213   * @throws OperationRejectedException
1214   *           If the server refuses to remove the Key Manager
1215   *           Provider due to some server-side constraint which cannot
1216   *           be satisfied (for example, if it is referenced by
1217   *           another managed object).
1218   * @throws ConcurrentModificationException
1219   *           If this Root has been removed from the server by
1220   *           another client.
1221   * @throws LdapException
1222   *           If any other error occurs.
1223   */
1224  void removeKeyManagerProvider(String name)
1225      throws ManagedObjectNotFoundException, OperationRejectedException,
1226      ConcurrentModificationException, LdapException;
1227
1228
1229
1230  /**
1231   * Lists the Log Publishers.
1232   *
1233   * @return Returns an array containing the names of the Log
1234   *         Publishers.
1235   * @throws ConcurrentModificationException
1236   *           If this Root has been removed from the server by
1237   *           another client.
1238   * @throws LdapException
1239   *           If any other error occurs.
1240   */
1241  String[] listLogPublishers() throws ConcurrentModificationException,
1242      LdapException;
1243
1244
1245
1246  /**
1247   * Gets the named Log Publisher.
1248   *
1249   * @param name
1250   *           The name of the Log Publisher to retrieve.
1251   * @return Returns the named Log Publisher.
1252   * @throws DefinitionDecodingException
1253   *           If the named Log Publisher was found but its type could
1254   *           not be determined.
1255   * @throws ManagedObjectDecodingException
1256   *           If the named Log Publisher was found but one or more of
1257   *           its properties could not be decoded.
1258   * @throws ManagedObjectNotFoundException
1259   *           If the named Log Publisher was not found on the server.
1260   * @throws ConcurrentModificationException
1261   *           If this Root has been removed from the server by
1262   *           another client.
1263   * @throws LdapException
1264   *           If any other error occurs.
1265   */
1266  LogPublisherCfgClient getLogPublisher(String name)
1267      throws DefinitionDecodingException, ManagedObjectDecodingException,
1268      ManagedObjectNotFoundException, ConcurrentModificationException,
1269      LdapException;
1270
1271
1272
1273  /**
1274   * Creates a new Log Publisher. The new Log Publisher will initially
1275   * not contain any property values (including mandatory properties).
1276   * Once the Log Publisher has been configured it can be added to the
1277   * server using the {@link #commit()} method.
1278   *
1279   * @param <C>
1280   *          The type of the Log Publisher being created.
1281   * @param d
1282   *          The definition of the Log Publisher to be created.
1283   * @param name
1284   *          The name of the new Log Publisher.
1285   * @param exceptions
1286   *          An optional collection in which to place any {@link
1287   *          PropertyException}s that occurred whilst attempting to
1288   *          determine the default values of the Log Publisher. This
1289   *          argument can be <code>null<code>.
1290   * @return Returns a new Log Publisher configuration instance.
1291   * @throws IllegalManagedObjectNameException
1292   *          If the name of the new Log Publisher is invalid.
1293   */
1294  <C extends LogPublisherCfgClient> C createLogPublisher(
1295      ManagedObjectDefinition<C, ? extends LogPublisherCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
1296
1297
1298
1299  /**
1300   * Removes the named Log Publisher.
1301   *
1302   * @param name
1303   *          The name of the Log Publisher to remove.
1304   * @throws ManagedObjectNotFoundException
1305   *           If the Log Publisher does not exist.
1306   * @throws OperationRejectedException
1307   *           If the server refuses to remove the Log Publisher due
1308   *           to some server-side constraint which cannot be satisfied
1309   *           (for example, if it is referenced by another managed
1310   *           object).
1311   * @throws ConcurrentModificationException
1312   *           If this Root has been removed from the server by
1313   *           another client.
1314   * @throws LdapException
1315   *           If any other error occurs.
1316   */
1317  void removeLogPublisher(String name)
1318      throws ManagedObjectNotFoundException, OperationRejectedException,
1319      ConcurrentModificationException, LdapException;
1320
1321
1322
1323  /**
1324   * Lists the Log Retention Policies.
1325   *
1326   * @return Returns an array containing the names of the Log
1327   *         Retention Policies.
1328   * @throws ConcurrentModificationException
1329   *           If this Root has been removed from the server by
1330   *           another client.
1331   * @throws LdapException
1332   *           If any other error occurs.
1333   */
1334  String[] listLogRetentionPolicies() throws ConcurrentModificationException,
1335      LdapException;
1336
1337
1338
1339  /**
1340   * Gets the named Log Retention Policy.
1341   *
1342   * @param name
1343   *           The name of the Log Retention Policy to retrieve.
1344   * @return Returns the named Log Retention Policy.
1345   * @throws DefinitionDecodingException
1346   *           If the named Log Retention Policy was found but its
1347   *           type could not be determined.
1348   * @throws ManagedObjectDecodingException
1349   *           If the named Log Retention Policy was found but one or
1350   *           more of its properties could not be decoded.
1351   * @throws ManagedObjectNotFoundException
1352   *           If the named Log Retention Policy was not found on the
1353   *           server.
1354   * @throws ConcurrentModificationException
1355   *           If this Root has been removed from the server by
1356   *           another client.
1357   * @throws LdapException
1358   *           If any other error occurs.
1359   */
1360  LogRetentionPolicyCfgClient getLogRetentionPolicy(String name)
1361      throws DefinitionDecodingException, ManagedObjectDecodingException,
1362      ManagedObjectNotFoundException, ConcurrentModificationException,
1363      LdapException;
1364
1365
1366
1367  /**
1368   * Creates a new Log Retention Policy. The new Log Retention Policy
1369   * will initially not contain any property values (including
1370   * mandatory properties). Once the Log Retention Policy has been
1371   * configured it can be added to the server using the {@link
1372   * #commit()} method.
1373   *
1374   * @param <C>
1375   *          The type of the Log Retention Policy being created.
1376   * @param d
1377   *          The definition of the Log Retention Policy to be
1378   *          created.
1379   * @param name
1380   *          The name of the new Log Retention Policy.
1381   * @param exceptions
1382   *          An optional collection in which to place any {@link
1383   *          PropertyException}s that occurred whilst attempting to
1384   *          determine the default values of the Log Retention Policy.
1385   *          This argument can be <code>null<code>.
1386   * @return Returns a new Log Retention Policy configuration
1387   *         instance.
1388   * @throws IllegalManagedObjectNameException
1389   *          If the name of the new Log Retention Policy is invalid.
1390   */
1391  <C extends LogRetentionPolicyCfgClient> C createLogRetentionPolicy(
1392      ManagedObjectDefinition<C, ? extends LogRetentionPolicyCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
1393
1394
1395
1396  /**
1397   * Removes the named Log Retention Policy.
1398   *
1399   * @param name
1400   *          The name of the Log Retention Policy to remove.
1401   * @throws ManagedObjectNotFoundException
1402   *           If the Log Retention Policy does not exist.
1403   * @throws OperationRejectedException
1404   *           If the server refuses to remove the Log Retention
1405   *           Policy due to some server-side constraint which cannot
1406   *           be satisfied (for example, if it is referenced by
1407   *           another managed object).
1408   * @throws ConcurrentModificationException
1409   *           If this Root has been removed from the server by
1410   *           another client.
1411   * @throws LdapException
1412   *           If any other error occurs.
1413   */
1414  void removeLogRetentionPolicy(String name)
1415      throws ManagedObjectNotFoundException, OperationRejectedException,
1416      ConcurrentModificationException, LdapException;
1417
1418
1419
1420  /**
1421   * Lists the Log Rotation Policies.
1422   *
1423   * @return Returns an array containing the names of the Log Rotation
1424   *         Policies.
1425   * @throws ConcurrentModificationException
1426   *           If this Root has been removed from the server by
1427   *           another client.
1428   * @throws LdapException
1429   *           If any other error occurs.
1430   */
1431  String[] listLogRotationPolicies() throws ConcurrentModificationException,
1432      LdapException;
1433
1434
1435
1436  /**
1437   * Gets the named Log Rotation Policy.
1438   *
1439   * @param name
1440   *           The name of the Log Rotation Policy to retrieve.
1441   * @return Returns the named Log Rotation Policy.
1442   * @throws DefinitionDecodingException
1443   *           If the named Log Rotation Policy was found but its type
1444   *           could not be determined.
1445   * @throws ManagedObjectDecodingException
1446   *           If the named Log Rotation Policy was found but one or
1447   *           more of its properties could not be decoded.
1448   * @throws ManagedObjectNotFoundException
1449   *           If the named Log Rotation Policy was not found on the
1450   *           server.
1451   * @throws ConcurrentModificationException
1452   *           If this Root has been removed from the server by
1453   *           another client.
1454   * @throws LdapException
1455   *           If any other error occurs.
1456   */
1457  LogRotationPolicyCfgClient getLogRotationPolicy(String name)
1458      throws DefinitionDecodingException, ManagedObjectDecodingException,
1459      ManagedObjectNotFoundException, ConcurrentModificationException,
1460      LdapException;
1461
1462
1463
1464  /**
1465   * Creates a new Log Rotation Policy. The new Log Rotation Policy
1466   * will initially not contain any property values (including
1467   * mandatory properties). Once the Log Rotation Policy has been
1468   * configured it can be added to the server using the {@link
1469   * #commit()} method.
1470   *
1471   * @param <C>
1472   *          The type of the Log Rotation Policy being created.
1473   * @param d
1474   *          The definition of the Log Rotation Policy to be created.
1475   * @param name
1476   *          The name of the new Log Rotation Policy.
1477   * @param exceptions
1478   *          An optional collection in which to place any {@link
1479   *          PropertyException}s that occurred whilst attempting to
1480   *          determine the default values of the Log Rotation Policy.
1481   *          This argument can be <code>null<code>.
1482   * @return Returns a new Log Rotation Policy configuration instance.
1483   * @throws IllegalManagedObjectNameException
1484   *          If the name of the new Log Rotation Policy is invalid.
1485   */
1486  <C extends LogRotationPolicyCfgClient> C createLogRotationPolicy(
1487      ManagedObjectDefinition<C, ? extends LogRotationPolicyCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
1488
1489
1490
1491  /**
1492   * Removes the named Log Rotation Policy.
1493   *
1494   * @param name
1495   *          The name of the Log Rotation Policy to remove.
1496   * @throws ManagedObjectNotFoundException
1497   *           If the Log Rotation Policy does not exist.
1498   * @throws OperationRejectedException
1499   *           If the server refuses to remove the Log Rotation Policy
1500   *           due to some server-side constraint which cannot be
1501   *           satisfied (for example, if it is referenced by another
1502   *           managed object).
1503   * @throws ConcurrentModificationException
1504   *           If this Root has been removed from the server by
1505   *           another client.
1506   * @throws LdapException
1507   *           If any other error occurs.
1508   */
1509  void removeLogRotationPolicy(String name)
1510      throws ManagedObjectNotFoundException, OperationRejectedException,
1511      ConcurrentModificationException, LdapException;
1512
1513
1514
1515  /**
1516   * Lists the Matching Rules.
1517   *
1518   * @return Returns an array containing the names of the Matching
1519   *         Rules.
1520   * @throws ConcurrentModificationException
1521   *           If this Root has been removed from the server by
1522   *           another client.
1523   * @throws LdapException
1524   *           If any other error occurs.
1525   */
1526  String[] listMatchingRules() throws ConcurrentModificationException,
1527      LdapException;
1528
1529
1530
1531  /**
1532   * Gets the named Matching Rule.
1533   *
1534   * @param name
1535   *           The name of the Matching Rule to retrieve.
1536   * @return Returns the named Matching Rule.
1537   * @throws DefinitionDecodingException
1538   *           If the named Matching Rule was found but its type could
1539   *           not be determined.
1540   * @throws ManagedObjectDecodingException
1541   *           If the named Matching Rule was found but one or more of
1542   *           its properties could not be decoded.
1543   * @throws ManagedObjectNotFoundException
1544   *           If the named Matching Rule was not found on the server.
1545   * @throws ConcurrentModificationException
1546   *           If this Root has been removed from the server by
1547   *           another client.
1548   * @throws LdapException
1549   *           If any other error occurs.
1550   */
1551  MatchingRuleCfgClient getMatchingRule(String name)
1552      throws DefinitionDecodingException, ManagedObjectDecodingException,
1553      ManagedObjectNotFoundException, ConcurrentModificationException,
1554      LdapException;
1555
1556
1557
1558  /**
1559   * Creates a new Matching Rule. The new Matching Rule will initially
1560   * not contain any property values (including mandatory properties).
1561   * Once the Matching Rule has been configured it can be added to the
1562   * server using the {@link #commit()} method.
1563   *
1564   * @param <C>
1565   *          The type of the Matching Rule being created.
1566   * @param d
1567   *          The definition of the Matching Rule to be created.
1568   * @param name
1569   *          The name of the new Matching Rule.
1570   * @param exceptions
1571   *          An optional collection in which to place any {@link
1572   *          PropertyException}s that occurred whilst attempting to
1573   *          determine the default values of the Matching Rule. This
1574   *          argument can be <code>null<code>.
1575   * @return Returns a new Matching Rule configuration instance.
1576   * @throws IllegalManagedObjectNameException
1577   *          If the name of the new Matching Rule is invalid.
1578   */
1579  <C extends MatchingRuleCfgClient> C createMatchingRule(
1580      ManagedObjectDefinition<C, ? extends MatchingRuleCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
1581
1582
1583
1584  /**
1585   * Removes the named Matching Rule.
1586   *
1587   * @param name
1588   *          The name of the Matching Rule to remove.
1589   * @throws ManagedObjectNotFoundException
1590   *           If the Matching Rule does not exist.
1591   * @throws OperationRejectedException
1592   *           If the server refuses to remove the Matching Rule due
1593   *           to some server-side constraint which cannot be satisfied
1594   *           (for example, if it is referenced by another managed
1595   *           object).
1596   * @throws ConcurrentModificationException
1597   *           If this Root has been removed from the server by
1598   *           another client.
1599   * @throws LdapException
1600   *           If any other error occurs.
1601   */
1602  void removeMatchingRule(String name)
1603      throws ManagedObjectNotFoundException, OperationRejectedException,
1604      ConcurrentModificationException, LdapException;
1605
1606
1607
1608  /**
1609   * Lists the Monitor Providers.
1610   *
1611   * @return Returns an array containing the names of the Monitor
1612   *         Providers.
1613   * @throws ConcurrentModificationException
1614   *           If this Root has been removed from the server by
1615   *           another client.
1616   * @throws LdapException
1617   *           If any other error occurs.
1618   */
1619  String[] listMonitorProviders() throws ConcurrentModificationException,
1620      LdapException;
1621
1622
1623
1624  /**
1625   * Gets the named Monitor Provider.
1626   *
1627   * @param name
1628   *           The name of the Monitor Provider to retrieve.
1629   * @return Returns the named Monitor Provider.
1630   * @throws DefinitionDecodingException
1631   *           If the named Monitor Provider was found but its type
1632   *           could not be determined.
1633   * @throws ManagedObjectDecodingException
1634   *           If the named Monitor Provider was found but one or more
1635   *           of its properties could not be decoded.
1636   * @throws ManagedObjectNotFoundException
1637   *           If the named Monitor Provider was not found on the
1638   *           server.
1639   * @throws ConcurrentModificationException
1640   *           If this Root has been removed from the server by
1641   *           another client.
1642   * @throws LdapException
1643   *           If any other error occurs.
1644   */
1645  MonitorProviderCfgClient getMonitorProvider(String name)
1646      throws DefinitionDecodingException, ManagedObjectDecodingException,
1647      ManagedObjectNotFoundException, ConcurrentModificationException,
1648      LdapException;
1649
1650
1651
1652  /**
1653   * Creates a new Monitor Provider. The new Monitor Provider will
1654   * initially not contain any property values (including mandatory
1655   * properties). Once the Monitor Provider has been configured it can
1656   * be added to the server using the {@link #commit()} method.
1657   *
1658   * @param <C>
1659   *          The type of the Monitor Provider being created.
1660   * @param d
1661   *          The definition of the Monitor Provider to be created.
1662   * @param name
1663   *          The name of the new Monitor Provider.
1664   * @param exceptions
1665   *          An optional collection in which to place any {@link
1666   *          PropertyException}s that occurred whilst attempting to
1667   *          determine the default values of the Monitor Provider.
1668   *          This argument can be <code>null<code>.
1669   * @return Returns a new Monitor Provider configuration instance.
1670   * @throws IllegalManagedObjectNameException
1671   *          If the name of the new Monitor Provider is invalid.
1672   */
1673  <C extends MonitorProviderCfgClient> C createMonitorProvider(
1674      ManagedObjectDefinition<C, ? extends MonitorProviderCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
1675
1676
1677
1678  /**
1679   * Removes the named Monitor Provider.
1680   *
1681   * @param name
1682   *          The name of the Monitor Provider to remove.
1683   * @throws ManagedObjectNotFoundException
1684   *           If the Monitor Provider does not exist.
1685   * @throws OperationRejectedException
1686   *           If the server refuses to remove the Monitor Provider
1687   *           due to some server-side constraint which cannot be
1688   *           satisfied (for example, if it is referenced by another
1689   *           managed object).
1690   * @throws ConcurrentModificationException
1691   *           If this Root has been removed from the server by
1692   *           another client.
1693   * @throws LdapException
1694   *           If any other error occurs.
1695   */
1696  void removeMonitorProvider(String name)
1697      throws ManagedObjectNotFoundException, OperationRejectedException,
1698      ConcurrentModificationException, LdapException;
1699
1700
1701
1702  /**
1703   * Lists the Password Generators.
1704   *
1705   * @return Returns an array containing the names of the Password
1706   *         Generators.
1707   * @throws ConcurrentModificationException
1708   *           If this Root has been removed from the server by
1709   *           another client.
1710   * @throws LdapException
1711   *           If any other error occurs.
1712   */
1713  String[] listPasswordGenerators() throws ConcurrentModificationException,
1714      LdapException;
1715
1716
1717
1718  /**
1719   * Gets the named Password Generator.
1720   *
1721   * @param name
1722   *           The name of the Password Generator to retrieve.
1723   * @return Returns the named Password Generator.
1724   * @throws DefinitionDecodingException
1725   *           If the named Password Generator was found but its type
1726   *           could not be determined.
1727   * @throws ManagedObjectDecodingException
1728   *           If the named Password Generator was found but one or
1729   *           more of its properties could not be decoded.
1730   * @throws ManagedObjectNotFoundException
1731   *           If the named Password Generator was not found on the
1732   *           server.
1733   * @throws ConcurrentModificationException
1734   *           If this Root has been removed from the server by
1735   *           another client.
1736   * @throws LdapException
1737   *           If any other error occurs.
1738   */
1739  PasswordGeneratorCfgClient getPasswordGenerator(String name)
1740      throws DefinitionDecodingException, ManagedObjectDecodingException,
1741      ManagedObjectNotFoundException, ConcurrentModificationException,
1742      LdapException;
1743
1744
1745
1746  /**
1747   * Creates a new Password Generator. The new Password Generator will
1748   * initially not contain any property values (including mandatory
1749   * properties). Once the Password Generator has been configured it
1750   * can be added to the server using the {@link #commit()} method.
1751   *
1752   * @param <C>
1753   *          The type of the Password Generator being created.
1754   * @param d
1755   *          The definition of the Password Generator to be created.
1756   * @param name
1757   *          The name of the new Password Generator.
1758   * @param exceptions
1759   *          An optional collection in which to place any {@link
1760   *          PropertyException}s that occurred whilst attempting to
1761   *          determine the default values of the Password Generator.
1762   *          This argument can be <code>null<code>.
1763   * @return Returns a new Password Generator configuration instance.
1764   * @throws IllegalManagedObjectNameException
1765   *          If the name of the new Password Generator is invalid.
1766   */
1767  <C extends PasswordGeneratorCfgClient> C createPasswordGenerator(
1768      ManagedObjectDefinition<C, ? extends PasswordGeneratorCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
1769
1770
1771
1772  /**
1773   * Removes the named Password Generator.
1774   *
1775   * @param name
1776   *          The name of the Password Generator to remove.
1777   * @throws ManagedObjectNotFoundException
1778   *           If the Password Generator does not exist.
1779   * @throws OperationRejectedException
1780   *           If the server refuses to remove the Password Generator
1781   *           due to some server-side constraint which cannot be
1782   *           satisfied (for example, if it is referenced by another
1783   *           managed object).
1784   * @throws ConcurrentModificationException
1785   *           If this Root has been removed from the server by
1786   *           another client.
1787   * @throws LdapException
1788   *           If any other error occurs.
1789   */
1790  void removePasswordGenerator(String name)
1791      throws ManagedObjectNotFoundException, OperationRejectedException,
1792      ConcurrentModificationException, LdapException;
1793
1794
1795
1796  /**
1797   * Lists the Password Policies.
1798   *
1799   * @return Returns an array containing the names of the Password
1800   *         Policies.
1801   * @throws ConcurrentModificationException
1802   *           If this Root has been removed from the server by
1803   *           another client.
1804   * @throws LdapException
1805   *           If any other error occurs.
1806   */
1807  String[] listPasswordPolicies() throws ConcurrentModificationException,
1808      LdapException;
1809
1810
1811
1812  /**
1813   * Gets the named Password Policy.
1814   *
1815   * @param name
1816   *           The name of the Password Policy to retrieve.
1817   * @return Returns the named Password Policy.
1818   * @throws DefinitionDecodingException
1819   *           If the named Password Policy was found but its type
1820   *           could not be determined.
1821   * @throws ManagedObjectDecodingException
1822   *           If the named Password Policy was found but one or more
1823   *           of its properties could not be decoded.
1824   * @throws ManagedObjectNotFoundException
1825   *           If the named Password Policy was not found on the
1826   *           server.
1827   * @throws ConcurrentModificationException
1828   *           If this Root has been removed from the server by
1829   *           another client.
1830   * @throws LdapException
1831   *           If any other error occurs.
1832   */
1833  AuthenticationPolicyCfgClient getPasswordPolicy(String name)
1834      throws DefinitionDecodingException, ManagedObjectDecodingException,
1835      ManagedObjectNotFoundException, ConcurrentModificationException,
1836      LdapException;
1837
1838
1839
1840  /**
1841   * Creates a new Password Policy. The new Password Policy will
1842   * initially not contain any property values (including mandatory
1843   * properties). Once the Password Policy has been configured it can
1844   * be added to the server using the {@link #commit()} method.
1845   *
1846   * @param <C>
1847   *          The type of the Password Policy being created.
1848   * @param d
1849   *          The definition of the Password Policy to be created.
1850   * @param name
1851   *          The name of the new Password Policy.
1852   * @param exceptions
1853   *          An optional collection in which to place any {@link
1854   *          PropertyException}s that occurred whilst attempting to
1855   *          determine the default values of the Password Policy. This
1856   *          argument can be <code>null<code>.
1857   * @return Returns a new Password Policy configuration instance.
1858   * @throws IllegalManagedObjectNameException
1859   *          If the name of the new Password Policy is invalid.
1860   */
1861  <C extends AuthenticationPolicyCfgClient> C createPasswordPolicy(
1862      ManagedObjectDefinition<C, ? extends AuthenticationPolicyCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
1863
1864
1865
1866  /**
1867   * Removes the named Password Policy.
1868   *
1869   * @param name
1870   *          The name of the Password Policy to remove.
1871   * @throws ManagedObjectNotFoundException
1872   *           If the Password Policy does not exist.
1873   * @throws OperationRejectedException
1874   *           If the server refuses to remove the Password Policy due
1875   *           to some server-side constraint which cannot be satisfied
1876   *           (for example, if it is referenced by another managed
1877   *           object).
1878   * @throws ConcurrentModificationException
1879   *           If this Root has been removed from the server by
1880   *           another client.
1881   * @throws LdapException
1882   *           If any other error occurs.
1883   */
1884  void removePasswordPolicy(String name)
1885      throws ManagedObjectNotFoundException, OperationRejectedException,
1886      ConcurrentModificationException, LdapException;
1887
1888
1889
1890  /**
1891   * Lists the Password Storage Schemes.
1892   *
1893   * @return Returns an array containing the names of the Password
1894   *         Storage Schemes.
1895   * @throws ConcurrentModificationException
1896   *           If this Root has been removed from the server by
1897   *           another client.
1898   * @throws LdapException
1899   *           If any other error occurs.
1900   */
1901  String[] listPasswordStorageSchemes() throws ConcurrentModificationException,
1902      LdapException;
1903
1904
1905
1906  /**
1907   * Gets the named Password Storage Scheme.
1908   *
1909   * @param name
1910   *           The name of the Password Storage Scheme to retrieve.
1911   * @return Returns the named Password Storage Scheme.
1912   * @throws DefinitionDecodingException
1913   *           If the named Password Storage Scheme was found but its
1914   *           type could not be determined.
1915   * @throws ManagedObjectDecodingException
1916   *           If the named Password Storage Scheme was found but one
1917   *           or more of its properties could not be decoded.
1918   * @throws ManagedObjectNotFoundException
1919   *           If the named Password Storage Scheme was not found on
1920   *           the server.
1921   * @throws ConcurrentModificationException
1922   *           If this Root has been removed from the server by
1923   *           another client.
1924   * @throws LdapException
1925   *           If any other error occurs.
1926   */
1927  PasswordStorageSchemeCfgClient getPasswordStorageScheme(String name)
1928      throws DefinitionDecodingException, ManagedObjectDecodingException,
1929      ManagedObjectNotFoundException, ConcurrentModificationException,
1930      LdapException;
1931
1932
1933
1934  /**
1935   * Creates a new Password Storage Scheme. The new Password Storage
1936   * Scheme will initially not contain any property values (including
1937   * mandatory properties). Once the Password Storage Scheme has been
1938   * configured it can be added to the server using the {@link
1939   * #commit()} method.
1940   *
1941   * @param <C>
1942   *          The type of the Password Storage Scheme being created.
1943   * @param d
1944   *          The definition of the Password Storage Scheme to be
1945   *          created.
1946   * @param name
1947   *          The name of the new Password Storage Scheme.
1948   * @param exceptions
1949   *          An optional collection in which to place any {@link
1950   *          PropertyException}s that occurred whilst attempting to
1951   *          determine the default values of the Password Storage
1952   *          Scheme. This argument can be <code>null<code>.
1953   * @return Returns a new Password Storage Scheme configuration
1954   *         instance.
1955   * @throws IllegalManagedObjectNameException
1956   *          If the name of the new Password Storage Scheme is
1957   *          invalid.
1958   */
1959  <C extends PasswordStorageSchemeCfgClient> C createPasswordStorageScheme(
1960      ManagedObjectDefinition<C, ? extends PasswordStorageSchemeCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
1961
1962
1963
1964  /**
1965   * Removes the named Password Storage Scheme.
1966   *
1967   * @param name
1968   *          The name of the Password Storage Scheme to remove.
1969   * @throws ManagedObjectNotFoundException
1970   *           If the Password Storage Scheme does not exist.
1971   * @throws OperationRejectedException
1972   *           If the server refuses to remove the Password Storage
1973   *           Scheme due to some server-side constraint which cannot
1974   *           be satisfied (for example, if it is referenced by
1975   *           another managed object).
1976   * @throws ConcurrentModificationException
1977   *           If this Root has been removed from the server by
1978   *           another client.
1979   * @throws LdapException
1980   *           If any other error occurs.
1981   */
1982  void removePasswordStorageScheme(String name)
1983      throws ManagedObjectNotFoundException, OperationRejectedException,
1984      ConcurrentModificationException, LdapException;
1985
1986
1987
1988  /**
1989   * Lists the Password Validators.
1990   *
1991   * @return Returns an array containing the names of the Password
1992   *         Validators.
1993   * @throws ConcurrentModificationException
1994   *           If this Root has been removed from the server by
1995   *           another client.
1996   * @throws LdapException
1997   *           If any other error occurs.
1998   */
1999  String[] listPasswordValidators() throws ConcurrentModificationException,
2000      LdapException;
2001
2002
2003
2004  /**
2005   * Gets the named Password Validator.
2006   *
2007   * @param name
2008   *           The name of the Password Validator to retrieve.
2009   * @return Returns the named Password Validator.
2010   * @throws DefinitionDecodingException
2011   *           If the named Password Validator was found but its type
2012   *           could not be determined.
2013   * @throws ManagedObjectDecodingException
2014   *           If the named Password Validator was found but one or
2015   *           more of its properties could not be decoded.
2016   * @throws ManagedObjectNotFoundException
2017   *           If the named Password Validator was not found on the
2018   *           server.
2019   * @throws ConcurrentModificationException
2020   *           If this Root has been removed from the server by
2021   *           another client.
2022   * @throws LdapException
2023   *           If any other error occurs.
2024   */
2025  PasswordValidatorCfgClient getPasswordValidator(String name)
2026      throws DefinitionDecodingException, ManagedObjectDecodingException,
2027      ManagedObjectNotFoundException, ConcurrentModificationException,
2028      LdapException;
2029
2030
2031
2032  /**
2033   * Creates a new Password Validator. The new Password Validator will
2034   * initially not contain any property values (including mandatory
2035   * properties). Once the Password Validator has been configured it
2036   * can be added to the server using the {@link #commit()} method.
2037   *
2038   * @param <C>
2039   *          The type of the Password Validator being created.
2040   * @param d
2041   *          The definition of the Password Validator to be created.
2042   * @param name
2043   *          The name of the new Password Validator.
2044   * @param exceptions
2045   *          An optional collection in which to place any {@link
2046   *          PropertyException}s that occurred whilst attempting to
2047   *          determine the default values of the Password Validator.
2048   *          This argument can be <code>null<code>.
2049   * @return Returns a new Password Validator configuration instance.
2050   * @throws IllegalManagedObjectNameException
2051   *          If the name of the new Password Validator is invalid.
2052   */
2053  <C extends PasswordValidatorCfgClient> C createPasswordValidator(
2054      ManagedObjectDefinition<C, ? extends PasswordValidatorCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
2055
2056
2057
2058  /**
2059   * Removes the named Password Validator.
2060   *
2061   * @param name
2062   *          The name of the Password Validator to remove.
2063   * @throws ManagedObjectNotFoundException
2064   *           If the Password Validator does not exist.
2065   * @throws OperationRejectedException
2066   *           If the server refuses to remove the Password Validator
2067   *           due to some server-side constraint which cannot be
2068   *           satisfied (for example, if it is referenced by another
2069   *           managed object).
2070   * @throws ConcurrentModificationException
2071   *           If this Root has been removed from the server by
2072   *           another client.
2073   * @throws LdapException
2074   *           If any other error occurs.
2075   */
2076  void removePasswordValidator(String name)
2077      throws ManagedObjectNotFoundException, OperationRejectedException,
2078      ConcurrentModificationException, LdapException;
2079
2080
2081
2082  /**
2083   * Gets the Plugin Root.
2084   *
2085   * @return Returns the Plugin Root.
2086   * @throws DefinitionDecodingException
2087   *           If the Plugin Root was found but its type could not be
2088   *           determined.
2089   * @throws ManagedObjectDecodingException
2090   *           If the Plugin Root was found but one or more of its
2091   *           properties could not be decoded.
2092   * @throws ManagedObjectNotFoundException
2093   *           If the Plugin Root could not be found on the server.
2094   * @throws ConcurrentModificationException
2095   *           If this Root has been removed from the server by
2096   *           another client.
2097   * @throws LdapException
2098   *           If any other error occurs.
2099   */
2100  PluginRootCfgClient getPluginRoot()
2101      throws DefinitionDecodingException, ManagedObjectDecodingException,
2102      ManagedObjectNotFoundException, ConcurrentModificationException,
2103      LdapException;
2104
2105
2106
2107  /**
2108   * Gets the Root DN.
2109   *
2110   * @return Returns the Root DN.
2111   * @throws DefinitionDecodingException
2112   *           If the Root DN was found but its type could not be
2113   *           determined.
2114   * @throws ManagedObjectDecodingException
2115   *           If the Root DN was found but one or more of its
2116   *           properties could not be decoded.
2117   * @throws ManagedObjectNotFoundException
2118   *           If the Root DN could not be found on the server.
2119   * @throws ConcurrentModificationException
2120   *           If this Root has been removed from the server by
2121   *           another client.
2122   * @throws LdapException
2123   *           If any other error occurs.
2124   */
2125  RootDNCfgClient getRootDN()
2126      throws DefinitionDecodingException, ManagedObjectDecodingException,
2127      ManagedObjectNotFoundException, ConcurrentModificationException,
2128      LdapException;
2129
2130
2131
2132  /**
2133   * Gets the Root DSE Backend.
2134   *
2135   * @return Returns the Root DSE Backend.
2136   * @throws DefinitionDecodingException
2137   *           If the Root DSE Backend was found but its type could
2138   *           not be determined.
2139   * @throws ManagedObjectDecodingException
2140   *           If the Root DSE Backend was found but one or more of
2141   *           its properties could not be decoded.
2142   * @throws ManagedObjectNotFoundException
2143   *           If the Root DSE Backend could not be found on the
2144   *           server.
2145   * @throws ConcurrentModificationException
2146   *           If this Root has been removed from the server by
2147   *           another client.
2148   * @throws LdapException
2149   *           If any other error occurs.
2150   */
2151  RootDSEBackendCfgClient getRootDSEBackend()
2152      throws DefinitionDecodingException, ManagedObjectDecodingException,
2153      ManagedObjectNotFoundException, ConcurrentModificationException,
2154      LdapException;
2155
2156
2157
2158  /**
2159   * Lists the SASL Mechanism Handlers.
2160   *
2161   * @return Returns an array containing the names of the SASL
2162   *         Mechanism Handlers.
2163   * @throws ConcurrentModificationException
2164   *           If this Root has been removed from the server by
2165   *           another client.
2166   * @throws LdapException
2167   *           If any other error occurs.
2168   */
2169  String[] listSASLMechanismHandlers() throws ConcurrentModificationException,
2170      LdapException;
2171
2172
2173
2174  /**
2175   * Gets the named SASL Mechanism Handler.
2176   *
2177   * @param name
2178   *           The name of the SASL Mechanism Handler to retrieve.
2179   * @return Returns the named SASL Mechanism Handler.
2180   * @throws DefinitionDecodingException
2181   *           If the named SASL Mechanism Handler was found but its
2182   *           type could not be determined.
2183   * @throws ManagedObjectDecodingException
2184   *           If the named SASL Mechanism Handler was found but one
2185   *           or more of its properties could not be decoded.
2186   * @throws ManagedObjectNotFoundException
2187   *           If the named SASL Mechanism Handler was not found on
2188   *           the server.
2189   * @throws ConcurrentModificationException
2190   *           If this Root has been removed from the server by
2191   *           another client.
2192   * @throws LdapException
2193   *           If any other error occurs.
2194   */
2195  SASLMechanismHandlerCfgClient getSASLMechanismHandler(String name)
2196      throws DefinitionDecodingException, ManagedObjectDecodingException,
2197      ManagedObjectNotFoundException, ConcurrentModificationException,
2198      LdapException;
2199
2200
2201
2202  /**
2203   * Creates a new SASL Mechanism Handler. The new SASL Mechanism
2204   * Handler will initially not contain any property values (including
2205   * mandatory properties). Once the SASL Mechanism Handler has been
2206   * configured it can be added to the server using the {@link
2207   * #commit()} method.
2208   *
2209   * @param <C>
2210   *          The type of the SASL Mechanism Handler being created.
2211   * @param d
2212   *          The definition of the SASL Mechanism Handler to be
2213   *          created.
2214   * @param name
2215   *          The name of the new SASL Mechanism Handler.
2216   * @param exceptions
2217   *          An optional collection in which to place any {@link
2218   *          PropertyException}s that occurred whilst attempting to
2219   *          determine the default values of the SASL Mechanism
2220   *          Handler. This argument can be <code>null<code>.
2221   * @return Returns a new SASL Mechanism Handler configuration
2222   *         instance.
2223   * @throws IllegalManagedObjectNameException
2224   *          If the name of the new SASL Mechanism Handler is
2225   *          invalid.
2226   */
2227  <C extends SASLMechanismHandlerCfgClient> C createSASLMechanismHandler(
2228      ManagedObjectDefinition<C, ? extends SASLMechanismHandlerCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
2229
2230
2231
2232  /**
2233   * Removes the named SASL Mechanism Handler.
2234   *
2235   * @param name
2236   *          The name of the SASL Mechanism Handler to remove.
2237   * @throws ManagedObjectNotFoundException
2238   *           If the SASL Mechanism Handler does not exist.
2239   * @throws OperationRejectedException
2240   *           If the server refuses to remove the SASL Mechanism
2241   *           Handler due to some server-side constraint which cannot
2242   *           be satisfied (for example, if it is referenced by
2243   *           another managed object).
2244   * @throws ConcurrentModificationException
2245   *           If this Root has been removed from the server by
2246   *           another client.
2247   * @throws LdapException
2248   *           If any other error occurs.
2249   */
2250  void removeSASLMechanismHandler(String name)
2251      throws ManagedObjectNotFoundException, OperationRejectedException,
2252      ConcurrentModificationException, LdapException;
2253
2254
2255
2256  /**
2257   * Lists the Schema Providers.
2258   *
2259   * @return Returns an array containing the names of the Schema
2260   *         Providers.
2261   * @throws ConcurrentModificationException
2262   *           If this Root has been removed from the server by
2263   *           another client.
2264   * @throws LdapException
2265   *           If any other error occurs.
2266   */
2267  String[] listSchemaProviders() throws ConcurrentModificationException,
2268      LdapException;
2269
2270
2271
2272  /**
2273   * Gets the named Schema Provider.
2274   *
2275   * @param name
2276   *           The name of the Schema Provider to retrieve.
2277   * @return Returns the named Schema Provider.
2278   * @throws DefinitionDecodingException
2279   *           If the named Schema Provider was found but its type
2280   *           could not be determined.
2281   * @throws ManagedObjectDecodingException
2282   *           If the named Schema Provider was found but one or more
2283   *           of its properties could not be decoded.
2284   * @throws ManagedObjectNotFoundException
2285   *           If the named Schema Provider was not found on the
2286   *           server.
2287   * @throws ConcurrentModificationException
2288   *           If this Root has been removed from the server by
2289   *           another client.
2290   * @throws LdapException
2291   *           If any other error occurs.
2292   */
2293  SchemaProviderCfgClient getSchemaProvider(String name)
2294      throws DefinitionDecodingException, ManagedObjectDecodingException,
2295      ManagedObjectNotFoundException, ConcurrentModificationException,
2296      LdapException;
2297
2298
2299
2300  /**
2301   * Creates a new Schema Provider. The new Schema Provider will
2302   * initially not contain any property values (including mandatory
2303   * properties). Once the Schema Provider has been configured it can
2304   * be added to the server using the {@link #commit()} method.
2305   *
2306   * @param <C>
2307   *          The type of the Schema Provider being created.
2308   * @param d
2309   *          The definition of the Schema Provider to be created.
2310   * @param name
2311   *          The name of the new Schema Provider.
2312   * @param exceptions
2313   *          An optional collection in which to place any {@link
2314   *          PropertyException}s that occurred whilst attempting to
2315   *          determine the default values of the Schema Provider. This
2316   *          argument can be <code>null<code>.
2317   * @return Returns a new Schema Provider configuration instance.
2318   * @throws IllegalManagedObjectNameException
2319   *          If the name of the new Schema Provider is invalid.
2320   */
2321  <C extends SchemaProviderCfgClient> C createSchemaProvider(
2322      ManagedObjectDefinition<C, ? extends SchemaProviderCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
2323
2324
2325
2326  /**
2327   * Removes the named Schema Provider.
2328   *
2329   * @param name
2330   *          The name of the Schema Provider to remove.
2331   * @throws ManagedObjectNotFoundException
2332   *           If the Schema Provider does not exist.
2333   * @throws OperationRejectedException
2334   *           If the server refuses to remove the Schema Provider due
2335   *           to some server-side constraint which cannot be satisfied
2336   *           (for example, if it is referenced by another managed
2337   *           object).
2338   * @throws ConcurrentModificationException
2339   *           If this Root has been removed from the server by
2340   *           another client.
2341   * @throws LdapException
2342   *           If any other error occurs.
2343   */
2344  void removeSchemaProvider(String name)
2345      throws ManagedObjectNotFoundException, OperationRejectedException,
2346      ConcurrentModificationException, LdapException;
2347
2348
2349
2350  /**
2351   * Lists the Synchronization Providers.
2352   *
2353   * @return Returns an array containing the names of the
2354   *         Synchronization Providers.
2355   * @throws ConcurrentModificationException
2356   *           If this Root has been removed from the server by
2357   *           another client.
2358   * @throws LdapException
2359   *           If any other error occurs.
2360   */
2361  String[] listSynchronizationProviders() throws ConcurrentModificationException,
2362      LdapException;
2363
2364
2365
2366  /**
2367   * Gets the named Synchronization Provider.
2368   *
2369   * @param name
2370   *           The name of the Synchronization Provider to retrieve.
2371   * @return Returns the named Synchronization Provider.
2372   * @throws DefinitionDecodingException
2373   *           If the named Synchronization Provider was found but its
2374   *           type could not be determined.
2375   * @throws ManagedObjectDecodingException
2376   *           If the named Synchronization Provider was found but one
2377   *           or more of its properties could not be decoded.
2378   * @throws ManagedObjectNotFoundException
2379   *           If the named Synchronization Provider was not found on
2380   *           the server.
2381   * @throws ConcurrentModificationException
2382   *           If this Root has been removed from the server by
2383   *           another client.
2384   * @throws LdapException
2385   *           If any other error occurs.
2386   */
2387  SynchronizationProviderCfgClient getSynchronizationProvider(String name)
2388      throws DefinitionDecodingException, ManagedObjectDecodingException,
2389      ManagedObjectNotFoundException, ConcurrentModificationException,
2390      LdapException;
2391
2392
2393
2394  /**
2395   * Creates a new Synchronization Provider. The new Synchronization
2396   * Provider will initially not contain any property values (including
2397   * mandatory properties). Once the Synchronization Provider has been
2398   * configured it can be added to the server using the {@link
2399   * #commit()} method.
2400   *
2401   * @param <C>
2402   *          The type of the Synchronization Provider being created.
2403   * @param d
2404   *          The definition of the Synchronization Provider to be
2405   *          created.
2406   * @param name
2407   *          The name of the new Synchronization Provider.
2408   * @param exceptions
2409   *          An optional collection in which to place any {@link
2410   *          PropertyException}s that occurred whilst attempting to
2411   *          determine the default values of the Synchronization
2412   *          Provider. This argument can be <code>null<code>.
2413   * @return Returns a new Synchronization Provider configuration
2414   *         instance.
2415   * @throws IllegalManagedObjectNameException
2416   *          If the name of the new Synchronization Provider is
2417   *          invalid.
2418   */
2419  <C extends SynchronizationProviderCfgClient> C createSynchronizationProvider(
2420      ManagedObjectDefinition<C, ? extends SynchronizationProviderCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
2421
2422
2423
2424  /**
2425   * Removes the named Synchronization Provider.
2426   *
2427   * @param name
2428   *          The name of the Synchronization Provider to remove.
2429   * @throws ManagedObjectNotFoundException
2430   *           If the Synchronization Provider does not exist.
2431   * @throws OperationRejectedException
2432   *           If the server refuses to remove the Synchronization
2433   *           Provider due to some server-side constraint which cannot
2434   *           be satisfied (for example, if it is referenced by
2435   *           another managed object).
2436   * @throws ConcurrentModificationException
2437   *           If this Root has been removed from the server by
2438   *           another client.
2439   * @throws LdapException
2440   *           If any other error occurs.
2441   */
2442  void removeSynchronizationProvider(String name)
2443      throws ManagedObjectNotFoundException, OperationRejectedException,
2444      ConcurrentModificationException, LdapException;
2445
2446
2447
2448  /**
2449   * Lists the Trust Manager Providers.
2450   *
2451   * @return Returns an array containing the names of the Trust
2452   *         Manager Providers.
2453   * @throws ConcurrentModificationException
2454   *           If this Root has been removed from the server by
2455   *           another client.
2456   * @throws LdapException
2457   *           If any other error occurs.
2458   */
2459  String[] listTrustManagerProviders() throws ConcurrentModificationException,
2460      LdapException;
2461
2462
2463
2464  /**
2465   * Gets the named Trust Manager Provider.
2466   *
2467   * @param name
2468   *           The name of the Trust Manager Provider to retrieve.
2469   * @return Returns the named Trust Manager Provider.
2470   * @throws DefinitionDecodingException
2471   *           If the named Trust Manager Provider was found but its
2472   *           type could not be determined.
2473   * @throws ManagedObjectDecodingException
2474   *           If the named Trust Manager Provider was found but one
2475   *           or more of its properties could not be decoded.
2476   * @throws ManagedObjectNotFoundException
2477   *           If the named Trust Manager Provider was not found on
2478   *           the server.
2479   * @throws ConcurrentModificationException
2480   *           If this Root has been removed from the server by
2481   *           another client.
2482   * @throws LdapException
2483   *           If any other error occurs.
2484   */
2485  TrustManagerProviderCfgClient getTrustManagerProvider(String name)
2486      throws DefinitionDecodingException, ManagedObjectDecodingException,
2487      ManagedObjectNotFoundException, ConcurrentModificationException,
2488      LdapException;
2489
2490
2491
2492  /**
2493   * Creates a new Trust Manager Provider. The new Trust Manager
2494   * Provider will initially not contain any property values (including
2495   * mandatory properties). Once the Trust Manager Provider has been
2496   * configured it can be added to the server using the {@link
2497   * #commit()} method.
2498   *
2499   * @param <C>
2500   *          The type of the Trust Manager Provider being created.
2501   * @param d
2502   *          The definition of the Trust Manager Provider to be
2503   *          created.
2504   * @param name
2505   *          The name of the new Trust Manager Provider.
2506   * @param exceptions
2507   *          An optional collection in which to place any {@link
2508   *          PropertyException}s that occurred whilst attempting to
2509   *          determine the default values of the Trust Manager
2510   *          Provider. This argument can be <code>null<code>.
2511   * @return Returns a new Trust Manager Provider configuration
2512   *         instance.
2513   * @throws IllegalManagedObjectNameException
2514   *          If the name of the new Trust Manager Provider is
2515   *          invalid.
2516   */
2517  <C extends TrustManagerProviderCfgClient> C createTrustManagerProvider(
2518      ManagedObjectDefinition<C, ? extends TrustManagerProviderCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
2519
2520
2521
2522  /**
2523   * Removes the named Trust Manager Provider.
2524   *
2525   * @param name
2526   *          The name of the Trust Manager Provider to remove.
2527   * @throws ManagedObjectNotFoundException
2528   *           If the Trust Manager Provider does not exist.
2529   * @throws OperationRejectedException
2530   *           If the server refuses to remove the Trust Manager
2531   *           Provider due to some server-side constraint which cannot
2532   *           be satisfied (for example, if it is referenced by
2533   *           another managed object).
2534   * @throws ConcurrentModificationException
2535   *           If this Root has been removed from the server by
2536   *           another client.
2537   * @throws LdapException
2538   *           If any other error occurs.
2539   */
2540  void removeTrustManagerProvider(String name)
2541      throws ManagedObjectNotFoundException, OperationRejectedException,
2542      ConcurrentModificationException, LdapException;
2543
2544
2545
2546  /**
2547   * Lists the Virtual Attributes.
2548   *
2549   * @return Returns an array containing the names of the Virtual
2550   *         Attributes.
2551   * @throws ConcurrentModificationException
2552   *           If this Root has been removed from the server by
2553   *           another client.
2554   * @throws LdapException
2555   *           If any other error occurs.
2556   */
2557  String[] listVirtualAttributes() throws ConcurrentModificationException,
2558      LdapException;
2559
2560
2561
2562  /**
2563   * Gets the named Virtual Attribute.
2564   *
2565   * @param name
2566   *           The name of the Virtual Attribute to retrieve.
2567   * @return Returns the named Virtual Attribute.
2568   * @throws DefinitionDecodingException
2569   *           If the named Virtual Attribute was found but its type
2570   *           could not be determined.
2571   * @throws ManagedObjectDecodingException
2572   *           If the named Virtual Attribute was found but one or
2573   *           more of its properties could not be decoded.
2574   * @throws ManagedObjectNotFoundException
2575   *           If the named Virtual Attribute was not found on the
2576   *           server.
2577   * @throws ConcurrentModificationException
2578   *           If this Root has been removed from the server by
2579   *           another client.
2580   * @throws LdapException
2581   *           If any other error occurs.
2582   */
2583  VirtualAttributeCfgClient getVirtualAttribute(String name)
2584      throws DefinitionDecodingException, ManagedObjectDecodingException,
2585      ManagedObjectNotFoundException, ConcurrentModificationException,
2586      LdapException;
2587
2588
2589
2590  /**
2591   * Creates a new Virtual Attribute. The new Virtual Attribute will
2592   * initially not contain any property values (including mandatory
2593   * properties). Once the Virtual Attribute has been configured it can
2594   * be added to the server using the {@link #commit()} method.
2595   *
2596   * @param <C>
2597   *          The type of the Virtual Attribute being created.
2598   * @param d
2599   *          The definition of the Virtual Attribute to be created.
2600   * @param name
2601   *          The name of the new Virtual Attribute.
2602   * @param exceptions
2603   *          An optional collection in which to place any {@link
2604   *          PropertyException}s that occurred whilst attempting to
2605   *          determine the default values of the Virtual Attribute.
2606   *          This argument can be <code>null<code>.
2607   * @return Returns a new Virtual Attribute configuration instance.
2608   * @throws IllegalManagedObjectNameException
2609   *          If the name of the new Virtual Attribute is invalid.
2610   */
2611  <C extends VirtualAttributeCfgClient> C createVirtualAttribute(
2612      ManagedObjectDefinition<C, ? extends VirtualAttributeCfg> d, String name, Collection<PropertyException> exceptions) throws IllegalManagedObjectNameException;
2613
2614
2615
2616  /**
2617   * Removes the named Virtual Attribute.
2618   *
2619   * @param name
2620   *          The name of the Virtual Attribute to remove.
2621   * @throws ManagedObjectNotFoundException
2622   *           If the Virtual Attribute does not exist.
2623   * @throws OperationRejectedException
2624   *           If the server refuses to remove the Virtual Attribute
2625   *           due to some server-side constraint which cannot be
2626   *           satisfied (for example, if it is referenced by another
2627   *           managed object).
2628   * @throws ConcurrentModificationException
2629   *           If this Root has been removed from the server by
2630   *           another client.
2631   * @throws LdapException
2632   *           If any other error occurs.
2633   */
2634  void removeVirtualAttribute(String name)
2635      throws ManagedObjectNotFoundException, OperationRejectedException,
2636      ConcurrentModificationException, LdapException;
2637
2638
2639
2640  /**
2641   * Gets the Work Queue.
2642   *
2643   * @return Returns the Work Queue.
2644   * @throws DefinitionDecodingException
2645   *           If the Work Queue was found but its type could not be
2646   *           determined.
2647   * @throws ManagedObjectDecodingException
2648   *           If the Work Queue was found but one or more of its
2649   *           properties could not be decoded.
2650   * @throws ManagedObjectNotFoundException
2651   *           If the Work Queue could not be found on the server.
2652   * @throws ConcurrentModificationException
2653   *           If this Root has been removed from the server by
2654   *           another client.
2655   * @throws LdapException
2656   *           If any other error occurs.
2657   */
2658  WorkQueueCfgClient getWorkQueue()
2659      throws DefinitionDecodingException, ManagedObjectDecodingException,
2660      ManagedObjectNotFoundException, ConcurrentModificationException,
2661      LdapException;
2662
2663}