fix preferences storage

This commit is contained in:
2020-03-21 15:17:34 +01:00
parent 348ffe20d6
commit 767b083a22
6 changed files with 56 additions and 20 deletions

View File

@ -46,6 +46,7 @@ public class E4PreferenceRegistry
public static final String PREFS_PAGE_XP = "com.opcoach.e4.preferences.e4PreferencePages"; // $NON-NLS-1$
public static final String PREF_STORE_PROVIDER = "com.opcoach.e4.preferences.e4PreferenceStoreProvider"; // $NON-NLS-1$
public static final String KEY_PREF_STORE_PROVIDERS = "com.opcoach.e4.preferences.e4PreferenceStoreProviders"; // $NON-NLS-1$
protected static final String ELMT_PAGE = "page"; // $NON-NLS-1$
protected static final String ATTR_ID = "id"; // $NON-NLS-1$
protected static final String ATTR_CATEGORY = "category"; // $NON-NLS-1$
@ -235,6 +236,7 @@ public class E4PreferenceRegistry
IContributionFactory factory = context.get(IContributionFactory.class);
psProviders = new HashMap<String, Object>();
IExtensionRegistry registry = context.get(IExtensionRegistry.class);
// Read extensions and fill the map...
for (IConfigurationElement elmt : registry.getConfigurationElementsFor(PREF_STORE_PROVIDER))
@ -261,7 +263,7 @@ public class E4PreferenceRegistry
Object data = objectId;
if (classname != null)
{
data = factory.create(classname, context);
data = factory.create("bundleclass://"+declaringBundle+"/"+classname, context);
if (!(data instanceof IPreferenceStoreProvider))
{
logger.warn("In extension " + PREF_STORE_PROVIDER + " the class must implements IPreferenceStoreProvider. Check the plugin " + declaringBundle);
@ -272,6 +274,8 @@ public class E4PreferenceRegistry
psProviders.put(pluginId, data);
}
context.set(KEY_PREF_STORE_PROVIDERS, psProviders);
}
}