@Preferences get injected even they don't change [message #1097168] |
Thu, 29 August 2013 06:18  |
Eclipse User |
|
|
|
Hi,
I have a problem with the injection-based listener approach. Values get injected, even if they haven't changed.
I have a handler class which contains these values these methods
@Inject
public void trackDatabaseDriver(@Preference("jdbc_driver") String driver) {
System.out.println("\tDriver :\t" + driver);
}
@Inject
public void trackDatabaseURL(@Preference("jdbc_url") String url) {
System.out.println("\tURL :\t" + url);
}
And another handler which does this
@Inject
@Preference
IEclipsePreferences preferences;
@Execute
public void execute() throws Exception {
// doesn't matter where/if I put preferences.flush()
preferences.put("jdbc_driver", "org.apache.derby.jdbc.EmbeddedDriver");
preferences.put("jdbc_url", "jdbc:derby:memory:test2;create=true");
}
The flow is as follows.
Application start
Quote:
URL : null
Driver : null
I'm not completely sure why the values get injected, even they didn't changed.
[b]Click SavenPreferencesHandler[b]
Quote:
URL : null
Driver : org.apache.derby.jdbc.EmbeddedDriver
URL : jdbc:derby:memory:test2;create=true
Driver : org.apache.derby.jdbc.EmbeddedDriver
The methods are called twice. Both. Even though I only changed each preference once.
If I use the PreferenceChangeListener it works smooth.
preferences.addPreferenceChangeListener(new IPreferenceChangeListener() {
@Override
public void preferenceChange(PreferenceChangeEvent event) {
System.err.println("KEY " + event.getKey());
System.err.println("NEW " + event.getNewValue());
System.err.println("OLD " + event.getOldValue());
}
});
Do I have to put the preferences all in different nodes?
thanks,
Muki
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03954 seconds