From 1e097d30aceb59d73f940ba8823fb2190a1f22cf Mon Sep 17 00:00:00 2001 From: Carsten Reckord Date: Wed, 31 May 2017 15:46:44 +0200 Subject: [PATCH] 517545: org.eclipse.core.runtime.CoreException: Node not found: 'xxx' Skip missing nodes in result and log an information message. Bug: 517545 Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=517545 --- .../core/service/DefaultMarketplaceService.java | 15 ++++++++++++--- .../epp/mpc/core/service/IMarketplaceService.java | 3 ++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/org.eclipse.epp.mpc.core/src/org/eclipse/epp/internal/mpc/core/service/DefaultMarketplaceService.java b/org.eclipse.epp.mpc.core/src/org/eclipse/epp/internal/mpc/core/service/DefaultMarketplaceService.java index bd19e8fb..dc8a4eee 100644 --- a/org.eclipse.epp.mpc.core/src/org/eclipse/epp/internal/mpc/core/service/DefaultMarketplaceService.java +++ b/org.eclipse.epp.mpc.core/src/org/eclipse/epp/internal/mpc/core/service/DefaultMarketplaceService.java @@ -36,6 +36,7 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.MultiStatus; import org.eclipse.core.runtime.OperationCanceledException; import org.eclipse.core.runtime.SubMonitor; import org.eclipse.epp.internal.mpc.core.MarketplaceClientCore; @@ -347,6 +348,7 @@ public List getNodes(Collection nodes, IProgressMonitor } List resultNodes = new ArrayList(nodes.size()); + MultiStatus missingNodes = null; for (INode inputNode : nodes) { INode resolvedNode = resolvedNodeMapping.get(inputNode); if (resolvedNode != null) { @@ -358,11 +360,18 @@ public List getNodes(Collection nodes, IProgressMonitor } else { query = inputNode.getUrl(); } - throw new CoreException( - createErrorStatus(Messages.DefaultMarketplaceService_nodeNotFound, query)); + IStatus missingNodeDetailStatus = createStatus(IStatus.INFO, + Messages.DefaultMarketplaceService_nodeNotFound, query); + if (missingNodes == null) { + missingNodes = new MultiStatus(MarketplaceClientCore.BUNDLE_ID, 0, + "Some entries could not be found on the Marketplace", null); + } + missingNodes.add(missingNodeDetailStatus); } } - + if (missingNodes != null) { + MarketplaceClientCore.getLog().log(missingNodes); + } return resultNodes; } diff --git a/org.eclipse.epp.mpc.core/src/org/eclipse/epp/mpc/core/service/IMarketplaceService.java b/org.eclipse.epp.mpc.core/src/org/eclipse/epp/mpc/core/service/IMarketplaceService.java index 1c262be0..37285e23 100644 --- a/org.eclipse.epp.mpc.core/src/org/eclipse/epp/mpc/core/service/IMarketplaceService.java +++ b/org.eclipse.epp.mpc.core/src/org/eclipse/epp/mpc/core/service/IMarketplaceService.java @@ -85,7 +85,8 @@ public interface IMarketplaceService { INode getNode(INode node, IProgressMonitor monitor) throws CoreException; /** - * Get a list of nodes by their ids + * Get a list of nodes by their ids. Only existing nodes are returned. Nodes not found on the server will be + * discarded in the result list. * * @param nodes * the nodes which must all have an {@link INode#getId() id}.