From a2997341e208fd4906cb70eb866fbf24071ca79d Mon Sep 17 00:00:00 2001 From: Curtis Windatt Date: Fri, 14 Jun 2013 14:33:21 -0500 Subject: Bug 408137 - If linked resource is not resolvable, launch fails with NPE Change-Id: I4aaacf9974484662a1b27adc4f8da6036664a071 --- .../org/eclipse/pde/internal/core/ClasspathHelper.java | 15 +++++++++++++-- .../org/eclipse/pde/internal/core/PDECoreMessages.java | 2 ++ .../org/eclipse/pde/internal/core/pderesources.properties | 1 + 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ClasspathHelper.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ClasspathHelper.java index a748ba4f6a..a867ade2b1 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ClasspathHelper.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ClasspathHelper.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2003, 2012 IBM Corporation and others. + * Copyright (c) 2003, 2013 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -18,6 +18,7 @@ import org.eclipse.core.resources.*; import org.eclipse.core.runtime.*; import org.eclipse.core.runtime.preferences.IEclipsePreferences; import org.eclipse.jdt.core.*; +import org.eclipse.osgi.util.NLS; import org.eclipse.pde.core.IBundleClasspathResolver; import org.eclipse.pde.core.build.IBuild; import org.eclipse.pde.core.build.IBuildEntry; @@ -191,7 +192,17 @@ public class ClasspathHelper { // make the path either relative or absolute if (file != null) { boolean isLinked = file.isLinked(IResource.CHECK_ANCESTORS); - output = (isLinked || absolutePaths) ? file.getLocation().makeAbsolute() : output.makeRelative(); + if (isLinked || absolutePaths) { + IPath location = file.getLocation(); + if (location != null) { + output = location.makeAbsolute(); + } else { + PDECore.log(new Status(IStatus.ERROR, PDECore.PLUGIN_ID, NLS.bind(PDECoreMessages.ClasspathHelper_BadFileLocation, file.getFullPath()))); + continue; + } + } else { + output = output.makeRelative(); + } } else continue; ArrayList list = map.get(source); diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDECoreMessages.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDECoreMessages.java index c87a303bf5..428aa33e12 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDECoreMessages.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDECoreMessages.java @@ -272,6 +272,8 @@ public class PDECoreMessages extends NLS { public static String BuildErrorReporter_SourceCompatibility; + public static String ClasspathHelper_BadFileLocation; + public static String ExportWizard_badDirectory; public static String FeatureExportJob_taskName; diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/pderesources.properties b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/pderesources.properties index 16099505c8..72b812014b 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/pderesources.properties +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/pderesources.properties @@ -213,6 +213,7 @@ FeatureExportOperation_runningBuildScript=Running build script FeatureExportOperation_runningPackagerScript=Running packager script FeatureExportOperation_workspaceBuildErrorsFoundDuringExport=Export completed successfully, but build problems were detected in the following required projects: {0} BaseExportTask_pdeExport=PDE Export +ClasspathHelper_BadFileLocation=Could not determine absolute location of file: {0} XMLErrorReporter_ExternalEntityResolution=External entity resolution is not supported by PDE. XMLTextChangeListener_editNames_removeNode=Remove "{0}" node -- cgit v1.2.3