View | Details | Raw Unified | Return to bug 118246
Collapse All | Expand All

(-)search/org/eclipse/jdt/internal/core/search/matching/ClasspathSourceDirectory.java (-1 / +1 lines)
Lines 103-109 Link Here
103
	String sourceFolderPath = this.sourceFolder.getFullPath().toString() + IPath.SEPARATOR;
103
	String sourceFolderPath = this.sourceFolder.getFullPath().toString() + IPath.SEPARATOR;
104
	char[][] javaLikeExtensions = Util.getJavaLikeExtensions();
104
	char[][] javaLikeExtensions = Util.getJavaLikeExtensions();
105
	for (int i = 0, length = javaLikeExtensions.length; i < length; i++) {
105
	for (int i = 0, length = javaLikeExtensions.length; i < length; i++) {
106
		String extension = new String(javaLikeExtensions[i]);
106
		String extension = '.' + new String(javaLikeExtensions[i]);
107
		String sourceFileName = sourceFileWithoutExtension + extension;
107
		String sourceFileName = sourceFileWithoutExtension + extension;
108
		if (!doesFileExist(sourceFileName, qualifiedPackageName)) continue; // most common case
108
		if (!doesFileExist(sourceFileName, qualifiedPackageName)) continue; // most common case
109
	
109
	
(-)model/org/eclipse/jdt/internal/core/ClassFile.java (+1 lines)
Lines 562-567 Link Here
562
						entryName.append('/');
562
						entryName.append('/');
563
					}
563
					}
564
					entryName.append(sourceFileWithoutExtension);
564
					entryName.append(sourceFileWithoutExtension);
565
					entryName.append('.');
565
					entryName.append(javaLikeExtensions[i]);
566
					entryName.append(javaLikeExtensions[i]);
566
					ZipEntry zipEntry = jar.getEntry(entryName.toString());
567
					ZipEntry zipEntry = jar.getEntry(entryName.toString());
567
					if (zipEntry != null) {
568
					if (zipEntry != null) {
(-)model/org/eclipse/jdt/core/JavaCore.java (-1 / +3 lines)
Lines 2491-2497 Link Here
2491
	 * Returns the list of known Java-like extensions.
2491
	 * Returns the list of known Java-like extensions.
2492
	 * Java like extension are defined in the {@link org.eclipse.core.runtime.Platform#getContentTypeManager() 
2492
	 * Java like extension are defined in the {@link org.eclipse.core.runtime.Platform#getContentTypeManager() 
2493
	 * content type manager} for the org.eclipse.jdt.core.javaSource content type.
2493
	 * content type manager} for the org.eclipse.jdt.core.javaSource content type.
2494
	 * Note that the ".java" extension is always defined as a Java like extension.
2494
	 * Note that a Java-like extension doesn't include the leading dot ('.').
2495
	 * Also note that the "java" extension is always defined as a Java like extension.
2495
	 * 
2496
	 * 
2496
	 * @return the list of known Java-like extensions.
2497
	 * @return the list of known Java-like extensions.
2497
	 * @since 3.2
2498
	 * @since 3.2
Lines 3811-3816 Link Here
3811
	/**
3812
	/**
3812
	 * Removes the file extension from the given file name, if it has a Java-like file
3813
	 * Removes the file extension from the given file name, if it has a Java-like file
3813
	 * extension. Otherwise the file name itself is returned.
3814
	 * extension. Otherwise the file name itself is returned.
3815
	 * Note this removes the dot ('.') before the extension as well.
3814
	 * 
3816
	 * 
3815
	 * @param fileName the name of a file
3817
	 * @param fileName the name of a file
3816
	 * @return the fileName without the Java-like extension
3818
	 * @return the fileName without the Java-like extension
(-)model/org/eclipse/jdt/internal/core/util/Util.java (-13 / +16 lines)
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;

Return to bug 118246