Το Eclipse άλλαξε με τρόπους ασύμβατους μεταξύ της έκδοσης 3.0 και της 3.1 όσον αφορά τους τρόπους που επηρεάζουν τις πρόσθετες λειτουργίες. Οι ακόλουθες καταχωρήσεις περιγράφουν τις περιοχές που άλλαξαν και παρέχουν οδηγίες για τη μετάβαση των πρόσθετων λειτουργιών της εκδοχής 3.0 στην εκδοχή 3.1. Σημειώστε ότι χρειάζεστε μόνο να ανατρέξετε εδώ μόνο εφόσον παρουσιάζονται προβλήματα κατά την εκτέλεση των πρόσθετων λειτουργιών της εκδοχής 3.0 στην εκδοχή 3.1.
Τι επηρεάζεται: Οι πρόσθετες λειτουργίες οι οποίες αποδίδουν αρχικές τιμές στις προεπιλεγμένες τιμές προτιμήσεων πρόσθετων λειτουργιών τους αντικαθιστώντας την Plugin#initializeDefaultPreferences
ή χρησιμοποιώντας λειτουργίες ακρόασης αλλαγών προτιμήσεων.
Περιγραφή: Στο Eclipse 3.1 το αντικείμενο org.eclipse.jface.preference.IPreferenceStore
που λαμβάνεται από το org.eclipse.ui.plugin.AbstractUIPlugin#getPreferenceStore
μεταβιβάστηκε για να λειτουργεί πάνω από το νέο πλαίσιο προτιμήσεων του 3.0 Eclipse που παρέχεται από την πρόσθετη λειτουργία org.eclipse.core.runtime
.
Απαιτούμενη ενέργεια: Ως αποτέλεσμα, οι πελάτες που χρησιμοποιούν τα API προτιμήσεων θα πρέπει να ελέγχουν για δυο πιθανά ζητήματα:
String
ή ένα πληκτρολογημένο αντικείμενο. Συνεπώς για να αποτελούν καλούς πελάτες, οι λειτουργίες ακρόασης αλλαγών προτιμήσεων θα πρέπει να είναι ικανές να χειριστούν και τις τρεις αυτές πιθανές καταστάσεις.org.eclipse.ui.plugin.AbstractUIPlugin#initializeDefaultPreferences
τότε
πρέπει να βεβαιωθείτε ότι συμπεριλάβατε την πρόσθετη λειτουργία
org.eclipse.core.runtime.compatibility
στη λίστα των απαιτούμενων πρόσθετων
λειτουργιών καθώς αυτή η εξάρτηση έχει αφαιρεθεί από την πρόσθετη λειτουργία
org.eclipse.ui.workbench
.Ανατρέξτε επίσης στην παράγραφο Χώρος αποθήκευσης προτιμήσεων JFace στην ενότητα των συνιστωμένων αλλαγών σε αυτό τον οδηγό.
Τι επηρεάζεται: Οι πρόσθετες λειτουργίες οι οποίες δημιουργούν, χειρίζονται ή αποθηκεύουν αντικείμενα IPath.
Περιγραφή: Στο Eclipse 3.0, η διεπαφή IPath περιέχει ένα πλήθος περιορισμών στα τμήματα των διαδρομών οι οποίοι ήταν περισσότερο περιοριστικοί από τους περιορισμούς του υποκειμένου λειτουργικού συστήματος. Σε αυτούς περιλαμβάνονταν τα εξής:
Αυτοί οι περιορισμοί έχουν αφαιρεθεί από το Eclipse 3.1 όταν η θέση των δεδομένων της πλατφόρμας (χώρος εργασίας) βρίσκεται σε ένα σύστημα αρχείων που δεν περιέχει αυτούς τους περιορισμούς.
Απαιτούμενη ενέργεια: Για να ενεργοποιηθεί η σωστή μεταχείριση του επεκτεινόμενου εύρους των διαδρομών, πρέπει να αναθεωρηθεί όλη η χρήση των Path και IPath εντός των πρόσθετων λειτουργιών και να ενημερωθεί όπως περιγράφεται παρακάτω. Οι περισσότερες μη τροποποιημένες πρόσθετες λειτουργίες θα συνεχίσουν να συμπεριφέρονται ακριβώς όπως και στην εκδοχή 3.0 σε όλες τις διαδρομές που θεωρούνται αποδεκτές στην εκδοχή 3.0. Ωστόσο, εάν δεν γίνουν αυτές οι προτεινόμενες αλλαγές, είναι πιθανόν να αποτύχουν σε περιπτώσεις που περιλαμβάνουν διαδρομές που θεωρούνται αποδεκτές στην εκδοχή 3.1 οι οποίες ήταν μη αποδεκτές στην εκδοχή 3.0.
Οι πρόσθετες λειτουργίες, οι οποίες αποθηκεύουν αναπαραστάσεις σειρών χαρακτήρων των διαδρομών σε μια μορφή η οποία χρειάζεται να μπορεί να αναγνωστεί από διαφορετικές πλατφόρμες, θα πρέπει να μεταβιβαστούν στη νέα μέθοδο κατασκευής Path.fromPortableString. Αυτή η μέθοδος δημιουργεί μια χρήση της IPath από μια μορφή ανεξάρτητη πλατφόρμας. Αυτή η αναπαράσταση σειράς χαρακτήρων των διαδρομών μπορεί να χρησιμοποιηθεί χρησιμοποιώντας τη μέθοδο IPath.toPortableString. Παραδείγματα των αρχείων μετα-δεδομένων τα οποία επηρεάζονται περιλαμβάνουν αρχεία που αποθηκεύονται μέσα στα έργα του χώρου εργασίας του Eclipse (.project, .classpath, κτλ) και όλες τις διαδρομές που αποθηκεύονται στο χώρο αποθήκευσης προτιμήσεων (org.eclipse.core.runtime.preferences.IPreferencesService).
Σημείωση: Η fromPortableString θα αναγνώσει σωστά όλες τις σειρές χαρακτήρων των διαδρομών που δημιουργήθηκαν με τη χρήση της μεθόδου IPath.toString του Eclipse 3.0, αλλά όχι με τη μέθοδο toString του Eclipse 3.1. Συνεπώς, στις περισσότερες περιπτώσεις δεν απαιτείται καμία αλλαγή στις υπάρχουσες μορφές του αρχείου μετα-δεδομένων με εξαίρεση την εκκίνηση των διαδρομών εγγραφής με το toPortableString και των διαδρομών ανάγνωσης με το fromPortableString.
Οι πρόσθετες λειτουργίες που δημιουργούσαν διαδρομές από μη προσαρμόσιμες λεκτικές σταθερές σειρών χαρακτήρων που θεωρούσαν ότι οι χαρακτήρες ':' και '\' είχαν ειδικό νόημα σε όλες τις πλατφόρμες θα χρειαστεί να μεταβιβαστούν. Η περισσότερο εύκολη λύση είναι ο περιορισμός των λεκτικών σταθερών της διαδρομής σειράς χαρακτήρων στο υποσύνολο που υποστηρίζεται σε όλες τις πλατφόρμες (αποφυγή των χαρακτήρων άνω και κάτω τελείας και αντικαθέτου). Οι λεκτικές σταθερές των διαδρομών μπορούν να υποστηρίξουν το πλήρες σύνολο των έγκυρων διαδρομών του Unix χρησιμοποιώντας τη φορητή μορφή σειράς χαρακτήρων διαδρομής που δημιουργείται από την Path.toPortableString. Αυτή η μορφή ερμηνεύει την πρώτη μοναδική άνω και κάτω τελεία (':') ως το διαχωριστικό συσκευών, την κάθετο ('/') ως το διαχωριστικό τμημάτων και τη διπλή άνω και κάτω τελεία ("::") ως ένα χαρακτήρα άνω και κάτω τελείας της λεκτικής σταθεράς. Για παράδειγμα, ο κώδικας new Path("c:/temp") θα δημιουργήσει μια σχετική διαδρομή με δύο τμήματα στις πλατφόρμας Unix. Ομοίως, ο κώδικας new Path("a\\b") θα δημιουργήσει μια διαδρομή με ένα μοναδικό τμήμα στις πλατφόρμες Unix και μια διαδρομή με δύο τμήματα στα Windows.
Οι πρόσθετες λειτουργίες που κατασκευάζουν διαδρομές χρησιμοποιώντας τη μέθοδο IPath.append(String) οι οποία θεωρούσε ότι οι χαρακτήρες ':' και '\' είχαν ειδικό νόημα σε όλες τις πλατφόρμες μπορεί να χρειαστεί να ενημερώσουν τον κώδικά τους. Στην εκδοχή 3.1 αυτή η μέθοδος χρησιμοποιεί οριοθέτες συσκευών και τμημάτων ειδικά για το λειτουργικό σύστημα για την ερμηνεία της παρεχόμενης σειράς χαρακτήρων διαδρομής. Για παράδειγμα, η κλήση του append("a\\b") στις πλατφόρμες Unix θα επισυνάψει ένα μοναδικό τμήμα, ενώ στα Windows θα συνεχίσει να επισυνάπτει δύο τμήματα.
Οποιαδήποτε αρχεία δεδομένων που διαβάζονται και ερμηνεύονται από την πλατφόρμα δεν θα χειρίζονται τους χαρακτήρες ':' και '\' ως ειδικούς χαρακτήρες για όλες τις πλατφόρμες. Όλες οι διαδρομές που είναι αποθηκευμένες σε αρχεία δεδομένων που μπορούν να διαβαστούν σε πολλαπλές πλατφόρμες πρέπει να είναι σε μια φορητή μορφή. Για παράδειγμα, οι διαδρομές των αρχείων εικονιδίων και άλλες διαδρομές στο plugin.xml πρέπει να χρησιμοποιούν μόνο το χαρακτήρα '/' ως διαχωριστικό τμήματος διαδρομής.
Τι επηρεάζεται: Οι πρόσθετες λειτουργίες οι οποίες χειρίζονται ή διατηρούν τα αντικείμενα IExtensionPoint
, IExtension
και IConfigurationElement
από το μητρώο πρόσθετων λειτουργιών ή επεκτάσεων της πλατφόρμας Eclipse.
Περιγραφή: Πριν την εκδοχή 3.0, όλα τα αντικείμενα που λαμβάνονταν από το μητρώο επεκτάσεων (ή το προηγούμενο μητρώο πρόσθετων λειτουργιών) ίσχυαν για πάντα. Έγιναν αλλαγές στο Eclipse 3.0 οι οποίες επέτρεπαν τη δυναμική προσθήκη ή αφαίρεση πρόσθετων λειτουργιών χωρίς να χρειάζεται επανεκκίνηση του Eclipse. Όταν αφαιρείται μια πρόσθετη λειτουργία χωρίς επανεκκίνηση, οι καταχωρήσεις της στο μητρώο επεκτάσεων αναγκαστικά γινόντουσαν μη έγκυρες. Αυτό σημαίνει ότι μια άλλη πρόσθετη λειτουργία, η οποία εξαρτώνταν από ένα αντικείμενο που είχε ληφθεί προηγουμένως από την διαγραμμένη καταχώρηση του μητρώου επεκτάσεων της πρόσθετης λειτουργίας, θα περιείχε ένα μη έγκυρο αντικείμενο. Η μόνη υπόδειξη που θα λάμβανε ένας πελάτης θα ήταν από την εκτέλεση της λειτουργίας ακρόασης της IRegistryChangeEvent
.
Το πρόβλημα υπήρχε από το Eclipse 3.0 αλλά στην πράξη σπανίως παρουσιαζόταν επειδή είναι εξαιρετικά ασυνήθιστο για μια πρόσθετη λειτουργία να αφαιρεθεί χωρίς την επανεκκίνηση του Eclipse.
Αυτό το πρόβλημα αντιμετωπίστηκε στην εκδοχή 3.1 ως εξής:
IExtensionPoint
, IExtension
και IConfigurationElement
πλέον καθορίζουν ότι η InvalidRegistryObjectException
θα προκύψει όταν το αντικείμενο είναι μη έγκυρο. Η εξαίρεση δεν ελέγχεται ώστε οι δυναμικοί πελάτες που το αγνοούν δεν υποχρεώνονται να το ελέγξουν.isValid()
σε αυτές τις διεπαφές ώστε ο πελάτης να μπορεί να καθορίζει εάν ένα αντικείμενο εξακολουθεί να είναι έγκυρο.Απαιτούμενη ενέργεια: Εάν η πρόσθετη λειτουργία σας χρειάζεται να λάβει δυναμική γνώση (π.χ. να είναι ικανή να χειριστεί την προσθήκη ή την αφαίρεση πρόσθετων λειτουργιών κατά τη διάρκεια της λειτουργίας), ο κώδικας ο οποίος χειρίζεται τα αντικείμενα IExtensionPoint
, IExtension
και IConfigurationElement
, που προέρχονται από κάποια άλλη πρόσθετη λειτουργία, πρέπει να αλλάξει για τον εντοπισμό της IRegistryChangeEvent
ακριβώς σαν να αποτελούσε μια ελεγμένη εξαίρεση. Ο εντοπισμός της εξαίρεσης (παρά ένας προέλεγχος isValid()
) αποτελεί το μόνο σίγουρο τρόπο για το χειρισμό μιας περίπτωσης αφαίρεσης μιας πρόσθετης λειτουργίας από ένα παράλληλο νήμα (κάτι το οποίο εάν συμβεί, σχεδόν σίγουρα θα είναι έτσι).
Τι επηρεάζεται: Οι πρόσθετες λειτουργίες οι οποίες έχουν πρόσβαση με προγραμματισμό στις επιλογές λειτουργίας μορφοποίησης κώδικα Java.
Περιγραφή: Στο Eclipse 3.0 οι τιμές της επιλογής της λειτουργίας μορφοποίησης κώδικα org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_TAB_CHAR
μπορούσαν να είναι μόνο το TAB
ή το SPACE
. Η προδιαγραφή δεν έκανε καμία ρητή αναφορά στο γεγονός ότι το είδος της τιμής αποτελούσε μια απαρίθμηση η οποία θα μπορούσε να αυξηθεί σε μελλοντικές εκδόσεις. Στο Eclipse 3.1 προστέθηκε μια τρίτη πιθανή τιμή MIXED
στο σφάλμα διεύθυνσης 73104. Η προδιαγραφή έχει αλλάξει για να περιλαμβάνει αυτή τη νέα τιμή και για να επιτρέπει την προσθήκη περισσότερων τιμών στο μέλλον.
Απαιτούμενη ενέργεια: Οι πελάτες που διαβάζουν ή ρυθμίζουν με προγραμματισμό αυτή την επιλογή της λειτουργίας μορφοποίησης κώδικα θα πρέπει να ελέγξουν τον κώδικά τους ώστε να λάβει υπόψη του την νέα τρίτη τιμή και να διασφαλίσουν ότι είναι γραμμένος με ισχυρό τρόπο, ο οποίος αποτυγχάνει ομαλά εάν παρουσιαστεί ποτέ μια τιμή επιλογής που δεν αναμενόταν.
Τι επηρεάζεται: Οι πρόσθετες λειτουργίες οι οποίες διαθέτουν ως υποκλάση ή δημιουργούν χρήσεις της κλάσης org.eclipse.ant.core.AntCorePreferences
Περιγραφή: Στο Eclipse 3.0 η κλάση org.eclipse.ant.core.AntCorePreferences
δεν είχε επισημανθεί ώστε να δηλωθεί ότι οι πελάτες μπορούν να μην δημιουργήσουν χρήση της ή να τη διαθέτουν ως υποκλάση.
Αυτό αποτελούσε μια παράβλεψη που αντιμετωπίστηκε στο Eclipse 3.1 με την επισήμανση της κλάσης ως χωρίς πρόθεση να αποτελέσει υποκλάση ή να δημιουργηθεί χρήση της.
Απαιτούμενη ενέργεια: Οι πελάτες οι οποίοι δημιουργούν με προγραμματισμό μια χρήση της κλάσης org.eclipse.ant.core.AntCorePreferences
θα πρέπει να μεταβιβάσουν τον κώδικά τους για να ανακτήσουν τις προτιμήσεις χρησιμοποιώντας την: org.eclipse.ant.core.AntCorePlugin.getPreferences()
.Θα πρέπει να γίνει επανεπεξεργασία οποιασδήποτε υποκλάσης για να μην αποτελεί υποκλάση της org.eclipse.ant.core.AntCorePreferences
.
Τι επηρεάζεται: Οι εφαρμογές RCP ο οποίες αντικαθιστούν το σύνολο αρχείων καταγραφής JFace από τον πάγκο εργασίας.
Περιγραφή: Στο Eclipse 3.0 ο πάγκος εργασίας ορίζει το αρχείο καταγραφής του πάγκου εργασίας ως το αρχείο καταγραφής που θα χρησιμοποιείται για την καταγραφή των σφαλμάτων JFace περνώντας το αρχείο καταγραφής πρόσθετων λειτουργιών του πάγκου εργασίας απευθείας στο org.eclipse.jface.util.Policy.setLog(ILog)
. Στην εκδοχή 3.1 η εξάρτηση στο ILog
έχει αφαιρεθεί από το JFace με σκοπό την ενεργοποίηση ανεξάρτητων εφαρμογών χρησιμοποιώντας τα SWT και JFace εκτός του περιβάλλοντος εκτέλεσης του eclipse. Έγινε εισαγωγή μιας νέας διεπαφής, της ILogger
, για την ικανοποίηση των αναγκών του JFace. Ο πάγκος εργασίας έχει αλλάξει για να παρέχει μια ILogger
που να αναδιπλώνει την ILog
του πάγκου εργασίας. Για περισσότερες λεπτομέρειες, αναφερθείτε στο σφάλμα 88608.
Απαιτούμενη ενέργεια: Οι περισσότερες εφαρμογές RCP δεν χρειάζεται να αντικαταστήσουν το σύνολο αρχείων καταγραφής από τον πάγκο εργασίας αλλά εάν έχουν καλέσει προηγουμένως την Policy.setLog(ILog)
, θα χρειαστεί να αλλάξουν για τη μεταβίβαση μιας ILogger
στη θέση του.
Τι επηρεάζεται: Οι εφαρμογές RCP οι οποίες αναμένουν μια μη κενή προεπιλεγμένη προοπτική.
Περιγραφή: Με σκοπό να επιτραπεί στις εφαρμογές RCP να εκκινούν με ένα κενό παράθυρο χωρίς ανοιχτές προοπτικές (βελτίωση 71150), τα WorkbenchAdvisor.getInitialWindowPerspectiveId()
και IPerspectiveRegistry.getDefaultPerspective()
έχουν αλλάξει για να επιτραπεί η επιστροφή μιας τιμής null. Στο IDE υπάρχει πάντα μια προεπιλεγμένη προοπτική, έτσι ώστε η IPerspectiveRegistry.getDefaultPerspective()
δεν θα επιστρέψει μια τιμή null. Ομοίως, εάν μια υπάρχουσα εφαρμογή RCP έχει επιστρέψει προηγουμένως μια τιμή που δεν είναι null από τη WorkbenchAdvisor.getInitialWindowPerspectiveId()
, τότε ή IPerspectiveRegistry.getDefaultPerspective()
θα επιστρέφει μια τιμή που δεν είναι null.
Απαιτούμενη ενέργεια: Καμία ενέργεια δεν θα απαιτείται από τους πελάτες.
Τι επηρεάζεται: Οι πρόσθετες λειτουργίες οι οποίες υλοποιούν την org.eclipse.ui.IViewLayout.
Περιγραφή: Στο Eclipse 3.0 η κλάση org.eclipse.ui.IViewLayout
δεν είχε επισημανθεί ως μη υλοποιήσιμη από πελάτες. Αυτό αποτελούσε μια παράβλεψη που αντιμετωπίστηκε στο Eclipse 3.1 με την επισήμανση της κλάσης ως χωρίς πρόθεση να υλοποιηθεί από πελάτες.
Απαιτούμενη ενέργεια: Θα πρέπει να γίνει επανεπεξεργασία οποιωνδήποτε κλάσεων υλοποίησης για να μην υλοποιούν την org.eclipse.ui.IViewLayout
.
Τι επηρεάζεται: Οι πρόσθετες λειτουργίες οι οποίες υλοποιούν την org.eclipse.jdt.launching.IVMInstall.
Περιγραφή: Στο Eclipse 3.0 η κλάση org.eclipse.jdt.launching.IVMInstall
δεν είχε επισημανθεί ως μη απευθείας υλοποιήσιμη από πελάτες. Αυτό αποτελούσε μια παράβλεψη που αντιμετωπίστηκε στο Eclipse 3.1 με την επισήμανση της κλάσης ως χωρίς πρόθεση να υλοποιηθεί απευθείας από πελάτες. Για να διατηρηθεί η συμβατότητα με αρχεία δυαδικής μορφής, επιτρέπουμε στους πελάτες να υλοποιούν τη διεπαφή απευθείας, αλλά συνιστούμε ιδιαίτερα στους πελάτες να διαθέτουν ως υποκλάση τους την org.eclipse.jdt.launching.AbstractVMInstall
. Οι πελάτες που υλοποιούν την IVMInstall
θα πρέπει επίσης να υλοποιούν τη νέα προαιρετική διεπαφή org.eclipse.jdt.launching.IVMInstall2
, την οποία υλοποιεί πλέον η AbstractVMInstall
. Συνιστάται οι πελάτες να υλοποιήσουν τη νέα διεπαφή IVMInstall2
για να αποφύγουν το πρόβλημα που σημειώθηκε στο σφάλμα 73493. Η προτεινόμενη μεταβίβαση είναι στην υποκλάση AbstractVMInstall
.
Απαιτούμενη ενέργεια: Θα πρέπει να γίνει επανεπεξεργασία οποιωνδήποτε κλάσεων υλοποίησης, οι οποίες δεν διαθέτουν ήδη ως υποκλάση τους την org.eclipse.jdt.launching.AbstractVMInstall
, για να διαθέτουν ως υποκλάση τους την org.eclipse.jdt.launching.AbstractVMInstall.
Τι επηρεάζεται: Οι πρόσθετες λειτουργίες οι οποίες χρησιμοποιούν την κλάση org.eclipse.ui.SelectionEnabler.SelectionClass.
Περιγραφή: Στο Eclipse 3.0 η ένθετη κλάση υλοποίησης org.eclipse.ui.SelectionEnabler.SelectionClass
ήταν δημόσια χωρίς περιορισμούς στη χρήση της. Αυτό αποτελούσε μια παράβλεψη που αντιμετωπίστηκε στο Eclipse 3.1 με την κλάση να γίνεται ορατή στο πακέτο.
Απαιτούμενη ενέργεια: Θα χρειαστεί επανεπεξεργασία οποιωνδήποτε κλάσεων υλοποίησης ή επέκτασης της org.eclipse.ui.SelectionEnabler.SelectionClass
για να μην αναφέρονται πλέον σε αυτή την κλάση.
Τι επηρεάζεται: Οι πρόσθετες λειτουργίες οι οποίες καλούν την getParent()
σε μια υποκλάση της org.eclipse.jface.action.ContributionItem.
Περιγραφή: Στο Eclipse 3.0 η μέθοδος org.eclipse.jface.action.ContributionItem.getParent()
δεν προσδιόριζε ότι θα μπορούσε να επιστρέψει null. Αυτό αποτελούσε μια παράβλεψη που αντιμετωπίστηκε στο Eclipse 3.1 με το Javadoc για τη μέθοδο να διευκρινίζει πότε μπορεί να επιστρέψει null. Για περισσότερες λεπτομέρειες, αναφερθείτε στο σφάλμα 92777.
Απαιτούμενη ενέργεια: Οποιοσδήποτε κώδικας καλεί την ContributionItem.getParent() πρέπει να εξασφαλίζει ότι μπορεί να χειριστεί ένα αποτέλεσμα null.
Τι επηρεάζεται: Οι πρόσθετες λειτουργίες οι οποίες υλοποιούν την org.eclipse.ui.views.properties.IPropertySource
ή την IPropertySource2.
Περιγραφή: Στο Eclipse 3.0 η προδιαγραφή για τη μέθοδο org.eclipse.ui.views.properties.IPropertySource.isPropertySet(boolean)
άλλαξε εσφαλμένα για να προσδιορίσει ότι θα πρέπει να επιστραφεί true εάν η καθορισμένη ιδιότητα δεν διέθετε μια κατανοητή προεπιλεγμένη τιμή. Σε προηγούμενες εκδοχές καθοριζόταν ότι σε αυτή την περίπτωση θα έπρεπε να επιστραφεί false. Αυτό αποτελούσε μια ακούσια αλλαγή συμπεριφοράς API, παρόλο που η υλοποίηση λειτουργούσε με τον ίδιο τρόπο όπως και πριν, εάν η πρωτογενής κώδικας ιδιοτήτων υλοποιούσε την IPropertySource
και όχι την IPropertySource2
. Αυτό διορθώθηκε στην εκδοχή 3.1 με την επαναφορά της IPropertySource.isPropertySet(boolean)
στην παλαιότερη προδιαγραφή της (δηλαδή ότι θα έπρεπε να επιστραφεί false σε αυτή την περίπτωση) και με αντικατάστασή της από την IPropertySource2.isPropertySet(boolean) για να καθοριστεί η επιστροφή true σε αυτή την περίπτωση. Για περισσότερες λεπτομέρειες, αναφερθείτε στο σφάλμα 21756.
Απαιτούμενη ενέργεια: Θα πρέπει να γίνει έλεγχος οποιωνδήποτε κλάσεων που υλοποιούν την IPropertySource ή την IPropertySource2, όπου μερικές από τις ιδιότητες δεν διαθέτουν κατανοητές προεπιλεγμένες τιμές, για να διασφαλιστεί ότι επιστρέφουν την κατάλληλη τιμή για την isPropertySource(boolean). Οι πελάτες θα πρέπει να ελέγξουν ότι το κουμπί "Επαναφορά προεπιλεγμένης τιμής" στην προβολή "Ιδιότητες" λειτουργεί όπως αναμένεται για τον πρωτογενή κώδικα των ιδιοτήτων τους.
Τι επηρεάζεται: Οι πρόσθετες λειτουργίες που χρησιμοποίησαν το πειραματικό στοιχείο handlerSubmission
του οποίου έγινε εισαγωγή στο σημείο επέκτασης org.eclipse.ui.commands
του Eclipse 3.0.
Περιγραφή: Στο Eclipse 3.0 έγινε εισαγωγή ενός πειραματικού στοιχείου στο σημείο επέκτασης org.eclipse.ui.commands
extension point. Αυτό το στοιχείο προοριζόταν ως ένας τρόπος καταχώρησης ρουτινών χειρισμού μέσω XML. Από τότε έγινε εισαγωγή ενός κατά πολύ ανώτερου μηχανισμού, του σημείου επέκτασης org.eclipse.ui.handlers
. Εφόσον το στοιχείο είχε επισημανθεί ως πειραματικό, πλέον αφαιρέθηκε.
Απαιτούμενη ενέργεια: Οποιαδήποτε πρόσθετη λειτουργία η οποία ορίζει ένα στοιχείο handlerSubmission
θα πρέπει να μεταβιβαστεί στο σημείο επέκτασης org.eclipse.ui.commands
.
Τι επηρεάζεται: Οι πρόσθετες λειτουργίες οι οποίες καθόριζαν το πεδίο GLOBAL_IGNORES_CHANGED της κλάσης TeamUI.
Περιγραφή: Στο Eclipse 3.0 το πεδίο GLOBAL_IGNORES_CHANGED προστέθηκε στην κλάση TeamUI. Αυτό το πεδίο αποτελούσε μια σταθερά που χρησιμοποιείται σε ένα συμβάν αλλαγής ιδιοτήτων για να δηλώσει ότι έχει αλλάξει η λίστα των καθολικών παραβλέψεων, η οποία διατηρούνταν από την πρόσθετη λειτουργία Team. Αυτό το πεδίο δεν είχε επισημανθεί ως τελικό στην εκδοχή 3.0 αλλά θα έπρεπε να ήταν. Στην εκδοχή 3.1 έγινε τελικό.
Απαιτούμενη ενέργεια: Οποιεσδήποτε πρόσθετες λειτουργίες οι οποίες προσδιόριζαν το παραπάνω πεδίο δεν μπορούν πλέον να το κάνουν.
Τι επηρεάζεται: Οι πρόσθετες λειτουργίες οι οποίες λανθασμένα χρησιμοποιούν την FillLayout.
Περιγραφή: Στο Eclipse 3.0 δεν συσχετιζόταν κανένα δεδομένο διάταξης με την FillLayout και εάν μια εφαρμογή αντιστοιχούσε δεδομένα διάταξης σε ένα θυγατρικό στοιχείο, το οποίο διαχειριζόταν μια FillLayout, γινόταν παράβλεψή του. Στο Eclipse 3.1 προστέθηκε υποστήριξη στην FillLayout για την αποθήκευση στη λανθάνουσα μνήμη (cache) των πληροφοριών μεγέθους με σκοπό τη βελτίωση της απόδοσης της αλλαγής μεγέθους. Τα αποθηκευμένα δεδομένα στη λανθάνουσα μνήμη (cache) αποθηκεύονται σε ένα αντικείμενο FillData το οποίο συσχετίζεται με κάθε θυγατρικό στοιχείο το οποίο διαχειρίζεται η FillLayout. Εάν μια εφαρμογή έχει αντιστοιχίσει εσφαλμένα δεδομένα διάταξης σε ένα θυγατρικό στοιχείο, θα εμφανιστεί μια ClassCastException όταν καλείται μια μέθοδος computeSize στο γονικό στοιχείο.
Απαιτούμενη ενέργεια: Βρείτε όλα τα θυγατρικά στοιχεία σε μια FillLayout, τα οποία έχουν αντιστοιχίσει δεδομένα διάταξης, και διακόψτε την αντιστοίχιση των δεδομένων διάταξης.
Τι επηρεάζεται: Οι πρόσθετες λειτουργίες οι οποίες εντοπίζουν εξαιρέσεις ενώ δημιουργούν όργανα.
Περιγραφή: Στο Eclipse 3.0 εάν ένα όργανο δημιουργήθηκε με ένα αποδεσμευμένο γονικό στοιχείο, δεν εμφανιζόταν καμία εξαίρεση και ο κώδικας του οργάνου αποτύγχανε κάποια μεταγενέστερη στιγμή ή εμφανιζόταν μια SWTException με το κείμενο "Το όργανο έχει αποδεσμευτεί". Στο Eclipse 3.1 εάν ένα όργανο δημιουργείται με ένα αποδεσμευμένο γονικό στοιχείο, η λειτουργία κατασκευής θα εμφανίσει μια IllegalArgumentException με το κείμενο "Μη έγκυρο όρισμα".
Απαιτούμενη ενέργεια: Κάθε κώδικας ο οποίος χειρίζεται την SWTException κατά τη δημιουργία ενός οργάνου θα χρειαστεί επίσης να χειριστεί την IllegalArgumentException.