Class RepositoryProvider
- All Implemented Interfaces:
IProjectNature
,IAdaptable
RepositoryProvider
is created for each
project that is associated with a repository provider. The lifecycle of these
instances is is similar to that of the platform's 'nature' mechanism.
To create a repository provider and have it registered with the platform, a client must minimally:
- extend
RepositoryProvider
- define a repository extension in
plugin.xml
. Here is an example extension point definition:
<extension point="org.eclipse.team.core.repository">
<repository
class="org.eclipse.myprovider.MyRepositoryProvider"
id="org.eclipse.myprovider.myProviderID">
</repository>
</extension>
Once a repository provider is registered with Team, then you can associate a
repository provider with a project by invoking
RepositoryProvider.map()
.
- Since:
- 2.0
- See Also:
-
Constructor Summary
ConstructorDescriptionDefault constructor required for the resources plugin to instantiate this class from the nature extension definition. -
Method Summary
Modifier and TypeMethodDescriptionboolean
Deprecated.boolean
Return whether this repository provider can handle linked resources that are located via a URI (i.e. may not be on the local file system) or occur at an arbitrary depth in the project.final void
Configures the nature for the given project.abstract void
Configures the provider for the given project.protected void
Method deconfigured is invoked after a provider has been unmaped.<T> T
getAdapter
(Class<T> adapter) Returns an object which is an instance of the given class associated with this object.static final String[]
Returns all known (registered) RepositoryProvider ids.Returns anIFileHistoryProvider
which can be used to access file histories.Deprecated.Returns aFileModificationValidator
for pre-checking operations that modify the contents of files.abstract String
getID()
Answer the id of this provider instance.Returns anIMoveDeleteHook
for handling moves and deletes that occur within projects managed by the provider.Returns the project to which this project nature applies.static final RepositoryProvider
getProvider
(IProject project) Returns the provider for a given IProject ornull
if a provider is not associated with the project or if the project is closed or does not exist.static final RepositoryProvider
getProvider
(IProject project, String id) Returns a provider of type with the given id if associated with the given project ornull
if the project is not associated with a provider of that type or the nature id is that of a non-team repository provider nature.Return the resource rule factory for this provider.final Subscriber
Return aSubscriber
that describes the synchronization state of the resources contained in the project associated with this provider.static boolean
Returns whether the given project is shared or not.static void
Instantiate a new RepositoryProvider with concrete class by given providerID and associate it with project.void
setProject
(IProject project) Sets the project to which this nature applies.toString()
Returns a brief description of this provider.static void
Disassociates project with the repository provider its currently mapped to.validateCreateLink
(IResource resource, int updateFlags, URI location) Method validateCreateLink is invoked by the Platform Core TeamHook when a linked resource is about to be added to the provider's project.validateCreateLink
(IResource resource, int updateFlags, IPath location) Deprecated.seevalidateCreateLink(IResource, int, URI)
insteadMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.eclipse.core.resources.IProjectNature
deconfigure
-
Constructor Details
-
RepositoryProvider
public RepositoryProvider()Default constructor required for the resources plugin to instantiate this class from the nature extension definition.
-
-
Method Details
-
map
Instantiate a new RepositoryProvider with concrete class by given providerID and associate it with project.- Parameters:
project
- the project to be mappedid
- the ID of the provider to be mapped to the project- Throws:
TeamException
- if- There is no provider by that ID.
- The project is already associated with a repository provider and that provider prevented its unmapping.
- See Also:
-
unmap
Disassociates project with the repository provider its currently mapped to.- Parameters:
project
- project to unmap- Throws:
TeamException
- The project isn't associated with any repository provider.
-
configureProject
Configures the provider for the given project. This method is called aftersetProject
. If an exception is generated during configuration of the project, the provider will not be assigned to the project.- Throws:
CoreException
- if the configuration fails.
-
configure
Configures the nature for the given project. This is called byRepositoryProvider.map()
the first time a provider is mapped to a project. It is not intended to be called by clients.- Specified by:
configure
in interfaceIProjectNature
- Throws:
CoreException
- if this method fails. If the configuration fails the provider will not be associated with the project.- See Also:
-
deconfigured
protected void deconfigured()Method deconfigured is invoked after a provider has been unmaped. The project will no longer have the provider associated with it when this method is invoked. It is a last chance for the provider to clean up. -
getID
Answer the id of this provider instance. The id should be the repository provider's id as defined in the provider plugin's plugin.xml.- Returns:
- the nature id of this provider
-
getFileModificationValidator
Deprecated.Returns anIFileModificationValidator
for pre-checking operations that modify the contents of files. Returnsnull
if the provider does not wish to participate in file modification validation.- Returns:
- an
IFileModificationValidator
for pre-checking operations that modify the contents of files - See Also:
-
getFileModificationValidator2
Returns aFileModificationValidator
for pre-checking operations that modify the contents of files. Returnsnull
if the provider does not wish to participate in file modification validation. By default, this method wraps the old validator returned fromgetFileModificationValidator()
. Subclasses that which to remain backwards compatible while providing this new API should overridegetFileModificationValidator2()
to return a subclass ofFileModificationValidator
and should return the same validator fromgetFileModificationValidator()
.This method is not intended to be called by clients. Clients should use the
IWorkspace.validateEdit(IFile[], Object)
method instead.- Returns:
- an
FileModificationValidator
for pre-checking operations that modify the contents of files - Since:
- 3.3
- See Also:
-
getFileHistoryProvider
Returns anIFileHistoryProvider
which can be used to access file histories. By default, returnsnull
. Subclasses may override.- Returns:
- an
IFileHistoryProvider
which can be used to access file histories. - Since:
- 3.2
-
getMoveDeleteHook
Returns anIMoveDeleteHook
for handling moves and deletes that occur within projects managed by the provider. This allows providers to control how moves and deletes occur and includes the ability to prevent them.Returning
null
signals that the default move and delete behavior is desired.- Returns:
- an
IMoveDeleteHook
for handling moves and deletes that occur within projects managed by the provider - See Also:
-
toString
Returns a brief description of this provider. The exact details of the representation are unspecified and subject to change, but the following may be regarded as typical: "SampleProject:org.eclipse.team.cvs.provider" -
getAllProviderTypeIds
Returns all known (registered) RepositoryProvider ids.- Returns:
- an array of registered repository provider ids.
-
getProvider
Returns the provider for a given IProject ornull
if a provider is not associated with the project or if the project is closed or does not exist. This method should be called if the caller is looking for any repository provider. Otherwise callgetProvider(project, id)
to look for a specific repository provider type.- Parameters:
project
- the project to query for a provider- Returns:
- the repository provider associated with the project
-
getProvider
Returns a provider of type with the given id if associated with the given project ornull
if the project is not associated with a provider of that type or the nature id is that of a non-team repository provider nature.- Parameters:
project
- the project to query for a providerid
- the repository provider id- Returns:
- the repository provider
-
getProject
Description copied from interface:IProjectNature
Returns the project to which this project nature applies.- Specified by:
getProject
in interfaceIProjectNature
- Returns:
- the project handle
-
setProject
Description copied from interface:IProjectNature
Sets the project to which this nature applies. Used when instantiating this project nature runtime. This is called byIProject.create()
orIProject.setDescription()
and should not be called directly by clients.- Specified by:
setProject
in interfaceIProjectNature
- Parameters:
project
- the project to which this nature applies
-
validateCreateLink
Deprecated.seevalidateCreateLink(IResource, int, URI)
insteadMethod validateCreateLink is invoked by the Platform Core TeamHook when a linked resource is about to be added to the provider's project. It should not be called by other clients and it should not need to be overridden by subclasses (although it is possible to do so in special cases). Subclasses can indicate that they support linked resources by overriding thecanHandleLinkedResources()
method.- Parameters:
resource
- seeorg.eclipse.core.resources.team.TeamHook
updateFlags
- seeorg.eclipse.core.resources.team.TeamHook
location
- seeorg.eclipse.core.resources.team.TeamHook
- Returns:
- IStatus see
org.eclipse.core.resources.team.TeamHook
- Since:
- 2.1
- See Also:
-
validateCreateLink
Method validateCreateLink is invoked by the Platform Core TeamHook when a linked resource is about to be added to the provider's project. It should not be called by other clients and it should not need to be overridden by subclasses (although it is possible to do so in special cases). Subclasses can indicate that they support linked resources by overriding thecanHandleLinkedResourcesAtArbitraryDepth()
method.- Parameters:
resource
- seeorg.eclipse.core.resources.team.TeamHook
updateFlags
- seeorg.eclipse.core.resources.team.TeamHook
location
- seeorg.eclipse.core.resources.team.TeamHook
- Returns:
- IStatus see
org.eclipse.core.resources.team.TeamHook
- Since:
- 3.2
- See Also:
-
canHandleLinkedResources
Deprecated.Method canHandleLinkedResources should be overridden by subclasses who support linked resources. At a minimum, supporting linked resources requires changes to the move/delete hookIMoveDeleteHook
. This method is called after the RepositoryProvider is instantiated but beforesetProject()
is invoked so it will not have access to any state determined from thesetProject()
method.- Returns:
- boolean
- Since:
- 2.1
- See Also:
-
canHandleLinkedResourceURI
public boolean canHandleLinkedResourceURI()Return whether this repository provider can handle linked resources that are located via a URI (i.e. may not be on the local file system) or occur at an arbitrary depth in the project. This should be overridden by subclasses who support linked resources at arbitrary depth and/or in non-local file systems. This is not enabled by default since linked resources previously only occurred at the root of a project but now can occur anywhere within a project. This method is called after the RepositoryProvider is instantiated but beforesetProject()
is invoked so it will not have access to any state determined from thesetProject()
method.- Returns:
- whether this repository provider can handle linked resources that are located via a URI or occur at an arbitrary depth in the project
- Since:
- 3.2
- See Also:
-
getAdapter
Description copied from interface:IAdaptable
Returns an object which is an instance of the given class associated with this object. Returnsnull
if no such object can be found.Clients may implement this method but should generally call
Adapters.adapt(Object, Class, boolean)
rather than invoking it directly.- Specified by:
getAdapter
in interfaceIAdaptable
- Type Parameters:
T
- the class type- Parameters:
adapter
- the adapter class to look up- Returns:
- a object of the given class, or
null
if this object does not have an adapter for the given class
-
getRuleFactory
Return the resource rule factory for this provider. This factory will be used to determine the scheduling rules that are to be obtained when performing various resource operations (e.g. move, copy, delete, etc.) on the resources in the project the provider is mapped to.By default, the factory returned by this method is pessimistic and obtains the workspace lock for all operations that could result in a callback to the provider (either through the
IMoveDeleteHook
orIFileModificationValidator
). This is done to ensure that older providers are not broken. However, providers should override this method and provide a subclass ofResourceRuleFactory
that provides rules of a more optimistic granularity (e.g. project or lower).- Returns:
- the rule factory for this provider
- Since:
- 3.0
- See Also:
-
getSubscriber
Return aSubscriber
that describes the synchronization state of the resources contained in the project associated with this provider. The subscriber is obtained from theRepositoryProviderType
associated with a provider and is thus shared for all providers of the same type.- Returns:
- a subscriber that provides resource synchronization state or
null
- Since:
- 3.2
-
canHandleLinkedResourceURI()