[419181] IllegalArgumentException after opening a JSP file.
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslator.java
index 2b98ea2..7160e59 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslator.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslator.java
@@ -124,7 +124,7 @@
 	 * @see #writeRanges(ObjectOutput, HashMap)
 	 * @see #readRanges(ObjectInput)
 	 */
-	private static final long serialVersionUID = 2L;
+	private static final long serialVersionUID = 3L;
 	
 	/** for debugging */
 	private static final boolean DEBUG = Boolean.valueOf(Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jspjavamapping")).booleanValue(); //$NON-NLS-1$
@@ -329,6 +329,9 @@
 	 */
 	private boolean fCodeTranslated;
 
+	/** The model path as it was persisted */
+	private IPath fSavedModelPath = null;
+
 	/**
 	 * A structure for holding a region collection marker and list of variable
 	 * information. The region can be used later for positioning validation
@@ -3080,7 +3083,8 @@
 	 * @return
 	 */
 	private boolean isTypeFound(String rawTypeValue, List errorTypeNames) {
-		IFile file = getFile();
+		// If the translation is being loaded from disk, the model and structured document may not have been intiailized yet
+		IFile file = getStructuredDocument() != null ? getFile() : (fSavedModelPath != null ? ResourcesPlugin.getWorkspace().getRoot().getFile(fSavedModelPath) : null);
 		if (file == null)
 			return true;
 
@@ -3316,6 +3320,8 @@
 		writeRanges(out, this.fUserELRanges);
 		writeRanges(out, this.fIndirectRanges);
 		writeString(out, this.fELTranslatorID);
+		final IPath modelPath = getModelPath();
+		writeString(out, modelPath != null && modelPath.segmentCount() > 1 ? modelPath.toString() : null );
 	}
 	
 	/**
@@ -3367,7 +3373,11 @@
 		this.fUserELRanges = readRanges(in);
 		this.fIndirectRanges = readRanges(in);
 		this.fELTranslatorID = readString(in);
-		
+
+		final String path = readString(in);
+		if (path != null && path.trim().length() > 0) {
+			fSavedModelPath = new Path(path);
+		}
 		//build result
 		this.buildResult(false);
 	}