### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: batch/org/eclipse/jdt/internal/compiler/batch/ClasspathJar.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/ClasspathJar.java,v retrieving revision 1.48 diff -u -r1.48 ClasspathJar.java --- batch/org/eclipse/jdt/internal/compiler/batch/ClasspathJar.java 10 Nov 2008 16:38:21 -0000 1.48 +++ batch/org/eclipse/jdt/internal/compiler/batch/ClasspathJar.java 2 Mar 2009 18:04:12 -0000 @@ -51,7 +51,7 @@ try { initialize(); ArrayList result = new ArrayList(); - ZipEntry manifest = this.zipFile.getEntry("META-INF/MANIFEST.MF"); //$NON-NLS-1$ + ZipEntry manifest = this.zipFile.getEntry("META-INF/MANIFEST.MF"); //$NON-NLS-1$ if (manifest != null) { // non-null implies regular file reader = new BufferedReader(new InputStreamReader(this.zipFile.getInputStream(manifest))); ManifestAnalyzer analyzer = new ManifestAnalyzer(); Index: compiler/org/eclipse/jdt/internal/compiler/util/ManifestAnalyzer.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/util/ManifestAnalyzer.java,v retrieving revision 1.2 diff -u -r1.2 ManifestAnalyzer.java --- compiler/org/eclipse/jdt/internal/compiler/util/ManifestAnalyzer.java 17 Oct 2008 11:01:09 -0000 1.2 +++ compiler/org/eclipse/jdt/internal/compiler/util/ManifestAnalyzer.java 2 Mar 2009 18:04:12 -0000 @@ -70,16 +70,23 @@ break; case SKIPPING_WHITESPACE: if (currentChar == -1) { + // >>>>>>>>>>>>>>>>>> Add the latest jar read + addCurrentTokenJarWhenNecessary(currentJarToken); return true; } else if (currentChar == '\n') { state = CONTINUING; } else if (currentChar != ' ') { currentJarToken.append((char) currentChar); state = READING_JAR; + } else { + // >>>>>>>>>>>>>>>>>> Add the latest jar read + addCurrentTokenJarWhenNecessary(currentJarToken); } break; case CONTINUING: if (currentChar == -1) { + // >>>>>>>>>>>>>>>>>> Add the latest jar read + addCurrentTokenJarWhenNecessary(currentJarToken); return true; } else if (currentChar == '\n') { state = START; @@ -89,8 +96,11 @@ state = IN_CLASSPATH_HEADER; substate = 1; } else if (this.calledFilesNames == null) { - return false; + // >>>>>>>>>>>>>>>>>> Add the latest jar read + return addCurrentTokenJarWhenNecessary(currentJarToken); } else { + // >>>>>>>>>>>>>>>>>> Add the latest jar read + addCurrentTokenJarWhenNecessary(currentJarToken); state = SKIP_LINE; } break; @@ -101,12 +111,15 @@ state = START; } break; - case READING_JAR: + case READING_JAR: if (currentChar == -1) { - return false; + // >>>>>>>>>>>>>>>>>> Add the latest jar read + return addCurrentTokenJarWhenNecessary(currentJarToken); } else if (currentChar == '\n') { // appends token below state = CONTINUING; + // >>>>>>>>>>> Add a break to not add the jar yet as it can continue on the next line + break; } else if (currentChar == ' ') { // appends token below state = SKIPPING_WHITESPACE; @@ -114,15 +127,27 @@ currentJarToken.append((char) currentChar); break; } - if (this.calledFilesNames == null) { - this.calledFilesNames = new ArrayList(); - } - this.calledFilesNames.add(currentJarToken.toString()); - currentJarToken.setLength(0); + addCurrentTokenJarWhenNecessary(currentJarToken); break; } } + } + + // >>>>>>>>>>>>>>>> Method Extracted from analyzeManifestContents in the READING_JAR Block + private boolean addCurrentTokenJarWhenNecessary(StringBuffer currentJarToken) { + if (currentJarToken != null && currentJarToken.length() > 0) { + if (this.calledFilesNames == null) { + this.calledFilesNames = new ArrayList(); + } + this.calledFilesNames.add(currentJarToken.toString()); + currentJarToken.setLength(0); + return true; + } + return false; } + // <<<<<<<<<<<<<<<<<<<<<< + + public int getClasspathSectionsCount() { return this.ClasspathSectionsCount; } #P org.eclipse.jdt.core.tests.compiler Index: src/org/eclipse/jdt/core/tests/compiler/regression/TestAll.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TestAll.java,v retrieving revision 1.76 diff -u -r1.76 TestAll.java --- src/org/eclipse/jdt/core/tests/compiler/regression/TestAll.java 1 Dec 2008 12:32:11 -0000 1.76 +++ src/org/eclipse/jdt/core/tests/compiler/regression/TestAll.java 2 Mar 2009 18:04:12 -0000 @@ -70,6 +70,7 @@ standardTests.add(SerialVersionUIDTests.class); standardTests.add(LineNumberAttributeTest.class); standardTests.add(ProgrammingProblemsTest.class); + standardTests.add(ManifestAnalyzerTest.class); // add all javadoc tests for (int i=0, l=JavadocTest.ALL_CLASSES.size(); i