extends
PropertyProvider {
/**
* Commit any changes made to this managed object. Pending property
* values will be committed to the managed object. If successful,
* the pending values will become active values.
*
* See the class description for more information regarding pending
* and active values.
*
* @throws ConcurrentModificationException
* If this managed object has been removed from the server
* by another client.
* @throws OperationRejectedException
* If the server refuses to apply the changes due to some
* server-side constraint which cannot be satisfied.
* @throws AuthorizationException
* If the server refuses to apply the changes because the
* client does not have the correct privileges.
* @throws CommunicationException
* If the client cannot contact the server due to an
* underlying communication problem.
*/
void commit() throws ConcurrentModificationException,
OperationRejectedException, AuthorizationException,
CommunicationException;
/**
* Creates a new child managed object bound to the specified
* instantiable relation. The new managed object instance will be
* created with values taken from a property provider. The caller
* must make sure that the property provider provides values for
* mandatory properties.
*
* @param
* The expected type of the child managed object
* configuration client.
* @param
* The actual type of the added managed object
* configuration client.
* @param r
* The instantiable relation definition.
* @param d
* The definition of the managed object to be created.
* @param name
* The name of the child managed object.
* @param p
* A property provider which should be used to initialize
* property values of the new managed object.
* @return Returns a new child managed object bound to the specified
* instantiable relation.
* @throws IllegalArgumentException
* If the relation definition is not associated with this
* managed object's definition.
* @throws ManagedObjectDecodingException
* If the managed object could not be create because one
* or more of its properties are invalid.
* @throws ManagedObjectAlreadyExistsException
* If the managed object cannot be created because it
* already exists on the server.
* @throws ConcurrentModificationException
* If this managed object has been removed from the server
* by another client.
* @throws OperationRejectedException
* If the server refuses to create the managed object due
* to some server-side constraint which cannot be
* satisfied.
* @throws AuthorizationException
* If the server refuses to create the managed object
* because the client does not have the correct
* privileges.
* @throws CommunicationException
* If the client cannot contact the server due to an
* underlying communication problem.
*/
ManagedObject createChild(
InstantiableRelationDefinition r, ManagedObjectDefinition d,
String name, PropertyProvider p) throws IllegalArgumentException,
ManagedObjectDecodingException, ManagedObjectAlreadyExistsException,
ConcurrentModificationException, OperationRejectedException,
AuthorizationException, CommunicationException;
/**
* Creates a new child managed object bound to the specified
* optional relation. The new managed object instance will be
* created with values taken from a property provider. The caller
* must make sure that the property provider provides values for
* mandatory properties.
*
* @param
* The expected type of the child managed object
* configuration client.
* @param
* The actual type of the added managed object
* configuration client.
* @param r
* The optional relation definition.
* @param d
* The definition of the managed object to be created.
* @param p
* A property provider which should be used to initialize
* property values of the new managed object.
* @return Returns a new child managed object bound to the specified
* optional relation.
* @throws IllegalArgumentException
* If the relation definition is not associated with this
* managed object's definition.
* @throws ManagedObjectDecodingException
* If the managed object could not be created because one
* or more of its properties are invalid.
* @throws ManagedObjectAlreadyExistsException
* If the managed object cannot be created because it
* already exists on the server.
* @throws ConcurrentModificationException
* If this managed object has been removed from the server
* by another client.
* @throws OperationRejectedException
* If the server refuses to create the managed object due
* to some server-side constraint which cannot be
* satisfied.
* @throws AuthorizationException
* If the server refuses to create the managed object
* because the client does not have the correct
* privileges.
* @throws CommunicationException
* If the client cannot contact the server due to an
* underlying communication problem.
*/
ManagedObject createChild(
OptionalRelationDefinition r, ManagedObjectDefinition d,
PropertyProvider p) throws IllegalArgumentException,
ManagedObjectDecodingException, ManagedObjectAlreadyExistsException,
ConcurrentModificationException, OperationRejectedException,
AuthorizationException, CommunicationException;
/**
* Retrieve an instantiable child managed object.
*
* @param
* The requested type of the child managed object
* configuration client.
* @param d
* The instantiable relation definition.
* @param name
* The name of the child managed object.
* @return Returns the instantiable child managed object.
* @throws IllegalArgumentException
* If the relation definition is not associated with this
* managed object's definition.
* @throws DefinitionDecodingException
* If the managed object was found but its type could not
* be determined.
* @throws ManagedObjectDecodingException
* If the managed object was found but one or more of its
* properties could not be decoded.
* @throws ManagedObjectNotFoundException
* If the requested managed object could not be found on
* the server.
* @throws ConcurrentModificationException
* If this managed object has been removed from the server
* by another client.
* @throws AuthorizationException
* If the server refuses to retrieve the managed object
* because the client does not have the correct
* privileges.
* @throws CommunicationException
* If the client cannot contact the server due to an
* underlying communication problem.
*/
ManagedObject extends M> getChild(
InstantiableRelationDefinition d, String name)
throws IllegalArgumentException, DefinitionDecodingException,
ManagedObjectDecodingException, ManagedObjectNotFoundException,
ConcurrentModificationException, AuthorizationException,
CommunicationException;
/**
* Retrieve an optional child managed object.
*
* @param
* The requested type of the child managed object
* configuration client.
* @param d
* The optional relation definition.
* @return Returns the optional child managed object.
* @throws IllegalArgumentException
* If the relation definition is not associated with this
* managed object's definition.
* @throws DefinitionDecodingException
* If the managed object was found but its type could not
* be determined.
* @throws ManagedObjectDecodingException
* If the managed object was found but one or more of its
* properties could not be decoded.
* @throws ManagedObjectNotFoundException
* If the requested managed object could not be found on
* the server.
* @throws ConcurrentModificationException
* If this managed object has been removed from the server
* by another client.
* @throws AuthorizationException
* If the server refuses to retrieve the managed object
* because the client does not have the correct
* privileges.
* @throws CommunicationException
* If the client cannot contact the server due to an
* underlying communication problem.
*/
ManagedObject extends M> getChild(
OptionalRelationDefinition d) throws IllegalArgumentException,
DefinitionDecodingException, ManagedObjectDecodingException,
ManagedObjectNotFoundException, ConcurrentModificationException,
AuthorizationException, CommunicationException;
/**
* Retrieve a singleton child managed object.
*
* @param
* The requested type of the child managed object
* configuration client.
* @param d
* The singleton relation definition.
* @return Returns the singleton child managed object.
* @throws IllegalArgumentException
* If the relation definition is not associated with this
* managed object's definition.
* @throws DefinitionDecodingException
* If the managed object was found but its type could not
* be determined.
* @throws ManagedObjectDecodingException
* If the managed object was found but one or more of its
* properties could not be decoded.
* @throws ManagedObjectNotFoundException
* If the requested managed object could not be found on
* the server.
* @throws ConcurrentModificationException
* If this managed object has been removed from the server
* by another client.
* @throws AuthorizationException
* If the server refuses to retrieve the managed object
* because the client does not have the correct
* privileges.
* @throws CommunicationException
* If the client cannot contact the server due to an
* underlying communication problem.
*/
ManagedObject extends M> getChild(
SingletonRelationDefinition d) throws IllegalArgumentException,
DefinitionDecodingException, ManagedObjectDecodingException,
ManagedObjectNotFoundException, ConcurrentModificationException,
AuthorizationException, CommunicationException;
/**
* Creates a client configuration view of this managed object.
* Modifications made to this managed object will be reflected in
* the client configuration view and vice versa.
*
* @return Returns a client configuration view of this managed
* object.
*/
C getConfiguration();
/**
* Get the definition associated with this managed object.
*
* @return Returns the definition associated with this managed
* object.
*/
ManagedObjectDefinition getManagedObjectDefinition();
/**
* Get the path of this managed object.
*
* @return Returns the path of this managed object.
*/
ManagedObjectPath getManagedObjectPath();
/**
* Get the effective value of the specified property.
*
* See the class description for more information about how the
* effective property value is derived.
*
* @param
* The type of the property to be retrieved.
* @param d
* The property to be retrieved.
* @return Returns the property's effective value, or
* null if there is no effective value
* defined.
* @throws IllegalArgumentException
* If the property definition is not associated with this
* managed object's definition.
*/
T getPropertyValue(PropertyDefinition d)
throws IllegalArgumentException;
/**
* Get the effective values of the specified property.
*
* See the class description for more information about how the
* effective property values are derived.
*
* @param
* The type of the property to be retrieved.
* @param d
* The property to be retrieved.
* @return Returns the property's effective values, or an empty set
* if there are no effective values defined.
* @throws IllegalArgumentException
* If the property definition is not associated with this
* managed object's definition.
*/
SortedSet getPropertyValues(PropertyDefinition d)
throws IllegalArgumentException;
/**
* Determines whether or not the optional managed object associated
* with the specified optional relations exists.
*
* @param d
* The optional relation definition.
* @return Returns true if the optional managed
* object exists, false otherwise.
* @throws IllegalArgumentException
* If the relation definition is not associated with this
* managed object's definition.
* @throws ConcurrentModificationException
* If this managed object has been removed from the server
* by another client.
* @throws AuthorizationException
* If the server refuses to make the determination because
* the client does not have the correct privileges.
* @throws CommunicationException
* If the client cannot contact the server due to an
* underlying communication problem.
*/
boolean hasChild(OptionalRelationDefinition, ?> d)
throws IllegalArgumentException, ConcurrentModificationException,
AuthorizationException, CommunicationException;
/**
* Lists the child managed objects associated with the specified
* instantiable relation.
*
* @param d
* The instantiable relation definition.
* @return Returns the names of the child managed objects.
* @throws IllegalArgumentException
* If the relation definition is not associated with this
* managed object's definition.
* @throws ConcurrentModificationException
* If this managed object has been removed from the server
* by another client.
* @throws AuthorizationException
* If the server refuses to list the managed objects
* because the client does not have the correct
* privileges.
* @throws CommunicationException
* If the client cannot contact the server due to an
* underlying communication problem.
*/
String[] listChildren(InstantiableRelationDefinition, ?> d)
throws IllegalArgumentException, ConcurrentModificationException,
AuthorizationException, CommunicationException;
/**
* Removes the named instantiable child managed object.
*
* @param
* The type of the child managed object configuration
* client.
* @param d
* The instantiable relation definition.
* @param name
* The name of the child managed object to be removed.
* @throws IllegalArgumentException
* If the relation definition is not associated with this
* managed object's definition.
* @throws ManagedObjectNotFoundException
* If the managed object could not be removed because it
* could not found on the server.
* @throws OperationRejectedException
* If the server refuses to remove the managed object due
* to some server-side constraint which cannot be
* satisfied (for example, if it is referenced by another
* managed object).
* @throws ConcurrentModificationException
* If this managed object has been removed from the server
* by another client.
* @throws AuthorizationException
* If the server refuses to make the list the managed
* objects because the client does not have the correct
* privileges.
* @throws CommunicationException
* If the client cannot contact the server due to an
* underlying communication problem.
*/
void removeChild(
InstantiableRelationDefinition d, String name)
throws IllegalArgumentException, ManagedObjectNotFoundException,
OperationRejectedException, ConcurrentModificationException,
AuthorizationException, CommunicationException;
/**
* Removes an optional child managed object.
*
* @param
* The type of the child managed object configuration
* client.
* @param d
* The optional relation definition.
* @throws IllegalArgumentException
* If the relation definition is not associated with this
* managed object's definition.
* @throws ManagedObjectNotFoundException
* If the managed object could not be removed because it
* could not found on the server.
* @throws OperationRejectedException
* If the server refuses to remove the managed object due
* to some server-side constraint which cannot be
* satisfied (for example, if it is referenced by another
* managed object).
* @throws ConcurrentModificationException
* If this managed object has been removed from the server
* by another client.
* @throws AuthorizationException
* If the server refuses to make the list the managed
* objects because the client does not have the correct
* privileges.
* @throws CommunicationException
* If the client cannot contact the server due to an
* underlying communication problem.
*/
void removeChild(
OptionalRelationDefinition d) throws IllegalArgumentException,
ManagedObjectNotFoundException, OperationRejectedException,
ConcurrentModificationException, AuthorizationException,
CommunicationException;
/**
* Set a new pending value for the specified property.
*
* See the class description for more information regarding pending
* values.
*
* @param
* The type of the property to be modified.
* @param d
* The property to be modified.
* @param value
* The new pending value for the property, or
* null if the property should be reset to
* its default behavior.
* @throws IllegalPropertyValueException
* If the new pending value is deemed to be invalid
* according to the property definition.
* @throws PropertyIsReadOnlyException
* If an attempt was made to modify a read-only property.
* @throws PropertyIsMandatoryException
* If an attempt was made to remove a mandatory property.
* @throws IllegalArgumentException
* If the specified property definition is not associated
* with this managed object.
*/
void setPropertyValue(PropertyDefinition d, T value)
throws IllegalPropertyValueException, PropertyIsReadOnlyException,
PropertyIsMandatoryException, IllegalArgumentException;
/**
* Set a new pending values for the specified property.
*
* See the class description for more information regarding pending
* values.
*
* @param
* The type of the property to be modified.
* @param d
* The property to be modified.
* @param values
* A non-null set of new pending values for
* the property (an empty set indicates that the property
* should be reset to its default behavior). The set will
* not be referenced by this managed object.
* @throws IllegalPropertyValueException
* If a new pending value is deemed to be invalid
* according to the property definition.
* @throws PropertyIsSingleValuedException
* If an attempt was made to add multiple pending values
* to a single-valued property.
* @throws PropertyIsReadOnlyException
* If an attempt was made to modify a read-only property.
* @throws PropertyIsMandatoryException
* If an attempt was made to remove a mandatory property.
* @throws IllegalArgumentException
* If the specified property definition is not associated
* with this managed object.
*/
void setPropertyValues(PropertyDefinition d, Collection values)
throws IllegalPropertyValueException, PropertyIsSingleValuedException,
PropertyIsReadOnlyException, PropertyIsMandatoryException,
IllegalArgumentException;
}