| /******************************************************************************* |
| * Copyright (c) 2000, 2006 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 |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.wst.jsdt.core.tests.compiler.regression; |
| |
| import java.util.Hashtable; |
| |
| import junit.framework.Assert; |
| |
| import org.eclipse.wst.jsdt.core.compiler.CategorizedProblem; |
| import org.eclipse.wst.jsdt.internal.compiler.CompilationResult; |
| import org.eclipse.wst.jsdt.internal.compiler.ICompilerRequestor; |
| import org.eclipse.wst.jsdt.internal.compiler.IProblemFactory; |
| import org.eclipse.wst.jsdt.internal.compiler.impl.CompilerOptions; |
| import org.eclipse.wst.jsdt.internal.compiler.problem.DefaultProblem; |
| import org.eclipse.wst.jsdt.internal.compiler.problem.ProblemReporter; |
| |
| public class Requestor extends Assert implements ICompilerRequestor { |
| public boolean hasErrors = false; |
| public IProblemFactory problemFactory; |
| public String outputPath; |
| private boolean generateOutput; |
| public Hashtable expectedProblems = new Hashtable(); |
| public String problemLog = ""; |
| public ICompilerRequestor clientRequestor; |
| public boolean showCategory = false; |
| public boolean showWarningToken = false; |
| |
| public Requestor(IProblemFactory problemFactory, String outputPath, boolean generateOutput, ICompilerRequestor clientRequestor, boolean showCategory, boolean showWarningToken) { |
| this.problemFactory = problemFactory; |
| this.outputPath = outputPath; |
| this.generateOutput = generateOutput; |
| this.clientRequestor = clientRequestor; |
| this.showCategory = showCategory; |
| this.showWarningToken = showWarningToken; |
| } |
| public void acceptResult(CompilationResult compilationResult) { |
| StringBuffer buffer = new StringBuffer(100); |
| hasErrors |= compilationResult.hasErrors(); |
| if (compilationResult.hasProblems() || compilationResult.hasTasks()) { |
| CategorizedProblem[] problems = compilationResult.getAllProblems(); |
| int count = problems.length; |
| int problemCount = 0; |
| char[] unitSource = compilationResult.compilationUnit.getContents(); |
| for (int i = 0; i < count; i++) { |
| DefaultProblem problem = (DefaultProblem) problems[i]; |
| if (problem != null) { |
| if (problemCount == 0) |
| buffer.append("----------\n"); |
| problemCount++; |
| buffer.append(problemCount + (problem.isError() ? ". ERROR" : ". WARNING")); |
| buffer.append(" in " + new String(problem.getOriginatingFileName()).replace('/', '\\')); |
| try { |
| buffer.append(problem.errorReportSource(unitSource)); |
| buffer.append("\n"); |
| if (showCategory) { |
| String category = problem.getInternalCategoryMessage(); |
| if (category != null) { |
| buffer.append("[@cat:").append(category).append("] "); |
| } |
| } |
| if (showWarningToken) { |
| long irritant = ProblemReporter.getIrritant(problem.getID()); |
| if (irritant != 0) { |
| String warningToken = CompilerOptions.warningTokenFromIrritant(irritant); |
| if (warningToken != null) { |
| buffer.append("[@sup:").append(warningToken).append("] "); |
| } |
| } |
| } |
| buffer.append(problem.getMessage()); |
| buffer.append("\n"); |
| } catch (Exception e) { |
| } |
| buffer.append("----------\n"); |
| } |
| } |
| problemLog += buffer.toString(); |
| } |
| if (this.clientRequestor != null) { |
| this.clientRequestor.acceptResult(compilationResult); |
| } |
| } |
| |
| } |