Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcbateman2008-04-23 21:57:03 +0000
committercbateman2008-04-23 21:57:03 +0000
commit76f4149a89abc7ca527a65ace346056728eee7da (patch)
treec4e2428a3c2d8156c6578bc84132a4ed49626ba5
parent0237eab065093a59f2bce4677c42a2732e0c5160 (diff)
downloadwebtools.jsf-76f4149a89abc7ca527a65ace346056728eee7da.tar.gz
webtools.jsf-76f4149a89abc7ca527a65ace346056728eee7da.tar.xz
webtools.jsf-76f4149a89abc7ca527a65ace346056728eee7da.zip
Fix NPE in meta-data loading when an invalid source file is specified.
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/PluginRelativeStandardMetaDataSourceFileLocator.java13
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataFileInfo.java6
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataFileRegistry.java39
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataSourceFileLocator.java4
4 files changed, 45 insertions, 17 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/PluginRelativeStandardMetaDataSourceFileLocator.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/PluginRelativeStandardMetaDataSourceFileLocator.java
index f40660540..eef593724 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/PluginRelativeStandardMetaDataSourceFileLocator.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/PluginRelativeStandardMetaDataSourceFileLocator.java
@@ -23,6 +23,7 @@ import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
+import org.osgi.framework.Bundle;
/**
* Default implementation of StandardMetaDataSourceFileLocator that will locate standard metadata files
@@ -47,11 +48,17 @@ public class PluginRelativeStandardMetaDataSourceFileLocator extends StandardMet
throw new FileNotFoundException("Metadata file not found: "+ fileName);
}
- /**
- * @return URL to metadata source. Must not be null.
+ /* (non-Javadoc)
+ * @see org.eclipse.jst.jsf.common.metadata.internal.StandardMetaDataSourceFileLocator#getURL()
*/
public URL getURL() {
- return FileLocator.find(Platform.getBundle(fileInfo.getBundleId()), Path.fromOSString(fileInfo.getLocation()), null);
+ final Bundle bundle = Platform.getBundle(fileInfo.getBundleId());
+ if (bundle == null)
+ {
+ return null;
+ }
+ final IPath fromOSString = Path.fromOSString(fileInfo.getLocation());
+ return FileLocator.find(bundle, fromOSString, null);
}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataFileInfo.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataFileInfo.java
index 5dfb331df..5e6489d66 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataFileInfo.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataFileInfo.java
@@ -16,9 +16,9 @@ package org.eclipse.jst.jsf.common.metadata.internal;
*/
public final class StandardMetaDataFileInfo implements IStandardMetaDataSourceInfo{
- private String fileLocation;
- private String fileLocatorClassname;
- private String bundleId;
+ private final String fileLocation;
+ private final String fileLocatorClassname;
+ private final String bundleId;
/**
* Constructor
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataFileRegistry.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataFileRegistry.java
index 1bc90c07e..4cb134e33 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataFileRegistry.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataFileRegistry.java
@@ -133,14 +133,35 @@ class StandardMetaDataFilesProvider implements IMetaDataSourceModelProvider {
}
- private URI getMDFileURI(){
- try {
- return URI.createURI(getFileLocator().getURL().toURI().toString());
- } catch (URISyntaxException e) {
- JSFCommonPlugin.log(IStatus.ERROR, "Metadata File Load Error: "+getFileLocator().getFileInfo().toString()+": URISyntaxException: "+e.getMessage());
- }
- return null;
- }
+ private URI getMDFileURI()
+ {
+ try
+ {
+ StandardMetaDataSourceFileLocator fileLocator2 = getFileLocator();
+ if (fileLocator2 != null)
+ {
+ final URL url = fileLocator2.getURL();
+ if (url == null)
+ {
+ JSFCommonPlugin.log(new RuntimeException(),
+ "Couldn't locate meta-data file for "
+ + fileLocator2.getFileInfo()
+ .getLocation());
+ return null;
+ }
+
+ java.net.URI uri = url.toURI();
+ return URI.createURI(uri.toString());
+ }
+ }
+ catch (URISyntaxException e)
+ {
+ JSFCommonPlugin.log(IStatus.ERROR, "Metadata File Load Error: "
+ + getFileLocator().getFileInfo().toString()
+ + ": URISyntaxException: " + e.getMessage());
+ }
+ return null;
+ }
/* (non-Javadoc)
* @see org.eclipse.jst.jsf.common.metadata.internal.IMetaDataSourceModelProvider#getSourceModel()
@@ -153,7 +174,7 @@ class StandardMetaDataFilesProvider implements IMetaDataSourceModelProvider {
try {
URI uri = getMDFileURI();
inputStream = getInputStream();
- if (inputStream != null){
+ if (inputStream != null && uri != null){
EList contents = StandardModelFactory.getInstance().loadStandardFileResource(inputStream, this, uri);
//check to see if this is a Model
if (contents != null && !contents.isEmpty() &&
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataSourceFileLocator.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataSourceFileLocator.java
index a6a5e04ed..e65d0dab2 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataSourceFileLocator.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataSourceFileLocator.java
@@ -58,8 +58,8 @@ public abstract class StandardMetaDataSourceFileLocator {
/**
* Return URL to the meta-data source file.
- * Must not be null.
- * @return URL
+
+ * @return URL or null if cannot find a the file for getFileInfo
*/
public abstract URL getURL();

Back to the top