Bug 577782: [Preferences] Fix final deletetion in PreferenceUtils.mergeNode Change-Id: Ia381c5c76aca19aba284307545d4f086749ae746
diff --git a/ecommons/org.eclipse.statet.ecommons.preferences.core/src/org/eclipse/statet/ecommons/preferences/core/PreferenceUtils.java b/ecommons/org.eclipse.statet.ecommons.preferences.core/src/org/eclipse/statet/ecommons/preferences/core/PreferenceUtils.java index b8c6f91..dc9f0ca 100644 --- a/ecommons/org.eclipse.statet.ecommons.preferences.core/src/org/eclipse/statet/ecommons/preferences/core/PreferenceUtils.java +++ b/ecommons/org.eclipse.statet.ecommons.preferences.core/src/org/eclipse/statet/ecommons/preferences/core/PreferenceUtils.java
@@ -135,6 +135,8 @@ } + private static final String MIGRATED_KEY= "migrated"; //$NON-NLS-1$ + public static boolean mergeNode(final String fromQualifier, final String toQualifier, final boolean deleteFinally) throws BackingStoreException { @@ -143,11 +145,14 @@ return false; } final var fromNode= scope.getNode(fromQualifier); - if (fromNode.getBoolean("migrated", false)) { //$NON-NLS-1$ + if (!deleteFinally && fromNode.getBoolean(MIGRATED_KEY, false)) { return false; } final var toNode= scope.getNode(toQualifier); for (final String key : fromNode.keys()) { + if (key.equals(MIGRATED_KEY)) { + continue; + } final String value= fromNode.get(key, null); if (value != null && toNode.get(key, null) == null) { toNode.put(key, value); @@ -162,7 +167,7 @@ parent.flush(); } else { - fromNode.putBoolean("migrated", true); //$NON-NLS-1$ + fromNode.putBoolean(MIGRATED_KEY, true); //$NON-NLS-1$ fromNode.flush(); } return true;