protected void report(Environment environment, CategorizedProblem problem) { if (problem == null) { throw new IllegalArgumentException("problem cannot be null"); } File file = new File(new String(problem.getOriginatingFileName())); String filename = file.getAbsolutePath(); String message = problem.getMessage() + " at " + filename + ":" + problem.getSourceLineNumber(); if (problem.isError()) { if (!environment.getNoClasspath()) { // by default, compilation errors are notified as exception throw new ModelBuildingException(message); } else { // in noclasspath mode, errors are only reported // but undefined import, type, and name errors are irrelevant int problemId = problem.getID(); if (problemId != IProblem.UndefinedType && problemId != IProblem.UndefinedName && problemId != IProblem.ImportNotFound) { environment.report(null, Level.WARN, message); } } } }
@Override public void acceptError(CategorizedProblem error) { error.setSourceLineNumber(error.getSourceLineNumber() - CodeSnippetToCuMapper.this.lineNumberOffset); error.setSourceStart(error.getSourceStart() - CodeSnippetToCuMapper.this.startPosOffset); error.setSourceEnd(error.getSourceEnd() - CodeSnippetToCuMapper.this.startPosOffset); originalRequestor.acceptError(error); } @Override
@Override protected void report(Environment environment, CategorizedProblem problem) { if (problem.isError()) { throw new SnippetCompilationError(problem.getMessage() + "at line " + problem.getSourceLineNumber()); } }
/** * report a compilation problem (callback for JDT) */ public void reportProblem(CategorizedProblem pb) { if (pb == null) { return; } // we can not accept this problem, even in noclasspath mode // otherwise a nasty null pointer exception occurs later if (pb.getID() == IProblem.DuplicateTypes) { if (getFactory().getEnvironment().isIgnoreDuplicateDeclarations() == false) { throw new ModelBuildingException(pb.getMessage()); } } else { probs.add(pb); } }
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 : (problem.isInfo() ? Logger.INFO : Logger.WARNING)); this.parameters.put(Logger.PROBLEM_LINE, Integer.valueOf(problem.getSourceLineNumber())); this.parameters.put(Logger.PROBLEM_SOURCE_START, Integer.valueOf(sourceStart)); this.parameters.put(Logger.PROBLEM_SOURCE_END, Integer.valueOf(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); } /**
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, Integer.valueOf(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 : (problem.isInfo() ? Logger.INFO : Logger.WARNING)); this.parameters.put(Logger.PROBLEM_LINE, Integer.valueOf(problem.getSourceLineNumber())); this.parameters.put(Logger.PROBLEM_SOURCE_START, Integer.valueOf(sourceStart)); this.parameters.put(Logger.PROBLEM_SOURCE_END, Integer.valueOf(sourceEnd)); this.parameters.put(Logger.PROBLEM_CATEGORY_ID, Integer.valueOf(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) {
for (int i = 0, l = tasks.length; i < l; i++) { CategorizedProblem task = tasks[i]; if (task.getID() == IProblem.Task) { IMarker marker = resource.createMarker(IJavaModelMarker.TASK_MARKER); Integer priority = P_NORMAL; String compilerPriority = task.getArguments()[2]; if (JavaCore.COMPILER_TASK_PRIORITY_HIGH.equals(compilerPriority)) priority = P_HIGH; int standardLength = attributeNames.length; String[] allNames = attributeNames; String[] extraAttributeNames = task.getExtraMarkerAttributeNames(); int extraLength = extraAttributeNames == null ? 0 : extraAttributeNames.length; if (extraLength > 0) { allValues[index++] = task.getMessage(); allValues[index++] = priority; allValues[index++] = Integer.valueOf(task.getID()); allValues[index++] = Integer.valueOf(task.getSourceStart()); allValues[index++] = Integer.valueOf(task.getSourceEnd() + 1); allValues[index++] = Integer.valueOf(task.getSourceLineNumber()); allValues[index++] = Boolean.FALSE; allValues[index++] = JavaBuilder.SOURCE_ID; System.arraycopy(task.getExtraMarkerAttributeValues(), 0, allValues, index, extraLength);
for (int i = 0; i < problems.length; i++) { CategorizedProblem problem = problems[i]; String msg = problem.getMessage(); String fileName = CharOperation.charToString(problem.getOriginatingFileName()); int line = problem.getSourceLineNumber(); int pos = problem.getSourceStart(); if (problem.isError()) { this.errorHandler.onError(msg, fileName, line, pos); } else if (problem.isWarning()) { this.errorHandler.onWarning(msg, fileName, line, pos); } else {
/** * @param problem CategorizedProblem * @return String */ public final String localizedMessage(CategorizedProblem problem) { return getLocalizedMessage(problem.getID(), problem.getArguments()); }
public boolean hasErrors() { if (this.problems != null) for (int i = 0; i < this.problemCount; i++) { if (this.problems[i].isError()) return true; } return false; }
public static EclipseDiagnostic newInstance(CategorizedProblem problem, DefaultProblemFactory factory) { if(problem instanceof DefaultProblem) return newInstanceFromDefaultProblem((DefaultProblem) problem, factory); return new EclipseDiagnostic(getKind(problem), problem.getID(), problem.getArguments(), problem.getOriginatingFileName(), factory); }
@Override protected void report(Environment environment, CategorizedProblem problem) { throw new SnippetCompilationError(problem.getMessage() + "at line " + problem.getSourceLineNumber()); }
public boolean hasWarnings() { if (this.problems != null) for (int i = 0; i < this.problemCount; i++) { if (this.problems[i].isWarning()) return true; } return false; }
@Override public String getMessage(Locale locale) { return problem.getMessage(); } @Override
protected boolean hasAlreadyDefinedType(CompilationUnitDeclaration parsedUnit) { CompilationResult result = parsedUnit.compilationResult; if (result == null) return false; for (int i = 0; i < result.problemCount; i++) if (result.problems[i].getID() == IProblem.DuplicateTypes) return true; return false; } /**
protected void backupAptProblems() { if (this.unitsToProcess == null) return; for (int i = 0; i < this.totalUnits; i++) { CompilationUnitDeclaration unitDecl = this.unitsToProcess[i]; CompilationResult result = unitDecl.compilationResult; if (result != null && result.hasErrors()) { CategorizedProblem[] errors = result.getErrors(); for (CategorizedProblem problem : errors) { if (problem.getCategoryID() == CategorizedProblem.CAT_UNSPECIFIED) { if (this.aptProblems == null) { this.aptProblems = new HashMap<>(); } APTProblem[] problems = this.aptProblems.get(new String(unitDecl.getFileName())); if (problems == null) { this.aptProblems.put( new String(unitDecl.getFileName()), new APTProblem[] { new APTProblem(problem, result.getContext(problem)) }); } else { APTProblem[] temp = new APTProblem[problems.length + 1]; System.arraycopy(problems, 0, temp, 0, problems.length); temp[problems.length] = new APTProblem(problem, result.getContext(problem)); this.aptProblems.put(new String(unitDecl.getFileName()), temp); } } } } } }
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 : (problem.isInfo() ? Logger.INFO : Logger.WARNING)); this.parameters.put(Logger.PROBLEM_LINE, Integer.valueOf(problem.getSourceLineNumber())); this.parameters.put(Logger.PROBLEM_SOURCE_START, Integer.valueOf(sourceStart)); this.parameters.put(Logger.PROBLEM_SOURCE_END, Integer.valueOf(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 CategorizedProblem * @return String */ public final String localizedMessage(CategorizedProblem problem) { return getLocalizedMessage(problem.getID(), problem.getArguments()); }
public void removeProblem(CategorizedProblem problem) { if (this.problemsMap != null) this.problemsMap.remove(problem); if (this.firstErrors != null) this.firstErrors.remove(problem); if (problem.isError()) { this.numberOfErrors--; } this.problemCount--; } public CompilationResult tagAsAccepted(){