blob: a6bb739626719172be20eb85a6e555aa223246d7 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2009 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.internal.compiler;
import java.util.Locale;
import org.eclipse.jdt.core.compiler.CategorizedProblem;
/*
* Factory used from inside the compiler to build the actual problems
* which are handed back in the compilation result.
*
* This allows sharing the internal problem representation with the environment.
*
* Note: The factory is responsible for computing and storing a localized error message.
*/
public interface IProblemFactory {
CategorizedProblem createProblem(
char[] originatingFileName,
int problemId,
String[] problemArguments,
String[] messageArguments, // shorter versions of the problemArguments
int severity,
int startPosition,
int endPosition,
int lineNumber,
int columnNumber);
/**
* Answer a new IProblem created according to the parameters values.
* @param originatingFileName the name of the file from which the problem is originated
* @param problemId the problem id
* @param problemArguments the fully qualified arguments recorded inside the problem
* @param elaborationId the message elaboration id (0 for problems that have no message elaboration)
* @param messageArguments the arguments needed to set the error message (shorter names than problemArguments ones)
* @param severity the severity of the problem
* @param startPosition the start position of the problem
* @param endPosition the end position of the problem
* @param lineNumber the line on which the problem occurred
* @return a new IProblem created according to the parameters values.
*/
CategorizedProblem createProblem(
char[] originatingFileName,
int problemId,
String[] problemArguments,
int elaborationId,
String[] messageArguments, // shorter versions of the problemArguments
int severity,
int startPosition,
int endPosition,
int lineNumber,
int columnNumber);
Locale getLocale();
String getLocalizedMessage(int problemId, String[] messageArguments);
/**
* Inject the supplied message arguments into a localized template
* elaborated from the supplied problem id and an optional elaboration id
* and return the resulting message. The arguments number should match the
* highest placeholder index in the template. When an elaboration id is
* used, the template matching that elaboration id replaces '{0}' into the
* template matching the problem id before the message arguments are
* injected.
* @param problemId the problem id taken from
* {@link org.eclipse.jdt.core.compiler.IProblem} constants
* @param elaborationId 0 if the considered problem has no elaboration, a
* valid elaboration id else
* @param messageArguments the arguments to inject into the template
* @return a localized message elaborated from the supplied problem id,
* elaboration id and message parameters
*/
String getLocalizedMessage(int problemId, int elaborationId, String[] messageArguments);
}