org.jboss.dna.graph.request
Class UpdatePropertiesRequest

java.lang.Object
  extended by org.jboss.dna.graph.request.Request
      extended by org.jboss.dna.graph.request.UpdatePropertiesRequest
All Implemented Interfaces:
Serializable, ChangeRequest

public class UpdatePropertiesRequest
extends Request
implements ChangeRequest

Instruction to update the properties on the node at the specified location.

This request is capable of specifying that certain properties are to have new values and that other properties are to be removed. The request has a single map of properties keyed by their name. If a property is to be set with new values, the map will contain an entry with the property keyed by its name. However, if a property is to be removed, the entry will contain the property name for the key but will have a null entry value.

The use of the map also ensures that a single property appears only once in the request (it either has new values or it is to be removed).

Note that the number of values in a property (e.g., Property.size(), Property.isEmpty(), Property.isSingle(), and Property.isMultiple()) has no influence on whether the property should be removed. It is possible for a property to have no values.

Author:
Randall Hauch
See Also:
Serialized Form

Constructor Summary
UpdatePropertiesRequest(Location on, String workspaceName, Map<Name,Property> properties)
          Create a request to update the properties on the node at the supplied location.
 
Method Summary
 Location changedLocation()
          Get the location of the top-most node that is to be changed by this request.
 boolean changes(String workspace, Path path)
          Determine if this request changes the branch at the given path.
 boolean equals(Object obj)
          
 Location getActualLocationOfNode()
          Get the actual location of the node that was updated.
 String inWorkspace()
          Get the name of the workspace in which the node exists.
 boolean isReadOnly()
          Return whether this request only reads information.
 Location on()
          Get the location defining the node that is to be updated.
 Map<Name,Property> properties()
          Get the map of properties for the node, keyed by property name.
 void setActualLocationOfNode(Location actual)
          Sets the actual and complete location of the node being updated.
 String toString()
          
 
Methods inherited from class org.jboss.dna.graph.request.Request
cancel, getError, hasError, isCancelled, setError
 
Methods inherited from class java.lang.Object
getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

UpdatePropertiesRequest

public UpdatePropertiesRequest(Location on,
                               String workspaceName,
                               Map<Name,Property> properties)
Create a request to update the properties on the node at the supplied location.

Parameters:
on - the location of the node to be read
workspaceName - the name of the workspace containing the node
properties - the map of properties (keyed by their name), which is reused without copying
Throws:
IllegalArgumentException - if the location or workspace name is null or if there are no properties to update
Method Detail

isReadOnly

public boolean isReadOnly()
Return whether this request only reads information.

Specified by:
isReadOnly in class Request
Returns:
true if this request reads information, or false if it requests that the repository content be changed in some way
See Also:
Request.isReadOnly()

on

public Location on()
Get the location defining the node that is to be updated.

Returns:
the location of the node; never null

inWorkspace

public String inWorkspace()
Get the name of the workspace in which the node exists.

Returns:
the name of the workspace; never null

properties

public Map<Name,Property> properties()
Get the map of properties for the node, keyed by property name. Any property to be removed will have a map entry with a null value.

Returns:
the properties being updated; never null and never empty

setActualLocationOfNode

public void setActualLocationOfNode(Location actual)
Sets the actual and complete location of the node being updated. This method must be called when processing the request, and the actual location must have a path.

Parameters:
actual - the actual location of the node being updated, or null if the current location should be used
Throws:
IllegalArgumentException - if the actual location does represent the same location as the current location, or if the actual location does not have a path.

getActualLocationOfNode

public Location getActualLocationOfNode()
Get the actual location of the node that was updated.

Returns:
the actual location, or null if the actual location was not set

changes

public boolean changes(String workspace,
                       Path path)
Determine if this request changes the branch at the given path.

Specified by:
changes in interface ChangeRequest
Parameters:
workspace - the name of the workspace; may not be null
path - the path; may not be null
Returns:
true if this request changes a node under the given path
See Also:
ChangeRequest.changes(java.lang.String, org.jboss.dna.graph.property.Path)

equals

public boolean equals(Object obj)

Overrides:
equals in class Object
See Also:
Object.equals(java.lang.Object)

changedLocation

public Location changedLocation()
Get the location of the top-most node that is to be changed by this request.

Specified by:
changedLocation in interface ChangeRequest
Returns:
the location changed by this request
See Also:
ChangeRequest.changedLocation()

toString

public String toString()

Overrides:
toString in class Object
See Also:
Object.toString()


Copyright © 2008-Present JBoss a division of Red Hat. All Rights Reserved.