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