Lines 591-599
Link Here
|
591 |
char[][] javaLikeExtensions = getJavaLikeExtensions(); |
591 |
char[][] javaLikeExtensions = getJavaLikeExtensions(); |
592 |
suffixes: for (int i = 0, length = javaLikeExtensions.length; i < length; i++) { |
592 |
suffixes: for (int i = 0, length = javaLikeExtensions.length; i < length; i++) { |
593 |
char[] suffix = javaLikeExtensions[i]; |
593 |
char[] suffix = javaLikeExtensions[i]; |
594 |
if (stringLength + suffix.length != fileNameLength) continue; |
594 |
int extensionStart = stringLength+1; |
595 |
for (int j = stringLength; j < fileNameLength; j++) { |
595 |
if (extensionStart + suffix.length != fileNameLength) continue; |
596 |
if (fileName.charAt(j) != suffix[j-stringLength]) |
596 |
if (fileName.charAt(stringLength) != '.') continue; |
|
|
597 |
for (int j = extensionStart; j < fileNameLength; j++) { |
598 |
if (fileName.charAt(j) != suffix[j-extensionStart]) |
597 |
continue suffixes; |
599 |
continue suffixes; |
598 |
} |
600 |
} |
599 |
return true; |
601 |
return true; |
Lines 741-747
Link Here
|
741 |
if (JAVA_LIKE_EXTENSIONS == null) { |
743 |
if (JAVA_LIKE_EXTENSIONS == null) { |
742 |
// TODO (jerome) reenable once JDT UI supports other file extensions (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=71460) |
744 |
// TODO (jerome) reenable once JDT UI supports other file extensions (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=71460) |
743 |
if (!ENABLE_JAVA_LIKE_EXTENSIONS) |
745 |
if (!ENABLE_JAVA_LIKE_EXTENSIONS) |
744 |
JAVA_LIKE_EXTENSIONS = new char[][] {SuffixConstants.SUFFIX_java}; |
746 |
JAVA_LIKE_EXTENSIONS = new char[][] {SuffixConstants.EXTENSION_java.toCharArray()}; |
745 |
else { |
747 |
else { |
746 |
IContentType javaContentType = Platform.getContentTypeManager().getContentType(JavaModelManager.JAVA_SOURCE_CONTENT_TYPE); |
748 |
IContentType javaContentType = Platform.getContentTypeManager().getContentType(JavaModelManager.JAVA_SOURCE_CONTENT_TYPE); |
747 |
String[] fileExtensions = javaContentType == null ? null : javaContentType.getFileSpecs(IContentType.FILE_EXTENSION_SPEC); |
749 |
String[] fileExtensions = javaContentType == null ? null : javaContentType.getFileSpecs(IContentType.FILE_EXTENSION_SPEC); |
Lines 749-763
Link Here
|
749 |
int length = fileExtensions == null ? 0 : fileExtensions.length; |
751 |
int length = fileExtensions == null ? 0 : fileExtensions.length; |
750 |
char[][] extensions = new char[length][]; |
752 |
char[][] extensions = new char[length][]; |
751 |
SimpleWordSet knownExtensions = new SimpleWordSet(length); // used to ensure no duplicate extensions |
753 |
SimpleWordSet knownExtensions = new SimpleWordSet(length); // used to ensure no duplicate extensions |
752 |
extensions[0] = SuffixConstants.SUFFIX_java; // ensure that ".java" is first |
754 |
extensions[0] = SuffixConstants.EXTENSION_java.toCharArray(); // ensure that ".java" is first |
753 |
knownExtensions.add(SuffixConstants.SUFFIX_java); |
755 |
knownExtensions.add(extensions[0]); |
754 |
int index = 1; |
756 |
int index = 1; |
755 |
for (int i = 0; i < length; i++) { |
757 |
for (int i = 0; i < length; i++) { |
756 |
String fileExtension = fileExtensions[i]; |
758 |
String fileExtension = fileExtensions[i]; |
757 |
int extensionLength = fileExtension.length() + 1; |
759 |
char[] extension = fileExtension.toCharArray(); |
758 |
char[] extension = new char[extensionLength]; |
|
|
759 |
extension[0] = '.'; |
760 |
fileExtension.getChars(0, extensionLength-1, extension, 1); |
761 |
if (!knownExtensions.includes(extension)) { |
760 |
if (!knownExtensions.includes(extension)) { |
762 |
extensions[index++] = extension; |
761 |
extensions[index++] = extension; |
763 |
knownExtensions.add(extension); |
762 |
knownExtensions.add(extension); |
Lines 1153-1158
Link Here
|
1153 |
/* |
1152 |
/* |
1154 |
* Returns the index of the Java like extension of the given file name |
1153 |
* Returns the index of the Java like extension of the given file name |
1155 |
* or -1 if it doesn't end with a known Java like extension. |
1154 |
* or -1 if it doesn't end with a known Java like extension. |
|
|
1155 |
* Note this is the index of the '.' even if it is not considered part of the extension. |
1156 |
*/ |
1156 |
*/ |
1157 |
public static int indexOfJavaLikeExtension(String fileName) { |
1157 |
public static int indexOfJavaLikeExtension(String fileName) { |
1158 |
int fileNameLength = fileName.length(); |
1158 |
int fileNameLength = fileName.length(); |
Lines 1161-1172
Link Here
|
1161 |
char[] extension = javaLikeExtensions[i]; |
1161 |
char[] extension = javaLikeExtensions[i]; |
1162 |
int extensionLength = extension.length; |
1162 |
int extensionLength = extension.length; |
1163 |
int extensionStart = fileNameLength - extensionLength; |
1163 |
int extensionStart = fileNameLength - extensionLength; |
1164 |
if (extensionStart < 0) continue; |
1164 |
int dotIndex = extensionStart - 1; |
|
|
1165 |
if (dotIndex < 0) continue; |
1166 |
if (fileName.charAt(dotIndex) != '.') continue; |
1165 |
for (int j = 0; j < extensionLength; j++) { |
1167 |
for (int j = 0; j < extensionLength; j++) { |
1166 |
if (fileName.charAt(extensionStart + j) != extension[j]) |
1168 |
if (fileName.charAt(extensionStart + j) != extension[j]) |
1167 |
continue extensions; |
1169 |
continue extensions; |
1168 |
} |
1170 |
} |
1169 |
return extensionStart; |
1171 |
return dotIndex; |
1170 |
} |
1172 |
} |
1171 |
return -1; |
1173 |
return -1; |
1172 |
} |
1174 |
} |
Lines 2327-2333
Link Here
|
2327 |
char[] extension = javaLikeExtensions[i]; |
2329 |
char[] extension = javaLikeExtensions[i]; |
2328 |
int extensionLength = extension.length; |
2330 |
int extensionLength = extension.length; |
2329 |
int extensionStart = fileNameLength - extensionLength; |
2331 |
int extensionStart = fileNameLength - extensionLength; |
2330 |
if (extensionStart < 0) continue; |
2332 |
if (extensionStart-1 < 0) continue; |
|
|
2333 |
if (fileName[extensionStart-1] != '.') continue; |
2331 |
for (int j = 0; j < extensionLength; j++) { |
2334 |
for (int j = 0; j < extensionLength; j++) { |
2332 |
if (fileName[extensionStart + j] != extension[j]) |
2335 |
if (fileName[extensionStart + j] != extension[j]) |
2333 |
continue extensions; |
2336 |
continue extensions; |