/*******************************************************************************
* Copyright (c) 2000, 2011 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
* Tom Tromey - Contribution for bug 125961
* Tom Tromey - Contribution for bug 159641
* Benjamin Muskalla - Contribution for bug 239066
* Stephan Herrmann - Contribution for bug 236385
* Stephan Herrmann - Contribution for bug 295551
*******************************************************************************/
package org.eclipse.che.ide.ext.java.emul;
import org.eclipse.che.ide.ext.java.jdt.internal.compiler.problem.ProblemSeverities;
import org.eclipse.che.ide.ext.java.jdt.internal.compiler.util.SuffixConstants;
public class Main implements ProblemSeverities, SuffixConstants {
// public static class Logger {
// private PrintWriter err;
// private PrintWriter log;
// private Main main;
// private PrintWriter out;
// private HashMap parameters;
// int tagBits;
// private static final String CLASS = "class"; //$NON-NLS-1$
// private static final String CLASS_FILE = "classfile"; //$NON-NLS-1$
// private static final String CLASSPATH = "classpath"; //$NON-NLS-1$
// private static final String CLASSPATH_FILE = "FILE"; //$NON-NLS-1$
// private static final String CLASSPATH_FOLDER = "FOLDER"; //$NON-NLS-1$
// private static final String CLASSPATH_ID = "id"; //$NON-NLS-1$
// private static final String CLASSPATH_JAR = "JAR"; //$NON-NLS-1$
// private static final String CLASSPATHS = "classpaths"; //$NON-NLS-1$
// private static final String COMMAND_LINE_ARGUMENT = "argument"; //$NON-NLS-1$
// private static final String COMMAND_LINE_ARGUMENTS = "command_line"; //$NON-NLS-1$
// private static final String COMPILER = "compiler"; //$NON-NLS-1$
// private static final String COMPILER_COPYRIGHT = "copyright"; //$NON-NLS-1$
// private static final String COMPILER_NAME = "name"; //$NON-NLS-1$
// private static final String COMPILER_VERSION = "version"; //$NON-NLS-1$
// public static final int EMACS = 2;
// private static final String ERROR = "ERROR"; //$NON-NLS-1$
// private static final String ERROR_TAG = "error"; //$NON-NLS-1$
// private static final String WARNING_TAG = "warning"; //$NON-NLS-1$
// private static final String EXCEPTION = "exception"; //$NON-NLS-1$
// private static final String EXTRA_PROBLEM_TAG = "extra_problem"; //$NON-NLS-1$
// private static final String EXTRA_PROBLEMS = "extra_problems"; //$NON-NLS-1$
// private static final HashtableOfInt FIELD_TABLE = new HashtableOfInt();
// private static final String KEY = "key"; //$NON-NLS-1$
// private static final String MESSAGE = "message"; //$NON-NLS-1$
// private static final String NUMBER_OF_CLASSFILES = "number_of_classfiles"; //$NON-NLS-1$
// private static final String NUMBER_OF_ERRORS = "errors"; //$NON-NLS-1$
// private static final String NUMBER_OF_LINES = "number_of_lines"; //$NON-NLS-1$
// private static final String NUMBER_OF_PROBLEMS = "problems"; //$NON-NLS-1$
// private static final String NUMBER_OF_TASKS = "tasks"; //$NON-NLS-1$
// private static final String NUMBER_OF_WARNINGS = "warnings"; //$NON-NLS-1$
// private static final String OPTION = "option"; //$NON-NLS-1$
// private static final String OPTIONS = "options"; //$NON-NLS-1$
// private static final String OUTPUT = "output"; //$NON-NLS-1$
// private static final String PACKAGE = "package"; //$NON-NLS-1$
// private static final String PATH = "path"; //$NON-NLS-1$
// private static final String PROBLEM_ARGUMENT = "argument"; //$NON-NLS-1$
// private static final String PROBLEM_ARGUMENT_VALUE = "value"; //$NON-NLS-1$
// private static final String PROBLEM_ARGUMENTS = "arguments"; //$NON-NLS-1$
// private static final String PROBLEM_CATEGORY_ID = "categoryID"; //$NON-NLS-1$
// private static final String ID = "id"; //$NON-NLS-1$
// private static final String PROBLEM_ID = "problemID"; //$NON-NLS-1$
// private static final String PROBLEM_LINE = "line"; //$NON-NLS-1$
// private static final String PROBLEM_OPTION_KEY = "optionKey"; //$NON-NLS-1$
// private static final String PROBLEM_MESSAGE = "message"; //$NON-NLS-1$
// private static final String PROBLEM_SEVERITY = "severity"; //$NON-NLS-1$
// private static final String PROBLEM_SOURCE_END = "charEnd"; //$NON-NLS-1$
// private static final String PROBLEM_SOURCE_START = "charStart"; //$NON-NLS-1$
// private static final String PROBLEM_SUMMARY = "problem_summary"; //$NON-NLS-1$
// private static final String PROBLEM_TAG = "problem"; //$NON-NLS-1$
// private static final String PROBLEMS = "problems"; //$NON-NLS-1$
// private static final String SOURCE = "source"; //$NON-NLS-1$
// private static final String SOURCE_CONTEXT = "source_context"; //$NON-NLS-1$
// private static final String SOURCE_END = "sourceEnd"; //$NON-NLS-1$
// private static final String SOURCE_START = "sourceStart"; //$NON-NLS-1$
// private static final String SOURCES = "sources"; //$NON-NLS-1$
//
// private static final String STATS = "stats"; //$NON-NLS-1$
//
// private static final String TASK = "task"; //$NON-NLS-1$
// private static final String TASKS = "tasks"; //$NON-NLS-1$
// private static final String TIME = "time"; //$NON-NLS-1$
// private static final String VALUE = "value"; //$NON-NLS-1$
// private static final String WARNING = "WARNING"; //$NON-NLS-1$
// public static final int XML = 1;
// private static final String XML_DTD_DECLARATION = "<!DOCTYPE compiler PUBLIC \"-//Eclipse.org//DTD Eclipse JDT 3.2.004 Compiler//EN\"
// \"http://www.eclipse.org/jdt/core/compiler_32_004.dtd\">"; //$NON-NLS-1$
// static {
// try {
// Class c = IProblem.class;
// Field[] fields = c.getFields();
// for (int i = 0, max = fields.length; i < max; i++) {
// Field field = fields[i];
// if (field.getType().equals(Integer.TYPE)) {
// Integer value = (Integer) field.get(null);
// int key2 = value.intValue() & IProblem.IgnoreCategoriesMask;
// if (key2 == 0) {
// key2 = Integer.MAX_VALUE;
// }
// Logger.FIELD_TABLE.put(key2, field.getName());
// }
// }
// } catch (SecurityException e) {
// e.printStackTrace();
// } catch (IllegalArgumentException e) {
// e.printStackTrace();
// } catch (IllegalAccessException e) {
// e.printStackTrace();
// }
// }
// public Logger(Main main, PrintWriter out, PrintWriter err) {
// this.out = out;
// this.err = err;
// this.parameters = new HashMap();
// this.main = main;
// }
//
// public String buildFileName(
// String outputPath,
// String relativeFileName) {
// char fileSeparatorChar = File.separatorChar;
// String fileSeparator = File.separator;
//
// outputPath = outputPath.replace('/', fileSeparatorChar);
// // To be able to pass the mkdirs() method we need to remove the extra file separator at the end of the outDir name
// StringBuffer outDir = new StringBuffer(outputPath);
// if (!outputPath.endsWith(fileSeparator)) {
// outDir.append(fileSeparator);
// }
// StringTokenizer tokenizer =
// new StringTokenizer(relativeFileName, fileSeparator);
// String token = tokenizer.nextToken();
// while (tokenizer.hasMoreTokens()) {
// outDir.append(token).append(fileSeparator);
// token = tokenizer.nextToken();
// }
// // token contains the last one
// return outDir.append(token).toString();
// }
//
// public void close() {
// if (this.log != null) {
// if ((this.tagBits & Logger.XML) != 0) {
// endTag(Logger.COMPILER);
// flush();
// }
// this.log.close();
// }
// }
//
// /**
// *
// */
// public void compiling() {
// printlnOut(this.main.bind("progress.compiling")); //$NON-NLS-1$
// }
// private void endLoggingExtraProblems() {
// endTag(Logger.EXTRA_PROBLEMS);
// }
// /**
// * Used to stop logging problems.
// * Only use in xml mode.
// */
// private void endLoggingProblems() {
// endTag(Logger.PROBLEMS);
// }
// public void endLoggingSource() {
// if ((this.tagBits & Logger.XML) != 0) {
// endTag(Logger.SOURCE);
// }
// }
//
// public void endLoggingSources() {
// if ((this.tagBits & Logger.XML) != 0) {
// endTag(Logger.SOURCES);
// }
// }
//
// public void endLoggingTasks() {
// if ((this.tagBits & Logger.XML) != 0) {
// endTag(Logger.TASKS);
// }
// }
// private void endTag(String name) {
// if (this.log != null) {
// ((GenericXMLWriter) this.log).endTag(name, true, true);
// }
// }
// private String errorReportSource(CategorizedProblem problem, char[] unitSource, int bits) {
// //extra from the source the innacurate token
// //and "highlight" it using some underneath ^^^^^
// //put some context around too.
//
// //this code assumes that the font used in the console is fixed size
//
// //sanity .....
// int startPosition = problem.getSourceStart();
// int endPosition = problem.getSourceEnd();
// if (unitSource == null) {
// if (problem.getOriginatingFileName() != null) {
// try {
// unitSource = Util.getFileCharContent(new File(new String(problem.getOriginatingFileName())), null);
// } catch (IOException e) {
// // ignore;
// }
// }
// }
// int length;
// if ((startPosition > endPosition)
// || ((startPosition < 0) && (endPosition < 0))
// || (unitSource == null)
// || (length = unitSource.length) == 0)
// return Messages.problem_noSourceInformation;
//
// StringBuffer errorBuffer = new StringBuffer();
// if ((bits & Main.Logger.EMACS) == 0) {
// errorBuffer.append(' ').append(Messages.bind(Messages.problem_atLine, String.valueOf(problem.getSourceLineNumber())));
// errorBuffer.append(Util.LINE_SEPARATOR);
// }
// errorBuffer.append('\t');
//
// char c;
// final char SPACE = '\u0020';
// final char MARK = '^';
// final char TAB = '\t';
// //the next code tries to underline the token.....
// //it assumes (for a good display) that token source does not
// //contain any \r \n. This is false on statements !
// //(the code still works but the display is not optimal !)
//
// // expand to line limits
// int begin;
// int end;
// for (begin = startPosition >= length ? length - 1 : startPosition; begin > 0; begin--) {
// if ((c = unitSource[begin - 1]) == '\n' || c == '\r') break;
// }
// for (end = endPosition >= length ? length - 1 : endPosition ; end+1 < length; end++) {
// if ((c = unitSource[end + 1]) == '\r' || c == '\n') break;
// }
//
// // trim left and right spaces/tabs
// while ((c = unitSource[begin]) == ' ' || c == '\t') begin++;
// //while ((c = unitSource[end]) == ' ' || c == '\t') end--; TODO (philippe) should also trim right, but all tests are to be updated
//
// // copy source
// errorBuffer.append(unitSource, begin, end-begin+1);
// errorBuffer.append(Util.LINE_SEPARATOR).append("\t"); //$NON-NLS-1$
//
// // compute underline
// for (int i = begin; i <startPosition; i++) {
// errorBuffer.append((unitSource[i] == TAB) ? TAB : SPACE);
// }
// for (int i = startPosition; i <= (endPosition >= length ? length - 1 : endPosition); i++) {
// errorBuffer.append(MARK);
// }
// return errorBuffer.toString();
// }
//
// private void extractContext(CategorizedProblem problem, char[] unitSource) {
// //sanity .....
// int startPosition = problem.getSourceStart();
// int endPosition = problem.getSourceEnd();
// if (unitSource == null) {
// if (problem.getOriginatingFileName() != null) {
// try {
// unitSource = Util.getFileCharContent(new File(new String(problem.getOriginatingFileName())), null);
// } catch(IOException e) {
// // ignore
// }
// }
// }
// int length;
// if ((startPosition > endPosition)
// || ((startPosition < 0) && (endPosition < 0))
// || (unitSource == null)
// || ((length = unitSource.length) <= 0)
// || (endPosition > length)) {
// this.parameters.put(Logger.VALUE, Messages.problem_noSourceInformation);
// this.parameters.put(Logger.SOURCE_START, "-1"); //$NON-NLS-1$
// this.parameters.put(Logger.SOURCE_END, "-1"); //$NON-NLS-1$
// printTag(Logger.SOURCE_CONTEXT, this.parameters, true, true);
// return;
// }
//
// char c;
// //the next code tries to underline the token.....
// //it assumes (for a good display) that token source does not
// //contain any \r \n. This is false on statements !
// //(the code still works but the display is not optimal !)
//
// // expand to line limits
// int begin, end;
// for (begin = startPosition >= length ? length - 1 : startPosition; begin > 0; begin--) {
// if ((c = unitSource[begin - 1]) == '\n' || c == '\r') break;
// }
// for (end = endPosition >= length ? length - 1 : endPosition ; end+1 < length; end++) {
// if ((c = unitSource[end + 1]) == '\r' || c == '\n') break;
// }
//
// // trim left and right spaces/tabs
// while ((c = unitSource[begin]) == ' ' || c == '\t') begin++;
// while ((c = unitSource[end]) == ' ' || c == '\t') end--;
//
// // copy source
// StringBuffer buffer = new StringBuffer();
// buffer.append(unitSource, begin, end - begin + 1);
//
// this.parameters.put(Logger.VALUE, String.valueOf(buffer));
// this.parameters.put(Logger.SOURCE_START, Integer.toString(startPosition - begin));
// this.parameters.put(Logger.SOURCE_END, Integer.toString(endPosition - begin));
// printTag(Logger.SOURCE_CONTEXT, this.parameters, true, true);
// }
// public void flush() {
// this.out.flush();
// this.err.flush();
// if (this.log != null) {
// this.log.flush();
// }
// }
//
// private String getFieldName(int id) {
// int key2 = id & IProblem.IgnoreCategoriesMask;
// if (key2 == 0) {
// key2 = Integer.MAX_VALUE;
// }
// return (String) Logger.FIELD_TABLE.get(key2);
// }
//
// // find out an option name controlling a given problemID
// private String getProblemOptionKey(int problemID) {
// int irritant = ProblemReporter.getIrritant(problemID);
// return CompilerOptions.optionKeyFromIrritant(irritant);
// }
//
// public void logAverage() {
// Arrays.sort(this.main.compilerStats);
// long lineCount = this.main.compilerStats[0].lineCount;
// final int length = this.main.maxRepetition;
// long sum = 0;
// long parseSum = 0, resolveSum = 0, analyzeSum = 0, generateSum = 0;
// for (int i = 1, max = length - 1; i < max; i++) {
// CompilerStats stats = this.main.compilerStats[i];
// sum += stats.elapsedTime();
// parseSum += stats.parseTime;
// resolveSum += stats.resolveTime;
// analyzeSum += stats.analyzeTime;
// generateSum += stats.generateTime;
// }
// long time = sum / (length - 2);
// long parseTime = parseSum/(length - 2);
// long resolveTime = resolveSum/(length - 2);
// long analyzeTime = analyzeSum/(length - 2);
// long generateTime = generateSum/(length - 2);
// printlnOut(this.main.bind(
// "compile.averageTime", //$NON-NLS-1$
// new String[] {
// String.valueOf(lineCount),
// String.valueOf(time),
// String.valueOf(((int) (lineCount * 10000.0 / time)) / 10.0),
// }));
// if ((this.main.timing & Main.TIMING_DETAILED) != 0) {
// printlnOut(
// this.main.bind("compile.detailedTime", //$NON-NLS-1$
// new String[] {
// String.valueOf(parseTime),
// String.valueOf(((int) (parseTime * 1000.0 / time)) / 10.0),
// String.valueOf(resolveTime),
// String.valueOf(((int) (resolveTime * 1000.0 / time)) / 10.0),
// String.valueOf(analyzeTime),
// String.valueOf(((int) (analyzeTime * 1000.0 / time)) / 10.0),
// String.valueOf(generateTime),
// String.valueOf(((int) (generateTime * 1000.0 / time)) / 10.0),
// }));
// }
// }
// public void logClassFile(boolean generatePackagesStructure, String outputPath, String relativeFileName) {
// if ((this.tagBits & Logger.XML) != 0) {
// String fileName = null;
// if (generatePackagesStructure) {
// fileName = buildFileName(outputPath, relativeFileName);
// } else {
// char fileSeparatorChar = File.separatorChar;
// String fileSeparator = File.separator;
// // First we ensure that the outputPath exists
// outputPath = outputPath.replace('/', fileSeparatorChar);
// // To be able to pass the mkdirs() method we need to remove the extra file separator at the end of the outDir name
// int indexOfPackageSeparator = relativeFileName.lastIndexOf(fileSeparatorChar);
// if (indexOfPackageSeparator == -1) {
// if (outputPath.endsWith(fileSeparator)) {
// fileName = outputPath + relativeFileName;
// } else {
// fileName = outputPath + fileSeparator + relativeFileName;
// }
// } else {
// int length = relativeFileName.length();
// if (outputPath.endsWith(fileSeparator)) {
// fileName = outputPath + relativeFileName.substring(indexOfPackageSeparator + 1, length);
// } else {
// fileName = outputPath + fileSeparator + relativeFileName.substring(indexOfPackageSeparator + 1, length);
// }
// }
// }
// File f = new File(fileName);
// try {
// this.parameters.put(Logger.PATH, f.getCanonicalPath());
// printTag(Logger.CLASS_FILE, this.parameters, true, true);
// } catch (IOException e) {
// logNoClassFileCreated(outputPath, relativeFileName, e);
// }
// }
// }
// public void logClasspath(FileSystem.Classpath[] classpaths) {
// if (classpaths == null) return;
// if ((this.tagBits & Logger.XML) != 0) {
// final int length = classpaths.length;
// if (length != 0) {
// // generate xml output
// printTag(Logger.CLASSPATHS, null, true, false);
// for (int i = 0; i < length; i++) {
// String classpath = classpaths[i].getPath();
// this.parameters.put(Logger.PATH, classpath);
// File f = new File(classpath);
// String id = null;
// if (f.isFile()) {
// if (Util.isPotentialZipArchive(classpath)) {
// id = Logger.CLASSPATH_JAR;
// } else {
// id = Logger.CLASSPATH_FILE;
// }
// } else if (f.isDirectory()) {
// id = Logger.CLASSPATH_FOLDER;
// }
// if (id != null) {
// this.parameters.put(Logger.CLASSPATH_ID, id);
// printTag(Logger.CLASSPATH, this.parameters, true, true);
// }
// }
// endTag(Logger.CLASSPATHS);
// }
// }
//
// }
//
// public void logCommandLineArguments(String[] commandLineArguments) {
// if (commandLineArguments == null) return;
// if ((this.tagBits & Logger.XML) != 0) {
// final int length = commandLineArguments.length;
// if (length != 0) {
// // generate xml output
// printTag(Logger.COMMAND_LINE_ARGUMENTS, null, true, false);
// for (int i = 0; i < length; i++) {
// this.parameters.put(Logger.VALUE, commandLineArguments[i]);
// printTag(Logger.COMMAND_LINE_ARGUMENT, this.parameters, true, true);
// }
// endTag(Logger.COMMAND_LINE_ARGUMENTS);
// }
// }
// }
//
// /**
// * @param e the given exception to log
// */
// public void logException(Exception e) {
// StringWriter writer = new StringWriter();
// PrintWriter printWriter = new PrintWriter(writer);
// e.printStackTrace(printWriter);
// printWriter.flush();
// printWriter.close();
// final String stackTrace = writer.toString();
// if ((this.tagBits & Logger.XML) != 0) {
// LineNumberReader reader = new LineNumberReader(new StringReader(stackTrace));
// String line;
// int i = 0;
// StringBuffer buffer = new StringBuffer();
// String message = e.getMessage();
// if (message != null) {
// buffer.append(message).append(Util.LINE_SEPARATOR);
// }
// try {
// while ((line = reader.readLine()) != null && i < 4) {
// buffer.append(line).append(Util.LINE_SEPARATOR);
// i++;
// }
// reader.close();
// } catch (IOException e1) {
// // ignore
// }
// message = buffer.toString();
// this.parameters.put(Logger.MESSAGE, message);
// this.parameters.put(Logger.CLASS, e.getClass());
// printTag(Logger.EXCEPTION, this.parameters, true, true);
// }
// String message = e.getMessage();
// if (message == null) {
// this.printlnErr(stackTrace);
// } else {
// this.printlnErr(message);
// }
// }
//
// private void logExtraProblem(CategorizedProblem problem, int localErrorCount, int globalErrorCount) {
// char[] originatingFileName = problem.getOriginatingFileName();
// if (originatingFileName == null) {
// // simplified message output
// if (problem.isError()) {
// printErr(this.main.bind(
// "requestor.extraerror", //$NON-NLS-1$
// Integer.toString(globalErrorCount)));
// } else {
// // warning / mandatory warning / other
// printErr(this.main.bind(
// "requestor.extrawarning", //$NON-NLS-1$
// Integer.toString(globalErrorCount)));
// }
// printErr(" "); //$NON-NLS-1$
// this.printlnErr(problem.getMessage());
// } else {
// String fileName = new String(originatingFileName);
// if ((this.tagBits & Logger.EMACS) != 0) {
// String result = fileName
// + ":" //$NON-NLS-1$
// + problem.getSourceLineNumber()
// + ": " //$NON-NLS-1$
// + (problem.isError() ? this.main.bind("output.emacs.error") : this.main.bind("output.emacs.warning")) //$NON-NLS-1$ //$NON-NLS-2$
// + ": " //$NON-NLS-1$
// + problem.getMessage();
// this.printlnErr(result);
// final String errorReportSource = errorReportSource(problem, null, this.tagBits);
// this.printlnErr(errorReportSource);
// } else {
// if (localErrorCount == 0) {
// this.printlnErr("----------"); //$NON-NLS-1$
// }
// printErr(problem.isError() ?
// this.main.bind(
// "requestor.error", //$NON-NLS-1$
// Integer.toString(globalErrorCount),
// new String(fileName))
// : this.main.bind(
// "requestor.warning", //$NON-NLS-1$
// Integer.toString(globalErrorCount),
// new String(fileName)));
// final String errorReportSource = errorReportSource(problem, null, 0);
// this.printlnErr(errorReportSource);
// this.printlnErr(problem.getMessage());
// this.printlnErr("----------"); //$NON-NLS-1$
// }
// }
// }
//
// public void loggingExtraProblems(Main currentMain) {
// ArrayList problems = currentMain.extraProblems;
// final int count = problems.size();
// int localProblemCount = 0;
// if (count != 0) {
// int errors = 0;
// int warnings = 0;
// for (int i = 0; i < count; i++) {
// CategorizedProblem problem = (CategorizedProblem) problems.get(i);
// if (problem != null) {
// currentMain.globalProblemsCount++;
// logExtraProblem(problem, localProblemCount, currentMain.globalProblemsCount);
// localProblemCount++;
// if (problem.isError()) {
// errors++;
// currentMain.globalErrorsCount++;
// } else if (problem.isWarning()) {
// currentMain.globalWarningsCount++;
// warnings++;
// }
// }
// }
// if ((this.tagBits & Logger.XML) != 0) {
// if ((errors + warnings) != 0) {
// startLoggingExtraProblems(count);
// for (int i = 0; i < count; i++) {
// CategorizedProblem problem = (CategorizedProblem) problems.get(i);
// if (problem!= null) {
// if (problem.getID() != IProblem.Task) {
// logXmlExtraProblem(problem, localProblemCount, currentMain.globalProblemsCount);
// }
// }
// }
// endLoggingExtraProblems();
// }
// }
// }
// }
//
// public void logIncorrectVMVersionForAnnotationProcessing() {
// if ((this.tagBits & Logger.XML) != 0) {
// this.parameters.put(Logger.MESSAGE, this.main.bind("configure.incorrectVMVersionforAPT")); //$NON-NLS-1$
// printTag(Logger.ERROR_TAG, this.parameters, true, true);
// }
// this.printlnErr(this.main.bind("configure.incorrectVMVersionforAPT")); //$NON-NLS-1$
// }
//
// /**
// *
// */
// public void logNoClassFileCreated(String outputDir, String relativeFileName, IOException e) {
// if ((this.tagBits & Logger.XML) != 0) {
// this.parameters.put(Logger.MESSAGE, this.main.bind("output.noClassFileCreated", //$NON-NLS-1$
// new String[] {
// outputDir,
// relativeFileName,
// e.getMessage()
// }));
// printTag(Logger.ERROR_TAG, this.parameters, true, true);
// }
// this.printlnErr(this.main.bind("output.noClassFileCreated", //$NON-NLS-1$
// new String[] {
// outputDir,
// relativeFileName,
// e.getMessage()
// }));
// }
//
// /**
// * @param exportedClassFilesCounter
// */
// public void logNumberOfClassFilesGenerated(int exportedClassFilesCounter) {
// if ((this.tagBits & Logger.XML) != 0) {
// this.parameters.put(Logger.VALUE, new Integer(exportedClassFilesCounter));
// printTag(Logger.NUMBER_OF_CLASSFILES, this.parameters, true, true);
// }
// if (exportedClassFilesCounter == 1) {
// printlnOut(this.main.bind("compile.oneClassFileGenerated")); //$NON-NLS-1$
// } else {
// printlnOut(this.main.bind("compile.severalClassFilesGenerated", //$NON-NLS-1$
// String.valueOf(exportedClassFilesCounter)));
// }
// }
//
// /**
// * @param options the given compiler options
// */
// public void logOptions(Map options) {
// if ((this.tagBits & Logger.XML) != 0) {
// printTag(Logger.OPTIONS, null, true, false);
// final Set entriesSet = options.entrySet();
// Object[] entries = entriesSet.toArray();
// Arrays.sort(entries, new Comparator() {
// public int compare(Object o1, Object o2) {
// Map.Entry entry1 = (Map.Entry) o1;
// Map.Entry entry2 = (Map.Entry) o2;
// return ((String) entry1.getKey()).compareTo((String) entry2.getKey());
// }
// });
// for (int i = 0, max = entries.length; i < max; i++) {
// Map.Entry entry = (Map.Entry) entries[i];
// String key = (String) entry.getKey();
// this.parameters.put(Logger.KEY, key);
// this.parameters.put(Logger.VALUE, entry.getValue());
// printTag(Logger.OPTION, this.parameters, true, true);
// }
// endTag(Logger.OPTIONS);
// }
// }
//
// /**
// * @param error the given error
// */
// public void logPendingError(String error) {
// if ((this.tagBits & Logger.XML) != 0) {
// this.parameters.put(Logger.MESSAGE, error);
// printTag(Logger.ERROR_TAG, this.parameters, true, true);
// }
// this.printlnErr(error);
// }
//
// /**
// * @param message the given message
// */
// public void logWarning(String message) {
// if ((this.tagBits & Logger.XML) != 0) {
// this.parameters.put(Logger.MESSAGE, message);
// printTag(Logger.WARNING_TAG, this.parameters, true, true);
// }
// this.printlnOut(message);
// }
//
// private void logProblem(CategorizedProblem problem, int localErrorCount,
// int globalErrorCount, char[] unitSource) {
// if ((this.tagBits & Logger.EMACS) != 0) {
// String result = (new String(problem.getOriginatingFileName())
// + ":" //$NON-NLS-1$
// + problem.getSourceLineNumber()
// + ": " //$NON-NLS-1$
// + (problem.isError() ? this.main.bind("output.emacs.error") : this.main.bind("output.emacs.warning")) //$NON-NLS-1$ //$NON-NLS-2$
// + ": " //$NON-NLS-1$
// + problem.getMessage());
// this.printlnErr(result);
// final String errorReportSource = errorReportSource(problem, unitSource, this.tagBits);
// if (errorReportSource.length() != 0) this.printlnErr(errorReportSource);
// } else {
// if (localErrorCount == 0) {
// this.printlnErr("----------"); //$NON-NLS-1$
// }
// printErr(problem.isError() ?
// this.main.bind(
// "requestor.error", //$NON-NLS-1$
// Integer.toString(globalErrorCount),
// new String(problem.getOriginatingFileName()))
// : this.main.bind(
// "requestor.warning", //$NON-NLS-1$
// Integer.toString(globalErrorCount),
// new String(problem.getOriginatingFileName())));
// try {
// final String errorReportSource = errorReportSource(problem, unitSource, 0);
// this.printlnErr(errorReportSource);
// this.printlnErr(problem.getMessage());
// } catch (Exception e) {
// this.printlnErr(this.main.bind(
// "requestor.notRetrieveErrorMessage", problem.toString())); //$NON-NLS-1$
// }
// this.printlnErr("----------"); //$NON-NLS-1$
// }
// }
//
// public int logProblems(CategorizedProblem[] problems, char[] unitSource, Main currentMain) {
// final int count = problems.length;
// int localErrorCount = 0;
// int localProblemCount = 0;
// if (count != 0) {
// int errors = 0;
// int warnings = 0;
// int tasks = 0;
// for (int i = 0; i < count; i++) {
// CategorizedProblem problem = problems[i];
// if (problem != null) {
// currentMain.globalProblemsCount++;
// logProblem(problem, localProblemCount, currentMain.globalProblemsCount, unitSource);
// localProblemCount++;
// if (problem.isError()) {
// localErrorCount++;
// errors++;
// currentMain.globalErrorsCount++;
// } else if (problem.getID() == IProblem.Task) {
// currentMain.globalTasksCount++;
// tasks++;
// } else {
// currentMain.globalWarningsCount++;
// warnings++;
// }
// }
// }
// if ((this.tagBits & Logger.XML) != 0) {
// if ((errors + warnings) != 0) {
// startLoggingProblems(errors, warnings);
// for (int i = 0; i < count; i++) {
// CategorizedProblem problem = problems[i];
// if (problem!= null) {
// if (problem.getID() != IProblem.Task) {
// logXmlProblem(problem, unitSource);
// }
// }
// }
// endLoggingProblems();
// }
// if (tasks != 0) {
// startLoggingTasks(tasks);
// for (int i = 0; i < count; i++) {
// CategorizedProblem problem = problems[i];
// if (problem!= null) {
// if (problem.getID() == IProblem.Task) {
// logXmlTask(problem, unitSource);
// }
// }
// }
// endLoggingTasks();
// }
// }
// }
// return localErrorCount;
// }
//
// /**
// * @param globalProblemsCount
// * @param globalErrorsCount
// * @param globalWarningsCount
// */
// public void logProblemsSummary(int globalProblemsCount,
// int globalErrorsCount, int globalWarningsCount, int globalTasksCount) {
// if ((this.tagBits & Logger.XML) != 0) {
// // generate xml
// this.parameters.put(Logger.NUMBER_OF_PROBLEMS, new Integer(globalProblemsCount));
// this.parameters.put(Logger.NUMBER_OF_ERRORS, new Integer(globalErrorsCount));
// this.parameters.put(Logger.NUMBER_OF_WARNINGS, new Integer(globalWarningsCount));
// this.parameters.put(Logger.NUMBER_OF_TASKS, new Integer(globalTasksCount));
// printTag(Logger.PROBLEM_SUMMARY, this.parameters, true, true);
// }
// if (globalProblemsCount == 1) {
// String message = null;
// if (globalErrorsCount == 1) {
// message = this.main.bind("compile.oneError"); //$NON-NLS-1$
// } else {
// message = this.main.bind("compile.oneWarning"); //$NON-NLS-1$
// }
// printErr(this.main.bind("compile.oneProblem", message)); //$NON-NLS-1$
// } else {
// String errorMessage = null;
// String warningMessage = null;
// if (globalErrorsCount > 0) {
// if (globalErrorsCount == 1) {
// errorMessage = this.main.bind("compile.oneError"); //$NON-NLS-1$
// } else {
// errorMessage = this.main.bind("compile.severalErrors", String.valueOf(globalErrorsCount)); //$NON-NLS-1$
// }
// }
// int warningsNumber = globalWarningsCount + globalTasksCount;
// if (warningsNumber > 0) {
// if (warningsNumber == 1) {
// warningMessage = this.main.bind("compile.oneWarning"); //$NON-NLS-1$
// } else {
// warningMessage = this.main.bind("compile.severalWarnings", String.valueOf(warningsNumber)); //$NON-NLS-1$
// }
// }
// if (errorMessage == null || warningMessage == null) {
// if (errorMessage == null) {
// printErr(this.main.bind(
// "compile.severalProblemsErrorsOrWarnings", //$NON-NLS-1$
// String.valueOf(globalProblemsCount),
// warningMessage));
// } else {
// printErr(this.main.bind(
// "compile.severalProblemsErrorsOrWarnings", //$NON-NLS-1$
// String.valueOf(globalProblemsCount),
// errorMessage));
// }
// } else {
// printErr(this.main.bind(
// "compile.severalProblemsErrorsAndWarnings", //$NON-NLS-1$
// new String[] {
// String.valueOf(globalProblemsCount),
// errorMessage,
// warningMessage
// }));
// }
// }
// if ((this.tagBits & Logger.EMACS) != 0) {
// this.printlnErr();
// }
// }
//
// /**
// *
// */
// public void logProgress() {
// printOut('.');
// }
//
// /**
// * @param i
// * the current repetition number
// * @param repetitions
// * the given number of repetitions
// */
// public void logRepetition(int i, int repetitions) {
// printlnOut(this.main.bind("compile.repetition", //$NON-NLS-1$
// String.valueOf(i + 1), String.valueOf(repetitions)));
// }
// /**
// * @param compilerStats
// */
// public void logTiming(CompilerStats compilerStats) {
// long time = compilerStats.elapsedTime();
// long lineCount = compilerStats.lineCount;
// if ((this.tagBits & Logger.XML) != 0) {
// this.parameters.put(Logger.VALUE, new Long(time));
// printTag(Logger.TIME, this.parameters, true, true);
// this.parameters.put(Logger.VALUE, new Long(lineCount));
// printTag(Logger.NUMBER_OF_LINES, this.parameters, true, true);
// }
// if (lineCount != 0) {
// printlnOut(
// this.main.bind("compile.instantTime", //$NON-NLS-1$
// new String[] {
// String.valueOf(lineCount),
// String.valueOf(time),
// String.valueOf(((int) (lineCount * 10000.0 / time)) / 10.0),
// }));
// } else {
// printlnOut(
// this.main.bind("compile.totalTime", //$NON-NLS-1$
// new String[] {
// String.valueOf(time),
// }));
// }
// if ((this.main.timing & Main.TIMING_DETAILED) != 0) {
// printlnOut(
// this.main.bind("compile.detailedTime", //$NON-NLS-1$
// new String[] {
// String.valueOf(compilerStats.parseTime),
// String.valueOf(((int) (compilerStats.parseTime * 1000.0 / time)) / 10.0),
// String.valueOf(compilerStats.resolveTime),
// String.valueOf(((int) (compilerStats.resolveTime * 1000.0 / time)) / 10.0),
// String.valueOf(compilerStats.analyzeTime),
// String.valueOf(((int) (compilerStats.analyzeTime * 1000.0 / time)) / 10.0),
// String.valueOf(compilerStats.generateTime),
// String.valueOf(((int) (compilerStats.generateTime * 1000.0 / time)) / 10.0),
// }));
// }
// }
//
// /**
// * Print the usage of the compiler
// * @param usage
// */
// public void logUsage(String usage) {
// printlnOut(usage);
// }
//
// /**
// * Print the version of the compiler in the log and/or the out field
// */
// public void logVersion(final boolean printToOut) {
// if (this.log != null && (this.tagBits & Logger.XML) == 0) {
// final String version = this.main.bind("misc.version", //$NON-NLS-1$
// new String[] {
// this.main.bind("compiler.name"), //$NON-NLS-1$
// this.main.bind("compiler.version"), //$NON-NLS-1$
// this.main.bind("compiler.copyright") //$NON-NLS-1$
// }
// );
// this.log.println("# " + version); //$NON-NLS-1$
// if (printToOut) {
// this.out.println(version);
// this.out.flush();
// }
// } else if (printToOut) {
// final String version = this.main.bind("misc.version", //$NON-NLS-1$
// new String[] {
// this.main.bind("compiler.name"), //$NON-NLS-1$
// this.main.bind("compiler.version"), //$NON-NLS-1$
// this.main.bind("compiler.copyright") //$NON-NLS-1$
// }
// );
// this.out.println(version);
// this.out.flush();
// }
// }
//
// /**
// * Print the usage of wrong JDK
// */
// public void logWrongJDK() {
// if ((this.tagBits & Logger.XML) != 0) {
// this.parameters.put(Logger.MESSAGE, this.main.bind("configure.requiresJDK1.2orAbove")); //$NON-NLS-1$
// printTag(Logger.ERROR, this.parameters, true, true);
// }
// this.printlnErr(this.main.bind("configure.requiresJDK1.2orAbove")); //$NON-NLS-1$
// }
//
// private void logXmlExtraProblem(CategorizedProblem problem, int globalErrorCount, int localErrorCount) {
// final int sourceStart = problem.getSourceStart();
// final int sourceEnd = problem.getSourceEnd();
// boolean isError = problem.isError();
// this.parameters.put(Logger.PROBLEM_SEVERITY, isError ? Logger.ERROR : Logger.WARNING);
// this.parameters.put(Logger.PROBLEM_LINE, new Integer(problem.getSourceLineNumber()));
// this.parameters.put(Logger.PROBLEM_SOURCE_START, new Integer(sourceStart));
// this.parameters.put(Logger.PROBLEM_SOURCE_END, new Integer(sourceEnd));
// printTag(Logger.EXTRA_PROBLEM_TAG, this.parameters, true, false);
// this.parameters.put(Logger.VALUE, problem.getMessage());
// printTag(Logger.PROBLEM_MESSAGE, this.parameters, true, true);
// extractContext(problem, null);
// endTag(Logger.EXTRA_PROBLEM_TAG);
// }
// /**
// * @param problem
// * the given problem to log
// * @param unitSource
// * the given unit source
// */
// private void logXmlProblem(CategorizedProblem problem, char[] unitSource) {
// final int sourceStart = problem.getSourceStart();
// final int sourceEnd = problem.getSourceEnd();
// final int id = problem.getID();
// this.parameters.put(Logger.ID, getFieldName(id)); // ID as field name
// this.parameters.put(Logger.PROBLEM_ID, new Integer(id)); // ID as numeric value
// boolean isError = problem.isError();
// int severity = isError ? ProblemSeverities.Error : ProblemSeverities.Warning;
// this.parameters.put(Logger.PROBLEM_SEVERITY, isError ? Logger.ERROR : Logger.WARNING);
// this.parameters.put(Logger.PROBLEM_LINE, new Integer(problem.getSourceLineNumber()));
// this.parameters.put(Logger.PROBLEM_SOURCE_START, new Integer(sourceStart));
// this.parameters.put(Logger.PROBLEM_SOURCE_END, new Integer(sourceEnd));
// String problemOptionKey = getProblemOptionKey(id);
// if (problemOptionKey != null) {
// this.parameters.put(Logger.PROBLEM_OPTION_KEY, problemOptionKey);
// }
// int categoryID = ProblemReporter.getProblemCategory(severity, id);
// this.parameters.put(Logger.PROBLEM_CATEGORY_ID, new Integer(categoryID));
// printTag(Logger.PROBLEM_TAG, this.parameters, true, false);
// this.parameters.put(Logger.VALUE, problem.getMessage());
// printTag(Logger.PROBLEM_MESSAGE, this.parameters, true, true);
// extractContext(problem, unitSource);
// String[] arguments = problem.getArguments();
// final int length = arguments.length;
// if (length != 0) {
// printTag(Logger.PROBLEM_ARGUMENTS, null, true, false);
// for (int i = 0; i < length; i++) {
// this.parameters.put(Logger.PROBLEM_ARGUMENT_VALUE, arguments[i]);
// printTag(Logger.PROBLEM_ARGUMENT, this.parameters, true, true);
// }
// endTag(Logger.PROBLEM_ARGUMENTS);
// }
// endTag(Logger.PROBLEM_TAG);
// }
// /**
// * @param problem
// * the given problem to log
// * @param unitSource
// * the given unit source
// */
// private void logXmlTask(CategorizedProblem problem, char[] unitSource) {
// this.parameters.put(Logger.PROBLEM_LINE, new Integer(problem.getSourceLineNumber()));
// this.parameters.put(Logger.PROBLEM_SOURCE_START, new Integer(problem.getSourceStart()));
// this.parameters.put(Logger.PROBLEM_SOURCE_END, new Integer(problem.getSourceEnd()));
// String problemOptionKey = getProblemOptionKey(problem.getID());
// if (problemOptionKey != null) {
// this.parameters.put(Logger.PROBLEM_OPTION_KEY, problemOptionKey);
// }
// printTag(Logger.TASK, this.parameters, true, false);
// this.parameters.put(Logger.VALUE, problem.getMessage());
// printTag(Logger.PROBLEM_MESSAGE, this.parameters, true, true);
// extractContext(problem, unitSource);
// endTag(Logger.TASK);
// }
//
// private void printErr(String s) {
// this.err.print(s);
// if ((this.tagBits & Logger.XML) == 0 && this.log != null) {
// this.log.print(s);
// }
// }
//
// private void printlnErr() {
// this.err.println();
// if ((this.tagBits & Logger.XML) == 0 && this.log != null) {
// this.log.println();
// }
// }
//
// private void printlnErr(String s) {
// this.err.println(s);
// if ((this.tagBits & Logger.XML) == 0 && this.log != null) {
// this.log.println(s);
// }
// }
//
// private void printlnOut(String s) {
// this.out.println(s);
// if ((this.tagBits & Logger.XML) == 0 && this.log != null) {
// this.log.println(s);
// }
// }
//
// /**
// *
// */
// public void printNewLine() {
// this.out.println();
// }
//
// private void printOut(char c) {
// this.out.print(c);
// }
//
// public void printStats() {
// final boolean isTimed = (this.main.timing & TIMING_ENABLED) != 0;
// if ((this.tagBits & Logger.XML) != 0) {
// printTag(Logger.STATS, null, true, false);
// }
// if (isTimed) {
// CompilerStats compilerStats = this.main.batchCompiler.stats;
// compilerStats.startTime = this.main.startTime; // also include batch initialization times
// compilerStats.endTime = System.currentTimeMillis(); // also include batch output times
// logTiming(compilerStats);
// }
// if (this.main.globalProblemsCount > 0) {
// logProblemsSummary(this.main.globalProblemsCount, this.main.globalErrorsCount, this.main.globalWarningsCount,
// this.main.globalTasksCount);
// }
// if (this.main.exportedClassFilesCounter != 0
// && (this.main.showProgress || isTimed || this.main.verbose)) {
// logNumberOfClassFilesGenerated(this.main.exportedClassFilesCounter);
// }
// if ((this.tagBits & Logger.XML) != 0) {
// endTag(Logger.STATS);
// }
// }
//
// private void printTag(String name, HashMap params, boolean insertNewLine, boolean closeTag) {
// if (this.log != null) {
// ((GenericXMLWriter) this.log).printTag(name, this.parameters, true, insertNewLine, closeTag);
// }
// this.parameters.clear();
// }
//
// public void setEmacs() {
// this.tagBits |= Logger.EMACS;
// }
// public void setLog(String logFileName) {
// final Date date = new Date();
// final DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG, Locale.getDefault());
// try {
// int index = logFileName.lastIndexOf('.');
// if (index != -1) {
// if (logFileName.substring(index).toLowerCase().equals(".xml")) { //$NON-NLS-1$
// this.log = new GenericXMLWriter(new OutputStreamWriter(new FileOutputStream(logFileName, false), Util.UTF_8), Util.LINE_SEPARATOR,
// true);
// this.tagBits |= Logger.XML;
// // insert time stamp as comment
// this.log.println("<!-- " + dateFormat.format(date) + " -->");//$NON-NLS-1$//$NON-NLS-2$
// this.log.println(Logger.XML_DTD_DECLARATION);
// this.parameters.put(Logger.COMPILER_NAME, this.main.bind("compiler.name")); //$NON-NLS-1$
// this.parameters.put(Logger.COMPILER_VERSION, this.main.bind("compiler.version")); //$NON-NLS-1$
// this.parameters.put(Logger.COMPILER_COPYRIGHT, this.main.bind("compiler.copyright")); //$NON-NLS-1$
// printTag(Logger.COMPILER, this.parameters, true, false);
// } else {
// this.log = new PrintWriter(new FileOutputStream(logFileName, false));
// this.log.println("# " + dateFormat.format(date));//$NON-NLS-1$
// }
// } else {
// this.log = new PrintWriter(new FileOutputStream(logFileName, false));
// this.log.println("# " + dateFormat.format(date));//$NON-NLS-1$
// }
// } catch (FileNotFoundException e) {
// throw new IllegalArgumentException(this.main.bind("configure.cannotOpenLog", logFileName)); //$NON-NLS-1$
// } catch (UnsupportedEncodingException e) {
// throw new IllegalArgumentException(this.main.bind("configure.cannotOpenLogInvalidEncoding", logFileName)); //$NON-NLS-1$
// }
// }
// private void startLoggingExtraProblems(int count) {
// this.parameters.put(Logger.NUMBER_OF_PROBLEMS, new Integer(count));
// printTag(Logger.EXTRA_PROBLEMS, this.parameters, true, false);
// }
//
// /**
// * Used to start logging problems.
// * Only use in xml mode.
// */
// private void startLoggingProblems(int errors, int warnings) {
// this.parameters.put(Logger.NUMBER_OF_PROBLEMS, new Integer(errors + warnings));
// this.parameters.put(Logger.NUMBER_OF_ERRORS, new Integer(errors));
// this.parameters.put(Logger.NUMBER_OF_WARNINGS, new Integer(warnings));
// printTag(Logger.PROBLEMS, this.parameters, true, false);
// }
//
// public void startLoggingSource(CompilationResult compilationResult) {
// if ((this.tagBits & Logger.XML) != 0) {
// ICompilationUnit compilationUnit = compilationResult.compilationUnit;
// if (compilationUnit != null) {
// char[] fileName = compilationUnit.getFileName();
// File f = new File(new String(fileName));
// if (fileName != null) {
// this.parameters.put(Logger.PATH, f.getAbsolutePath());
// }
// char[][] packageName = compilationResult.packageName;
// if (packageName != null) {
// this.parameters.put(
// Logger.PACKAGE,
// new String(CharOperation.concatWith(packageName, File.separatorChar)));
// }
// CompilationUnit unit = (CompilationUnit) compilationUnit;
// String destinationPath = unit.destinationPath;
// if (destinationPath == null) {
// destinationPath = this.main.destinationPath;
// }
// if (destinationPath != null && destinationPath != NONE) {
// if (File.separatorChar == '/') {
// this.parameters.put(Logger.OUTPUT, destinationPath);
// } else {
// this.parameters.put(Logger.OUTPUT, destinationPath.replace('/', File.separatorChar));
// }
// }
// }
// printTag(Logger.SOURCE, this.parameters, true, false);
// }
// }
//
// public void startLoggingSources() {
// if ((this.tagBits & Logger.XML) != 0) {
// printTag(Logger.SOURCES, null, true, false);
// }
// }
//
// public void startLoggingTasks(int tasks) {
// if ((this.tagBits & Logger.XML) != 0) {
// this.parameters.put(Logger.NUMBER_OF_TASKS, new Integer(tasks));
// printTag(Logger.TASKS, this.parameters, true, false);
// }
// }
// }
// /**
// * Resource bundle factory to share bundles for the same locale
// */
// public static class ResourceBundleFactory {
// private static HashMap Cache = new HashMap();
// public static synchronized ResourceBundle getBundle(Locale locale) {
// ResourceBundle bundle = (ResourceBundle) Cache.get(locale);
// if (bundle == null) {
// bundle = ResourceBundle.getBundle(Main.bundleName, locale);
// Cache.put(locale, bundle);
// }
// return bundle;
// }
// }
// // javadoc analysis tuning
// boolean enableJavadocOn;
//
// boolean warnJavadocOn;
// boolean warnAllJavadocOn;
//
// public Compiler batchCompiler;
// /* Bundle containing messages */
// public ResourceBundle bundle;
// protected FileSystem.Classpath[] checkedClasspaths;
//
// public Locale compilerLocale;
// public CompilerOptions compilerOptions; // read-only
// public CompilationProgress progress;
// public String destinationPath;
// public String[] destinationPaths;
// // destination path for compilation units that get no more specific
// // one (through directory arguments or various classpath options);
// // coding is:
// // == null: unspecified, write class files close to their respective
// // source files;
// // == Main.NONE: absorbent element, do not output class files;
// // else: use as the path of the directory into which class files must
// // be written.
// private boolean didSpecifySource;
// private boolean didSpecifyTarget;
// public String[] encodings;
// public int exportedClassFilesCounter;
// public String[] filenames;
// public String[] classNames;
// // overrides of destinationPath on a directory argument basis
// public int globalErrorsCount;
// public int globalProblemsCount;
// public int globalTasksCount;
// public int globalWarningsCount;
//
// private File javaHomeCache;
//
// private boolean javaHomeChecked = false;
// public long lineCount0;
//
// public String log;
//
// public Logger logger;
// public int maxProblems;
// public Map options;
// protected PrintWriter out;
// public boolean proceed = true;
// public boolean proceedOnError = false;
// public boolean produceRefInfo = false;
// public int currentRepetition, maxRepetition;
// public boolean showProgress = false;
// public long startTime;
// public ArrayList pendingErrors;
// public boolean systemExitWhenFinished = true;
//
// public static final int TIMING_DISABLED = 0;
// public static final int TIMING_ENABLED = 1;
// public static final int TIMING_DETAILED = 2;
//
// public int timing = TIMING_DISABLED;
// public CompilerStats[] compilerStats;
// public boolean verbose = false;
// private String[] expandedCommandLine;
//
// private PrintWriter err;
//
// protected ArrayList extraProblems;
// public final static String bundleName = "org.eclipse.jdt.internal.compiler.batch.messages"; //$NON-NLS-1$
// // two uses: recognize 'none' in options; code the singleton none
// // for the '-d none' option (wherever it may be found)
// public static final int DEFAULT_SIZE_CLASSPATH = 4;
//
public static final String NONE = "none"; //$NON-NLS-1$
//
///**
// * @deprecated - use {@link BatchCompiler#compile(String, PrintWriter, PrintWriter, CompilationProgress)} instead
// * e.g. BatchCompiler.compile(commandLine, new PrintWriter(System.out), new PrintWriter(System.err), null);
// */
//public static boolean compile(String commandLine) {
// return new Main(new PrintWriter(System.out), new PrintWriter(System.err), false /* systemExit */, null /* options */,
// null /* progress */).compile(tokenize(commandLine));
//}
//
///**
// * @deprecated - use {@link BatchCompiler#compile(String, PrintWriter, PrintWriter, CompilationProgress)} instead
// * e.g. BatchCompiler.compile(commandLine, outWriter, errWriter, null);
// */
//public static boolean compile(String commandLine, PrintWriter outWriter, PrintWriter errWriter) {
// return new Main(outWriter, errWriter, false /* systemExit */, null /* options */, null /* progress */).compile(tokenize(commandLine));
//}
//
///*
// * Internal API for public API BatchCompiler#compile(String[], PrintWriter, PrintWriter, CompilationProgress)
// */
//public static boolean compile(String[] commandLineArguments, PrintWriter outWriter, PrintWriter errWriter, CompilationProgress progress) {
// return new Main(outWriter, errWriter, false /* systemExit */, null /* options */, progress).compile(commandLineArguments);
//}
//public static File[][] getLibrariesFiles(File[] files) {
// FilenameFilter filter = new FilenameFilter() {
// public boolean accept(File dir, String name) {
// return Util.isPotentialZipArchive(name);
// }
// };
// final int filesLength = files.length;
// File[][] result = new File[filesLength][];
// for (int i = 0; i < filesLength; i++) {
// File currentFile = files[i];
// if (currentFile.exists() && currentFile.isDirectory()) {
// result[i] = currentFile.listFiles(filter);
// }
// }
// return result;
//}
//
//public static void main(String[] argv) {
// new Main(new PrintWriter(System.out), new PrintWriter(System.err), true/*systemExit*/, null/*options*/, null/*progress*/).compile(argv);
//}
//
//public static String[] tokenize(String commandLine) {
//
// int count = 0;
// String[] arguments = new String[10];
// StringTokenizer tokenizer = new StringTokenizer(commandLine, " \"", true); //$NON-NLS-1$
// String token = Util.EMPTY_STRING;
// boolean insideQuotes = false;
// boolean startNewToken = true;
//
// // take care to quotes on the command line
// // 'xxx "aaa bbb";ccc yyy' ---> {"xxx", "aaa bbb;ccc", "yyy" }
// // 'xxx "aaa bbb;ccc" yyy' ---> {"xxx", "aaa bbb;ccc", "yyy" }
// // 'xxx "aaa bbb";"ccc" yyy' ---> {"xxx", "aaa bbb;ccc", "yyy" }
// // 'xxx/"aaa bbb";"ccc" yyy' ---> {"xxx/aaa bbb;ccc", "yyy" }
// while (tokenizer.hasMoreTokens()) {
// token = tokenizer.nextToken();
//
// if (token.equals(" ")) { //$NON-NLS-1$
// if (insideQuotes) {
// arguments[count - 1] += token;
// startNewToken = false;
// } else {
// startNewToken = true;
// }
// } else if (token.equals("\"")) { //$NON-NLS-1$
// if (!insideQuotes && startNewToken) {
// if (count == arguments.length)
// System.arraycopy(arguments, 0, (arguments = new String[count * 2]), 0, count);
// arguments[count++] = Util.EMPTY_STRING;
// }
// insideQuotes = !insideQuotes;
// startNewToken = false;
// } else {
// if (insideQuotes) {
// arguments[count - 1] += token;
// } else {
// if (token.length() > 0 && !startNewToken) {
// arguments[count - 1] += token;
// } else {
// if (count == arguments.length)
// System.arraycopy(arguments, 0, (arguments = new String[count * 2]), 0, count);
// String trimmedToken = token.trim();
// if (trimmedToken.length() != 0) {
// arguments[count++] = trimmedToken;
// }
// }
// }
// startNewToken = false;
// }
// }
// System.arraycopy(arguments, 0, arguments = new String[count], 0, count);
// return arguments;
//}
//
///**
// * @deprecated - use {@link #Main(PrintWriter, PrintWriter, boolean, Map, CompilationProgress)} instead
// * e.g. Main(outWriter, errWriter, systemExitWhenFinished, null, null)
// */
//public Main(PrintWriter outWriter, PrintWriter errWriter, boolean systemExitWhenFinished) {
// this(outWriter, errWriter, systemExitWhenFinished, null /* options */, null /* progress */);
//}
//
///**
// * @deprecated - use {@link #Main(PrintWriter, PrintWriter, boolean, Map, CompilationProgress)} instead
// * e.g. Main(outWriter, errWriter, systemExitWhenFinished, customDefaultOptions, null)
// */
//public Main(PrintWriter outWriter, PrintWriter errWriter, boolean systemExitWhenFinished, Map customDefaultOptions) {
// this(outWriter, errWriter, systemExitWhenFinished, customDefaultOptions, null /* progress */);
//}
//
//public Main(PrintWriter outWriter, PrintWriter errWriter, boolean systemExitWhenFinished, Map customDefaultOptions,
// CompilationProgress compilationProgress) {
// this.initialize(outWriter, errWriter, systemExitWhenFinished, customDefaultOptions, compilationProgress);
// this.relocalize();
//}
//
//public void addExtraProblems(CategorizedProblem problem) {
// if (this.extraProblems == null) {
// this.extraProblems = new ArrayList();
// }
// this.extraProblems.add(problem);
//}
//protected void addNewEntry(ArrayList paths, String currentClasspathName,
// ArrayList currentRuleSpecs, String customEncoding,
// String destPath, boolean isSourceOnly,
// boolean rejectDestinationPathOnJars) {
//
// int rulesSpecsSize = currentRuleSpecs.size();
// AccessRuleSet accessRuleSet = null;
// if (rulesSpecsSize != 0) {
// AccessRule[] accessRules = new AccessRule[currentRuleSpecs.size()];
// boolean rulesOK = true;
// Iterator i = currentRuleSpecs.iterator();
// int j = 0;
// while (i.hasNext()) {
// String ruleSpec = (String) i.next();
// char key = ruleSpec.charAt(0);
// String pattern = ruleSpec.substring(1);
// if (pattern.length() > 0) {
// switch (key) {
// case '+':
// accessRules[j++] = new AccessRule(pattern
// .toCharArray(), 0);
// break;
// case '~':
// accessRules[j++] = new AccessRule(pattern
// .toCharArray(),
// IProblem.DiscouragedReference);
// break;
// case '-':
// accessRules[j++] = new AccessRule(pattern
// .toCharArray(),
// IProblem.ForbiddenReference);
// break;
// case '?':
// accessRules[j++] = new AccessRule(pattern
// .toCharArray(),
// IProblem.ForbiddenReference, true/*keep looking for accessible type*/);
// break;
// default:
// rulesOK = false;
// }
// } else {
// rulesOK = false;
// }
// }
// if (rulesOK) {
// accessRuleSet = new AccessRuleSet(accessRules, AccessRestriction.COMMAND_LINE, currentClasspathName);
// } else {
// if (currentClasspathName.length() != 0) {
// // we go on anyway
// addPendingErrors(this.bind("configure.incorrectClasspath", currentClasspathName));//$NON-NLS-1$
// }
// return;
// }
// }
// if (NONE.equals(destPath)) {
// destPath = NONE; // keep == comparison valid
// }
// if (rejectDestinationPathOnJars && destPath != null &&
// Util.isPotentialZipArchive(currentClasspathName)) {
// throw new IllegalArgumentException(
// this.bind("configure.unexpectedDestinationPathEntryFile", //$NON-NLS-1$
// currentClasspathName));
// }
// FileSystem.Classpath currentClasspath = FileSystem.getClasspath(
// currentClasspathName,
// customEncoding,
// isSourceOnly,
// accessRuleSet,
// destPath);
// if (currentClasspath != null) {
// paths.add(currentClasspath);
// } else if (currentClasspathName.length() != 0) {
// // we go on anyway
// addPendingErrors(this.bind("configure.incorrectClasspath", currentClasspathName));//$NON-NLS-1$
// }
//}
//void addPendingErrors(String message) {
// if (this.pendingErrors == null) {
// this.pendingErrors = new ArrayList();
// }
// this.pendingErrors.add(message);
//}
///*
// * Lookup the message with the given ID in this catalog
// */
//public String bind(String id) {
// return bind(id, (String[]) null);
//}
///*
// * Lookup the message with the given ID in this catalog and bind its
// * substitution locations with the given string.
// */
//public String bind(String id, String binding) {
// return bind(id, new String[] { binding });
//}
//
///*
// * Lookup the message with the given ID in this catalog and bind its
// * substitution locations with the given strings.
// */
//public String bind(String id, String binding1, String binding2) {
// return bind(id, new String[] { binding1, binding2 });
//}
//
///*
// * Lookup the message with the given ID in this catalog and bind its
// * substitution locations with the given string values.
// */
//public String bind(String id, String[] arguments) {
// if (id == null)
// return "No message available"; //$NON-NLS-1$
// String message = null;
// try {
// message = this.bundle.getString(id);
// } catch (MissingResourceException e) {
// // If we got an exception looking for the message, fail gracefully by just returning
// // the id we were looking for. In most cases this is semi-informative so is not too bad.
// return "Missing message: " + id + " in: " + Main.bundleName; //$NON-NLS-2$ //$NON-NLS-1$
// }
// return MessageFormat.format(message, arguments);
//}
///**
// * Return true if and only if the running VM supports the given minimal version.
// *
// * <p>This only checks the major version, since the minor version is always 0 (at least for the useful cases).</p>
// * <p>The given minimalSupportedVersion is one of the constants:</p>
// * <ul>
// * <li><code>org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK1_1</code></li>
// * <li><code>org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK1_2</code></li>
// * <li><code>org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK1_3</code></li>
// * <li><code>org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK1_4</code></li>
// * <li><code>org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK1_5</code></li>
// * <li><code>org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK1_6</code></li>
// * <li><code>org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK1_7</code></li>
// * </ul>
// * @param minimalSupportedVersion the given minimal version
// * @return true if and only if the running VM supports the given minimal version, false otherwise
// */
//private boolean checkVMVersion(long minimalSupportedVersion) {
// // the format of this property is supposed to be xx.x where x are digits.
// String classFileVersion = System.getProperty("java.class.version"); //$NON-NLS-1$
// if (classFileVersion == null) {
// // by default we don't support a class file version we cannot recognize
// return false;
// }
// int index = classFileVersion.indexOf('.');
// if (index == -1) {
// // by default we don't support a class file version we cannot recognize
// return false;
// }
// int majorVersion;
// try {
// majorVersion = Integer.parseInt(classFileVersion.substring(0, index));
// } catch (NumberFormatException e) {
// // by default we don't support a class file version we cannot recognize
// return false;
// }
// switch(majorVersion) {
// case 45 : // 1.0 and 1.1
// return ClassFileConstants.JDK1_1 >= minimalSupportedVersion;
// case 46 : // 1.2
// return ClassFileConstants.JDK1_2 >= minimalSupportedVersion;
// case 47 : // 1.3
// return ClassFileConstants.JDK1_3 >= minimalSupportedVersion;
// case 48 : // 1.4
// return ClassFileConstants.JDK1_4 >= minimalSupportedVersion;
// case 49 : // 1.5
// return ClassFileConstants.JDK1_5 >= minimalSupportedVersion;
// case 50 : // 1.6
// return ClassFileConstants.JDK1_6 >= minimalSupportedVersion;
// case 51 : // 1.7
// return ClassFileConstants.JDK1_7 >= minimalSupportedVersion;
// }
// // unknown version
// return false;
//}
///*
// * Low-level API performing the actual compilation
// */
//public boolean compile(String[] argv) {
//
// // decode command line arguments
// try {
// configure(argv);
// if (this.progress != null)
// this.progress.begin(this.filenames == null ? 0 : this.filenames.length * this.maxRepetition);
// if (this.proceed) {
//// if (this.verbose) {
//// System.out.println(new CompilerOptions(this.options));
//// }
// if (this.showProgress) this.logger.compiling();
// for (this.currentRepetition = 0; this.currentRepetition < this.maxRepetition; this.currentRepetition++) {
// this.globalProblemsCount = 0;
// this.globalErrorsCount = 0;
// this.globalWarningsCount = 0;
// this.globalTasksCount = 0;
// this.exportedClassFilesCounter = 0;
//
// if (this.maxRepetition > 1) {
// this.logger.flush();
// this.logger.logRepetition(this.currentRepetition, this.maxRepetition);
// }
// // request compilation
// performCompilation();
// }
// if (this.compilerStats != null) {
// this.logger.logAverage();
// }
// if (this.showProgress) this.logger.printNewLine();
// }
// if (this.systemExitWhenFinished) {
// this.logger.flush();
// this.logger.close();
// System.exit(this.globalErrorsCount > 0 ? -1 : 0);
// }
// } catch (IllegalArgumentException e) {
// this.logger.logException(e);
// if (this.systemExitWhenFinished) {
// this.logger.flush();
// this.logger.close();
// System.exit(-1);
// }
// return false;
// } catch (RuntimeException e) { // internal compiler failure
// this.logger.logException(e);
// if (this.systemExitWhenFinished) {
// this.logger.flush();
// this.logger.close();
// System.exit(-1);
// }
// return false;
// } finally {
// this.logger.flush();
// this.logger.close();
// if (this.progress != null)
// this.progress.done();
// }
// if (this.globalErrorsCount == 0 && (this.progress == null || !this.progress.isCanceled()))
// return true;
// return false;
//}
//
///*
//Decode the command line arguments
// */
//public void configure(String[] argv) {
//
// if ((argv == null) || (argv.length == 0)) {
// printUsage();
// return;
// }
//
// final int INSIDE_CLASSPATH_start = 1;
// final int INSIDE_DESTINATION_PATH = 3;
// final int INSIDE_TARGET = 4;
// final int INSIDE_LOG = 5;
// final int INSIDE_REPETITION = 6;
// final int INSIDE_SOURCE = 7;
// final int INSIDE_DEFAULT_ENCODING = 8;
// final int INSIDE_BOOTCLASSPATH_start = 9;
// final int INSIDE_MAX_PROBLEMS = 11;
// final int INSIDE_EXT_DIRS = 12;
// final int INSIDE_SOURCE_PATH_start = 13;
// final int INSIDE_ENDORSED_DIRS = 15;
// final int INSIDE_SOURCE_DIRECTORY_DESTINATION_PATH = 16;
// final int INSIDE_PROCESSOR_PATH_start = 17;
// final int INSIDE_PROCESSOR_start = 18;
// final int INSIDE_S_start = 19;
// final int INSIDE_CLASS_NAMES = 20;
// final int INSIDE_WARNINGS_PROPERTIES = 21;
//
// final int DEFAULT = 0;
// ArrayList bootclasspaths = new ArrayList(DEFAULT_SIZE_CLASSPATH);
// String sourcepathClasspathArg = null;
// ArrayList sourcepathClasspaths = new ArrayList(DEFAULT_SIZE_CLASSPATH);
// ArrayList classpaths = new ArrayList(DEFAULT_SIZE_CLASSPATH);
// ArrayList extdirsClasspaths = null;
// ArrayList endorsedDirClasspaths = null;
//
// int index = -1;
// int filesCount = 0;
// int classCount = 0;
// int argCount = argv.length;
// int mode = DEFAULT;
// this.maxRepetition = 0;
// boolean printUsageRequired = false;
// String usageSection = null;
// boolean printVersionRequired = false;
//
// boolean didSpecifyDeprecation = false;
// boolean didSpecifyCompliance = false;
// boolean didSpecifyDisabledAnnotationProcessing = false;
//
// String customEncoding = null;
// String customDestinationPath = null;
// String currentSourceDirectory = null;
// String currentArg = Util.EMPTY_STRING;
//
// Set specifiedEncodings = null;
//
// // expand the command line if necessary
// boolean needExpansion = false;
// loop: for (int i = 0; i < argCount; i++) {
// if (argv[i].startsWith("@")) { //$NON-NLS-1$
// needExpansion = true;
// break loop;
// }
// }
//
// String[] newCommandLineArgs = null;
// if (needExpansion) {
// newCommandLineArgs = new String[argCount];
// index = 0;
// for (int i = 0; i < argCount; i++) {
// String[] newArgs = null;
// String arg = argv[i].trim();
// if (arg.startsWith("@")) { //$NON-NLS-1$
// try {
// LineNumberReader reader = new LineNumberReader(new StringReader(new String(Util.getFileCharContent(new File(arg.substring(1)),
// null))));
// StringBuffer buffer = new StringBuffer();
// String line;
// while((line = reader.readLine()) != null) {
// line = line.trim();
// if (!line.startsWith("#")) { //$NON-NLS-1$
// buffer.append(line).append(" "); //$NON-NLS-1$
// }
// }
// newArgs = tokenize(buffer.toString());
// } catch(IOException e) {
// throw new IllegalArgumentException(
// this.bind("configure.invalidexpansionargumentname", arg)); //$NON-NLS-1$
// }
// }
// if (newArgs != null) {
// int newCommandLineArgsLength = newCommandLineArgs.length;
// int newArgsLength = newArgs.length;
// System.arraycopy(newCommandLineArgs, 0, (newCommandLineArgs = new String[newCommandLineArgsLength + newArgsLength - 1]), 0, index);
// System.arraycopy(newArgs, 0, newCommandLineArgs, index, newArgsLength);
// index += newArgsLength;
// } else {
// newCommandLineArgs[index++] = arg;
// }
// }
// index = -1;
// } else {
// newCommandLineArgs = argv;
// for (int i = 0; i < argCount; i++) {
// newCommandLineArgs[i] = newCommandLineArgs[i].trim();
// }
// }
// argCount = newCommandLineArgs.length;
// this.expandedCommandLine = newCommandLineArgs;
// while (++index < argCount) {
//
// if (customEncoding != null) {
// throw new IllegalArgumentException(
// this.bind("configure.unexpectedCustomEncoding", currentArg, customEncoding)); //$NON-NLS-1$
// }
//
// currentArg = newCommandLineArgs[index];
//
// switch(mode) {
// case DEFAULT :
// if (currentArg.startsWith("[")) { //$NON-NLS-1$
// throw new IllegalArgumentException(
// this.bind("configure.unexpectedBracket", //$NON-NLS-1$
// currentArg));
// }
//
// if (currentArg.endsWith("]")) { //$NON-NLS-1$
// // look for encoding specification
// int encodingStart = currentArg.indexOf('[') + 1;
// if (encodingStart <= 1) {
// throw new IllegalArgumentException(
// this.bind("configure.unexpectedBracket", currentArg)); //$NON-NLS-1$
// }
// int encodingEnd = currentArg.length() - 1;
// if (encodingStart >= 1) {
// if (encodingStart < encodingEnd) {
// customEncoding = currentArg.substring(encodingStart, encodingEnd);
// try { // ensure encoding is supported
// new InputStreamReader(new ByteArrayInputStream(new byte[0]), customEncoding);
// } catch (UnsupportedEncodingException e) {
// throw new IllegalArgumentException(
// this.bind("configure.unsupportedEncoding", customEncoding)); //$NON-NLS-1$
// }
// }
// currentArg = currentArg.substring(0, encodingStart - 1);
// }
// }
//
// if (currentArg.endsWith(SuffixConstants.SUFFIX_STRING_java)) {
// if (this.filenames == null) {
// this.filenames = new String[argCount - index];
// this.encodings = new String[argCount - index];
// this.destinationPaths = new String[argCount - index];
// } else if (filesCount == this.filenames.length) {
// int length = this.filenames.length;
// System.arraycopy(
// this.filenames,
// 0,
// (this.filenames = new String[length + argCount - index]),
// 0,
// length);
// System.arraycopy(
// this.encodings,
// 0,
// (this.encodings = new String[length + argCount - index]),
// 0,
// length);
// System.arraycopy(
// this.destinationPaths,
// 0,
// (this.destinationPaths = new String[length + argCount - index]),
// 0,
// length);
// }
// this.filenames[filesCount] = currentArg;
// this.encodings[filesCount++] = customEncoding;
// // destination path cannot be specified upon an individual file
// customEncoding = null;
// mode = DEFAULT;
// continue;
// }
// if (currentArg.equals("-log")) { //$NON-NLS-1$
// if (this.log != null)
// throw new IllegalArgumentException(
// this.bind("configure.duplicateLog", currentArg)); //$NON-NLS-1$
// mode = INSIDE_LOG;
// continue;
// }
// if (currentArg.equals("-repeat")) { //$NON-NLS-1$
// if (this.maxRepetition > 0)
// throw new IllegalArgumentException(
// this.bind("configure.duplicateRepeat", currentArg)); //$NON-NLS-1$
// mode = INSIDE_REPETITION;
// continue;
// }
// if (currentArg.equals("-maxProblems")) { //$NON-NLS-1$
// if (this.maxProblems > 0)
// throw new IllegalArgumentException(
// this.bind("configure.duplicateMaxProblems", currentArg)); //$NON-NLS-1$
// mode = INSIDE_MAX_PROBLEMS;
// continue;
// }
// if (currentArg.equals("-source")) { //$NON-NLS-1$
// mode = INSIDE_SOURCE;
// continue;
// }
// if (currentArg.equals("-encoding")) { //$NON-NLS-1$
// mode = INSIDE_DEFAULT_ENCODING;
// continue;
// }
// if (currentArg.equals("-1.3")) { //$NON-NLS-1$
// if (didSpecifyCompliance) {
// throw new IllegalArgumentException(
// this.bind("configure.duplicateCompliance", currentArg));//$NON-NLS-1$
// }
// didSpecifyCompliance = true;
// this.options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_3);
// mode = DEFAULT;
// continue;
// }
// if (currentArg.equals("-1.4")) { //$NON-NLS-1$
// if (didSpecifyCompliance) {
// throw new IllegalArgumentException(
// this.bind("configure.duplicateCompliance", currentArg)); //$NON-NLS-1$
// }
// didSpecifyCompliance = true;
// this.options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_4);
// mode = DEFAULT;
// continue;
// }
// if (currentArg.equals("-1.5") || currentArg.equals("-5") || currentArg.equals("-5.0")) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
// if (didSpecifyCompliance) {
// throw new IllegalArgumentException(
// this.bind("configure.duplicateCompliance", currentArg)); //$NON-NLS-1$
// }
// didSpecifyCompliance = true;
// this.options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5);
// mode = DEFAULT;
// continue;
// }
// if (currentArg.equals("-1.6") || currentArg.equals("-6") || currentArg.equals("-6.0")) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
// if (didSpecifyCompliance) {
// throw new IllegalArgumentException(
// this.bind("configure.duplicateCompliance", currentArg)); //$NON-NLS-1$
// }
// didSpecifyCompliance = true;
// this.options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_6);
// mode = DEFAULT;
// continue;
// }
// if (currentArg.equals("-1.7") || currentArg.equals("-7") || currentArg.equals("-7.0")) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
// if (didSpecifyCompliance) {
// throw new IllegalArgumentException(
// this.bind("configure.duplicateCompliance", currentArg)); //$NON-NLS-1$
// }
// didSpecifyCompliance = true;
// this.options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_7);
// mode = DEFAULT;
// continue;
// }
// if (currentArg.equals("-d")) { //$NON-NLS-1$
// if (this.destinationPath != null) {
// StringBuffer errorMessage = new StringBuffer();
// errorMessage.append(currentArg);
// if ((index + 1) < argCount) {
// errorMessage.append(' ');
// errorMessage.append(newCommandLineArgs[index + 1]);
// }
// throw new IllegalArgumentException(
// this.bind("configure.duplicateOutputPath", errorMessage.toString())); //$NON-NLS-1$
// }
// mode = INSIDE_DESTINATION_PATH;
// continue;
// }
// if (currentArg.equals("-classpath") //$NON-NLS-1$
// || currentArg.equals("-cp")) { //$NON-NLS-1$
// mode = INSIDE_CLASSPATH_start;
// continue;
// }
// if (currentArg.equals("-bootclasspath")) {//$NON-NLS-1$
// if (bootclasspaths.size() > 0) {
// StringBuffer errorMessage = new StringBuffer();
// errorMessage.append(currentArg);
// if ((index + 1) < argCount) {
// errorMessage.append(' ');
// errorMessage.append(newCommandLineArgs[index + 1]);
// }
// throw new IllegalArgumentException(
// this.bind("configure.duplicateBootClasspath", errorMessage.toString())); //$NON-NLS-1$
// }
// mode = INSIDE_BOOTCLASSPATH_start;
// continue;
// }
// if (currentArg.equals("-sourcepath")) {//$NON-NLS-1$
// if (sourcepathClasspathArg != null) {
// StringBuffer errorMessage = new StringBuffer();
// errorMessage.append(currentArg);
// if ((index + 1) < argCount) {
// errorMessage.append(' ');
// errorMessage.append(newCommandLineArgs[index + 1]);
// }
// throw new IllegalArgumentException(
// this.bind("configure.duplicateSourcepath", errorMessage.toString())); //$NON-NLS-1$
// }
// mode = INSIDE_SOURCE_PATH_start;
// continue;
// }
// if (currentArg.equals("-extdirs")) {//$NON-NLS-1$
// if (extdirsClasspaths != null) {
// StringBuffer errorMessage = new StringBuffer();
// errorMessage.append(currentArg);
// if ((index + 1) < argCount) {
// errorMessage.append(' ');
// errorMessage.append(newCommandLineArgs[index + 1]);
// }
// throw new IllegalArgumentException(
// this.bind("configure.duplicateExtDirs", errorMessage.toString())); //$NON-NLS-1$
// }
// mode = INSIDE_EXT_DIRS;
// continue;
// }
// if (currentArg.equals("-endorseddirs")) { //$NON-NLS-1$
// if (endorsedDirClasspaths != null) {
// StringBuffer errorMessage = new StringBuffer();
// errorMessage.append(currentArg);
// if ((index + 1) < argCount) {
// errorMessage.append(' ');
// errorMessage.append(newCommandLineArgs[index + 1]);
// }
// throw new IllegalArgumentException(
// this.bind("configure.duplicateEndorsedDirs", errorMessage.toString())); //$NON-NLS-1$
// }
// mode = INSIDE_ENDORSED_DIRS;
// continue;
// }
// if (currentArg.equals("-progress")) { //$NON-NLS-1$
// mode = DEFAULT;
// this.showProgress = true;
// continue;
// }
// if (currentArg.startsWith("-proceedOnError")) { //$NON-NLS-1$
// mode = DEFAULT;
// int length = currentArg.length();
// if (length > 15) {
// if (currentArg.equals("-proceedOnError:Fatal")) { //$NON-NLS-1$
// this.options.put(CompilerOptions.OPTION_FatalOptionalError, CompilerOptions.ENABLED);
// } else {
// throw new IllegalArgumentException(
// this.bind("configure.invalidWarningConfiguration", currentArg)); //$NON-NLS-1$
// }
// } else {
// this.options.put(CompilerOptions.OPTION_FatalOptionalError, CompilerOptions.DISABLED);
// }
// this.proceedOnError = true;
// continue;
// }
// if (currentArg.equals("-time")) { //$NON-NLS-1$
// mode = DEFAULT;
// this.timing = TIMING_ENABLED;
// continue;
// }
// if (currentArg.equals("-time:detail")) { //$NON-NLS-1$
// mode = DEFAULT;
// this.timing = TIMING_ENABLED|TIMING_DETAILED;
// continue;
// }
// if (currentArg.equals("-version") //$NON-NLS-1$
// || currentArg.equals("-v")) { //$NON-NLS-1$
// this.logger.logVersion(true);
// this.proceed = false;
// return;
// }
// if (currentArg.equals("-showversion")) { //$NON-NLS-1$
// printVersionRequired = true;
// mode = DEFAULT;
// continue;
// }
// if ("-deprecation".equals(currentArg)) { //$NON-NLS-1$
// didSpecifyDeprecation = true;
// this.options.put(CompilerOptions.OPTION_ReportDeprecation, CompilerOptions.WARNING);
// mode = DEFAULT;
// continue;
// }
// if (currentArg.equals("-help") || currentArg.equals("-?")) { //$NON-NLS-1$ //$NON-NLS-2$
// printUsageRequired = true;
// mode = DEFAULT;
// continue;
// }
// if (currentArg.equals("-help:warn") || //$NON-NLS-1$
// currentArg.equals("-?:warn")) { //$NON-NLS-1$
// printUsageRequired = true;
// usageSection = "misc.usage.warn"; //$NON-NLS-1$
// continue;
// }
// if (currentArg.equals("-noExit")) { //$NON-NLS-1$
// this.systemExitWhenFinished = false;
// mode = DEFAULT;
// continue;
// }
// if (currentArg.equals("-verbose")) { //$NON-NLS-1$
// this.verbose = true;
// mode = DEFAULT;
// continue;
// }
// if (currentArg.equals("-referenceInfo")) { //$NON-NLS-1$
// this.produceRefInfo = true;
// mode = DEFAULT;
// continue;
// }
// if (currentArg.equals("-inlineJSR")) { //$NON-NLS-1$
// mode = DEFAULT;
// this.options.put(
// CompilerOptions.OPTION_InlineJsr,
// CompilerOptions.ENABLED);
// continue;
// }
// if (currentArg.startsWith("-g")) { //$NON-NLS-1$
// mode = DEFAULT;
// String debugOption = currentArg;
// int length = currentArg.length();
// if (length == 2) {
// this.options.put(
// CompilerOptions.OPTION_LocalVariableAttribute,
// CompilerOptions.GENERATE);
// this.options.put(
// CompilerOptions.OPTION_LineNumberAttribute,
// CompilerOptions.GENERATE);
// this.options.put(
// CompilerOptions.OPTION_SourceFileAttribute,
// CompilerOptions.GENERATE);
// continue;
// }
// if (length > 3) {
// this.options.put(
// CompilerOptions.OPTION_LocalVariableAttribute,
// CompilerOptions.DO_NOT_GENERATE);
// this.options.put(
// CompilerOptions.OPTION_LineNumberAttribute,
// CompilerOptions.DO_NOT_GENERATE);
// this.options.put(
// CompilerOptions.OPTION_SourceFileAttribute,
// CompilerOptions.DO_NOT_GENERATE);
// if (length == 7 && debugOption.equals("-g:" + NONE)) //$NON-NLS-1$
// continue;
// StringTokenizer tokenizer =
// new StringTokenizer(debugOption.substring(3, debugOption.length()), ","); //$NON-NLS-1$
// while (tokenizer.hasMoreTokens()) {
// String token = tokenizer.nextToken();
// if (token.equals("vars")) { //$NON-NLS-1$
// this.options.put(
// CompilerOptions.OPTION_LocalVariableAttribute,
// CompilerOptions.GENERATE);
// } else if (token.equals("lines")) { //$NON-NLS-1$
// this.options.put(
// CompilerOptions.OPTION_LineNumberAttribute,
// CompilerOptions.GENERATE);
// } else if (token.equals("source")) { //$NON-NLS-1$
// this.options.put(
// CompilerOptions.OPTION_SourceFileAttribute,
// CompilerOptions.GENERATE);
// } else {
// throw new IllegalArgumentException(
// this.bind("configure.invalidDebugOption", debugOption)); //$NON-NLS-1$
// }
// }
// continue;
// }
// throw new IllegalArgumentException(
// this.bind("configure.invalidDebugOption", debugOption)); //$NON-NLS-1$
// }
// if (currentArg.startsWith("-nowarn")) { //$NON-NLS-1$
// disableWarnings();
// mode = DEFAULT;
// continue;
// }
// if (currentArg.startsWith("-warn")) { //$NON-NLS-1$
// mode = DEFAULT;
// String warningOption = currentArg;
// int length = currentArg.length();
// if (length == 10 && warningOption.equals("-warn:" + NONE)) { //$NON-NLS-1$
// disableWarnings();
// continue;
// }
// if (length <= 6) {
// throw new IllegalArgumentException(
// this.bind("configure.invalidWarningConfiguration", warningOption)); //$NON-NLS-1$
// }
// int warnTokenStart;
// boolean isEnabling, allowPlusOrMinus;
// switch (warningOption.charAt(6)) {
// case '+' :
// warnTokenStart = 7;
// isEnabling = true;
// allowPlusOrMinus = true;
// break;
// case '-' :
// warnTokenStart = 7;
// isEnabling = false; // specified warnings are disabled
// allowPlusOrMinus = true;
// break;
// default:
// disableWarnings();
// warnTokenStart = 6;
// isEnabling = true;
// allowPlusOrMinus = false;
// }
//
// StringTokenizer tokenizer =
// new StringTokenizer(warningOption.substring(warnTokenStart, warningOption.length()), ","); //$NON-NLS-1$
// int tokenCounter = 0;
//
// if (didSpecifyDeprecation) { // deprecation could have also been set through -deprecation option
// this.options.put(CompilerOptions.OPTION_ReportDeprecation, CompilerOptions.WARNING);
// }
//
// while (tokenizer.hasMoreTokens()) {
// String token = tokenizer.nextToken();
// tokenCounter++;
// switch(token.charAt(0)) {
// case '+' :
// if (allowPlusOrMinus) {
// isEnabling = true;
// token = token.substring(1);
// } else {
// throw new IllegalArgumentException(
// this.bind("configure.invalidUsageOfPlusOption", token)); //$NON-NLS-1$
// }
// break;
// case '-' :
// if (allowPlusOrMinus) {
// isEnabling = false;
// token = token.substring(1);
// } else {
// throw new IllegalArgumentException(
// this.bind("configure.invalidUsageOfMinusOption", token)); //$NON-NLS-1$
// }
// }
// handleWarningToken(token, isEnabling);
// }
// if (tokenCounter == 0) {
// throw new IllegalArgumentException(
// this.bind("configure.invalidWarningOption", currentArg)); //$NON-NLS-1$
// }
// continue;
// }
// if (currentArg.startsWith("-err")) { //$NON-NLS-1$
// mode = DEFAULT;
// String errorOption = currentArg;
// int length = currentArg.length();
// if (length <= 5) {
// throw new IllegalArgumentException(
// this.bind("configure.invalidErrorConfiguration", errorOption)); //$NON-NLS-1$
// }
// int errorTokenStart;
// boolean isEnabling, allowPlusOrMinus;
// switch (errorOption.charAt(5)) {
// case '+' :
// errorTokenStart = 6;
// isEnabling = true;
// allowPlusOrMinus = true;
// break;
// case '-' :
// errorTokenStart = 6;
// isEnabling = false; // specified errors are disabled
// allowPlusOrMinus = true;
// break;
// default:
// disableErrors();
// errorTokenStart = 5;
// isEnabling = true;
// allowPlusOrMinus = false;
// }
//
// StringTokenizer tokenizer =
// new StringTokenizer(errorOption.substring(errorTokenStart, errorOption.length()), ","); //$NON-NLS-1$
// int tokenCounter = 0;
//
// while (tokenizer.hasMoreTokens()) {
// String token = tokenizer.nextToken();
// tokenCounter++;
// switch(token.charAt(0)) {
// case '+' :
// if (allowPlusOrMinus) {
// isEnabling = true;
// token = token.substring(1);
// } else {
// throw new IllegalArgumentException(
// this.bind("configure.invalidUsageOfPlusOption", token)); //$NON-NLS-1$
// }
// break;
// case '-' :
// if (allowPlusOrMinus) {
// isEnabling = false;
// token = token.substring(1);
// } else {
// throw new IllegalArgumentException(
// this.bind("configure.invalidUsageOfMinusOption", token)); //$NON-NLS-1$
// }
// break;
// }
// handleErrorToken(token, isEnabling);
// }
// if (tokenCounter == 0) {
// throw new IllegalArgumentException(
// this.bind("configure.invalidErrorOption", currentArg)); //$NON-NLS-1$
// }
// continue;
// }
// if (currentArg.equals("-target")) { //$NON-NLS-1$
// mode = INSIDE_TARGET;
// continue;
// }
// if (currentArg.equals("-preserveAllLocals")) { //$NON-NLS-1$
// this.options.put(
// CompilerOptions.OPTION_PreserveUnusedLocal,
// CompilerOptions.PRESERVE);
// mode = DEFAULT;
// continue;
// }
// if (currentArg.equals("-enableJavadoc")) {//$NON-NLS-1$
// mode = DEFAULT;
// this.enableJavadocOn = true;
// continue;
// }
// if (currentArg.equals("-Xemacs")) { //$NON-NLS-1$
// mode = DEFAULT;
// this.logger.setEmacs();
// continue;
// }
// // annotation processing
// if (currentArg.startsWith("-A")) { //$NON-NLS-1$
// mode = DEFAULT;
// continue;
// }
// if (currentArg.equals("-processorpath")) { //$NON-NLS-1$
// mode = INSIDE_PROCESSOR_PATH_start;
// continue;
// }
// if (currentArg.equals("-processor")) { //$NON-NLS-1$
// mode = INSIDE_PROCESSOR_start;
// continue;
// }
// if (currentArg.equals("-proc:only")) { //$NON-NLS-1$
// this.options.put(
// CompilerOptions.OPTION_GenerateClassFiles,
// CompilerOptions.DISABLED);
// mode = DEFAULT;
// continue;
// }
// if (currentArg.equals("-proc:none")) { //$NON-NLS-1$
// didSpecifyDisabledAnnotationProcessing = true;
// this.options.put(
// CompilerOptions.OPTION_Process_Annotations,
// CompilerOptions.DISABLED);
// mode = DEFAULT;
// continue;
// }
// if (currentArg.equals("-s")) { //$NON-NLS-1$
// mode = INSIDE_S_start;
// continue;
// }
// if (currentArg.equals("-XprintProcessorInfo") //$NON-NLS-1$
// || currentArg.equals("-XprintRounds")) { //$NON-NLS-1$
// mode = DEFAULT;
// continue;
// }
// // tolerated javac options - quietly filtered out
// if (currentArg.startsWith("-X")) { //$NON-NLS-1$
// mode = DEFAULT;
// continue;
// }
// if (currentArg.startsWith("-J")) { //$NON-NLS-1$
// mode = DEFAULT;
// continue;
// }
// if (currentArg.equals("-O")) { //$NON-NLS-1$
// mode = DEFAULT;
// continue;
// }
// if (currentArg.equals("-classNames")) { //$NON-NLS-1$
// mode = INSIDE_CLASS_NAMES;
// continue;
// }
// if (currentArg.equals("-properties")) { //$NON-NLS-1$
// mode = INSIDE_WARNINGS_PROPERTIES;
// continue;
// }
// break;
// case INSIDE_TARGET :
// if (this.didSpecifyTarget) {
// throw new IllegalArgumentException(
// this.bind("configure.duplicateTarget", currentArg));//$NON-NLS-1$
// }
// this.didSpecifyTarget = true;
// if (currentArg.equals("1.1")) { //$NON-NLS-1$
// this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_1);
// } else if (currentArg.equals("1.2")) { //$NON-NLS-1$
// this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_2);
// } else if (currentArg.equals("1.3")) { //$NON-NLS-1$
// this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_3);
// } else if (currentArg.equals("1.4")) { //$NON-NLS-1$
// this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_4);
// } else if (currentArg.equals("1.5") || currentArg.equals("5") || currentArg.equals("5.0")) { //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
// this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_5);
// } else if (currentArg.equals("1.6") || currentArg.equals("6") || currentArg.equals("6.0")) { //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
// this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_6);
// } else if (currentArg.equals("1.7") || currentArg.equals("7") || currentArg.equals("7.0")) { //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
// this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_7);
// } else if (currentArg.equals("jsr14")) { //$NON-NLS-1$
// this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_JSR14);
// } else if (currentArg.equals("cldc1.1")) { //$NON-NLS-1$
// this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_CLDC1_1);
// this.options.put(CompilerOptions.OPTION_InlineJsr, CompilerOptions.ENABLED);
// }else {
// throw new IllegalArgumentException(this.bind("configure.targetJDK", currentArg)); //$NON-NLS-1$
// }
// mode = DEFAULT;
// continue;
// case INSIDE_LOG :
// this.log = currentArg;
// mode = DEFAULT;
// continue;
// case INSIDE_REPETITION :
// try {
// this.maxRepetition = Integer.parseInt(currentArg);
// if (this.maxRepetition <= 0) {
// throw new IllegalArgumentException(this.bind("configure.repetition", currentArg)); //$NON-NLS-1$
// }
// } catch (NumberFormatException e) {
// throw new IllegalArgumentException(this.bind("configure.repetition", currentArg)); //$NON-NLS-1$
// }
// mode = DEFAULT;
// continue;
// case INSIDE_MAX_PROBLEMS :
// try {
// this.maxProblems = Integer.parseInt(currentArg);
// if (this.maxProblems <= 0) {
// throw new IllegalArgumentException(this.bind("configure.maxProblems", currentArg)); //$NON-NLS-1$
// }
// this.options.put(CompilerOptions.OPTION_MaxProblemPerUnit, currentArg);
// } catch (NumberFormatException e) {
// throw new IllegalArgumentException(this.bind("configure.maxProblems", currentArg)); //$NON-NLS-1$
// }
// mode = DEFAULT;
// continue;
// case INSIDE_SOURCE :
// if (this.didSpecifySource) {
// throw new IllegalArgumentException(
// this.bind("configure.duplicateSource", currentArg));//$NON-NLS-1$
// }
// this.didSpecifySource = true;
// if (currentArg.equals("1.3")) { //$NON-NLS-1$
// this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_3);
// } else if (currentArg.equals("1.4")) { //$NON-NLS-1$
// this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_4);
// } else if (currentArg.equals("1.5") || currentArg.equals("5") || currentArg.equals("5.0")) { //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
// this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_5);
// } else if (currentArg.equals("1.6") || currentArg.equals("6") || currentArg.equals("6.0")) { //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
// this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_6);
// } else if (currentArg.equals("1.7") || currentArg.equals("7") || currentArg.equals("7.0")) { //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
// this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_7);
// } else {
// throw new IllegalArgumentException(this.bind("configure.source", currentArg)); //$NON-NLS-1$
// }
// mode = DEFAULT;
// continue;
// case INSIDE_DEFAULT_ENCODING :
// if (specifiedEncodings != null) {
// // check already defined encoding
// if (!specifiedEncodings.contains(currentArg)) {
// if (specifiedEncodings.size() > 1) {
// this.logger.logWarning(
// this.bind("configure.differentencodings", //$NON-NLS-1$
// currentArg,
// getAllEncodings(specifiedEncodings)));
// } else {
// this.logger.logWarning(
// this.bind("configure.differentencoding", //$NON-NLS-1$
// currentArg,
// getAllEncodings(specifiedEncodings)));
// }
// }
// } else {
// specifiedEncodings = new HashSet();
// }
// try { // ensure encoding is supported
// new InputStreamReader(new ByteArrayInputStream(new byte[0]), currentArg);
// } catch (UnsupportedEncodingException e) {
// throw new IllegalArgumentException(
// this.bind("configure.unsupportedEncoding", currentArg)); //$NON-NLS-1$
// }
// specifiedEncodings.add(currentArg);
// this.options.put(CompilerOptions.OPTION_Encoding, currentArg);
// mode = DEFAULT;
// continue;
// case INSIDE_DESTINATION_PATH :
// setDestinationPath(currentArg.equals(NONE) ? NONE : currentArg);
// mode = DEFAULT;
// continue;
// case INSIDE_CLASSPATH_start:
// mode = DEFAULT;
// index += processPaths(newCommandLineArgs, index, currentArg, classpaths);
// continue;
// case INSIDE_BOOTCLASSPATH_start:
// mode = DEFAULT;
// index += processPaths(newCommandLineArgs, index, currentArg, bootclasspaths);
// continue;
// case INSIDE_SOURCE_PATH_start:
// mode = DEFAULT;
// String[] sourcePaths = new String[1];
// index += processPaths(newCommandLineArgs, index, currentArg, sourcePaths);
// sourcepathClasspathArg = sourcePaths[0];
// continue;
// case INSIDE_EXT_DIRS:
// if (currentArg.indexOf("[-d") != -1) { //$NON-NLS-1$
// throw new IllegalArgumentException(
// this.bind("configure.unexpectedDestinationPathEntry", //$NON-NLS-1$
// "-extdir")); //$NON-NLS-1$
// }
// StringTokenizer tokenizer = new StringTokenizer(currentArg, File.pathSeparator, false);
// extdirsClasspaths = new ArrayList(DEFAULT_SIZE_CLASSPATH);
// while (tokenizer.hasMoreTokens())
// extdirsClasspaths.add(tokenizer.nextToken());
// mode = DEFAULT;
// continue;
// case INSIDE_ENDORSED_DIRS:
// if (currentArg.indexOf("[-d") != -1) { //$NON-NLS-1$
// throw new IllegalArgumentException(
// this.bind("configure.unexpectedDestinationPathEntry", //$NON-NLS-1$
// "-endorseddirs")); //$NON-NLS-1$
// } tokenizer = new StringTokenizer(currentArg, File.pathSeparator, false);
// endorsedDirClasspaths = new ArrayList(DEFAULT_SIZE_CLASSPATH);
// while (tokenizer.hasMoreTokens())
// endorsedDirClasspaths.add(tokenizer.nextToken());
// mode = DEFAULT;
// continue;
// case INSIDE_SOURCE_DIRECTORY_DESTINATION_PATH:
// if (currentArg.endsWith("]")) { //$NON-NLS-1$
// customDestinationPath = currentArg.substring(0,
// currentArg.length() - 1);
// } else {
// throw new IllegalArgumentException(
// this.bind("configure.incorrectDestinationPathEntry", //$NON-NLS-1$
// "[-d " + currentArg)); //$NON-NLS-1$
// }
// break;
// case INSIDE_PROCESSOR_PATH_start :
// // nothing to do here. This is consumed again by the AnnotationProcessorManager
// mode = DEFAULT;
// continue;
// case INSIDE_PROCESSOR_start :
// // nothing to do here. This is consumed again by the AnnotationProcessorManager
// mode = DEFAULT;
// continue;
// case INSIDE_S_start :
// // nothing to do here. This is consumed again by the AnnotationProcessorManager
// mode = DEFAULT;
// continue;
// case INSIDE_CLASS_NAMES :
// tokenizer = new StringTokenizer(currentArg, ","); //$NON-NLS-1$
// if (this.classNames == null) {
// this.classNames = new String[DEFAULT_SIZE_CLASSPATH];
// }
// while (tokenizer.hasMoreTokens()) {
// if (this.classNames.length == classCount) {
// // resize
// System.arraycopy(
// this.classNames,
// 0,
// (this.classNames = new String[classCount * 2]),
// 0,
// classCount);
// }
// this.classNames[classCount++] = tokenizer.nextToken();
// }
// mode = DEFAULT;
// continue;
// case INSIDE_WARNINGS_PROPERTIES :
// initializeWarnings(currentArg);
// mode = DEFAULT;
// continue;
// }
//
// // default is input directory, if no custom destination path exists
// if (customDestinationPath == null) {
// if (File.separatorChar != '/') {
// currentArg = currentArg.replace('/', File.separatorChar);
// }
// if (currentArg.endsWith("[-d")) { //$NON-NLS-1$
// currentSourceDirectory = currentArg.substring(0,
// currentArg.length() - 3);
// mode = INSIDE_SOURCE_DIRECTORY_DESTINATION_PATH;
// continue;
// }
// currentSourceDirectory = currentArg;
// }
// File dir = new File(currentSourceDirectory);
// if (!dir.isDirectory()) {
// throw new IllegalArgumentException(
// this.bind("configure.unrecognizedOption", currentSourceDirectory)); //$NON-NLS-1$
// }
// String[] result = FileFinder.find(dir, SuffixConstants.SUFFIX_STRING_JAVA);
// if (NONE.equals(customDestinationPath)) {
// customDestinationPath = NONE; // ensure == comparison
// }
// if (this.filenames != null) {
// // some source files were specified explicitly
// int length = result.length;
// System.arraycopy(
// this.filenames,
// 0,
// (this.filenames = new String[length + filesCount]),
// 0,
// filesCount);
// System.arraycopy(
// this.encodings,
// 0,
// (this.encodings = new String[length + filesCount]),
// 0,
// filesCount);
// System.arraycopy(
// this.destinationPaths,
// 0,
// (this.destinationPaths = new String[length + filesCount]),
// 0,
// filesCount);
// System.arraycopy(result, 0, this.filenames, filesCount, length);
// for (int i = 0; i < length; i++) {
// this.encodings[filesCount + i] = customEncoding;
// this.destinationPaths[filesCount + i] = customDestinationPath;
// }
// filesCount += length;
// customEncoding = null;
// customDestinationPath = null;
// currentSourceDirectory = null;
// } else {
// this.filenames = result;
// filesCount = this.filenames.length;
// this.encodings = new String[filesCount];
// this.destinationPaths = new String[filesCount];
// for (int i = 0; i < filesCount; i++) {
// this.encodings[i] = customEncoding;
// this.destinationPaths[i] = customDestinationPath;
// }
// customEncoding = null;
// customDestinationPath = null;
// currentSourceDirectory = null;
// }
// mode = DEFAULT;
// continue;
// }
//
// // set DocCommentSupport, with appropriate side effects on defaults if
// // javadoc is not enabled
// if (this.enableJavadocOn) {
// this.options.put(
// CompilerOptions.OPTION_DocCommentSupport,
// CompilerOptions.ENABLED);
// } else if (this.warnJavadocOn || this.warnAllJavadocOn) {
// this.options.put(
// CompilerOptions.OPTION_DocCommentSupport,
// CompilerOptions.ENABLED);
// // override defaults: references that are embedded in javadoc are ignored
// // from the perspective of parameters and thrown exceptions usage
// this.options.put(
// CompilerOptions.OPTION_ReportUnusedParameterIncludeDocCommentReference,
// CompilerOptions.DISABLED);
// this.options.put(
// CompilerOptions.OPTION_ReportUnusedDeclaredThrownExceptionIncludeDocCommentReference,
// CompilerOptions.DISABLED);
// }
// // configure warnings for javadoc contents
// if (this.warnJavadocOn) {
// this.options.put(
// CompilerOptions.OPTION_ReportInvalidJavadocTags,
// CompilerOptions.ENABLED);
// this.options.put(
// CompilerOptions.OPTION_ReportInvalidJavadocTagsDeprecatedRef,
// CompilerOptions.ENABLED);
// this.options.put(
// CompilerOptions.OPTION_ReportInvalidJavadocTagsNotVisibleRef,
// CompilerOptions.ENABLED);
// this.options.put(
// CompilerOptions.OPTION_ReportMissingJavadocTagsVisibility,
// CompilerOptions.PRIVATE);
// }
//
// if (printUsageRequired || (filesCount == 0 && classCount == 0)) {
// if (usageSection == null) {
// printUsage(); // default
// } else {
// printUsage(usageSection);
// }
// this.proceed = false;
// return;
// }
//
// if (this.log != null) {
// this.logger.setLog(this.log);
// } else {
// this.showProgress = false;
// }
// this.logger.logVersion(printVersionRequired);
//
// validateOptions(didSpecifyCompliance);
//
// // Enable annotation processing by default in batch mode when compliance is at least 1.6
// // see bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=185768
// if (!didSpecifyDisabledAnnotationProcessing
// && CompilerOptions.versionToJdkLevel(this.options.get(CompilerOptions.OPTION_Compliance)) >= ClassFileConstants.JDK1_6) {
// this.options.put(CompilerOptions.OPTION_Process_Annotations, CompilerOptions.ENABLED);
// }
//
// this.logger.logCommandLineArguments(newCommandLineArgs);
// this.logger.logOptions(this.options);
//
// if (this.maxRepetition == 0) {
// this.maxRepetition = 1;
// }
// if (this.maxRepetition >= 3 && (this.timing & TIMING_ENABLED) != 0) {
// this.compilerStats = new CompilerStats[this.maxRepetition];
// }
//
// if (filesCount != 0) {
// System.arraycopy(
// this.filenames,
// 0,
// (this.filenames = new String[filesCount]),
// 0,
// filesCount);
// }
//
// if (classCount != 0) {
// System.arraycopy(
// this.classNames,
// 0,
// (this.classNames = new String[classCount]),
// 0,
// classCount);
// }
//
// setPaths(bootclasspaths,
// sourcepathClasspathArg,
// sourcepathClasspaths,
// classpaths,
// extdirsClasspaths,
// endorsedDirClasspaths,
// customEncoding);
//
// if (specifiedEncodings != null && specifiedEncodings.size() > 1) {
// this.logger.logWarning(this.bind("configure.multipleencodings", //$NON-NLS-1$
// (String) this.options.get(CompilerOptions.OPTION_Encoding),
// getAllEncodings(specifiedEncodings)));
// }
// if (this.pendingErrors != null) {
// for (Iterator iterator = this.pendingErrors.iterator(); iterator.hasNext(); ) {
// String message = (String) iterator.next();
// this.logger.logPendingError(message);
// }
// this.pendingErrors = null;
// }
//}
//private static String getAllEncodings(Set encodings) {
// int size = encodings.size();
// String[] allEncodings = new String[size];
// encodings.toArray(allEncodings);
// Arrays.sort(allEncodings);
// StringBuffer buffer = new StringBuffer();
// for (int i = 0; i < size; i++) {
// if (i > 0) {
// buffer.append(", "); //$NON-NLS-1$
// }
// buffer.append(allEncodings[i]);
// }
// return String.valueOf(buffer);
//}
//
//private void initializeWarnings(String propertiesFile) {
// File file = new File(propertiesFile);
// if (!file.exists()) {
// throw new IllegalArgumentException(this.bind("configure.missingwarningspropertiesfile", propertiesFile)); //$NON-NLS-1$
// }
// BufferedInputStream stream = null;
// Properties properties = null;
// try {
// stream = new BufferedInputStream(new FileInputStream(propertiesFile));
// properties = new Properties();
// properties.load(stream);
// } catch(IOException e) {
// e.printStackTrace();
// throw new IllegalArgumentException(this.bind("configure.ioexceptionwarningspropertiesfile", propertiesFile)); //$NON-NLS-1$
// } finally {
// if (stream != null) {
// try {
// stream.close();
// } catch(IOException e) {
// // ignore
// }
// }
// }
// for (Iterator iterator = properties.entrySet().iterator(); iterator.hasNext(); ) {
// Map.Entry entry = (Map.Entry) iterator.next();
// final String key = (String) entry.getKey();
// if (key.startsWith("org.eclipse.jdt.core.compiler.problem")) { //$NON-NLS-1$
// this.options.put(key, entry.getValue());
// }
// }
//}
//protected void disableWarnings() {
// Object[] entries = this.options.entrySet().toArray();
// for (int i = 0, max = entries.length; i < max; i++) {
// Map.Entry entry = (Map.Entry) entries[i];
// if (!(entry.getKey() instanceof String))
// continue;
// if (!(entry.getValue() instanceof String))
// continue;
// if (((String) entry.getValue()).equals(CompilerOptions.WARNING)) {
// this.options.put(entry.getKey(), CompilerOptions.IGNORE);
// }
// }
// this.options.put(CompilerOptions.OPTION_TaskTags, Util.EMPTY_STRING);
//}
//protected void disableErrors() {
// Object[] entries = this.options.entrySet().toArray();
// for (int i = 0, max = entries.length; i < max; i++) {
// Map.Entry entry = (Map.Entry) entries[i];
// if (!(entry.getKey() instanceof String))
// continue;
// if (!(entry.getValue() instanceof String))
// continue;
// if (((String) entry.getValue()).equals(CompilerOptions.ERROR)) {
// this.options.put(entry.getKey(), CompilerOptions.IGNORE);
// }
// }
//}
//public String extractDestinationPathFromSourceFile(CompilationResult result) {
// ICompilationUnit compilationUnit = result.compilationUnit;
// if (compilationUnit != null) {
// char[] fileName = compilationUnit.getFileName();
// int lastIndex = CharOperation.lastIndexOf(java.io.File.separatorChar, fileName);
// if (lastIndex != -1) {
// final String outputPathName = new String(fileName, 0, lastIndex);
// final File output = new File(outputPathName);
// if (output.exists() && output.isDirectory()) {
// return outputPathName;
// }
// }
// }
// return System.getProperty("user.dir"); //$NON-NLS-1$
//}
///*
// * Answer the component to which will be handed back compilation results from the compiler
// */
//public ICompilerRequestor getBatchRequestor() {
// return new ICompilerRequestor() {
// int lineDelta = 0;
// public void acceptResult(CompilationResult compilationResult) {
// if (compilationResult.lineSeparatorPositions != null) {
// int unitLineCount = compilationResult.lineSeparatorPositions.length;
// this.lineDelta += unitLineCount;
// if (Main.this.showProgress && this.lineDelta > 2000) {
// // in -log mode, dump a dot every 2000 lines compiled
// Main.this.logger.logProgress();
// this.lineDelta = 0;
// }
// }
// Main.this.logger.startLoggingSource(compilationResult);
// if (compilationResult.hasProblems() || compilationResult.hasTasks()) {
// Main.this.logger.logProblems(compilationResult.getAllProblems(), compilationResult.compilationUnit.getContents(), Main.this);
// }
// outputClassFiles(compilationResult);
// Main.this.logger.endLoggingSource();
// }
// };
//}
///*
// * Build the set of compilation source units
// */
//public CompilationUnit[] getCompilationUnits() {
// int fileCount = this.filenames.length;
// CompilationUnit[] units = new CompilationUnit[fileCount];
// HashtableOfObject knownFileNames = new HashtableOfObject(fileCount);
//
// String defaultEncoding = (String) this.options.get(CompilerOptions.OPTION_Encoding);
// if (Util.EMPTY_STRING.equals(defaultEncoding))
// defaultEncoding = null;
//
// for (int i = 0; i < fileCount; i++) {
// char[] charName = this.filenames[i].toCharArray();
// if (knownFileNames.get(charName) != null)
// throw new IllegalArgumentException(this.bind("unit.more", this.filenames[i])); //$NON-NLS-1$
// knownFileNames.put(charName, charName);
// File file = new File(this.filenames[i]);
// if (!file.exists())
// throw new IllegalArgumentException(this.bind("unit.missing", this.filenames[i])); //$NON-NLS-1$
// String encoding = this.encodings[i];
// if (encoding == null)
// encoding = defaultEncoding;
// units[i] = new CompilationUnit(null, this.filenames[i], encoding,
// this.destinationPaths[i]);
// }
// return units;
//}
//
///*
// * Low-level API performing the actual compilation
// */
//public IErrorHandlingPolicy getHandlingPolicy() {
//
// // passes the initial set of files to the batch oracle (to avoid finding more than once the same units when case insensitive match)
// return new IErrorHandlingPolicy() {
// public boolean proceedOnErrors() {
// return Main.this.proceedOnError; // stop if there are some errors
// }
// public boolean stopOnFirstError() {
// return false;
// }
// };
//}
//
///*
// * External API
// */
//public File getJavaHome() {
// if (!this.javaHomeChecked) {
// this.javaHomeChecked = true;
// this.javaHomeCache = Util.getJavaHome();
// }
// return this.javaHomeCache;
//}
//
//public FileSystem getLibraryAccess() {
// return new FileSystem(this.checkedClasspaths, this.filenames);
//}
//
///*
// * Low-level API performing the actual compilation
// */
//public IProblemFactory getProblemFactory() {
// return new DefaultProblemFactory(this.compilerLocale);
//}
//
///*
// * External API
// */
//protected ArrayList handleBootclasspath(ArrayList bootclasspaths, String customEncoding) {
// final int bootclasspathsSize;
// if ((bootclasspaths != null)
// && ((bootclasspathsSize = bootclasspaths.size()) != 0))
// {
// String[] paths = new String[bootclasspathsSize];
// bootclasspaths.toArray(paths);
// bootclasspaths.clear();
// for (int i = 0; i < bootclasspathsSize; i++) {
// processPathEntries(DEFAULT_SIZE_CLASSPATH, bootclasspaths,
// paths[i], customEncoding, false, true);
// }
// } else {
// bootclasspaths = new ArrayList(DEFAULT_SIZE_CLASSPATH);
// try {
// Util.collectRunningVMBootclasspath(bootclasspaths);
// } catch(IllegalStateException e) {
// this.logger.logWrongJDK();
// this.proceed = false;
// return null;
// }
// }
// return bootclasspaths;
//}
//
///*
// * External API
// */
//protected ArrayList handleClasspath(ArrayList classpaths, String customEncoding) {
// final int classpathsSize;
// if ((classpaths != null)
// && ((classpathsSize = classpaths.size()) != 0))
// {
// String[] paths = new String[classpathsSize];
// classpaths.toArray(paths);
// classpaths.clear();
// for (int i = 0; i < classpathsSize; i++) {
// processPathEntries(DEFAULT_SIZE_CLASSPATH, classpaths, paths[i],
// customEncoding, false, true);
// }
// } else {
// // no user classpath specified.
// classpaths = new ArrayList(DEFAULT_SIZE_CLASSPATH);
// String classProp = System.getProperty("java.class.path"); //$NON-NLS-1$
// if ((classProp == null) || (classProp.length() == 0)) {
// addPendingErrors(this.bind("configure.noClasspath")); //$NON-NLS-1$
// final Classpath classpath = FileSystem.getClasspath(System.getProperty("user.dir"), customEncoding, null);//$NON-NLS-1$
// if (classpath != null) {
// classpaths.add(classpath);
// }
// } else {
// StringTokenizer tokenizer = new StringTokenizer(classProp, File.pathSeparator);
// String token;
// while (tokenizer.hasMoreTokens()) {
// token = tokenizer.nextToken();
// FileSystem.Classpath currentClasspath = FileSystem
// .getClasspath(token, customEncoding, null);
// if (currentClasspath != null) {
// classpaths.add(currentClasspath);
// } else if (token.length() != 0) {
// addPendingErrors(this.bind("configure.incorrectClasspath", token));//$NON-NLS-1$
// }
// }
// }
// }
// ArrayList result = new ArrayList();
// HashMap knownNames = new HashMap();
// FileSystem.ClasspathSectionProblemReporter problemReporter =
// new FileSystem.ClasspathSectionProblemReporter() {
// public void invalidClasspathSection(String jarFilePath) {
// addPendingErrors(bind("configure.invalidClasspathSection", jarFilePath)); //$NON-NLS-1$
// }
// public void multipleClasspathSections(String jarFilePath) {
// addPendingErrors(bind("configure.multipleClasspathSections", jarFilePath)); //$NON-NLS-1$
// }
// };
// while (! classpaths.isEmpty()) {
// Classpath current = (Classpath) classpaths.remove(0);
// String currentPath = current.getPath();
// if (knownNames.get(currentPath) == null) {
// knownNames.put(currentPath, current);
// result.add(current);
// List linkedJars = current.fetchLinkedJars(problemReporter);
// if (linkedJars != null) {
// classpaths.addAll(0, linkedJars);
// }
// }
// }
// return result;
//}
///*
// * External API
// */
//protected ArrayList handleEndorseddirs(ArrayList endorsedDirClasspaths) {
// final File javaHome = getJavaHome();
// /*
// * Feed endorsedDirClasspath according to:
// * - -endorseddirs first if present;
// * - else java.endorsed.dirs if defined;
// * - else default extensions directory for the platform. (/lib/endorsed)
// */
// if (endorsedDirClasspaths == null) {
// endorsedDirClasspaths = new ArrayList(DEFAULT_SIZE_CLASSPATH);
// String endorsedDirsStr = System.getProperty("java.endorsed.dirs"); //$NON-NLS-1$
// if (endorsedDirsStr == null) {
// if (javaHome != null) {
// endorsedDirClasspaths.add(javaHome.getAbsolutePath() + "/lib/endorsed"); //$NON-NLS-1$
// }
// } else {
// StringTokenizer tokenizer = new StringTokenizer(endorsedDirsStr, File.pathSeparator);
// while (tokenizer.hasMoreTokens()) {
// endorsedDirClasspaths.add(tokenizer.nextToken());
// }
// }
// }
//
// /*
// * Feed extdirsClasspath with the entries found into the directories listed by
// * extdirsNames.
// */
// if (endorsedDirClasspaths.size() != 0) {
// File[] directoriesToCheck = new File[endorsedDirClasspaths.size()];
// for (int i = 0; i < directoriesToCheck.length; i++)
// directoriesToCheck[i] = new File((String) endorsedDirClasspaths.get(i));
// endorsedDirClasspaths.clear();
// File[][] endorsedDirsJars = getLibrariesFiles(directoriesToCheck);
// if (endorsedDirsJars != null) {
// for (int i = 0, max = endorsedDirsJars.length; i < max; i++) {
// File[] current = endorsedDirsJars[i];
// if (current != null) {
// for (int j = 0, max2 = current.length; j < max2; j++) {
// FileSystem.Classpath classpath =
// FileSystem.getClasspath(
// current[j].getAbsolutePath(),
// null, null);
// if (classpath != null) {
// endorsedDirClasspaths.add(classpath);
// }
// }
// } else if (directoriesToCheck[i].isFile()) {
// addPendingErrors(
// this.bind(
// "configure.incorrectEndorsedDirsEntry", //$NON-NLS-1$
// directoriesToCheck[i].getAbsolutePath()));
// }
// }
// }
// }
// return endorsedDirClasspaths;
//}
//
///*
// * External API
// * Handle extdirs processing
// */
//protected ArrayList handleExtdirs(ArrayList extdirsClasspaths) {
// final File javaHome = getJavaHome();
//
// /*
// * Feed extDirClasspath according to:
// * - -extdirs first if present;
// * - else java.ext.dirs if defined;
// * - else default extensions directory for the platform.
// */
// if (extdirsClasspaths == null) {
// extdirsClasspaths = new ArrayList(DEFAULT_SIZE_CLASSPATH);
// String extdirsStr = System.getProperty("java.ext.dirs"); //$NON-NLS-1$
// if (extdirsStr == null) {
// extdirsClasspaths.add(javaHome.getAbsolutePath() + "/lib/ext"); //$NON-NLS-1$
// } else {
// StringTokenizer tokenizer = new StringTokenizer(extdirsStr, File.pathSeparator);
// while (tokenizer.hasMoreTokens())
// extdirsClasspaths.add(tokenizer.nextToken());
// }
// }
//
// /*
// * Feed extdirsClasspath with the entries found into the directories listed by
// * extdirsNames.
// */
// if (extdirsClasspaths.size() != 0) {
// File[] directoriesToCheck = new File[extdirsClasspaths.size()];
// for (int i = 0; i < directoriesToCheck.length; i++)
// directoriesToCheck[i] = new File((String) extdirsClasspaths.get(i));
// extdirsClasspaths.clear();
// File[][] extdirsJars = getLibrariesFiles(directoriesToCheck);
// if (extdirsJars != null) {
// for (int i = 0, max = extdirsJars.length; i < max; i++) {
// File[] current = extdirsJars[i];
// if (current != null) {
// for (int j = 0, max2 = current.length; j < max2; j++) {
// FileSystem.Classpath classpath =
// FileSystem.getClasspath(
// current[j].getAbsolutePath(),
// null, null);
// if (classpath != null) {
// extdirsClasspaths.add(classpath);
// }
// }
// } else if (directoriesToCheck[i].isFile()) {
// addPendingErrors(this.bind(
// "configure.incorrectExtDirsEntry", //$NON-NLS-1$
// directoriesToCheck[i].getAbsolutePath()));
// }
// }
// }
// }
//
// return extdirsClasspaths;
//}
//
///*
// * External API
// * Handle a single warning token.
//*/
//protected void handleWarningToken(String token, boolean isEnabling) {
// handleErrorOrWarningToken(token, isEnabling, ProblemSeverities.Warning);
//}
//protected void handleErrorToken(String token, boolean isEnabling) {
// handleErrorOrWarningToken(token, isEnabling, ProblemSeverities.Error);
//}
//private void setSeverity(String compilerOptions, int severity, boolean isEnabling) {
// if (isEnabling) {
// switch(severity) {
// case ProblemSeverities.Error :
// this.options.put(compilerOptions, CompilerOptions.ERROR);
// break;
// case ProblemSeverities.Warning :
// this.options.put(compilerOptions, CompilerOptions.WARNING);
// break;
// default:
// this.options.put(compilerOptions, CompilerOptions.IGNORE);
// }
// } else {
// switch(severity) {
// case ProblemSeverities.Error :
// String currentValue = (String) this.options.get(compilerOptions);
// if (CompilerOptions.ERROR.equals(currentValue)) {
// this.options.put(compilerOptions, CompilerOptions.IGNORE);
// }
// break;
// case ProblemSeverities.Warning :
// currentValue = (String) this.options.get(compilerOptions);
// if (CompilerOptions.WARNING.equals(currentValue)) {
// this.options.put(compilerOptions, CompilerOptions.IGNORE);
// }
// break;
// default:
// this.options.put(compilerOptions, CompilerOptions.IGNORE);
// }
// }
//}
//private void handleErrorOrWarningToken(String token, boolean isEnabling, int severity) {
// if (token.length() == 0) return;
// switch(token.charAt(0)) {
// case 'a' :
// if (token.equals("allDeprecation")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportDeprecation, severity, isEnabling);
// this.options.put(
// CompilerOptions.OPTION_ReportDeprecationInDeprecatedCode,
// isEnabling ? CompilerOptions.ENABLED : CompilerOptions.DISABLED);
// this.options.put(
// CompilerOptions.OPTION_ReportDeprecationWhenOverridingDeprecatedMethod,
// isEnabling ? CompilerOptions.ENABLED : CompilerOptions.DISABLED);
// return;
// } else if (token.equals("allJavadoc")) { //$NON-NLS-1$
// this.warnAllJavadocOn = this.warnJavadocOn = isEnabling;
// setSeverity(CompilerOptions.OPTION_ReportInvalidJavadoc, severity, isEnabling);
// setSeverity(CompilerOptions.OPTION_ReportMissingJavadocTags, severity, isEnabling);
// setSeverity(CompilerOptions.OPTION_ReportMissingJavadocComments, severity, isEnabling);
// return;
// } else if (token.equals("assertIdentifier")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportAssertIdentifier, severity, isEnabling);
// return;
// } else if (token.equals("allDeadCode")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportDeadCode, severity, isEnabling);
// this.options.put(
// CompilerOptions.OPTION_ReportDeadCodeInTrivialIfStatement,
// isEnabling ? CompilerOptions.ENABLED : CompilerOptions.DISABLED);
// return;
// } else if (token.equals("allOver-ann")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportMissingOverrideAnnotation, severity, isEnabling);
// this.options.put(
// CompilerOptions.OPTION_ReportMissingOverrideAnnotationForInterfaceMethodImplementation,
// isEnabling ? CompilerOptions.ENABLED : CompilerOptions.DISABLED);
// return;
// } else if (token.equals("all-static-method")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportMethodCanBeStatic, severity, isEnabling);
// setSeverity(CompilerOptions.OPTION_ReportMethodCanBePotentiallyStatic, severity, isEnabling);
// return;
// }
// break;
// case 'b' :
// if (token.equals("boxing")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportAutoboxing, severity, isEnabling);
// return;
// }
// break;
// case 'c' :
// if (token.equals("constructorName")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportMethodWithConstructorName, severity, isEnabling);
// return;
// } else if (token.equals("conditionAssign")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportPossibleAccidentalBooleanAssignment, severity, isEnabling);
// return;
// } else if (token.equals("compareIdentical")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportComparingIdentical, severity, isEnabling);
// return;
// } else if (token.equals("charConcat") /*|| token.equals("noImplicitStringConversion")/*backward compatible*/) {//$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportNoImplicitStringConversion, severity, isEnabling);
// return;
// }
// break;
// case 'd' :
// if (token.equals("deprecation")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportDeprecation, severity, isEnabling);
// this.options.put(
// CompilerOptions.OPTION_ReportDeprecationInDeprecatedCode,
// CompilerOptions.DISABLED);
// this.options.put(
// CompilerOptions.OPTION_ReportDeprecationWhenOverridingDeprecatedMethod,
// CompilerOptions.DISABLED);
// return;
// } else if (token.equals("dep-ann")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportMissingDeprecatedAnnotation, severity, isEnabling);
// return;
// } else if (token.equals("discouraged")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportDiscouragedReference, severity, isEnabling);
// return;
// } else if (token.equals("deadCode")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportDeadCode, severity, isEnabling);
// this.options.put(
// CompilerOptions.OPTION_ReportDeadCodeInTrivialIfStatement,
// CompilerOptions.DISABLED);
// return;
// }
// break;
// case 'e' :
// if (token.equals("enumSwitch") //$NON-NLS-1$
// || token.equals("incomplete-switch")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportIncompleteEnumSwitch, severity, isEnabling);
// return;
// } else if (token.equals("emptyBlock")) {//$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportUndocumentedEmptyBlock, severity, isEnabling);
// return;
// } else if (token.equals("enumIdentifier")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportEnumIdentifier, severity, isEnabling);
// return;
// }
// break;
// case 'f' :
// if (token.equals("fieldHiding")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportFieldHiding, severity, isEnabling);
// return;
// } else if (token.equals("finalBound")) {//$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportFinalParameterBound, severity, isEnabling);
// return;
// } else if (token.equals("finally")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportFinallyBlockNotCompletingNormally, severity, isEnabling);
// return;
// } else if (token.equals("forbidden")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportForbiddenReference, severity, isEnabling);
// return;
// } else if (token.equals("fallthrough")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportFallthroughCase, severity, isEnabling);
// return;
// }
// break;
// case 'h' :
// if (token.equals("hiding")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportHiddenCatchBlock, severity, isEnabling);
// setSeverity(CompilerOptions.OPTION_ReportLocalVariableHiding, severity, isEnabling);
// setSeverity(CompilerOptions.OPTION_ReportFieldHiding, severity, isEnabling);
// setSeverity(CompilerOptions.OPTION_ReportTypeParameterHiding, severity, isEnabling);
// return;
// } else if (token.equals("hashCode")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportMissingHashCodeMethod, severity, isEnabling);
// return;
// }
// break;
// case 'i' :
// if (token.equals("indirectStatic")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportIndirectStaticAccess, severity, isEnabling);
// return;
// } else if (token.equals("intfNonInherited") || token.equals("interfaceNonInherited")/*backward compatible*/) { //$NON-NLS-1$
//$NON-NLS-2$
// setSeverity(CompilerOptions.OPTION_ReportIncompatibleNonInheritedInterfaceMethod, severity, isEnabling);
// return;
// } else if (token.equals("intfAnnotation")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportAnnotationSuperInterface, severity, isEnabling);
// return;
// } else if (token.equals("intfRedundant") /*|| token.equals("redundantSuperinterface")*/) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportRedundantSuperinterface, severity, isEnabling);
// return;
// } else if (token.equals("includeAssertNull")) { //$NON-NLS-1$
// this.options.put(
// CompilerOptions.OPTION_IncludeNullInfoFromAsserts,
// isEnabling ? CompilerOptions.ENABLED : CompilerOptions.DISABLED);
// return;
// }
// break;
// case 'j' :
// if (token.equals("javadoc")) {//$NON-NLS-1$
// this.warnJavadocOn = isEnabling;
// setSeverity(CompilerOptions.OPTION_ReportInvalidJavadoc, severity, isEnabling);
// setSeverity(CompilerOptions.OPTION_ReportMissingJavadocTags, severity, isEnabling);
// return;
// }
// break;
// case 'l' :
// if (token.equals("localHiding")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportLocalVariableHiding, severity, isEnabling);
// return;
// }
// break;
// case 'm' :
// if (token.equals("maskedCatchBlock") || token.equals("maskedCatchBlocks")/*backward compatible*/) { //$NON-NLS-1$ //$NON-NLS-2$
// setSeverity(CompilerOptions.OPTION_ReportHiddenCatchBlock, severity, isEnabling);
// return;
// }
// break;
// case 'n' :
// if (token.equals("nls")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportNonExternalizedStringLiteral, severity, isEnabling);
// return;
// } else if (token.equals("noEffectAssign")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportNoEffectAssignment, severity, isEnabling);
// return;
// } else if (/*token.equals("charConcat") ||*/ token.equals("noImplicitStringConversion")/*backward compatible*/) {//$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportNoImplicitStringConversion, severity, isEnabling);
// return;
// } else if (token.equals("null")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportNullReference, severity, isEnabling);
// setSeverity(CompilerOptions.OPTION_ReportPotentialNullReference, severity, isEnabling);
// setSeverity(CompilerOptions.OPTION_ReportRedundantNullCheck, severity, isEnabling);
// return;
// } else if (token.equals("nullDereference")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportNullReference, severity, isEnabling);
// if (!isEnabling) {
// setSeverity(CompilerOptions.OPTION_ReportPotentialNullReference, ProblemSeverities.Ignore, isEnabling);
// setSeverity(CompilerOptions.OPTION_ReportRedundantNullCheck, ProblemSeverities.Ignore, isEnabling);
// }
// return;
// }
// break;
// case 'o' :
// if (token.equals("over-sync") /*|| token.equals("syncOverride")*/) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportMissingSynchronizedOnInheritedMethod, severity, isEnabling);
// return;
// } else if (token.equals("over-ann")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportMissingOverrideAnnotation, severity, isEnabling);
// this.options.put(
// CompilerOptions.OPTION_ReportMissingOverrideAnnotationForInterfaceMethodImplementation,
// CompilerOptions.DISABLED);
// return;
// }
// break;
// case 'p' :
// if (token.equals("pkgDefaultMethod") || token.equals("packageDefaultMethod")/*backward compatible*/ ) { //$NON-NLS-1$ //$NON-NLS-2$
// setSeverity(CompilerOptions.OPTION_ReportOverridingPackageDefaultMethod, severity, isEnabling);
// return;
// } else if (token.equals("paramAssign")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportParameterAssignment, severity, isEnabling);
// return;
// }
// break;
// case 'r' :
// if (token.equals("raw")) {//$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportRawTypeReference, severity, isEnabling);
// return;
// } else if (/*token.equals("intfRedundant") ||*/ token.equals("redundantSuperinterface")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportRedundantSuperinterface, severity, isEnabling);
// return;
// }
// break;
// case 's' :
// if (token.equals("specialParamHiding")) { //$NON-NLS-1$
// this.options.put(
// CompilerOptions.OPTION_ReportSpecialParameterHidingField,
// isEnabling ? CompilerOptions.ENABLED : CompilerOptions.DISABLED);
// return;
// } else if (token.equals("syntheticAccess") || token.equals("synthetic-access")) { //$NON-NLS-1$ //$NON-NLS-2$
// setSeverity(CompilerOptions.OPTION_ReportSyntheticAccessEmulation, severity, isEnabling);
// return;
// } else if (token.equals("staticReceiver")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportNonStaticAccessToStatic, severity, isEnabling);
// return;
// } else if (/*token.equals("over-sync") ||*/ token.equals("syncOverride")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportMissingSynchronizedOnInheritedMethod, severity, isEnabling);
// return;
// } else if (token.equals("semicolon")) {//$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportEmptyStatement, severity, isEnabling);
// return;
// } else if (token.equals("serial")) {//$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportMissingSerialVersion, severity, isEnabling);
// return;
// } else if (token.equals("suppress")) {//$NON-NLS-1$
// switch(severity) {
// case ProblemSeverities.Warning :
// this.options.put(
// CompilerOptions.OPTION_SuppressWarnings,
// isEnabling ? CompilerOptions.ENABLED : CompilerOptions.DISABLED);
// this.options.put(
// CompilerOptions.OPTION_SuppressOptionalErrors,
// CompilerOptions.DISABLED);
// break;
// case ProblemSeverities.Error :
// this.options.put(
// CompilerOptions.OPTION_SuppressWarnings,
// isEnabling ? CompilerOptions.ENABLED : CompilerOptions.DISABLED);
// this.options.put(
// CompilerOptions.OPTION_SuppressOptionalErrors,
// isEnabling ? CompilerOptions.ENABLED : CompilerOptions.DISABLED);
// }
// return;
// } else if (token.equals("static-access")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportNonStaticAccessToStatic, severity, isEnabling);
// setSeverity(CompilerOptions.OPTION_ReportIndirectStaticAccess, severity, isEnabling);
// return;
// } else if (token.equals("super")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportOverridingMethodWithoutSuperInvocation, severity, isEnabling);
// return;
// } else if (token.equals("static-method")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportMethodCanBeStatic, severity, isEnabling);
// return;
// }
// break;
// case 't' :
// if (token.startsWith("tasks")) { //$NON-NLS-1$
// String taskTags = Util.EMPTY_STRING;
// int start = token.indexOf('(');
// int end = token.indexOf(')');
// if (start >= 0 && end >= 0 && start < end){
// taskTags = token.substring(start+1, end).trim();
// taskTags = taskTags.replace('|',',');
// }
// if (taskTags.length() == 0){
// throw new IllegalArgumentException(this.bind("configure.invalidTaskTag", token)); //$NON-NLS-1$
// }
// this.options.put(
// CompilerOptions.OPTION_TaskTags,
// isEnabling ? taskTags : Util.EMPTY_STRING);
//
// setSeverity(CompilerOptions.OPTION_ReportTasks, severity, isEnabling);
// return;
// } else if (token.equals("typeHiding")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportTypeParameterHiding, severity, isEnabling);
// return;
// }
// break;
// case 'u' :
// if (token.equals("unusedLocal") || token.equals("unusedLocals")/*backward compatible*/) { //$NON-NLS-1$ //$NON-NLS-2$
// setSeverity(CompilerOptions.OPTION_ReportUnusedLocal, severity, isEnabling);
// return;
// } else if (token.equals("unusedArgument") || token.equals("unusedArguments")/*backward compatible*/) { //$NON-NLS-1$ //$NON-NLS-2$
// setSeverity(CompilerOptions.OPTION_ReportUnusedParameter, severity, isEnabling);
// return;
// } else if (token.equals("unusedImport") || token.equals("unusedImports")/*backward compatible*/) { //$NON-NLS-1$ //$NON-NLS-2$
// setSeverity(CompilerOptions.OPTION_ReportUnusedImport, severity, isEnabling);
// return;
// } else if (token.equals("unusedAllocation")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportUnusedObjectAllocation, severity, isEnabling);
// return;
// } else if (token.equals("unusedPrivate")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportUnusedPrivateMember, severity, isEnabling);
// return;
// } else if (token.equals("unusedLabel")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportUnusedLabel, severity, isEnabling);
// return;
// } else if (token.equals("uselessTypeCheck")) {//$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportUnnecessaryTypeCheck, severity, isEnabling);
// return;
// } else if (token.equals("unchecked") || token.equals("unsafe")) {//$NON-NLS-1$ //$NON-NLS-2$
// setSeverity(CompilerOptions.OPTION_ReportUncheckedTypeOperation, severity, isEnabling);
// return;
// } else if (token.equals("unnecessaryElse")) {//$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportUnnecessaryElse, severity, isEnabling);
// return;
// } else if (token.equals("unusedThrown")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportUnusedDeclaredThrownException, severity, isEnabling);
// return;
// } else if (token.equals("unqualifiedField") || token.equals("unqualified-field-access")) { //$NON-NLS-1$ //$NON-NLS-2$
// setSeverity(CompilerOptions.OPTION_ReportUnqualifiedFieldAccess, severity, isEnabling);
// return;
// } else if (token.equals("unused")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportUnusedLocal, severity, isEnabling);
// setSeverity(CompilerOptions.OPTION_ReportUnusedParameter, severity, isEnabling);
// setSeverity(CompilerOptions.OPTION_ReportUnusedImport, severity, isEnabling);
// setSeverity(CompilerOptions.OPTION_ReportUnusedPrivateMember, severity, isEnabling);
// setSeverity(CompilerOptions.OPTION_ReportUnusedDeclaredThrownException, severity, isEnabling);
// setSeverity(CompilerOptions.OPTION_ReportUnusedLabel, severity, isEnabling);
// setSeverity(CompilerOptions.OPTION_ReportUnusedTypeArgumentsForMethodInvocation, severity, isEnabling);
// setSeverity(CompilerOptions.OPTION_ReportRedundantSpecificationOfTypeArguments, severity, isEnabling);
// return;
// } else if (token.equals("unusedTypeArgs")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportUnusedTypeArgumentsForMethodInvocation, severity, isEnabling);
// setSeverity(CompilerOptions.OPTION_ReportRedundantSpecificationOfTypeArguments, severity, isEnabling);
// return;
// } else if (token.equals("unavoidableGenericProblems")) { //$NON-NLS-1$
// this.options.put(
// CompilerOptions.OPTION_ReportUnavoidableGenericTypeProblems,
// isEnabling ? CompilerOptions.ENABLED : CompilerOptions.DISABLED);
// return;
// }
// break;
// case 'v' :
// if (token.equals("varargsCast")) { //$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportVarargsArgumentNeedCast, severity, isEnabling);
// return;
// }
// break;
// case 'w' :
// if (token.equals("warningToken")) {//$NON-NLS-1$
// setSeverity(CompilerOptions.OPTION_ReportUnhandledWarningToken, severity, isEnabling);
// setSeverity(CompilerOptions.OPTION_ReportUnusedWarningToken, severity, isEnabling);
// return;
// }
// break;
// }
// String message = null;
// switch(severity) {
// case ProblemSeverities.Warning :
// message = this.bind("configure.invalidWarning", token); //$NON-NLS-1$
// break;
// case ProblemSeverities.Error :
// message = this.bind("configure.invalidError", token); //$NON-NLS-1$
// }
// addPendingErrors(message);
//}
///**
// * @deprecated - use {@link #initialize(PrintWriter, PrintWriter, boolean, Map, CompilationProgress)} instead
// * e.g. initialize(outWriter, errWriter, systemExit, null, null)
// */
//protected void initialize(PrintWriter outWriter, PrintWriter errWriter, boolean systemExit) {
// this.initialize(outWriter, errWriter, systemExit, null /* options */, null /* progress */);
//}
///**
// * @deprecated - use {@link #initialize(PrintWriter, PrintWriter, boolean, Map, CompilationProgress)} instead
// * e.g. initialize(outWriter, errWriter, systemExit, customDefaultOptions, null)
// */
//protected void initialize(PrintWriter outWriter, PrintWriter errWriter, boolean systemExit, Map customDefaultOptions) {
// this.initialize(outWriter, errWriter, systemExit, customDefaultOptions, null /* progress */);
//}
//protected void initialize(PrintWriter outWriter, PrintWriter errWriter, boolean systemExit, Map customDefaultOptions,
// CompilationProgress compilationProgress) {
// this.logger = new Logger(this, outWriter, errWriter);
// this.proceed = true;
// this.out = outWriter;
// this.err = errWriter;
// this.systemExitWhenFinished = systemExit;
// this.options = new CompilerOptions().getMap();
//
// this.progress = compilationProgress;
// if (customDefaultOptions != null) {
// this.didSpecifySource = customDefaultOptions.get(CompilerOptions.OPTION_Source) != null;
// this.didSpecifyTarget = customDefaultOptions.get(CompilerOptions.OPTION_TargetPlatform) != null;
// for (Iterator iter = customDefaultOptions.entrySet().iterator(); iter.hasNext();) {
// Map.Entry entry = (Map.Entry) iter.next();
// this.options.put(entry.getKey(), entry.getValue());
// }
// } else {
// this.didSpecifySource = false;
// this.didSpecifyTarget = false;
// }
// this.classNames = null;
//}
//protected void initializeAnnotationProcessorManager() {
// try {
// Class c = Class.forName("org.eclipse.jdt.internal.compiler.apt.dispatch.BatchAnnotationProcessorManager"); //$NON-NLS-1$
// AbstractAnnotationProcessorManager annotationManager = (AbstractAnnotationProcessorManager) c.newInstance();
// annotationManager.configure(this, this.expandedCommandLine);
// annotationManager.setErr(this.err);
// annotationManager.setOut(this.out);
// this.batchCompiler.annotationProcessorManager = annotationManager;
// } catch (ClassNotFoundException e) {
// // ignore
// } catch (InstantiationException e) {
// // should not happen
// throw new org.eclipse.jdt.internal.compiler.problem.AbortCompilation();
// } catch (IllegalAccessException e) {
// // should not happen
// throw new org.eclipse.jdt.internal.compiler.problem.AbortCompilation();
// } catch(UnsupportedClassVersionError e) {
// // report a warning
// this.logger.logIncorrectVMVersionForAnnotationProcessing();
// }
//}
//
//// Dump classfiles onto disk for all compilation units that where successful
//// and do not carry a -d none spec, either directly or inherited from Main.
//public void outputClassFiles(CompilationResult unitResult) {
// if (!((unitResult == null) || (unitResult.hasErrors() && !this.proceedOnError))) {
// ClassFile[] classFiles = unitResult.getClassFiles();
// String currentDestinationPath = null;
// boolean generateClasspathStructure = false;
// CompilationUnit compilationUnit =
// (CompilationUnit) unitResult.compilationUnit;
// if (compilationUnit.destinationPath == null) {
// if (this.destinationPath == null) {
// currentDestinationPath =
// extractDestinationPathFromSourceFile(unitResult);
// } else if (this.destinationPath != NONE) {
// currentDestinationPath = this.destinationPath;
// generateClasspathStructure = true;
// } // else leave currentDestinationPath null
// } else if (compilationUnit.destinationPath != NONE) {
// currentDestinationPath = compilationUnit.destinationPath;
// generateClasspathStructure = true;
// } // else leave currentDestinationPath null
// if (currentDestinationPath != null) {
// for (int i = 0, fileCount = classFiles.length; i < fileCount; i++) {
// // retrieve the key and the corresponding classfile
// ClassFile classFile = classFiles[i];
// char[] filename = classFile.fileName();
// int length = filename.length;
// char[] relativeName = new char[length + 6];
// System.arraycopy(filename, 0, relativeName, 0, length);
// System.arraycopy(SuffixConstants.SUFFIX_class, 0, relativeName, length, 6);
// CharOperation.replace(relativeName, '/', File.separatorChar);
// String relativeStringName = new String(relativeName);
// try {
// if (this.compilerOptions.verbose)
// this.out.println(
// Messages.bind(
// Messages.compilation_write,
// new String[] {
// String.valueOf(this.exportedClassFilesCounter+1),
// relativeStringName
// }));
// Util.writeToDisk(
// generateClasspathStructure,
// currentDestinationPath,
// relativeStringName,
// classFile);
// this.logger.logClassFile(
// generateClasspathStructure,
// currentDestinationPath,
// relativeStringName);
// this.exportedClassFilesCounter++;
// } catch (IOException e) {
// this.logger.logNoClassFileCreated(currentDestinationPath, relativeStringName, e);
// }
// }
// this.batchCompiler.lookupEnvironment.releaseClassFiles(classFiles);
// }
// }
//}
///*
// * Low-level API performing the actual compilation
// */
//public void performCompilation() {
//
// this.startTime = System.currentTimeMillis();
//
// FileSystem environment = getLibraryAccess();
// this.compilerOptions = new CompilerOptions(this.options);
// this.compilerOptions.performMethodsFullRecovery = false;
// this.compilerOptions.performStatementsRecovery = false;
// this.batchCompiler =
// new Compiler(
// environment,
// getHandlingPolicy(),
// this.compilerOptions,
// getBatchRequestor(),
// getProblemFactory(),
// this.out,
// this.progress);
// this.batchCompiler.remainingIterations = this.maxRepetition-this.currentRepetition/*remaining iterations including this one*/;
// // temporary code to allow the compiler to revert to a single thread
// String setting = System.getProperty("jdt.compiler.useSingleThread"); //$NON-NLS-1$
// this.batchCompiler.useSingleThread = setting != null && setting.equals("true"); //$NON-NLS-1$
//
// if (this.compilerOptions.complianceLevel >= ClassFileConstants.JDK1_6
// && this.compilerOptions.processAnnotations) {
// if (checkVMVersion(ClassFileConstants.JDK1_6)) {
// initializeAnnotationProcessorManager();
// if (this.classNames != null) {
// this.batchCompiler.setBinaryTypes(processClassNames(this.batchCompiler.lookupEnvironment));
// }
// } else {
// // report a warning
// this.logger.logIncorrectVMVersionForAnnotationProcessing();
// }
// }
//
// // set the non-externally configurable options.
// this.compilerOptions.verbose = this.verbose;
// this.compilerOptions.produceReferenceInfo = this.produceRefInfo;
// try {
// this.logger.startLoggingSources();
// this.batchCompiler.compile(getCompilationUnits());
// } finally {
// this.logger.endLoggingSources();
// }
//
// if (this.extraProblems != null) {
// loggingExtraProblems();
// this.extraProblems = null;
// }
// if (this.compilerStats != null) {
// this.compilerStats[this.currentRepetition] = this.batchCompiler.stats;
// }
// this.logger.printStats();
//
// // cleanup
// environment.cleanup();
//}
//protected void loggingExtraProblems() {
// this.logger.loggingExtraProblems(this);
//}
//public void printUsage() {
// printUsage("misc.usage"); //$NON-NLS-1$
//}
//private void printUsage(String sectionID) {
// this.logger.logUsage(
// this.bind(
// sectionID,
// new String[] {
// System.getProperty("path.separator"), //$NON-NLS-1$
// this.bind("compiler.name"), //$NON-NLS-1$
// this.bind("compiler.version"), //$NON-NLS-1$
// this.bind("compiler.copyright") //$NON-NLS-1$
// }));
// this.logger.flush();
//}
//private ReferenceBinding[] processClassNames(LookupEnvironment environment) {
// // check for .class file presence in case of apt processing
// int length = this.classNames.length;
// ReferenceBinding[] referenceBindings = new ReferenceBinding[length];
// for (int i = 0; i < length; i++) {
// String currentName = this.classNames[i];
// char[][] compoundName = null;
// if (currentName.indexOf('.') != -1) {
// // consider names with '.' as fully qualified names
// char[] typeName = currentName.toCharArray();
// compoundName = CharOperation.splitOn('.', typeName);
// } else {
// compoundName = new char[][] { currentName.toCharArray() };
// }
// ReferenceBinding type = environment.getType(compoundName);
// if (type != null && type.isValidBinding()) {
// if (type.isBinaryBinding()) {
// referenceBindings[i] = type;
// }
// } else {
// throw new IllegalArgumentException(
// this.bind("configure.invalidClassName", currentName));//$NON-NLS-1$
// }
// }
// return referenceBindings;
//}
///*
// * External API
// */
//public void processPathEntries(final int defaultSize, final ArrayList paths,
// final String currentPath, String customEncoding, boolean isSourceOnly,
// boolean rejectDestinationPathOnJars) {
// String currentClasspathName = null;
// String currentDestinationPath = null;
// ArrayList currentRuleSpecs = new ArrayList(defaultSize);
// StringTokenizer tokenizer = new StringTokenizer(currentPath,
// File.pathSeparator + "[]", true); //$NON-NLS-1$
// ArrayList tokens = new ArrayList();
// while (tokenizer.hasMoreTokens()) {
// tokens.add(tokenizer.nextToken());
// }
// // state machine
// final int start = 0;
// final int readyToClose = 1;
// // 'path' 'path1[rule];path2'
// final int readyToCloseEndingWithRules = 2;
// // 'path[rule]' 'path1;path2[rule]'
// final int readyToCloseOrOtherEntry = 3;
// // 'path[rule];' 'path;' 'path1;path2;'
// final int rulesNeedAnotherRule = 4;
// // 'path[rule1;'
// final int rulesStart = 5;
// // 'path[' 'path1;path2['
// final int rulesReadyToClose = 6;
// // 'path[rule' 'path[rule1;rule2'
// final int destinationPathReadyToClose = 7;
// // 'path[-d bin'
// final int readyToCloseEndingWithDestinationPath = 8;
// // 'path[-d bin]' 'path[rule][-d bin]'
// final int destinationPathStart = 9;
// // 'path[rule]['
// final int bracketOpened = 10;
// // '.*[.*'
// final int bracketClosed = 11;
// // '.*([.*])+'
//
// final int error = 99;
// int state = start;
// String token = null;
// int cursor = 0, tokensNb = tokens.size(), bracket = -1;
// while (cursor < tokensNb && state != error) {
// token = (String) tokens.get(cursor++);
// if (token.equals(File.pathSeparator)) {
// switch (state) {
// case start:
// case readyToCloseOrOtherEntry:
// case bracketOpened:
// break;
// case readyToClose:
// case readyToCloseEndingWithRules:
// case readyToCloseEndingWithDestinationPath:
// state = readyToCloseOrOtherEntry;
// addNewEntry(paths, currentClasspathName, currentRuleSpecs,
// customEncoding, currentDestinationPath, isSourceOnly,
// rejectDestinationPathOnJars);
// currentRuleSpecs.clear();
// break;
// case rulesReadyToClose:
// state = rulesNeedAnotherRule;
// break;
// case destinationPathReadyToClose:
// throw new IllegalArgumentException(
// this.bind("configure.incorrectDestinationPathEntry", //$NON-NLS-1$
// currentPath));
// case bracketClosed:
// cursor = bracket + 1;
// state = rulesStart;
// break;
// default:
// state = error;
// }
// } else if (token.equals("[")) { //$NON-NLS-1$
// switch (state) {
// case start:
// currentClasspathName = ""; //$NON-NLS-1$
// //$FALL-THROUGH$
// case readyToClose:
// bracket = cursor - 1;
// //$FALL-THROUGH$
// case bracketClosed:
// state = bracketOpened;
// break;
// case readyToCloseEndingWithRules:
// state = destinationPathStart;
// break;
// case readyToCloseEndingWithDestinationPath:
// state = rulesStart;
// break;
// case bracketOpened:
// default:
// state = error;
// }
// } else if (token.equals("]")) { //$NON-NLS-1$
// switch (state) {
// case rulesReadyToClose:
// state = readyToCloseEndingWithRules;
// break;
// case destinationPathReadyToClose:
// state = readyToCloseEndingWithDestinationPath;
// break;
// case bracketOpened:
// state = bracketClosed;
// break;
// case bracketClosed:
// default:
// state = error;
// }
// } else {
// // regular word
// switch (state) {
// case start:
// case readyToCloseOrOtherEntry:
// state = readyToClose;
// currentClasspathName = token;
// break;
// case rulesStart:
// if (token.startsWith("-d ")) { //$NON-NLS-1$
// if (currentDestinationPath != null) {
// throw new IllegalArgumentException(
// this.bind("configure.duplicateDestinationPathEntry", //$NON-NLS-1$
// currentPath));
// }
// currentDestinationPath = token.substring(3).trim();
// state = destinationPathReadyToClose;
// break;
// } // else we proceed with a rule
// //$FALL-THROUGH$
// case rulesNeedAnotherRule:
// if (currentDestinationPath != null) {
// throw new IllegalArgumentException(
// this.bind("configure.accessRuleAfterDestinationPath", //$NON-NLS-1$
// currentPath));
// }
// state = rulesReadyToClose;
// currentRuleSpecs.add(token);
// break;
// case destinationPathStart:
// if (!token.startsWith("-d ")) { //$NON-NLS-1$
// state = error;
// } else {
// currentDestinationPath = token.substring(3).trim();
// state = destinationPathReadyToClose;
// }
// break;
// case bracketClosed:
// for (int i = bracket; i < cursor ; i++) {
// currentClasspathName += (String) tokens.get(i);
// }
// state = readyToClose;
// break;
// case bracketOpened:
// break;
// default:
// state = error;
// }
// }
// if (state == bracketClosed && cursor == tokensNb) {
// cursor = bracket + 1;
// state = rulesStart;
// }
// }
// switch(state) {
// case readyToCloseOrOtherEntry:
// break;
// case readyToClose:
// case readyToCloseEndingWithRules:
// case readyToCloseEndingWithDestinationPath:
// addNewEntry(paths, currentClasspathName, currentRuleSpecs,
// customEncoding, currentDestinationPath, isSourceOnly,
// rejectDestinationPathOnJars);
// break;
// case bracketOpened:
// case bracketClosed:
// default :
// // we go on anyway
// if (currentPath.length() != 0) {
// addPendingErrors(this.bind("configure.incorrectClasspath", currentPath));//$NON-NLS-1$
// }
// }
//}
//
//private int processPaths(String[] args, int index, String currentArg, ArrayList paths) {
// int localIndex = index;
// int count = 0;
// for (int i = 0, max = currentArg.length(); i < max; i++) {
// switch(currentArg.charAt(i)) {
// case '[' :
// count++;
// break;
// case ']' :
// count--;
// break;
// }
// }
// if (count == 0) {
// paths.add(currentArg);
// } else if (count > 1) {
// throw new IllegalArgumentException(
// this.bind("configure.unexpectedBracket", //$NON-NLS-1$
// currentArg));
// } else {
// StringBuffer currentPath = new StringBuffer(currentArg);
// while (true) {
// if (localIndex >= args.length) {
// throw new IllegalArgumentException(
// this.bind("configure.unexpectedBracket", //$NON-NLS-1$
// currentArg));
// }
// localIndex++;
// String nextArg = args[localIndex];
// for (int i = 0, max = nextArg.length(); i < max; i++) {
// switch(nextArg.charAt(i)) {
// case '[' :
// if (count > 1) {
// throw new IllegalArgumentException(
// this.bind("configure.unexpectedBracket", //$NON-NLS-1$
// nextArg));
// }
// count++;
// break;
// case ']' :
// count--;
// break;
// }
// }
// if (count == 0) {
// currentPath.append(' ');
// currentPath.append(nextArg);
// paths.add(currentPath.toString());
// return localIndex - index;
// } else if (count < 0) {
// throw new IllegalArgumentException(
// this.bind("configure.unexpectedBracket", //$NON-NLS-1$
// nextArg));
// } else {
// currentPath.append(' ');
// currentPath.append(nextArg);
// }
// }
//
// }
// return localIndex - index;
//}
//private int processPaths(String[] args, int index, String currentArg, String[] paths) {
// int localIndex = index;
// int count = 0;
// for (int i = 0, max = currentArg.length(); i < max; i++) {
// switch(currentArg.charAt(i)) {
// case '[' :
// count++;
// break;
// case ']' :
// count--;
// break;
// }
// }
// if (count == 0) {
// paths[0] = currentArg;
// } else {
// StringBuffer currentPath = new StringBuffer(currentArg);
// while (true) {
// localIndex++;
// if (localIndex >= args.length) {
// throw new IllegalArgumentException(
// this.bind("configure.unexpectedBracket", //$NON-NLS-1$
// currentArg));
// }
// String nextArg = args[localIndex];
// for (int i = 0, max = nextArg.length(); i < max; i++) {
// switch(nextArg.charAt(i)) {
// case '[' :
// if (count > 1) {
// throw new IllegalArgumentException(
// this.bind("configure.unexpectedBracket", //$NON-NLS-1$
// currentArg));
// }
// count++;
// break;
// case ']' :
// count--;
// break;
// }
// }
// if (count == 0) {
// currentPath.append(' ');
// currentPath.append(nextArg);
// paths[0] = currentPath.toString();
// return localIndex - index;
// } else if (count < 0) {
// throw new IllegalArgumentException(
// this.bind("configure.unexpectedBracket", //$NON-NLS-1$
// currentArg));
// } else {
// currentPath.append(' ');
// currentPath.append(nextArg);
// }
// }
//
// }
// return localIndex - index;
//}
///**
// * Creates a NLS catalog for the given locale.
// */
//public void relocalize() {
// relocalize(Locale.getDefault());
//}
//
//private void relocalize(Locale locale) {
// this.compilerLocale = locale;
// try {
// this.bundle = ResourceBundleFactory.getBundle(locale);
// } catch(MissingResourceException e) {
// System.out.println("Missing resource : " + Main.bundleName.replace('.', '/') + ".properties for locale " + locale);
//$NON-NLS-1$//$NON-NLS-2$
// throw e;
// }
//}
///*
// * External API
// */
//public void setDestinationPath(String dest) {
// this.destinationPath = dest;
//}
///*
// * External API
// */
//public void setLocale(Locale locale) {
// relocalize(locale);
//}
///*
// * External API
// */
//protected void setPaths(ArrayList bootclasspaths,
// String sourcepathClasspathArg,
// ArrayList sourcepathClasspaths,
// ArrayList classpaths,
// ArrayList extdirsClasspaths,
// ArrayList endorsedDirClasspaths,
// String customEncoding) {
//
// // process bootclasspath, classpath and sourcepaths
// bootclasspaths = handleBootclasspath(bootclasspaths, customEncoding);
//
// classpaths = handleClasspath(classpaths, customEncoding);
//
// if (sourcepathClasspathArg != null) {
// processPathEntries(DEFAULT_SIZE_CLASSPATH, sourcepathClasspaths,
// sourcepathClasspathArg, customEncoding, true, false);
// }
//
// /*
// * Feed endorsedDirClasspath according to:
// * - -extdirs first if present;
// * - else java.ext.dirs if defined;
// * - else default extensions directory for the platform.
// */
// extdirsClasspaths = handleExtdirs(extdirsClasspaths);
//
// endorsedDirClasspaths = handleEndorseddirs(endorsedDirClasspaths);
//
// /*
// * Concatenate classpath entries
// * We put the bootclasspath at the beginning of the classpath
// * entries, followed by the extension libraries, followed by
// * the sourcepath followed by the classpath. All classpath
// * entries are searched for both sources and binaries except
// * the sourcepath entries which are searched for sources only.
// */
// bootclasspaths.addAll(endorsedDirClasspaths);
// bootclasspaths.addAll(extdirsClasspaths);
// bootclasspaths.addAll(sourcepathClasspaths);
// bootclasspaths.addAll(classpaths);
// classpaths = bootclasspaths;
// classpaths = FileSystem.ClasspathNormalizer.normalize(classpaths);
// this.checkedClasspaths = new FileSystem.Classpath[classpaths.size()];
// classpaths.toArray(this.checkedClasspaths);
// this.logger.logClasspath(this.checkedClasspaths);
//}
//protected void validateOptions(boolean didSpecifyCompliance) {
// if (didSpecifyCompliance) {
// Object version = this.options.get(CompilerOptions.OPTION_Compliance);
// if (CompilerOptions.VERSION_1_3.equals(version)) {
// if (!this.didSpecifySource) this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_3);
// if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_1);
// } else if (CompilerOptions.VERSION_1_4.equals(version)) {
// if (this.didSpecifySource) {
// Object source = this.options.get(CompilerOptions.OPTION_Source);
// if (CompilerOptions.VERSION_1_3.equals(source)) {
// if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_2);
// } else if (CompilerOptions.VERSION_1_4.equals(source)) {
// if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_4);
// }
// } else {
// this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_3);
// if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_2);
// }
// } else if (CompilerOptions.VERSION_1_5.equals(version)) {
// if (this.didSpecifySource) {
// Object source = this.options.get(CompilerOptions.OPTION_Source);
// if (CompilerOptions.VERSION_1_3.equals(source)
// || CompilerOptions.VERSION_1_4.equals(source)) {
// if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_4);
// } else if (CompilerOptions.VERSION_1_5.equals(source)) {
// if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_5);
// }
// } else {
// this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_5);
// if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_5);
// }
// } else if (CompilerOptions.VERSION_1_6.equals(version)) {
// if (this.didSpecifySource) {
// Object source = this.options.get(CompilerOptions.OPTION_Source);
// if (CompilerOptions.VERSION_1_3.equals(source)
// || CompilerOptions.VERSION_1_4.equals(source)) {
// if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_4);
// } else if (CompilerOptions.VERSION_1_5.equals(source)
// || CompilerOptions.VERSION_1_6.equals(source)) {
// if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_6);
// }
// } else {
// this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_6);
// if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_6);
// }
// } else if (CompilerOptions.VERSION_1_7.equals(version)) {
// if (this.didSpecifySource) {
// Object source = this.options.get(CompilerOptions.OPTION_Source);
// if (CompilerOptions.VERSION_1_3.equals(source)
// || CompilerOptions.VERSION_1_4.equals(source)) {
// if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_4);
// } else if (CompilerOptions.VERSION_1_5.equals(source)
// || CompilerOptions.VERSION_1_6.equals(source)) {
// if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_6);
// } else if (CompilerOptions.VERSION_1_7.equals(source)) {
// if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_7);
// }
// } else {
// this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_7);
// if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_7);
// }
// }
// } else if (this.didSpecifySource) {
// Object version = this.options.get(CompilerOptions.OPTION_Source);
// // default is source 1.3 target 1.2 and compliance 1.4
// if (CompilerOptions.VERSION_1_4.equals(version)) {
// if (!didSpecifyCompliance) this.options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_4);
// if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_4);
// } else if (CompilerOptions.VERSION_1_5.equals(version)) {
// if (!didSpecifyCompliance) this.options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5);
// if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_5);
// } else if (CompilerOptions.VERSION_1_6.equals(version)) {
// if (!didSpecifyCompliance) this.options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_6);
// if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_6);
// } else if (CompilerOptions.VERSION_1_7.equals(version)) {
// if (!didSpecifyCompliance) this.options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_7);
// if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_7);
// }
// }
//
// final Object sourceVersion = this.options.get(CompilerOptions.OPTION_Source);
// final Object compliance = this.options.get(CompilerOptions.OPTION_Compliance);
// if (sourceVersion.equals(CompilerOptions.VERSION_1_7)
// && CompilerOptions.versionToJdkLevel(compliance) < ClassFileConstants.JDK1_7) {
// // compliance must be 1.7 if source is 1.7
// throw new IllegalArgumentException(this.bind("configure.incompatibleComplianceForSource", (String)this.options.get(CompilerOptions
// .OPTION_Compliance), CompilerOptions.VERSION_1_7)); //$NON-NLS-1$
// } else if (sourceVersion.equals(CompilerOptions.VERSION_1_6)
// && CompilerOptions.versionToJdkLevel(compliance) < ClassFileConstants.JDK1_6) {
// // compliance must be 1.6 if source is 1.6
// throw new IllegalArgumentException(this.bind("configure.incompatibleComplianceForSource", (String)this.options.get(CompilerOptions
// .OPTION_Compliance), CompilerOptions.VERSION_1_6)); //$NON-NLS-1$
// } else if (sourceVersion.equals(CompilerOptions.VERSION_1_5)
// && CompilerOptions.versionToJdkLevel(compliance) < ClassFileConstants.JDK1_5) {
// // compliance must be 1.5 if source is 1.5
// throw new IllegalArgumentException(this.bind("configure.incompatibleComplianceForSource", (String)this.options.get(CompilerOptions
// .OPTION_Compliance), CompilerOptions.VERSION_1_5)); //$NON-NLS-1$
// } else if (sourceVersion.equals(CompilerOptions.VERSION_1_4)
// && CompilerOptions.versionToJdkLevel(compliance) < ClassFileConstants.JDK1_4) {
// // compliance must be 1.4 if source is 1.4
// throw new IllegalArgumentException(this.bind("configure.incompatibleComplianceForSource", (String)this.options.get(CompilerOptions
// .OPTION_Compliance), CompilerOptions.VERSION_1_4)); //$NON-NLS-1$
// }
//
// // check and set compliance/source/target compatibilities
// if (this.didSpecifyTarget) {
// final Object targetVersion = this.options.get(CompilerOptions.OPTION_TargetPlatform);
// // tolerate jsr14 target
// if (CompilerOptions.VERSION_JSR14.equals(targetVersion)) {
// // expecting source >= 1.5
// if (CompilerOptions.versionToJdkLevel(sourceVersion) < ClassFileConstants.JDK1_5) {
// throw new IllegalArgumentException(this.bind("configure.incompatibleTargetForGenericSource", (String) targetVersion,
// (String) sourceVersion)); //$NON-NLS-1$
// }
// } else if (CompilerOptions.VERSION_CLDC1_1.equals(targetVersion)) {
// if (this.didSpecifySource && CompilerOptions.versionToJdkLevel(sourceVersion) >= ClassFileConstants.JDK1_4) {
// throw new IllegalArgumentException(this.bind("configure.incompatibleSourceForCldcTarget", (String) targetVersion,
// (String) sourceVersion)); //$NON-NLS-1$
// }
// if (CompilerOptions.versionToJdkLevel(compliance) >= ClassFileConstants.JDK1_5) {
// throw new IllegalArgumentException(this.bind("configure.incompatibleComplianceForCldcTarget", (String) targetVersion,
// (String) sourceVersion)); //$NON-NLS-1$
// }
// } else {
// // target must be 1.7 if source is 1.7
// if (CompilerOptions.versionToJdkLevel(sourceVersion) >= ClassFileConstants.JDK1_7
// && CompilerOptions.versionToJdkLevel(targetVersion) < ClassFileConstants.JDK1_7){
// throw new IllegalArgumentException(this.bind("configure.incompatibleTargetForSource", (String) targetVersion,
// CompilerOptions.VERSION_1_7)); //$NON-NLS-1$
// }
// // target must be 1.6 if source is 1.6
// if (CompilerOptions.versionToJdkLevel(sourceVersion) >= ClassFileConstants.JDK1_6
// && CompilerOptions.versionToJdkLevel(targetVersion) < ClassFileConstants.JDK1_6){
// throw new IllegalArgumentException(this.bind("configure.incompatibleTargetForSource", (String) targetVersion,
// CompilerOptions.VERSION_1_6)); //$NON-NLS-1$
// }
// // target must be 1.5 if source is 1.5
// if (CompilerOptions.versionToJdkLevel(sourceVersion) >= ClassFileConstants.JDK1_5
// && CompilerOptions.versionToJdkLevel(targetVersion) < ClassFileConstants.JDK1_5){
// throw new IllegalArgumentException(this.bind("configure.incompatibleTargetForSource", (String) targetVersion,
// CompilerOptions.VERSION_1_5)); //$NON-NLS-1$
// }
// // target must be 1.4 if source is 1.4
// if (CompilerOptions.versionToJdkLevel(sourceVersion) >= ClassFileConstants.JDK1_4
// && CompilerOptions.versionToJdkLevel(targetVersion) < ClassFileConstants.JDK1_4){
// throw new IllegalArgumentException(this.bind("configure.incompatibleTargetForSource", (String) targetVersion,
// CompilerOptions.VERSION_1_4)); //$NON-NLS-1$
// }
// // target cannot be greater than compliance level
// if (CompilerOptions.versionToJdkLevel(compliance) < CompilerOptions.versionToJdkLevel(targetVersion)){
// throw new IllegalArgumentException(this.bind("configure.incompatibleComplianceForTarget", (String)this.options.get(CompilerOptions
// .OPTION_Compliance), (String) targetVersion)); //$NON-NLS-1$
// }
// }
// }
//}
}