/******************************************************************************* * Copyright (c) 2000, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.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); }