До сих пор предполагалось, что 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. Модуль совместной работы устанавливает отдельный перехватчик совместной работы, который может определить, какой именно поставщик совместной работы управляет ресурсом и вызывает связанный перехватчик.
Примечание: Все рассмотренные перехватчики совместной работы разработаны для применения в базовом модуле совместной работы. Они не предназначены для общего использования. Классы совместной работы не должны устанавливать перехватчики с помощью этих точек расширения. Вместо этого они должны реализовать перехватчики в классе класса хранилища. Более подробная информация об использовании перехватчиков приведена в разделе Перехватчики изменения общих ресурсов.