지금까지는 자원 API를 사용하여 사용자 파일 시스템에 있는 자원을 수정하는 것으로 가정했습니다. 이것이 작업공간의 기본적인 구조이지만 플러그인에서는 다른 곳에서 관리되는 자원을 조작할 수 있는 기능을 추가할 수도 있습니다. 예를 들어 플랫폼 팀 지원 플러그인에서는 버전화 저장소 관리 아래에 있는 자원에 대해 작업할 수 있는 기능을 추가합니다.
자원 API에는 팀 지원 플러그인 및 팀 지원을 사용하여 저장소 제공자를 구현하는 플러그인을 사용 가능하게 하기 위해 특별히 추가된 기능이 포함되어 있습니다. 다음 설명은 자원 후크를 등록하는 일반 메커니즘을 다룹니다. 팀에서 이러한 후크를 사용하는 방법에 대한 설명은 저장소 제공자 구현을 참조하십시오.
이 후크를 사용하면 팀 플러그인과 팀 플러그인의 제공자가 자원 이동 및 삭제 구현 방법을 제어할 수 있습니다. 후크에는 이 작업이 발생하지 않도록 방지하는 기능이 포함됩니다. 구현자는 파일, 폴더 및 프로젝트를 이동하거나 삭제하기 위한 대체 구현을 제공할 수 있습니다.
팀 플러그인에서는 org.eclipse.core.resources.moveDeleteHook 확장점을 사용하여 해당 후크를 등록합니다.
<extension point="org.eclipse.core.resources.moveDeleteHook" id="MoveDeleteHook"> <moveDeleteHook class="org.eclipse.team.internal.core.MoveDeleteManager"/> </extension>
제공된 클래스에서는 자원을 이동하거나 삭제할 때마다 플랫폼에서 호출하는 IMoveDeleteHook를 구현해야 합니다. 팀 플러그인에서는 어떤 팀 제공자가 자원을 관리하고 특정 후크를 호출하는지 판별할 수 있는 이동/삭제 후크 관리자를 설치합니다.
팀 저장소 제공자가 파일 편집이나 저장을 방지하거나 방해해야 할 수도 있습니다. 팀 플러그인에서는 확장점 org.eclipse.core.resources.fileModificationValidator를 사용하여 자원을 수정할 때마다 호출되는 유효성 검증기를 등록하여 이를 수행합니다.
<extension point="org.eclipse.core.resources.fileModificationValidator" id="FileValidator"> <fileModificationValidator class="org.eclipse.team.internal.core.FileModificationValidatorManager"/> </extension>
제공된 클래스에서는 자원을 저장하거나 열 때마다 플랫폼에서 호출하는 IFileModificationValidator를 구현해야 합니다. 팀 플러그인에서는 어떤 팀 제공자가 자원을 관리하고 특정 유효성 검증기를 호출하는지 판별할 수 있는 파일 수정 관리자를 설치합니다.
저장소 제공자는 가끔 추가 제한을 부과하거나 작업공간 동작을 사용자 정의하기 위해 추가 작업공간 조작을 후크해야 합니다. org.eclipse.core.resources.teamHook 확장점이 팀 제공자에 대한 몇몇 기타 특수 기능을 제공합니다. 특히 이 후크는 팀 제공자가 링크된 폴더와 파일이 주어진 프로젝트에 허용되는지 여부를 결정할 수 있습니다. 일부 저장소 시스템은 디스크에 있는 프로젝트의 실제 레이아웃에 관한 엄격한 규칙이 있으며 임의 위치에 링크되는 자원을 처리할 수 없습니다.
팀 후크는 또한 저장소 제공자가 모든 작업공간 조작에 의해 사용될 스케줄링 규칙 팩토리를 제공할 수 있습니다. 어떤 방법으로든지 작업공간을 수정하는 API 메소드가 호출될 때마다, 스케줄링 규칙은 작업공간에 의해 확보됩니다. 이 스케줄링 규칙은 다른 스레드가 API 메소드의 호출 중에 해당 자원을 수정하지 못하게 합니다. 저장소 제공자가 파일 수정 유효성 검증기 또는 후크 이동/삭제 안에서 추가 작업을 수행 중인 경우 제공자는 또한 작업공간에 필요한 추가 스케줄링 규칙을 지시해야 합니다. 작업공간이 스케줄링 규칙을 사용하는 방법에 대한 자세한 내용은 자원 일괄처리에 대한 섹션을 참조하십시오.
팀 후크에 대해 제공되는 클래스는 TeamHook를 구현해야 합니다. 팀 플러그인이 자원을 관리하고 있는 팀 제공자를 판별하고 특정 후크를 호출할 수 있는 단일 팀 후크를 설치합니다.
참고: 세 개의 이들 팀 후크 모두가 특별히 팀 코어 플러그인에 의해 사용되기 위해 설계되었습니다. 일반적인 사용을 위한 것이 아닙니다. 팀 제공자는 이들 확장점을 사용하여 후크를 설치해서는 안되며, 대신 저장소 제공자 클래스에서 후크를 구현해야 합니다. 이러한 후크 사용에 대한 자세한 정보는 팀 자원 수정 후크를 참조하십시오.