Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.modeshape.graph.request
Class CloneBranchRequest

    java.lang.Object
      org.modeshape.graph.request.Request
          org.modeshape.graph.request.ChangeRequest
              org.modeshape.graph.request.CloneBranchRequest

All Implemented Interfaces:
  Serializable, Cloneable

    public class CloneBranchRequest

extends ChangeRequest

Instruction that a branch be cloned from one workspace into another. Cloning a branch differs from cloning a branch in that:

1. Nodes can be cloned within the same workspace or to another workspace; cloned nodes must be cloned from one workspace into another.
2. Copied nodes always get new UUIDs; cloned nodes always maintain their UUIDs and hence must define the behavior that occurs if a node with the same UUID already exists in the new workspace.
3. Nodes can be cloned to a specific name under a specific parent, but can only be added as a new child node at the end of the new parent's children; nodes can be cloned to an exact location among the parent's children, replacing the existing node at that location.

See Also:
  Serialized Form

Constructor Summary
`CloneBranchRequest(Location from, String fromWorkspace, Location into, String intoWorkspace, Name nameForClone, Path.Segment exactSegmentForClone, boolean removeExisting)` Create a request to clone a branch to another.

Method Summary
`void` | `cancel()` Cancel this request.
`Location` | `changedLocation()` Get the location of the top-most node that is to be changed by this request.
`String` | `changedWorkspace()` Get the name of the workspace that was changed by this request.
`boolean` | `changes(String workspace, Path path)` Determine if this request changes the branch at the given path.
`CloneBranchRequest` | `clone()` This method does not clone the results.
`Name` | `desiredName()` Get the name of the clone if it is to be different than that of the original.
`Path.Segment` | `desiredSegment()` Get the exact `segment` at which the clone should be rooted
`boolean` | `equals(Object obj)`
`Location` | `from()` Get the location defining the top of the branch to be cloned
`String` | `fromWorkspace()` Get the name of the workspace containing the branch to be cloned.
`Location` | `getActualLocationAfter()` Get the actual location of the node after being cloned.
`Location` | `getActualLocationBefore()` Get the actual location of the node before being cloned.
`Set<Location>` | `getRemovedNodes()` Get the set of nodes that were removed because of this clone operation.
`RequestType` | `getType()` Returns the type of the request
`int` | `hashCode()`
`Location` | `into()` Get the location defining the parent where the new clone is to be placed
`String` | `intoWorkspace()` Get the name of the workspace where the clone is to be placed
`boolean` | `isReadOnly()` Return whether this request only reads information.
`boolean` | `isSameWorkspace()` Determine whether this clone operation is within the same workspace.
`boolean` | `removeExisting()` Gets whether the clone should remove existing nodes in the `new workspace` with the same UUID as any of the nodes in the source branch or should throw an exception if such conflict is detected.
`void` | `setActualLocations(Location fromLocation, Location intoLocation)` Sets the actual and complete location of the node being renamed and its new location.
`void` | `setRemovedNodes(Set<Location> existingNodesThatWereRemoved)` Set the locations of the nodes that were removed by this operation, if `removeExisting()` is true.
`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

### CloneBranchRequest

    public CloneBranchRequest(Location from,
                              String fromWorkspace,
                              Location into,
                              String intoWorkspace,
                              Name nameForClone,
                              Path.Segment exactSegmentForClone,
                              boolean removeExisting)

  Create a request to clone a branch to another.

  Parameters:
    `from` - the location of the top node in the existing branch that is to be cloned
    `fromWorkspace` - the name of the workspace where the `from` node exists
    `into` - the location of the existing node into which the clone should be placed
    `intoWorkspace` - the name of the workspace where the `into` node is to be cloned
    `nameForClone` - the desired name for the node that results from the clone, or null if the name of the original should be used
    `exactSegmentForClone` - the exact `segment` at which the cloned tree should be rooted.
    `removeExisting` - whether any nodes in the intoWorkspace with the same UUIDs as a node in the source branch should be removed (if true) or a `UuidAlreadyExistsException` should be thrown.
  Throws:
    `IllegalArgumentException` - if any of the parameters are null except for `nameForClone` or `exactSegmentForClone`. Exactly one of `nameForClone` and `exactSegmentForClone` must be null.

Method Detail

### from

    public Location from()

  Get the location defining the top of the branch to be cloned

  Returns:
    the from location; never null

### into

    public Location into()

  Get the location defining the parent where the new clone is to be placed

  Returns:
    the to location; never null

### fromWorkspace

    public String fromWorkspace()

  Get the name of the workspace containing the branch to be cloned.

  Returns:
    the name of the workspace containing the branch to be cloned; never null

### intoWorkspace

    public String intoWorkspace()

  Get the name of the workspace where the clone is to be placed

  Returns:
    the name of the workspace where the clone is to be placed; never null

### isSameWorkspace

    public boolean isSameWorkspace()

  Determine whether this clone operation is within the same workspace.

  Returns:
    true if this operation is to be performed within the same workspace, or false if the workspace of the `original` is different than that of the `clone`

### desiredName

    public Name desiredName()

  Get the name of the clone if it is to be different than that of the original.

  Returns:
    the desired name of the clone, or null if an `exact segment` is specified.

### desiredSegment

    public Path.Segment desiredSegment()

  Get the exact `segment` at which the clone should be rooted

  Returns:
    the desired segment of the clone, or null if the desired name should be used to generate a new child node for the `into` location

### removeExisting

    public boolean removeExisting()

  Gets whether the clone should remove existing nodes in the `new workspace` with the same UUID as any of the nodes in the source branch or should throw an exception if such conflict is detected.

  Returns:
    whether the clone should remove existing nodes in the `new workspace` with the same UUID as any of the nodes in the source branch or should throw an exception if such conflict is detected; true indicates that the nodes should be removed and false indicates that an exception should be thrown

### 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()`

### setActualLocations

    public void setActualLocations(Location fromLocation,
                                   Location intoLocation)

  Sets the actual and complete location of the node being renamed and its new location. This method must be called when processing the request, and the actual location must have a `path`.

  Parameters:
    `fromLocation` - the actual location of the node being cloned
    `intoLocation` - the actual location of the new clone of the node
  Throws:
    `IllegalArgumentException` - if the either location is null; or if the either location does not have a path
    `IllegalStateException` - if the request is frozen

### getActualLocationBefore

    public Location getActualLocationBefore()

  Get the actual location of the node before being cloned.

  Returns:
    the actual location of the node before being moved, or null if the actual location was not set

### getActualLocationAfter

    public Location getActualLocationAfter()

  Get the actual location of the node after being cloned.

  Returns:
    the actual location of the node after being cloned, or null if the actual location was not set

### setRemovedNodes

    public void setRemovedNodes(Set<Location> existingNodesThatWereRemoved)

  Set the locations of the nodes that were removed by this operation, if `removeExisting()` is true.

  Parameters:
    `existingNodesThatWereRemoved` - the (immutable) set of existing node locations; may be null

### getRemovedNodes

    public Set<Location> getRemovedNodes()

  Get the set of nodes that were removed because of this clone operation.

  Returns:
    the immutable set of locations of the nodes that were removed; never null but possibly empty

### changes

    public boolean changes(String workspace,
                           Path path)

  Determine if this request changes the branch at the given path.

  Specified by:
    `changes` in class `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.modeshape.graph.property.Path)`

### changedLocation

    public Location changedLocation()

  Get the location of the top-most node that is to be changed by this request. If this request has been completed, this location will always have a `path`.

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

### changedWorkspace

    public String changedWorkspace()

  Get the name of the workspace that was changed by this request.

  Specified by:
    `changedWorkspace` in class `ChangeRequest`
  Returns:
    the name of the workspace changed by this request
  See Also:
    `ChangeRequest.changedWorkspace()`

### hashCode

    public int hashCode()

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

### 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()`

### 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()`

### clone

    public CloneBranchRequest clone()

  This method does not clone the results.

  This method does not clone the results.

  Specified by:
    `clone` in class `ChangeRequest`
  See Also:
    `ChangeRequest.clone()`

### 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

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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