Vaikka AbstractUIPlugin#getPreferenceStore()-metodin toimittaman IPreferenceStore-rajapinnan toiminta ei ole muuttunut, IPreferenceStore-rajapinnan määritys on päivitetty määrittämään eksplisiittisesti toimitettu toiminta.
PropertyChangeEvents-luokan lajin määritys
Kaikilla IPreferenceStore-rajapinnan ominaisuuden muutoksen tapahtumilla on oltava vanha ja uusi arvo, joilla on sama laji, joka on yhdenmukainen sen luoneen setValue-kutsun kanssa.
Jos esimerkiksi kutsut IPreferenceStore#setValue(String name, long value) -metodia, molempien tästä metodista luotujen PropertyChangeEvent-luokkien laji on java.lang.Long.
putValue
#putValue-metodin kutsut eivät luo PropertyChangedEvent-luokkaa.
Eri #setValue-metodien kutsut luovat.
OSGI-oletusten ja IPreferenceStore-rajapinnan suhde
AbstractUIPlugin#getPreferenceStore()-metodin toimittama IPreferenceStore on ScopedPreferenceStore-luokan ilmentymä, joka käyttää org.osgi.service.prefs.Preferences-rajapintaa taustarakenteena. org.osgi.service.prefs.Preferences toteuttaa muutostapahtumat ainoastaan String-objekteina.
ScopedPreferenceStore liittää IPreferenceStore#setValue(String name, String value)-metodin luomat OSGI-tapahtumat ja oman PropertyChangeEvents-luokkansa ja välittää tapahtuman kuuntelutoiminnoilleen. Muille IPreferenceStore#setValue-metodin toteutuksille ScopedPreferenceStore luo omat oikean lajin tapahtumansa eikä toteuta tapahtumia OSGI-oletuksista.
ScopedPreferenceStore-luokan kuuntelutoimintojen tulee olla valmistautuneita sekä lajiltaan määritetyille että String-arvoille muutostapahtumiensa osalta, sillä on edelleen mahdollista saada tapahtuma OSGI-oletusten kautta (esimerkiksi oletusten tuonnin yhteydessä).
OSGI-tapahtumien laji on aina java.lang.String.
On aina ollut mahdollista saada tyhjä org.eclipse.swt.widgets.Shell olemassa olevista IWorkbenchWindows-rajapinnoista Eclipse SDK:ssa. Nyt olemme määrittäneet eksplisiittisesti tilanteet, joissa tämä tapahtuu, eli silloin, kun komentoliittymää ei ole luotu tai kun IWorkbenchWindow on suljettu.