From 2f7f6ea4e6ded38bef85721325f876d3480b7948 Mon Sep 17 00:00:00 2001 From: Mikaƫl Barbero Date: Tue, 1 Oct 2013 18:24:32 +0200 Subject: Fix potential NPE Change-Id: I386f6b62a7215ace6ab04951a21c3f8aea48eddc --- .../structuremergeviewer/CompareInputAdapter.java | 29 +++++++++++++--------- 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'plugins/org.eclipse.emf.compare.ide.ui/src') diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/CompareInputAdapter.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/CompareInputAdapter.java index 78a19aef8..e0d1c2e11 100644 --- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/CompareInputAdapter.java +++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/CompareInputAdapter.java @@ -136,7 +136,12 @@ public abstract class CompareInputAdapter extends AdapterImpl implements ICompar * {@inheritDoc} */ public EObject getComparisonObject() { - return ((TreeNode)getTarget()).getData(); + // target can be null when getLeft/Right/Ancestor is requested after StructureMergeViewer is disposed. + if (getTarget() != null) { + return ((TreeNode)getTarget()).getData(); + } else { + return null; + } } /** @@ -209,23 +214,23 @@ public abstract class CompareInputAdapter extends AdapterImpl implements ICompar public ITypedElement getAncestor() { final ITypedElement ret; Notifier notifier = getComparisonObject(); - boolean isThreeWay = isThreeWay(notifier); - if (isThreeWay) { - IAccessorFactory accessorFactory = getAccessorFactoryForTarget(); - if (accessorFactory != null) { - org.eclipse.emf.compare.rcp.ui.internal.contentmergeviewer.accessor.legacy.ITypedElement typedElement = accessorFactory - .createAncestor(getAdapterFactory(), getComparisonObject()); - if (typedElement != null) { - ret = AccessorAdapter.adapt(typedElement); + boolean isThreeWay = isThreeWay(notifier); + if (isThreeWay) { + IAccessorFactory accessorFactory = getAccessorFactoryForTarget(); + if (accessorFactory != null) { + org.eclipse.emf.compare.rcp.ui.internal.contentmergeviewer.accessor.legacy.ITypedElement typedElement = accessorFactory + .createAncestor(getAdapterFactory(), getComparisonObject()); + if (typedElement != null) { + ret = AccessorAdapter.adapt(typedElement); + } else { + ret = null; + } } else { ret = null; } } else { ret = null; } - } else { - ret = null; - } return ret; } -- cgit v1.2.3