diff options
author | Eike Stepper | 2013-10-17 18:04:21 +0000 |
---|---|---|
committer | Eike Stepper | 2013-10-17 18:04:21 +0000 |
commit | 4b075b9c9fc8d05aa66d2befb0cbb6f1c82f6452 (patch) | |
tree | f815b222004f2c4e8a53c7d7b27cd7bbfb8c69b7 /plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui | |
parent | 62dacd29b179ee5528d357dd931f8da08c33ed4c (diff) | |
download | cdo-4b075b9c9fc8d05aa66d2befb0cbb6f1c82f6452.tar.gz cdo-4b075b9c9fc8d05aa66d2befb0cbb6f1c82f6452.tar.xz cdo-4b075b9c9fc8d05aa66d2befb0cbb6f1c82f6452.zip |
[419574] NPE in CDOMergingConflictResolver
https://bugs.eclipse.org/bugs/show_bug.cgi?id=419574
Diffstat (limited to 'plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui')
2 files changed, 25 insertions, 9 deletions
diff --git a/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ContainerItemProvider.java b/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ContainerItemProvider.java index 761376d867..d80ea4dde8 100644 --- a/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ContainerItemProvider.java +++ b/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ContainerItemProvider.java @@ -122,14 +122,18 @@ public class ContainerItemProvider<CONTAINER extends IContainer<Object>> extends } } - @Override - public void dispose() + /** + * @since 3.4 + */ + public void clearNodesCache() { - super.dispose(); + disposeRoot(); + + CONTAINER input = getInput(); + initRoot(input); } - @Override - protected void connectInput(CONTAINER input) + private void initRoot(CONTAINER input) { root = createNode(null, input); if (root != null) @@ -138,14 +142,25 @@ public class ContainerItemProvider<CONTAINER extends IContainer<Object>> extends } } - @Override - protected void disconnectInput(CONTAINER input) + private void disposeRoot() { - root.dispose(); + root.dispose(); // Also disposes of all children root = null; nodes.clear(); } + @Override + protected void connectInput(CONTAINER input) + { + initRoot(input); + } + + @Override + protected void disconnectInput(CONTAINER input) + { + disposeRoot(); + } + /** * @since 2.0 */ @@ -620,8 +635,8 @@ public class ContainerItemProvider<CONTAINER extends IContainer<Object>> extends if (!isDisposed()) { container.removeListener(containerListener); - container = null; super.dispose(); + container = null; } } diff --git a/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ContainerView.java b/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ContainerView.java index d1d46f218a..d752c16839 100644 --- a/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ContainerView.java +++ b/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ContainerView.java @@ -463,6 +463,7 @@ public abstract class ContainerView extends ViewPart implements ISelectionProvid */ protected void refreshPressed() { + itemProvider.clearNodesCache(); UIUtil.refreshViewer(viewer); } |