### Eclipse Workspace Patch 1.0 #P org.eclipse.pde.core Index: src/org/eclipse/pde/internal/core/builders/BuildErrorReporter.java =================================================================== RCS file: /cvsroot/eclipse/pde/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/BuildErrorReporter.java,v retrieving revision 1.36 diff -u -r1.36 BuildErrorReporter.java --- src/org/eclipse/pde/internal/core/builders/BuildErrorReporter.java 8 Nov 2008 19:35:22 -0000 1.36 +++ src/org/eclipse/pde/internal/core/builders/BuildErrorReporter.java 7 Jan 2009 23:03:03 -0000 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2008 IBM Corporation and others. + * Copyright (c) 2005, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -15,7 +15,7 @@ import java.io.File; import java.io.FilenameFilter; -import java.util.ArrayList; +import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.eclipse.core.resources.*; @@ -123,6 +123,7 @@ IBuildEntry bundleList = null; ArrayList sourceEntries = new ArrayList(); ArrayList sourceEntryKeys = new ArrayList(); + Map encodingEntries = new HashMap(); IBuildEntry[] entries = build.getBuildEntries(); for (int i = 0; i < entries.length; i++) { String name = entries[i].getName(); @@ -138,6 +139,8 @@ srcExcludes = entries[i]; else if (name.startsWith(PROPERTY_SOURCE_PREFIX)) sourceEntries.add(entries[i]); + else if (name.startsWith(PROPERTY_JAVAC_DEFAULT_ENCODING_PREFIX)) + encodingEntries.put(entries[i].getName(), entries[i].getTokens()[0]); else if (name.equals(PROPERTY_JAR_EXTRA_CLASSPATH)) jarsExtra = entries[i]; else if (name.equals(IBuildEntry.SECONDARY_DEPENDENCIES)) @@ -185,6 +188,25 @@ validateSourceEntries(sourceEntries); validateMissingSourceInBinIncludes(binIncludes, sourceEntryKeys, build); validateBinIncludes(binIncludes); + validateDefaultEncoding(sourceEntries, encodingEntries); + } + + private void validateDefaultEncoding(ArrayList sourceEntries, Map encodingEntries) { + String defaultEncoding = System.getProperty("file.encoding"); //$NON-NLS-1$ + for (int i = 0; i < sourceEntries.size(); i++) { + try { + String name = ((IBuildEntry) sourceEntries.get(i)).getName(); + String library = name.substring(name.indexOf('.') + 1, name.length()); + String encoding = fProject.getDefaultCharset(); + String encodingId = PROPERTY_JAVAC_DEFAULT_ENCODING_PREFIX + library; + String libraryEncoding = (String) encodingEntries.get(encodingId); + if (!defaultEncoding.equalsIgnoreCase(encoding) && libraryEncoding == null) { + prepareError(encodingId, encoding, NLS.bind(PDECoreMessages.BuildErrorReporter_defaultEncodingMissing, new Object[] {defaultEncoding, encoding}), PDEMarkerFactory.B_ADDDITION, PDEMarkerFactory.CAT_OTHER); + } + } catch (CoreException e) { + e.printStackTrace(); + } + } } private void validateBinIncludes(IBuildEntry binIncludes) { Index: src/org/eclipse/pde/internal/core/pderesources.properties =================================================================== RCS file: /cvsroot/eclipse/pde/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/pderesources.properties,v retrieving revision 1.103 diff -u -r1.103 pderesources.properties --- src/org/eclipse/pde/internal/core/pderesources.properties 6 Dec 2008 23:58:21 -0000 1.103 +++ src/org/eclipse/pde/internal/core/pderesources.properties 7 Jan 2009 23:03:03 -0000 @@ -84,6 +84,7 @@ Builders_Manifest_internal_rootElement = Access to extension point ''{0}'' is discouraged BuildErrorReporter_binIncludesMissing=An entry for {0} is required in bin.includes BuildErrorReporter_entiresMustRefDirs={0}: entries ending in / must reference directories +BuildErrorReporter_defaultEncodingMissing=The default encoding of ''{0}'' does not match the project specific encoding of ''{1}'' Builders_Manifest_deprecated_rootElement = The extension point ''{0}'' is deprecated BuildErrorReporter_classpathEntryMissing={0} is not included in any "source.*" build entry BuildErrorReporter_classpathEntryMissing1={0} is missing from {1} Index: src/org/eclipse/pde/internal/core/PDECoreMessages.java =================================================================== RCS file: /cvsroot/eclipse/pde/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDECoreMessages.java,v retrieving revision 1.61 diff -u -r1.61 PDECoreMessages.java --- src/org/eclipse/pde/internal/core/PDECoreMessages.java 6 Dec 2008 23:58:21 -0000 1.61 +++ src/org/eclipse/pde/internal/core/PDECoreMessages.java 7 Jan 2009 23:03:03 -0000 @@ -214,24 +214,16 @@ public static String ManifestConsistencyChecker_buildPropertiesSubtask; public static String BuildErrorReporter_missingEntry; - public static String BuildErrorReporter_missingFolder; - public static String BuildErrorReporter_emptyEntry; - public static String BuildErrorReporter_binIncludesMissing; - public static String BuildErrorReporter_sourceMissing; - public static String BuildErrorReporter_classpathEntryMissing; - public static String BuildErrorReporter_missingFile; - public static String BuildErrorReporter_entiresMustRefDirs; - public static String BuildErrorReporter_dirsMustEndSlash; - public static String BuildErrorReporter_classpathEntryMissing1; + public static String BuildErrorReporter_defaultEncodingMissing; public static String LoadTargetOperation_mainTaskName;