Até agora, assumimos que a API do recurso está sendo utilizada para modificar os recursos que estão localizados no sistema de arquivos do usuário. Isso é realmente a estrutura fundamental do espaço de trabalho, mas também é possível que um plug-in inclua capacidades para manipulação de recursos que são gerenciados em algum lugar. Por exemplo, os plug-ins de Suporte à equipe da plataforma incluem a capacidade de funcionar com recursos que estão sob o gerenciamento de um repositório de criação de versões.
A API do recurso inclui capacidades que foram incluídas especificamente para ativar os plug-ins de suporte à equipe e os plug-ins que implementam fornecedores de repositório utilizando o suporte à equipe. A discussão a seguir abrange o mecanismo genérico para o registro de ganchos de recursos. ConsulteImplementando um fornecedor do repositório para obter uma discussão sobre como a equipe utiliza esses ganchos.
Este gancho permite que o plug-in da equipe e seus fornecedores controlem como os movimentos e exclusões de recursos são implementados. O gancho inclui a capacidade de evitar que essas operações aconteçam. Os implementadores podem fornecer implementações alternativas para mover ou excluir arquivos, pastas e projetos.
O plug-in da equipe utiliza o ponto de extensão org.eclipse.core.resources.moveDeleteHook para registrar seu gancho:
<extension point="org.eclipse.core.resources.moveDeleteHook" id="MoveDeleteHook"> <moveDeleteHook class="org.eclipse.team.internal.core.MoveDeleteManager"/> </extension>
A classe fornecida deve implementar IMoveDeleteHook, que é chamado pela plataforma sempre que um recurso é movido ou excluído. O plug-in da equipe instala um gerenciador de gancho de movimento/exclusão que pode determinar qual fornecedor de equipe está gerenciando um recurso e chamar seu gancho específico.
Também é possível que os fornecedores de repositório da equipe precisem impedir ou interferir na edição ou salvamento de um arquivo. Isso é realizado pelo plug-in da equipe utilizando o ponto de extensão org.eclipse.core.resources.fileModificationValidator para registrar um validador que é chamado sempre que um recurso deve ser modificado.
<extension point="org.eclipse.core.resources.fileModificationValidator" id="FileValidator"> <fileModificationValidator class="org.eclipse.team.internal.core.FileModificationValidatorManager"/> </extension>
A classe fornecida deve implementar IFileModificationValidator, que é chamado pela plataforma sempre que um recurso é salvo ou aberto. O plug-in da equipe instala um gerenciador de modificação de arquivo que pode determinar qual fornecedor de equipe está gerenciando um recurso e chamar seu validador específico.
Provedores de repositório algumas vezes precisam fazer gancho em operações adicionais do espaço de trabalho para impor restrições extras ou para customizar o comportamento do espaço de trabalho. O ponto de extensão org.eclipse.core.resources.teamHook fornece algumas outras funções especiais para provedores da equipe. Particularmente, esse gancho permite que um provedor de equipe decida se pastas e arquivos vinculados devem ter permissão para uma projeto específico. Alguns sistemas de repositório têm regras restritas sobre o layout físico de projetos no disco e não podem manipular recursos vinculados a locais arbitrários.
O gancho de equipe também permite que um provedor de repositório forneça uma fábrica de informações de regra de planejamento que será utilizada por todas as operações do espaço de trabalho. Cada vez que um método de API que modifica o espaço de trabalho de alguma maneira é chamado, uma regra de planejamento é obtida pelo espaço de trabalho. Essa regra de planejamento evita que outros encadeamentos modifiquem esses recursos durante a chamada do método da API. Se um provedor de repositório estiver executando trabalho adicional dentro de um validador de modificação de arquivo ou gancho de movimentação/exclusão, o provedor deverá também informar o espaço de trabalho quais regras adicionais de planejamento ele precisará. Consulte a seção em Batch de Recursos para obter mais detalhes sobre como o espaço de trabalho utiliza regras de planejamento.
A classe fornecida para o gancho de equipe deve implementar o TeamHook. O plug-in de equipe instala o único gancho de equipe que pode determinar qual provedor de equipe está gerenciando um recurso e chamar seu gancho específico.
Nota: Todos esses três ganchos de equipe foram projetados especificamente para serem utilizados pelo plug-in de núcleo da equipe. Eles não se destinam para uso geral. Os provedores de equipe não devem instalar ganchos utilizando esses pontos de extensão, mas em vez disso, implementar esses ganchos em sua classe do Provedor de Repositório. Consulte Ganchos de modificação de recursos de equipe para obter informações adicionais sobre a utilização desses ganchos.