org.eclipse.core.internal.resources
Class SaveContext

java.lang.Object
  extended by org.eclipse.core.internal.resources.SaveContext
All Implemented Interfaces:
ISaveContext

public class SaveContext
extends java.lang.Object
implements ISaveContext


Field Summary
 
Fields inherited from interface org.eclipse.core.resources.ISaveContext
FULL_SAVE, PROJECT_SAVE, SNAPSHOT
 
Method Summary
 void commit()
           
 org.eclipse.core.runtime.IPath[] getFiles()
          Returns current files mapped with the ISaveContext.map facility or an empty array if there are no mapped files.
 int getKind()
          Returns the type of this save.
 org.eclipse.core.runtime.Plugin getPlugin()
           
 int getPreviousSaveNumber()
          Returns the number for the previous save in which the plug-in actively participated, or 0 if the plug-in has never actively participated in a save before.
 IProject getProject()
          If the current save is a project save, this method returns the project being saved.
 int getSaveNumber()
          Returns the number for this save.
 boolean isDeltaNeeded()
           
 org.eclipse.core.runtime.IPath lookup(org.eclipse.core.runtime.IPath file)
          Returns the current location for the given file or null if none.
 void map(org.eclipse.core.runtime.IPath file, org.eclipse.core.runtime.IPath location)
          Maps the given plug-in file to its real location.
 void needDelta()
          Indicates that the saved workspace tree should be remembered so that a delta will be available in a subsequent session when the plug-in re-registers to participate in saves.
 void needSaveNumber()
          Indicates that this participant has actively participated in this save.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

commit

public void commit()
            throws org.eclipse.core.runtime.CoreException
Throws:
org.eclipse.core.runtime.CoreException

getFiles

public org.eclipse.core.runtime.IPath[] getFiles()
Description copied from interface: ISaveContext
Returns current files mapped with the ISaveContext.map facility or an empty array if there are no mapped files.

Specified by:
getFiles in interface ISaveContext
Returns:
the files currently mapped by the participant
See Also:
ISaveContext

getKind

public int getKind()
Description copied from interface: ISaveContext
Returns the type of this save. The types can be:

Specified by:
getKind in interface ISaveContext
Returns:
the type of the current save
See Also:
ISaveContext

getPlugin

public org.eclipse.core.runtime.Plugin getPlugin()
See Also:
ISaveContext

getPreviousSaveNumber

public int getPreviousSaveNumber()
Description copied from interface: ISaveContext
Returns the number for the previous save in which the plug-in actively participated, or 0 if the plug-in has never actively participated in a save before.

In the event of an unsuccessful save, this is the value to rollback to.

Specified by:
getPreviousSaveNumber in interface ISaveContext
Returns:
the previous save number if positive, or 0 if never saved before
See Also:
ISaveContext

getProject

public IProject getProject()
Description copied from interface: ISaveContext
If the current save is a project save, this method returns the project being saved.

Specified by:
getProject in interface ISaveContext
Returns:
the project being saved or null if this is not project save
See Also:
ISaveContext

getSaveNumber

public int getSaveNumber()
Description copied from interface: ISaveContext
Returns the number for this save. This number is guaranteed to be 1 more than the previous save number.

This is the value to use when, for example, creating files in which a participant will save its data.

Specified by:
getSaveNumber in interface ISaveContext
Returns:
the save number
See Also:
ISaveContext

isDeltaNeeded

public boolean isDeltaNeeded()

lookup

public org.eclipse.core.runtime.IPath lookup(org.eclipse.core.runtime.IPath file)
Description copied from interface: ISaveContext
Returns the current location for the given file or null if none.

Specified by:
lookup in interface ISaveContext
Returns:
the location of a given file or null
See Also:
ISaveContext

map

public void map(org.eclipse.core.runtime.IPath file,
                org.eclipse.core.runtime.IPath location)
Description copied from interface: ISaveContext
Maps the given plug-in file to its real location. This method is intended to be used with ISaveContext.getSaveNumber() to map plug-in configuration file names to real locations.

For example, assume a plug-in has a configuration file named "config.properties". The map facility can be used to map that logical name onto a real name which is specific to a particular save (e.g., 10.config.properties, where 10 is the current save number). The paths specified here should always be relative to the plug-in state location for the plug-in saving the state.

Each save participant must manage the deletion of its old state files. Old state files can be discovered using getPreviousSaveNumber or by using getFiles to discover the current files and comparing that to the list of files on disk.

Specified by:
map in interface ISaveContext
Parameters:
file - the logical name of the participant's data file
location - the real (i.e., filesystem) name by which the file should be known for this save, or null to remove the entry
See Also:
ISaveContext

needDelta

public void needDelta()
Description copied from interface: ISaveContext
Indicates that the saved workspace tree should be remembered so that a delta will be available in a subsequent session when the plug-in re-registers to participate in saves. If this method is not called, no resource delta will be made available. This facility is not available for marker deltas. Plug-ins must assume that all markers may have changed when they are activated.

Note that this is orthogonal to needSaveNumber. That is, one can ask for a delta regardless of whether or not one is an active participant.

Note that deltas are not guaranteed to be saved even if saving is requested. Deltas cannot be supplied where the previous state is too old or has become invalid.

This method is only valid for full saves. It is ignored during snapshots or project saves.

Specified by:
needDelta in interface ISaveContext
See Also:
ISaveContext

needSaveNumber

public void needSaveNumber()
Description copied from interface: ISaveContext
Indicates that this participant has actively participated in this save. If the save is successful, the current save number will be remembered; this save number will be the previous save number for subsequent saves until the participant again actively participates.

If this method is not called, the plug-in is not deemed to be an active participant in this save.

Note that this is orthogonal to needDelta. That is, one can be an active participant whether or not one asks for a delta.

Specified by:
needSaveNumber in interface ISaveContext
See Also:
ISaveContext