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