Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2013-10-17 18:04:21 +0000
committerEike Stepper2013-10-17 18:04:21 +0000
commit4b075b9c9fc8d05aa66d2befb0cbb6f1c82f6452 (patch)
treef815b222004f2c4e8a53c7d7b27cd7bbfb8c69b7 /plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui
parent62dacd29b179ee5528d357dd931f8da08c33ed4c (diff)
downloadcdo-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')
-rw-r--r--plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ContainerItemProvider.java33
-rw-r--r--plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ContainerView.java1
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);
}

Back to the top