Skip to content

Commit

Permalink
Fix overriding preferences
Browse files Browse the repository at this point in the history
Signed-off-by: Anatoliy Bazko <abazko@redhat.com>
  • Loading branch information
tolusha committed May 21, 2019
1 parent f7e55b9 commit a235f1c
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 2 deletions.
14 changes: 14 additions & 0 deletions packages/plugin-ext/src/plugin/preference-registry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -234,10 +234,14 @@ export class PreferenceRegistryExtImpl implements PreferenceRegistryExt {
return new ConfigurationModel(this.parseConfigurationData(data), Object.keys(data));
}

private readonly OVERRIDE_PROPERTY = '\\[(.*)\\]$';
private readonly OVERRIDE_PROPERTY_PATTERN = new RegExp(this.OVERRIDE_PROPERTY);

private parseConfigurationData(data: { [key: string]: any }): { [key: string]: any } {
return Object.keys(data).reduce((result: any, key: string) => {
const parts = key.split('.');
let branch = result;

for (let i = 0; i < parts.length; i++) {
if (i === parts.length - 1) {
branch[parts[i]] = data[key];
Expand All @@ -247,6 +251,16 @@ export class PreferenceRegistryExtImpl implements PreferenceRegistryExt {
branch[parts[i]] = {};
}
branch = branch[parts[i]];

// overridden properties should be transformed into
// "[overridden_identifier]" : {
// "property1" : "value1"
// "property2" : "value2"
// }
if (i === 0 && this.OVERRIDE_PROPERTY_PATTERN.test(parts[i])) {
branch[key.substring(parts[0].length + 1)] = data[key];
break;
}
}
return result;
}, {});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,8 @@ export abstract class AbstractResourcePreferenceProvider extends PreferenceProvi
if (this.schemaProvider.testOverrideValue(preferenceName, preferenceValue)) {
// tslint:disable-next-line:forin
for (const overriddenPreferenceName in preferenceValue) {
const overriddeValue = preferenceValue[overriddenPreferenceName];
preferences[`${preferenceName}.${overriddenPreferenceName}`] = overriddeValue;
const overriddenValue = preferenceValue[overriddenPreferenceName];
preferences[`${preferenceName}.${overriddenPreferenceName}`] = overriddenValue;
}
} else {
preferences[preferenceName] = preferenceValue;
Expand Down

0 comments on commit a235f1c

Please sign in to comment.