Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Merks2014-10-09 13:12:45 +0000
committerEd Merks2014-10-09 13:12:45 +0000
commit71bf39ff78489f3163c570c0621d7cf59eee6e13 (patch)
tree8a581f770f0cdf792042b2725de9579dd0936ffb
parentd70220391a28f81141ce7574d4a9dc479ce94359 (diff)
downloadorg.eclipse.oomph-71bf39ff78489f3163c570c0621d7cf59eee6e13.tar.gz
org.eclipse.oomph-71bf39ff78489f3163c570c0621d7cf59eee6e13.tar.xz
org.eclipse.oomph-71bf39ff78489f3163c570c0621d7cf59eee6e13.zip
[446347] Problems occurred when invoking code from plug-in:
"org.eclipse.equinox.prefe... (err_grp: e7365649) https://bugs.eclipse.org/bugs/show_bug.cgi?id=446347
-rw-r--r--plugins/org.eclipse.oomph.preferences/src/org/eclipse/oomph/preferences/util/PreferencesUtil.java53
1 files changed, 32 insertions, 21 deletions
diff --git a/plugins/org.eclipse.oomph.preferences/src/org/eclipse/oomph/preferences/util/PreferencesUtil.java b/plugins/org.eclipse.oomph.preferences/src/org/eclipse/oomph/preferences/util/PreferencesUtil.java
index e35988039..87fe357b9 100644
--- a/plugins/org.eclipse.oomph.preferences/src/org/eclipse/oomph/preferences/util/PreferencesUtil.java
+++ b/plugins/org.eclipse.oomph.preferences/src/org/eclipse/oomph/preferences/util/PreferencesUtil.java
@@ -1091,33 +1091,44 @@ public final class PreferencesUtil
{
PreferenceNode preferenceNode = (PreferenceNode)target;
Resource resource = preferenceNode.eResource();
- ResourceSet resourceSet = resource.getResourceSet();
+ if (resource == null)
+ {
+ handleAdded(event, preferenceNode);
+ }
+ else
+ {
+ synchronized (resource)
+ {
+ ResourceSet resourceSet = resource.getResourceSet();
+ synchronized (resourceSet)
+ {
+ handleAdded(event, preferenceNode);
+ }
+ }
+ }
+ }
- synchronized (resource)
+ private void handleAdded(NodeChangeEvent event, PreferenceNode preferenceNode)
+ {
+ Preferences childNode = event.getChild();
+ String name = childNode.name();
+ if (preferenceNode.getNode(name) == null)
{
- synchronized (resourceSet)
+ PreferenceNode childPreferenceNode = PreferencesFactory.eINSTANCE.createPreferenceNode();
+ childPreferenceNode.setName(name);
+ EList<PreferenceNode> children = preferenceNode.getChildren();
+ int index = 0;
+ for (int size = children.size(); index < size; ++index)
{
- Preferences childNode = event.getChild();
- String name = childNode.name();
- if (preferenceNode.getNode(name) == null)
+ PreferenceNode otherChildPreferenceNode = children.get(index);
+ if (otherChildPreferenceNode.getName().compareTo(name) >= 0)
{
- PreferenceNode childPreferenceNode = PreferencesFactory.eINSTANCE.createPreferenceNode();
- childPreferenceNode.setName(name);
- EList<PreferenceNode> children = preferenceNode.getChildren();
- int index = 0;
- for (int size = children.size(); index < size; ++index)
- {
- PreferenceNode otherChildPreferenceNode = children.get(index);
- if (otherChildPreferenceNode.getName().compareTo(name) >= 0)
- {
- break;
- }
- }
-
- children.add(index, childPreferenceNode);
- traverse(childPreferenceNode, childNode, true);
+ break;
}
}
+
+ children.add(index, childPreferenceNode);
+ traverse(childPreferenceNode, childNode, true);
}
}

Back to the top