Fix NPE in meta-data loading when an invalid source file is specified.
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 f406605..eef5937 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.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 @@
         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 5dfb331..5e6489d 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 @@
  */
 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 1bc90c0..4cb134e 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 @@
 		
 	}
 	
-	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 @@
 		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 a6a5e04..e65d0da 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 @@
 	
 	/**
 	 * 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();