From e2886baeab06bba5304132e25c430fb41cf61bbb Mon Sep 17 00:00:00 2001
From: David Kwon <dakwon@redhat.com>
Date: Mon, 6 Jul 2020 14:56:11 -0400
Subject: [PATCH] Fix generate schema code action file name

Signed-off-by: David Kwon <dakwon@redhat.com>
---
 .../AbstractFixMissingGrammarCodeAction.java           |  2 +-
 .../contentmodel/XMLSchemaDiagnosticsTest.java         | 10 +++++-----
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/participants/codeactions/AbstractFixMissingGrammarCodeAction.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/participants/codeactions/AbstractFixMissingGrammarCodeAction.java
index 675bdee8b..38122ad8b 100644
--- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/participants/codeactions/AbstractFixMissingGrammarCodeAction.java
+++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/participants/codeactions/AbstractFixMissingGrammarCodeAction.java
@@ -67,7 +67,7 @@ private String getPathFromDiagnostic(Diagnostic diagnostic) {
 		String message = diagnostic.getMessage();
 		int startIndex = message.indexOf(FILE_SCHEME);
 		if (startIndex != -1) {
-			int endIndex = message.indexOf("'", startIndex + 1);
+			int endIndex = message.lastIndexOf("'");
 			return message.substring(startIndex + FILE_SCHEME.length(), endIndex);
 		}
 
diff --git a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLSchemaDiagnosticsTest.java b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLSchemaDiagnosticsTest.java
index b6dee9bf3..ae33364f8 100644
--- a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLSchemaDiagnosticsTest.java
+++ b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLSchemaDiagnosticsTest.java
@@ -683,11 +683,11 @@ public void testTargetNamespace_2SingleQuotes() throws Exception {
 	public void localSchemaFileMissingCodeAction() throws Exception {
 		String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + //
 				"<invoice xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" + //
-				"  xsi:noNamespaceSchemaLocation=\"/salad.xsd\">\n" + //
+				"  xsi:noNamespaceSchemaLocation=\"/sala'd.xsd\">\n" + //
 				"</invoice>";
-		Diagnostic missingSchemaDiagnostic = d(2, 32, 44, XMLSchemaErrorCode.schema_reference_4);
+		Diagnostic missingSchemaDiagnostic = d(2, 32, 45, XMLSchemaErrorCode.schema_reference_4);
 		missingSchemaDiagnostic.setMessage("schema_reference.4: Failed to read schema document "
-				+ "'file:///salad.xsd',"
+				+ "'file:///sala'd.xsd',"
 				+ " because 1) could not find the document; 2) the document could not be read;"
 				+ " 3) the root element of the document is not <xsd:schema>.");
 		Diagnostic eltDiagnostic = d(1, 1, 8, XMLSchemaErrorCode.cvc_elt_1_a);
@@ -705,8 +705,8 @@ public void localSchemaFileMissingCodeAction() throws Exception {
 				missingSchemaDiagnostic, //
 				settings, //
 				ca(missingSchemaDiagnostic, //
-						createFile("file:///salad.xsd", false), //
-						teOp("file:///salad.xsd", 0, 0, 0, 0, //
+						createFile("file:///sala'd.xsd", false), //
+						teOp("file:///sala'd.xsd", 0, 0, 0, 0, //
 								"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + lineSeparator() + //
 										"<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" + lineSeparator() + //
 										"  <xs:element name=\"invoice\" type=\"xs:string\" />" + lineSeparator() + //