org.modeshape.graph.request
Class FunctionRequest

java.lang.Object
  extended by org.modeshape.graph.request.Request
      extended by org.modeshape.graph.request.FunctionRequest
All Implemented Interfaces:
Serializable, Cloneable

public final class FunctionRequest
extends Request
implements Cloneable

See Also:
Serialized Form

Constructor Summary
FunctionRequest(Function function, Location at, String workspaceName, Map<String,Serializable> inputs)
          Create a request to execute the function at the supplied location.
 
Method Summary
 void addActualRequest(Request request)
          Add an actual request created and executed by the invocation of this function.
 void addActualRequests(Iterable<Request> requests)
          Add the actual requests created and executed by the invocation of this function.
 Location at()
          Get the location defining the node that is to be read.
 void cancel()
          Cancel this request.
 FunctionRequest clone()
           This method does not clone the results.
protected
<T> T
convert(String name, Class<T> type, T defaultValue, Map<String,Serializable> values, ExecutionContext context)
           
protected
<T> T
convert(String name, PropertyType type, T defaultValue, Map<String,Serializable> values, ExecutionContext context)
           
 boolean equals(Object obj)
          
 Function function()
          Get the function implementation
 Location getActualLocationOfNode()
          Get the actual location of the node whose children and properties were read.
 int getActualRequestCount()
          Get the number of actual requests created and executed by the invocation of this function.
 Iterator<Request> getActualRequests()
          Get the actual requests created and executed by the invocation of this function.
 RequestType getType()
          Returns the type of the request
 int hashCode()
          
 Object input(String name)
          Get the value for the named input to this function.
<T> T
input(String name, Class<T> type, T defaultValue, ExecutionContext context)
          Get the value for the named input to this function.
<T> T
input(String name, PropertyType type, T defaultValue, ExecutionContext context)
          Get the value for the named input to this function.
 Map<String,Serializable> inputs()
          The unmodifiable map of input parameter name to value.
 String inWorkspace()
          Get the name of the workspace in which the function is being applied.
 boolean isReadOnly()
          Return whether this request only reads information.
 Object output(String name)
          Get the value for the named output to this function.
<T> T
output(String name, Class<T> type, ExecutionContext context)
          Get the value for the named output to this function.
<T> T
output(String name, Class<T> type, T defaultValue, ExecutionContext context)
          Get the value for the named output to this function.
<T> T
output(String name, PropertyType type, T defaultValue, ExecutionContext context)
          Get the value for the named output to this function.
 Map<String,Serializable> outputs()
          The unmodifiable map of input parameter name to value.
 void setActualLocationOfNode(Location actual)
          Sets the actual and complete location of the node whose children and properties have been read.
 Serializable setOutput(String name, Serializable value)
          Set the value for the named output parameter for the function.
 String toString()
          
 
Methods inherited from class org.modeshape.graph.request.Request
checkNotFrozen, freeze, getError, hasError, isCancelled, isFrozen, printable, printable, setError, setLatchForFreezing
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

FunctionRequest

public FunctionRequest(Function function,
                       Location at,
                       String workspaceName,
                       Map<String,Serializable> inputs)
Create a request to execute the function at the supplied location.

Parameters:
function - the function to be performed
at - the location of the node to be read
workspaceName - the name of the workspace containing the node
inputs - the immutable map of input names to values for the function invocation, or null if there are no inputs
Throws:
IllegalArgumentException - if the function, location or workspace name is null
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()

at

public Location at()
Get the location defining the node that is to be read.

Returns:
the location of the node; never null

inWorkspace

public String inWorkspace()
Get the name of the workspace in which the function is being applied.

Returns:
the name of the workspace; never null

inputs

public Map<String,Serializable> inputs()
The unmodifiable map of input parameter name to value.

Returns:
the map of input names to values; never null but possibly empty

input

public Object input(String name)
Get the value for the named input to this function. The actual value is returned as-is.

Parameters:
name - the name of the input parameter
Returns:
the (possibly null) value for the named input, or the specified default value if there is no such named parameter

input

public <T> T input(String name,
                   Class<T> type,
                   T defaultValue,
                   ExecutionContext context)
Get the value for the named input to this function. If the actual value corresponds to a PropertyType, then the value will be converted to the specified type using the ExecutionContext's ValueFactories. Otherwise, the value will simply be cast to the supplied type.

Type Parameters:
T - the desired type of the value
Parameters:
name - the name of the input parameter
type - the expected type of the value
defaultValue - the default value to use, if the input doesn't have the named parameter
context - the execution context to be used for converting the value; may not be null
Returns:
the (possibly null) value for the named input, or the specified default value if there is no such named parameter
Throws:
ValueFormatException - if the conversion from to the expected value could not be performed

input

public <T> T input(String name,
                   PropertyType type,
                   T defaultValue,
                   ExecutionContext context)
Get the value for the named input to this function. The actual value will be converted to the specified type using the ExecutionContext's ValueFactories.

Type Parameters:
T - the desired type of the value
Parameters:
name - the name of the input parameter
type - the expected type of the value
defaultValue - the default value to use, if the input doesn't have the named parameter
context - the execution context to be used for converting the value; may not be null
Returns:
the (possibly null) value for the named input, or the specified default value if there is no such named parameter
Throws:
ValueFormatException - if the conversion from to the expected value could not be performed

function

public Function function()
Get the function implementation

Returns:
the function implementation; never null

outputs

public Map<String,Serializable> outputs()
The unmodifiable map of input parameter name to value.

Returns:
the map of input names to values; never null but possibly empty

output

public Object output(String name)
Get the value for the named output to this function. The actual value is returned as-is.

Parameters:
name - the name of the output parameter
Returns:
the (possibly null) value for the named output, or null if there is no such named parameter

output

public <T> T output(String name,
                    Class<T> type,
                    ExecutionContext context)
Get the value for the named output to this function.

Type Parameters:
T - the desired type of the value
Parameters:
name - the name of the output parameter
type - the expected type of the value used to convert the actual value using the
context - the execution context to be used for converting the value; may not be null
Returns:
the (possibly null) value for the named output, or null if there is no such named parameter
Throws:
ValueFormatException - if the conversion from to the expected value could not be performed

output

public <T> T output(String name,
                    Class<T> type,
                    T defaultValue,
                    ExecutionContext context)
Get the value for the named output to this function.

Type Parameters:
T - the desired type of the value
Parameters:
name - the name of the output parameter
type - the expected type of the value used to convert the actual value using the
defaultValue - the default value for the output parameter, if there is no such named parameter
context - the execution context to be used for converting the value; may not be null
Returns:
the (possibly null) value for the named output, or the specified default if there is no such named parameter
Throws:
ValueFormatException - if the conversion from to the expected value could not be performed

output

public <T> T output(String name,
                    PropertyType type,
                    T defaultValue,
                    ExecutionContext context)
Get the value for the named output to this function. The actual value will be converted to the specified type using the ExecutionContext's ValueFactories.

This is a convenience method, as the value would have already been set by the same function invocation using setOutput(String, Serializable).

Type Parameters:
T - the desired type of the value
Parameters:
name - the name of the output parameter
type - the expected type of the value
defaultValue - the default value for the output parameter, if there is no such named parameter
context - the execution context to be used for converting the value; may not be null
Returns:
the (possibly null) value for the named output, or null if there is no such named parameter
Throws:
ValueFormatException - if the conversion from to the expected value could not be performed

setOutput

public Serializable setOutput(String name,
                              Serializable value)
Set the value for the named output parameter for the function. If the value is nul, the parameter will be removed.

Parameters:
name - the name of the output parameter; may not be null
value - the value for the named parameter; may be null
Returns:
the prior value for this named parameter
Throws:
IllegalArgumentException - if the name is null or empty
IllegalStateException - if the request is frozen

addActualRequest

public void addActualRequest(Request request)
Add an actual request created and executed by the invocation of this function. This method will be called by the Processor and should not be called elsewhere.

Parameters:
request - the request
Throws:
IllegalArgumentException - if the request reference is null

addActualRequests

public void addActualRequests(Iterable<Request> requests)
Add the actual requests created and executed by the invocation of this function. This method will be called by the Processor and should not be called elsewhere.

Parameters:
requests - the requests
Throws:
IllegalArgumentException - if the requests reference is null

getActualRequestCount

public int getActualRequestCount()
Get the number of actual requests created and executed by the invocation of this function. This will always be 0 before the request is processed.

Returns:
the number of actual requests; never negative

getActualRequests

public Iterator<Request> getActualRequests()
Get the actual requests created and executed by the invocation of this function. These may be read requests or change requests.

Returns:
the actual requests that the function created and executed; never null

setActualLocationOfNode

public void setActualLocationOfNode(Location actual)
Sets the actual and complete location of the node whose children and properties have been read. 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 read, or null if the current location should be used
Throws:
IllegalArgumentException - if the actual location is null or does not have a path.
IllegalStateException - if the request is frozen

getActualLocationOfNode

public Location getActualLocationOfNode()
Get the actual location of the node whose children and properties were read.

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

cancel

public void cancel()
Cancel this request. After this method is called, the cancellation flag is set, and any current or future processing of the request may be affected by the cancellation. (Note however, that processors may choose to not respect this request.)

This method is safe to be called by different threads.

Overrides:
cancel in class Request
See Also:
Request.cancel()

hashCode

public int hashCode()

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

equals

public boolean equals(Object obj)

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

toString

public String toString()

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

getType

public RequestType getType()
Description copied from class: Request
Returns the type of the request

Specified by:
getType in class Request
Returns:
the type of the request

clone

public FunctionRequest clone()

This method does not clone the results.

Overrides:
clone in class Object

convert

protected final <T> T convert(String name,
                              Class<T> type,
                              T defaultValue,
                              Map<String,Serializable> values,
                              ExecutionContext context)

convert

protected final <T> T convert(String name,
                              PropertyType type,
                              T defaultValue,
                              Map<String,Serializable> values,
                              ExecutionContext context)


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