From 687bfc979396bd9f9624f9d93192d21c72a8f1e4 Mon Sep 17 00:00:00 2001 From: Katja Luther Date: Mon, 29 Jun 2020 14:25:01 +0200 Subject: [PATCH] avoid NPE and fix closing of obsolete editors when deleting classification --- .../RemotingDeleteTaxonNodeHandlerE4.java | 29 ++++++++++--------- .../util/TaxonTreeNodeContentProvider.java | 4 ++- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/e4/handler/RemotingDeleteTaxonNodeHandlerE4.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/e4/handler/RemotingDeleteTaxonNodeHandlerE4.java index 07338d156..dbd639ead 100644 --- a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/e4/handler/RemotingDeleteTaxonNodeHandlerE4.java +++ b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/e4/handler/RemotingDeleteTaxonNodeHandlerE4.java @@ -75,6 +75,7 @@ public class RemotingDeleteTaxonNodeHandlerE4 extends RemotingCdmHandlerE4 { if (object instanceof TaxonNodeDto && ((TaxonNodeDto)object).getTaxonUuid() == null){ TaxonNodeDto dto = (TaxonNodeDto)object; classifications.add(dto); + treeNodes.add(dto); containsClassification = true; }else if(object instanceof TaxonNodeDto) { treeNodes.add((TaxonNodeDto) object); @@ -88,23 +89,25 @@ public class RemotingDeleteTaxonNodeHandlerE4 extends RemotingCdmHandlerE4 { Iterator it = treeNodes.iterator(); treeNodes = new HashSet(); - while (it.hasNext()){ - TaxonNodeDto treeNode = (TaxonNodeDto) it.next(); + if (!containsClassification){ + while (it.hasNext()){ + TaxonNodeDto treeNode = (TaxonNodeDto) it.next(); - treeNodes.add(treeNode); - if (treeNode == null){ - MessagingUtils.informationDialog(Messages.RemotingDeleteTaxonNodeHandler_NODE_DELETED, Messages.RemotingDeleteTaxonNodeHandler_NODE_DELETED_MESSAGE); - return Status.CANCEL_STATUS; + treeNodes.add(treeNode); + if (treeNode == null){ + MessagingUtils.informationDialog(Messages.RemotingDeleteTaxonNodeHandler_NODE_DELETED, Messages.RemotingDeleteTaxonNodeHandler_NODE_DELETED_MESSAGE); + return Status.CANCEL_STATUS; - } - if (treeNode instanceof TaxonNodeDto){ - containsTaxonNodes = true; - if (treeNode.getTaxonomicChildrenCount()>0){ - containsNodeWithChildren = true; - } - } + } + if (treeNode instanceof TaxonNodeDto){ + containsTaxonNodes = true; + if (treeNode.getTaxonomicChildrenCount()>0){ + containsNodeWithChildren = true; + } + } + } } for (TaxonNodeDto rootNode: classifications){ diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/util/TaxonTreeNodeContentProvider.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/util/TaxonTreeNodeContentProvider.java index d2766472d..0dece2683 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/util/TaxonTreeNodeContentProvider.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/util/TaxonTreeNodeContentProvider.java @@ -71,7 +71,9 @@ public class TaxonTreeNodeContentProvider implements ITreeContentProvider { if(element instanceof TaxonNodeDto){ if (((TaxonNodeDto) element).getParentUUID() != null){ TaxonNode parent = taxonNodeService.load(((TaxonNodeDto) element).getParentUUID()); - return new TaxonNodeDto(parent); + if (parent != null){ + return new TaxonNodeDto(parent); + } } } return null; -- 2.34.1