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

## org.eclipse.core.resources
Interface IResourceRuleFactory

All Known Implementing Classes:
  ResourceRuleFactory

public interface IResourceRuleFactory

A resource rule factory returns scheduling rules for API methods that modify the workspace. These rules can be used when creating jobs or other operations that perform a series of modifications on the workspace. This allows clients to implement two phase commit semantics, where all necessary rules are obtained prior to executing a long running operation.

Note that simple use of the workspace APIs does not require use of scheduling rules. All workspace API methods that modify the workspace will automatically obtain any scheduling rules needed to perform the modification. However, if you are aggregating a set of changes to the workspace using `WorkspaceJob` or `IWorkspaceRunnable` you can use scheduling rules to lock a portion of the workspace for the duration of the job or runnable. If you do so, a runtime exception will occur if you try to modify a portion of the workspace that is not covered by the rule for the runnable or job.

If more than one rule is needed, they can be aggregated using the `MultiRule.combine` method. Simplifying a group of rules does not change the set of resources that are covered, but can improve job scheduling performance.

Note that `null` is a valid scheduling rule (indicating that no resources need to be locked), and thus all methods in this class may return `null`.

Since:
  3.0
See Also:
  `WorkspaceJob`, `IWorkspace.run(IWorkspaceRunnable, ISchedulingRule, int, org.eclipse.core.runtime.IProgressMonitor)`, `MultiRule.combine(ISchedulingRule, ISchedulingRule)`

Method Summary
`ISchedulingRule` | `buildRule()` Returns the scheduling rule that is required for building a project or the entire workspace.
`ISchedulingRule` | `copyRule(IResource source, IResource destination)` Returns the scheduling rule that is required for copying a resource.
`ISchedulingRule` | `createRule(IResource resource)` Returns the scheduling rule that is required for creating a project, folder, or file.
`ISchedulingRule` | `deleteRule(IResource resource)` Returns the scheduling rule that is required for deleting a resource.
`ISchedulingRule` | `markerRule(IResource resource)` Returns the scheduling rule that is required for creating, modifying, or deleting markers on a resource.
`ISchedulingRule` | `modifyRule(IResource resource)` Returns the scheduling rule that is required for modifying a resource.
`ISchedulingRule` | `moveRule(IResource source, IResource destination)` Returns the scheduling rule that is required for moving a resource.
`ISchedulingRule` | `refreshRule(IResource resource)` Returns the scheduling rule that is required for performing `refreshLocal` on a resource.
`ISchedulingRule` | `validateEditRule(IResource[] resources)` Returns the scheduling rule that is required for a `validateEdit`

Method Detail

### createRule

    public ISchedulingRule createRule(IResource resource)

  Returns the scheduling rule that is required for creating a project, folder, or file.

  Parameters:
    `resource` - the resource being created
  Returns:
    a scheduling rule, or `null`

### buildRule

    public ISchedulingRule buildRule()

  Returns the scheduling rule that is required for building a project or the entire workspace.

  Returns:
    a scheduling rule, or `null`

### copyRule

    public ISchedulingRule copyRule(IResource source,
                                    IResource destination)

  Returns the scheduling rule that is required for copying a resource.

  Parameters:
    `source` - the source of the copy
    `destination` - the destination of the copy
  Returns:
    a scheduling rule, or `null`

### deleteRule

    public ISchedulingRule deleteRule(IResource resource)

  Returns the scheduling rule that is required for deleting a resource.

  Parameters:
    `resource` - the resource to be deleted
  Returns:
    a scheduling rule, or `null`

### markerRule

    public ISchedulingRule markerRule(IResource resource)

  Returns the scheduling rule that is required for creating, modifying, or deleting markers on a resource.

  Parameters:
    `resource` - the resource owning the marker to be modified
  Returns:
    a scheduling rule, or `null`

### modifyRule

    public ISchedulingRule modifyRule(IResource resource)

  Returns the scheduling rule that is required for modifying a resource. For files, modification includes setting and appending contents. For projects, modification includes opening or closing the project. For all resources `touch` is considered to be a modification.

  Parameters:
    `resource` - the resource being modified
  Returns:
    a scheduling rule, or `null`

### moveRule

    public ISchedulingRule moveRule(IResource source,
                                    IResource destination)

  Returns the scheduling rule that is required for moving a resource.

  Parameters:
    `source` - the source of the move
    `destination` - the destination of the move
  Returns:
    a scheduling rule, or `null`

### refreshRule

    public ISchedulingRule refreshRule(IResource resource)

  Returns the scheduling rule that is required for performing `refreshLocal` on a resource.

  Parameters:
    `resource` - the resource to refresh
  Returns:
    a scheduling rule, or `null`

### validateEditRule

    public ISchedulingRule validateEditRule(IResource[] resources)

  Returns the scheduling rule that is required for a `validateEdit`

  Parameters:
    `resources` - the resources to be validated
  Returns:
    a scheduling rule, or `null`

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

Guidelines for using Eclipse APIs.

Copyright (c) IBM Corp. and others 2000, 2004. All rights reserved.