Ρουτίνες τροποποίησης πόρου

Μέχρι τώρα, υποθέσαμε ότι το 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. Η πρόσθετη λειτουργία ομάδας εγκαθιστά τη μεμονωμένη ρουτίνα ομάδας η οποία μπορεί να καθορίσει ποιός παροχέας ομάδας διαχειρίζεται έναν πόρο και να καλέσει τη σχετική ρουτίνα.

Σημείωση:  Και οι τρεις αυτές ρουτίνες ομάδας έχουν σχεδιαστεί ειδικά προκειμένου να χρησιμοποιούνται από την πρόσθετη λειτουργία βασικής ομάδας.  Δεν προορίζονται για γενική χρήση.  Οι παροχείς ομάδας δεν θα πρέπει να εγκαθιστούν ρουτίνες με χρήση αυτών των σημείων επέκτασης, αλλά αντίθετα να υλοποιούν αυτές τις ρουτίνες στην δική τους κλάση Παροχέα χώρου αποθήκευσης.   Για περισσότερες πληροφορίες σχετικά με τη χρήση αυτών των ρουτίνων ,δείτε την ενότητα Ρουτίνες τροποποίησης πόρου ομάδας.