Java 类javax.tools.DiagnosticListener 实例源码
项目:incubator-netbeans
文件:JavacParser.java
public static JavacTaskImpl createJavacTask (
@NonNull final ClasspathInfo cpInfo,
@NullAllowed final DiagnosticListener<? super JavaFileObject> diagnosticListener,
@NullAllowed final String sourceLevel,
@NullAllowed final SourceLevelQuery.Profile sourceProfile,
@NullAllowed FQN2Files fqn2Files,
@NullAllowed final CancelService cancelService,
@NullAllowed final APTUtils aptUtils,
@NullAllowed final CompilerOptionsQuery.Result compilerOptions,
@NonNull Iterable<? extends JavaFileObject> files) {
return createJavacTask(
cpInfo,
diagnosticListener,
sourceLevel,
sourceProfile,
EnumSet.of(ConfigFlags.BACKGROUND_COMPILATION, ConfigFlags.MULTI_SOURCE),
fqn2Files,
cancelService,
aptUtils,
compilerOptions,
Collections.emptySet(),
files);
}
项目:incubator-netbeans
文件:CompilationInfoImpl.java
/**
* Creates a new CompilationInfoImpl for given source file
* @param parser used to parse the file
* @param file to be parsed
* @param root the owner of the parsed file
* @param javacTask used javac or null if new one should be created
* @param snapshot rendered content of the file
* @param detached true if the CompilationInfoImpl is detached from parsing infrastructure.
* @throws java.io.IOException
*/
CompilationInfoImpl (final JavacParser parser,
final FileObject file,
final FileObject root,
final JavacTaskImpl javacTask,
final DiagnosticListener<JavaFileObject> diagnosticListener,
final Snapshot snapshot,
final boolean detached) throws IOException {
assert parser != null;
this.parser = parser;
this.cpInfo = parser.getClasspathInfo();
assert cpInfo != null;
this.file = file;
this.root = root;
this.snapshot = snapshot;
assert file == null || snapshot != null;
this.jfo = file != null ?
FileObjects.sourceFileObject(file, root, JavaFileFilterQuery.getFilter(file), snapshot.getText()) :
null;
this.javacTask = javacTask;
this.diagnosticListener = diagnosticListener;
this.isClassFile = false;
this.isDetached = detached;
}
项目:manifold
文件:ManifoldJavaFileManager.java
public JavaFileObject getSourceFileForInput( Location location, String fqn, JavaFileObject.Kind kind, DiagnosticListener<JavaFileObject> errorHandler )
{
try
{
JavaFileObject file = super.getJavaFileForInput( location, fqn, kind );
if( file != null )
{
return file;
}
}
catch( IOException ignore )
{
}
return findGeneratedFile( fqn.replace( '$', '.' ), ManifoldHost.getCurrentModule(), errorHandler );
}
项目:javaide
文件:CompileHelper.java
public static int compileJava(Context context, JavaProjectFolder projectFile, @Nullable DiagnosticListener listener) {
try {
String[] args = new String[]{
"-verbose",
"-cp", projectFile.getJavaClassPath(context),
"-sourcepath", projectFile.getSourcePath(), //sourcepath
"-d", projectFile.getDirBuildClasses().getPath(), //output dir
projectFile.getMainClass().getPath(projectFile) //main class
};
DLog.d(TAG, "compileJava args = " + Arrays.toString(args));
int compileStatus;
compileStatus = Javac.compile(args, listener);
return compileStatus;
} catch (Throwable e) {
e.printStackTrace();
}
return Main.EXIT_ERROR;
}
项目:OpenJSharp
文件:JavapTask.java
public JavapTask(Writer out,
JavaFileManager fileManager,
DiagnosticListener<? super JavaFileObject> diagnosticListener,
Iterable<String> options,
Iterable<String> classes) {
this(out, fileManager, diagnosticListener);
this.classes = new ArrayList<String>();
for (String classname: classes) {
classname.getClass(); // null-check
this.classes.add(classname);
}
try {
if (options != null)
handleOptions(options, false);
} catch (BadArgs e) {
throw new IllegalArgumentException(e.getMessage());
}
}
项目:OpenJSharp
文件:JavapTask.java
private DiagnosticListener<JavaFileObject> getDiagnosticListenerForWriter(Writer w) {
final PrintWriter pw = getPrintWriterForWriter(w);
return new DiagnosticListener<JavaFileObject> () {
public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
switch (diagnostic.getKind()) {
case ERROR:
pw.print(getMessage("err.prefix"));
break;
case WARNING:
pw.print(getMessage("warn.prefix"));
break;
case NOTE:
pw.print(getMessage("note.prefix"));
break;
}
pw.print(" ");
pw.println(diagnostic.getMessage(null));
}
};
}
项目:OpenJSharp
文件:JavahTask.java
JavahTask(Writer out,
JavaFileManager fileManager,
DiagnosticListener<? super JavaFileObject> diagnosticListener,
Iterable<String> options,
Iterable<String> classes) {
this();
this.log = getPrintWriterForWriter(out);
this.fileManager = fileManager;
this.diagnosticListener = diagnosticListener;
try {
handleOptions(options, false);
} catch (BadArgs e) {
throw new IllegalArgumentException(e.getMessage());
}
this.classes = new ArrayList<String>();
if (classes != null) {
for (String classname: classes) {
classname.getClass(); // null-check
this.classes.add(classname);
}
}
}
项目:OpenJSharp
文件:Log.java
/** Construct a log with given I/O redirections.
*/
protected Log(Context context, PrintWriter errWriter, PrintWriter warnWriter, PrintWriter noticeWriter) {
super(JCDiagnostic.Factory.instance(context));
context.put(logKey, this);
this.errWriter = errWriter;
this.warnWriter = warnWriter;
this.noticeWriter = noticeWriter;
@SuppressWarnings("unchecked") // FIXME
DiagnosticListener<? super JavaFileObject> dl =
context.get(DiagnosticListener.class);
this.diagListener = dl;
diagnosticHandler = new DefaultDiagnosticHandler();
messages = JavacMessages.instance(context);
messages.add(Main.javacBundleName);
final Options options = Options.instance(context);
initOptions(options);
options.addListener(new Runnable() {
public void run() {
initOptions(options);
}
});
}
项目:openjdk-jdk10
文件:JavapTask.java
public JavapTask(Writer out,
JavaFileManager fileManager,
DiagnosticListener<? super JavaFileObject> diagnosticListener,
Iterable<String> options,
Iterable<String> classes) {
this(out, fileManager, diagnosticListener);
this.classes = new ArrayList<>();
for (String classname: classes) {
Objects.requireNonNull(classname);
this.classes.add(classname);
}
try {
if (options != null)
handleOptions(options, false);
} catch (BadArgs e) {
throw new IllegalArgumentException(e.getMessage());
}
}
项目:openjdk-jdk10
文件:JavapTask.java
private DiagnosticListener<JavaFileObject> getDiagnosticListenerForWriter(Writer w) {
final PrintWriter pw = getPrintWriterForWriter(w);
return diagnostic -> {
switch (diagnostic.getKind()) {
case ERROR:
pw.print(getMessage("err.prefix"));
break;
case WARNING:
pw.print(getMessage("warn.prefix"));
break;
case NOTE:
pw.print(getMessage("note.prefix"));
break;
}
pw.print(" ");
pw.println(diagnostic.getMessage(null));
};
}
项目:manifold
文件:JsonModel.java
void report( DiagnosticListener<JavaFileObject> errorHandler )
{
if( errorHandler == null )
{
return;
}
List<IIssue> issues = getIssues();
if( issues.isEmpty() )
{
return;
}
JavaFileObject file = new SourceJavaFileObject( getFile().toURI() );
for( IIssue issue : issues )
{
Diagnostic.Kind kind = issue.getKind() == IIssue.Kind.Error ? Diagnostic.Kind.ERROR : Diagnostic.Kind.WARNING;
errorHandler.report( new JavacDiagnostic( file, kind, issue.getStartOffset(), issue.getLine(), issue.getColumn(), issue.getMessage() ) );
}
}
项目:openjdk-jdk10
文件:JavahTask.java
JavahTask(Writer out,
JavaFileManager fileManager,
DiagnosticListener<? super JavaFileObject> diagnosticListener,
Iterable<String> options,
Iterable<String> classes) {
this();
this.log = getPrintWriterForWriter(out);
this.fileManager = fileManager;
this.diagnosticListener = diagnosticListener;
try {
handleOptions(options, false);
} catch (BadArgs e) {
throw new IllegalArgumentException(e.getMessage());
}
this.classes = new ArrayList<>();
if (classes != null) {
for (String classname: classes) {
Objects.requireNonNull(classname);
this.classes.add(classname);
}
}
}
项目:openjdk-jdk10
文件:Log.java
/**
* Creates a log.
* @param context the context in which the log should be registered
* @param writers a map of writers that can be accessed by the kind of writer required
*/
private Log(Context context, Map<WriterKind, PrintWriter> writers) {
super(JCDiagnostic.Factory.instance(context));
context.put(logKey, this);
this.writers = writers;
@SuppressWarnings("unchecked") // FIXME
DiagnosticListener<? super JavaFileObject> dl =
context.get(DiagnosticListener.class);
this.diagListener = dl;
diagnosticHandler = new DefaultDiagnosticHandler();
messages = JavacMessages.instance(context);
messages.add(Main.javacBundleName);
final Options options = Options.instance(context);
initOptions(options);
options.addListener(() -> initOptions(options));
}
项目:openjdk-jdk10
文件:ReusableContext.java
void clear() {
drop(Arguments.argsKey);
drop(DiagnosticListener.class);
drop(Log.outKey);
drop(Log.errKey);
drop(JavaFileManager.class);
drop(JavacTask.class);
if (ht.get(Log.logKey) instanceof ReusableLog) {
//log already inited - not first round
((ReusableLog)Log.instance(this)).clear();
Enter.instance(this).newRound();
((ReusableJavaCompiler)ReusableJavaCompiler.instance(this)).clear();
Types.instance(this).newRound();
Check.instance(this).newRound();
Modules.instance(this).newRound();
Annotate.instance(this).newRound();
CompileStates.instance(this).clear();
MultiTaskListener.instance(this).clear();
//find if any of the roots have redefined java.* classes
Symtab syms = Symtab.instance(this);
pollutionScanner.scan(roots, syms);
roots.clear();
}
}
项目:openjdk-jdk10
文件:ReusableContext.java
void clear() {
recorded.clear();
sourceMap.clear();
nerrors = 0;
nwarnings = 0;
//Set a fake listener that will lazily lookup the context for the 'real' listener. Since
//this field is never updated when a new task is created, we cannot simply reset the field
//or keep old value. This is a hack to workaround the limitations in the current infrastructure.
diagListener = new DiagnosticListener<JavaFileObject>() {
DiagnosticListener<JavaFileObject> cachedListener;
@Override
@SuppressWarnings("unchecked")
public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
if (cachedListener == null) {
cachedListener = context.get(DiagnosticListener.class);
}
cachedListener.report(diagnostic);
}
};
}
项目:GitHub
文件:SimpleCompiler.java
@Override
public JavaCompiler.CompilationTask getTask(Writer out, JavaFileManager fileManager,
DiagnosticListener<? super JavaFileObject> diagnosticListener,
Iterable<String> options, Iterable<String> classes,
Iterable<? extends JavaFileObject> compilationUnits) {
return compiler.getTask(out, fileManager, diagnosticListener, options, classes, compilationUnits);
}
项目:GitHub
文件:Compiler.java
public void compile(JavaCompiler javaCompiler, Writer out, File sourceDirectory, File outputDirectory, List<File> classpath, DiagnosticListener<? super JavaFileObject> diagnosticListener, String targetVersion ) {
targetVersion = targetVersion == null ? "1.6" : targetVersion;
StandardJavaFileManager fileManager = javaCompiler.getStandardFileManager(null, null, null);
if (outputDirectory != null) {
try {
fileManager.setLocation(StandardLocation.CLASS_OUTPUT,
Arrays.asList(outputDirectory));
fileManager.setLocation(StandardLocation.CLASS_PATH, classpath);
} catch (IOException e) {
throw new RuntimeException("could not set output directory", e);
}
}
Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromFiles(findAllSourceFiles(sourceDirectory));
ArrayList<String> options = new ArrayList<String>();
options.add("-source");
options.add(targetVersion);
options.add("-target");
options.add(targetVersion);
options.add("-encoding");
options.add("UTF8");
options.add("-Xlint:-options");
options.add("-Xlint:unchecked");
if (compilationUnits.iterator().hasNext()) {
Boolean success = javaCompiler.getTask(out, fileManager, diagnosticListener, options, null, compilationUnits).call();
assertThat("Compilation was not successful, check stdout for errors", success, is(true));
}
}
项目:GitHub
文件:CodeGenerationHelper.java
public static ClassLoader compile(JavaCompiler compiler, Writer out, File sourceDirectory, File outputDirectory, List<File> classpath, Map<String, Object> config, DiagnosticListener<? super JavaFileObject> listener) {
List<File> fullClasspath = new ArrayList<File>();
fullClasspath.addAll(classpath);
fullClasspath.addAll(CodeGenerationHelper.classpathToFileArray(System.getProperty("java.class.path")));
new Compiler().compile(compiler, out, sourceDirectory, outputDirectory, fullClasspath, listener, (String)config.get("targetVersion"));
try {
return URLClassLoader.newInstance(new URL[] { outputDirectory.toURI().toURL() }, Thread.currentThread().getContextClassLoader());
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
}
项目:incubator-netbeans
文件:JavacParser.java
private static CompilationInfoImpl createCurrentInfo (final JavacParser parser,
final FileObject file,
final FileObject root,
final Snapshot snapshot,
final JavacTaskImpl javac,
final DiagnosticListener<JavaFileObject> diagnosticListener) throws IOException {
CompilationInfoImpl info = new CompilationInfoImpl(parser, file, root, javac, diagnosticListener, snapshot, false);
if (file != null) {
Logger.getLogger("TIMER").log(Level.FINE, "CompilationInfo", //NOI18N
new Object[] {file, info});
}
return info;
}
项目:incubator-netbeans
文件:ClasspathInfoTest.java
public void testGetTypeDeclaration() throws Exception {
ClasspathInfo ci = ClasspathInfo.create( bootPath, classPath, null);
JavacTaskImpl jTask = JavacParser.createJavacTask(ci, (DiagnosticListener) null, (String) null, null, null, null, null, null, Collections.emptyList());
jTask.enter();
List<String> notFound = new LinkedList<String>();
JarFile jf = new JarFile( rtJar );
for( Enumeration entries = jf.entries(); entries.hasMoreElements(); ) {
JarEntry je = (JarEntry)entries.nextElement();
String jeName = je.getName();
if ( !je.isDirectory() && jeName.endsWith( ".class" ) ) {
String typeName = jeName.substring( 0, jeName.length() - ".class".length() );
typeName = typeName.replace( "/", "." ); //.replace( "$", "." );
TypeElement te = ElementUtils.getTypeElementByBinaryName(jTask, typeName );
// assertNotNull( "Declaration for " + typeName + " should not be null.", td );
if ( te == null ) {
if (!typeName.endsWith("package-info")) {
notFound.add( typeName );
}
}
}
}
assertTrue( "Should be empty " + notFound, notFound.isEmpty() );
}
项目:incubator-netbeans
文件:CodeCompiler.java
static Map<String, byte[]> compile(FileObject fo, JavaSource js,
String newSource,
DiagnosticListener<? super JavaFileObject> diagnostics) throws IOException {
ClassPath classPath = ClassPath.getClassPath(fo, ClassPath.SOURCE);
if (classPath == null) {
return null;
}
FileObject root = classPath.findOwnerRoot(fo);
if (root == null) {
return null;
}
return JavaSourceUtil.generate(root, fo, newSource, diagnostics);
}
项目:incubator-netbeans
文件:JavaSourceUtilImpl.java
@Override
@NonNull
public Map<String, byte[]> generate(
@NonNull final JavaSourceUtilImpl spi,
@NonNull final FileObject srcRoot,
@NonNull final FileObject file,
@NullAllowed final CharSequence content,
@NullAllowed final DiagnosticListener<? super JavaFileObject> diagnostics) throws IOException {
assert spi != null;
return spi.generate(srcRoot, file, content, diagnostics);
}
项目:manifold
文件:PropertiesTypeManifold.java
@Override
protected String produce( String topLevelFqn, String existing, Model model, DiagnosticListener<JavaFileObject> errorHandler )
{
List<IFile> files = findFilesForType( topLevelFqn );
SrcClass srcClass = new PropertiesCodeGen( model.getCache(), files.isEmpty() ? null : files.get( 0 ), topLevelFqn ).make();
StringBuilder sb = srcClass.render( new StringBuilder(), 0 );
return sb.toString();
}
项目:javaide
文件:Log.java
/**
* Construct a log with given I/O redirections.
*/
@Deprecated
protected Log(Context context, PrintWriter errWriter, PrintWriter warnWriter, PrintWriter noticeWriter) {
super(JCDiagnostic.Factory.instance(context));
context.put(logKey, this);
this.errWriter = errWriter;
this.warnWriter = warnWriter;
this.noticeWriter = noticeWriter;
Options options = Options.instance(context);
this.dumpOnError = options.isSet(DOE);
this.promptOnError = options.isSet(PROMPT);
this.emitWarnings = options.isUnset(XLINT_CUSTOM, "none");
this.suppressNotes = options.isSet("suppressNotes");
this.MaxErrors = getIntOption(options, XMAXERRS, getDefaultMaxErrors());
this.MaxWarnings = getIntOption(options, XMAXWARNS, getDefaultMaxWarnings());
boolean rawDiagnostics = options.isSet("rawDiagnostics");
messages = JavacMessages.instance(context);
this.diagFormatter = rawDiagnostics ? new RawDiagnosticFormatter(options) :
new BasicDiagnosticFormatter(options, messages);
@SuppressWarnings("unchecked") // FIXME
DiagnosticListener<? super JavaFileObject> dl =
context.get(DiagnosticListener.class);
this.diagListener = dl;
String ek = options.get("expectKeys");
if (ek != null)
expectDiagKeys = new HashSet<String>(Arrays.asList(ek.split(", *")));
}
项目:javaide
文件:CompileHelper.java
@Nullable
public static File buildJarAchieve(Context context, JavaProjectFolder projectFile,
DiagnosticListener listener) throws IOException {
int status = compileJava(context, projectFile, listener);
if (status != Main.EXIT_OK) {
throw new RuntimeException("Compile time error... Exit code(" + status + ")");
}
//now create normal jar file
Jar.createJarArchive(projectFile);
return projectFile.getOutJarArchive();
}
项目:javaide
文件:CompileJavaTask.java
@Override
protected Integer doInBackground(JavaProjectFolder... params) {
if (params[0] == null) return null;
this.projectFile = params[0];
DiagnosticListener listener = new DiagnosticListener() {
@Override
public void report(Diagnostic diagnostic) {
mDiagnostics.add(diagnostic);
}
};
//clean task
projectFile.clean();
projectFile.createBuildDir();
int status = CompileHelper.compileJava(context, projectFile, listener);
if (status == Main.EXIT_OK) {
try {
CompileHelper.convertToDexFormat(context, projectFile);
} catch (Throwable e) {
this.error = e;
Log.e(TAG, "doInBackground: ", e);
publishProgress(e.getMessage().toCharArray(), 0, e.getMessage().length());
status = Main.EXIT_ERROR;
}
}
return status;
}
项目:javaide
文件:JavaParser.java
public JavaParser() {
context = new Context();
diagnostics = new DiagnosticCollector<>();
context.put(DiagnosticListener.class, diagnostics);
Options.instance(context).put("allowStringFolding", "false");
JavacFileManager fileManager = new JavacFileManager(context, true, UTF_8);
try {
fileManager.setLocation(StandardLocation.PLATFORM_CLASS_PATH, ImmutableList.<File>of());
} catch (IOException e) {
// impossible
canParse = false;
}
parserFactory = ParserFactory.instance(context);
}
项目:javaide
文件:TestJavacParser.java
public void test1() {
Context context = new Context();
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<>();
context.put(DiagnosticListener.class, diagnostics);
Options.instance(context).put("allowStringFolding", "false");
JCTree.JCCompilationUnit unit;
JavacFileManager fileManager = new JavacFileManager(context, true, UTF_8);
try {
fileManager.setLocation(StandardLocation.PLATFORM_CLASS_PATH, ImmutableList.<File>of());
} catch (IOException e) {
// impossible
throw new IOError(e);
}
SimpleJavaFileObject source =
new SimpleJavaFileObject(URI.create("source"), JavaFileObject.Kind.SOURCE) {
@Override
public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {
return src;
}
};
Log.instance(context).useSource(source);
ParserFactory parserFactory = ParserFactory.instance(context);
Parser parser =
parserFactory.newParser(
src,
/*keepDocComments=*/ true,
/*keepEndPos=*/ true,
/*keepLineMap=*/ true);
unit = parser.parseCompilationUnit();
unit.sourcefile = source;
}
项目:manifold
文件:JavascriptCodeGen.java
private void reportErrors( DiagnosticListener<JavaFileObject> errorHandler, ProgramNode programNode )
{
if( programNode.errorCount() > 0 )
{
JavaFileObject file = new SourceJavaFileObject( _file.toURI() );
for( ParseError error : programNode.getErrorList() )
{
Token token = error.getToken();
errorHandler.report( new JavacDiagnostic( file, Diagnostic.Kind.ERROR, token.getOffset(), token.getLineNumber(), token.getCol(), error.getMessage() ) );
}
}
}
项目:javaide
文件:TestJavacParser.java
public void test3() {
Context context = new Context();
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<>();
context.put(DiagnosticListener.class, diagnostics);
Options.instance(context).put("allowStringFolding", "false");
JCTree.JCCompilationUnit unit;
JavacFileManager fileManager = new JavacFileManager(context, true, UTF_8);
try {
fileManager.setLocation(StandardLocation.PLATFORM_CLASS_PATH, ImmutableList.<File>of());
} catch (IOException e) {
// impossible
throw new IOError(e);
}
SimpleJavaFileObject source =
new SimpleJavaFileObject(URI.create("source"), JavaFileObject.Kind.SOURCE) {
@Override
public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {
return src;
}
};
Log.instance(context).useSource(source);
ParserFactory parserFactory = ParserFactory.instance(context);
Parser parser =
parserFactory.newParser(
src,
/*keepDocComments=*/ true,
/*keepEndPos=*/ true,
/*keepLineMap=*/ true);
unit = parser.parseCompilationUnit();
unit.sourcefile = source;
}
项目:OpenJSharp
文件:JavapTask.java
public JavapTask(Writer out,
JavaFileManager fileManager,
DiagnosticListener<? super JavaFileObject> diagnosticListener) {
this();
this.log = getPrintWriterForWriter(out);
this.fileManager = fileManager;
this.diagnosticListener = diagnosticListener;
}
项目:manifold
文件:TemplateModel.java
void report(DiagnosticListener errorHandler) {
if (_issues.isEmpty() || errorHandler == null) {
return;
}
JavaFileObject file = new SourceJavaFileObject(getFile().toURI());
for (IIssue issue : _issues.getIssues()) {
Diagnostic.Kind kind = issue.getKind() == IIssue.Kind.Error ? Diagnostic.Kind.ERROR : Diagnostic.Kind.WARNING;
errorHandler.report(new JavacDiagnostic(file, kind, issue.getStartOffset(), issue.getLine(), issue.getColumn(), issue.getMessage()));
}
}
项目:OpenJSharp
文件:JavapFileManager.java
public static JavapFileManager create(final DiagnosticListener<? super JavaFileObject> dl, PrintWriter log) {
Context javac_context = new Context();
if (dl != null)
javac_context.put(DiagnosticListener.class, dl);
javac_context.put(com.sun.tools.javac.util.Log.outKey, log);
return new JavapFileManager(javac_context, null);
}
项目:manifold
文件:ImageTypeManifold.java
@Override
protected String produce( String topLevelFqn, String existing, Model model, DiagnosticListener<JavaFileObject> errorHandler )
{
SrcClass srcClass = new ImageCodeGen( model._url, topLevelFqn ).make();
StringBuilder sb = srcClass.render( new StringBuilder(), 0 );
return sb.toString();
}
项目:OpenJSharp
文件:JavahTool.java
public NativeHeaderTask getTask(Writer out,
JavaFileManager fileManager,
DiagnosticListener<? super JavaFileObject> diagnosticListener,
Iterable<String> options,
Iterable<String> classes) {
return new JavahTask(out, fileManager, diagnosticListener, options, classes);
}
项目:manifold
文件:JavaParser.java
@Override
public Pair<JavaFileObject, String> findJavaSource( String fqn, DiagnosticListener<JavaFileObject> errorHandler )
{
init();
if( _gfm == null )
{
// short-circuit reentrancy during init()
return null;
}
JavaFileObject fileObj = _gfm.getSourceFileForInput( StandardLocation.SOURCE_PATH, fqn, JavaFileObject.Kind.SOURCE, errorHandler );
if( fileObj == null )
{
int iDot = fqn.lastIndexOf( '.' );
if( iDot > 0 )
{
String enclosingFqn = fqn.substring( 0, iDot );
return findJavaSource( enclosingFqn, errorHandler );
}
return null;
}
else
{
return new Pair<>( fileObj, fqn );
}
}
项目:manifold
文件:ManifoldJavaFileManager.java
private JavaFileObject findGeneratedFile( String fqn, IModule module, DiagnosticListener<JavaFileObject> errorHandler )
{
FqnCacheNode<JavaFileObject> node = _generatedFiles.getNode( fqn );
if( node != null )
{
return node.getUserData();
}
JavaFileObject file = ManifoldHost.produceFile( fqn, module, errorHandler );
// note we cache even if file is null, fqn cache is also a miss cache
_generatedFiles.add( fqn, file );
return file;
}
项目:OpenJSharp
文件:JavahTask.java
private DiagnosticListener<JavaFileObject> getDiagnosticListenerForWriter(Writer w) {
final PrintWriter pw = getPrintWriterForWriter(w);
return new DiagnosticListener<JavaFileObject> () {
public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
if (diagnostic.getKind() == Diagnostic.Kind.ERROR) {
pw.print(getMessage("err.prefix"));
pw.print(" ");
}
pw.println(diagnostic.getMessage(null));
}
};
}
项目:manifold
文件:JsonImplTypeManifold.java
@Override
protected String produce( String topLevelFqn, String existing, Model model, DiagnosticListener<JavaFileObject> errorHandler )
{
StringBuilder sb = new StringBuilder();
SrcClass srcClass = new JsonImplCodeGen( model.getType(), topLevelFqn ).make();
model.report( errorHandler );
srcClass.render( sb, 0 );
return sb.toString();
}
项目:OpenJSharp
文件:JavadocTool.java
@Override
public StandardJavaFileManager getStandardFileManager(
DiagnosticListener<? super JavaFileObject> diagnosticListener,
Locale locale,
Charset charset) {
Context context = new Context();
context.put(Locale.class, locale);
if (diagnosticListener != null)
context.put(DiagnosticListener.class, diagnosticListener);
PrintWriter pw = (charset == null)
? new PrintWriter(System.err, true)
: new PrintWriter(new OutputStreamWriter(System.err, charset), true);
context.put(Log.outKey, pw);
return new JavacFileManager(context, true, charset);
}