diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java index 1fe956a11b86..216a2fd4f32e 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java @@ -82,7 +82,7 @@ public class JavaBuilder extends ModuleLevelBuilder { private static final Key COMPILING_TOOL = Key.create("_java_compiling_tool_"); private static final Key> COMPILER_VERSION_INFO = Key.create("_java_compiler_version_info_"); - private static final Set FILTERED_OPTIONS = new HashSet(Arrays.asList( + private static final Set FILTERED_OPTIONS = new HashSet(Collections.singletonList( "-target" )); private static final Set FILTERED_SINGLE_OPTIONS = new HashSet(Arrays.asList( @@ -131,6 +131,7 @@ public class JavaBuilder extends ModuleLevelBuilder { //add here class processors in the sequence they should be executed } + @Override @NotNull public String getPresentableName() { return BUILDER_NAME; @@ -155,6 +156,7 @@ public class JavaBuilder extends ModuleLevelBuilder { return Collections.singletonList(JAVA_EXTENSION); } + @Override public ExitCode build(@NotNull CompileContext context, @NotNull ModuleChunk chunk, @NotNull DirtyFilesHolder dirtyFilesHolder, @@ -174,6 +176,7 @@ public class JavaBuilder extends ModuleLevelBuilder { final Set filesToCompile = new THashSet(FileUtil.FILE_HASHING_STRATEGY); dirtyFilesHolder.processDirtyFiles(new FileProcessor() { + @Override public boolean apply(ModuleBuildTarget target, File file, JavaSourceRootDescriptor descriptor) throws IOException { if (JAVA_SOURCES_FILTER.accept(file) && ourCompilableModuleTypes.contains(target.getModule().getModuleType())) { filesToCompile.add(file); @@ -185,7 +188,7 @@ public class JavaBuilder extends ModuleLevelBuilder { if (JavaBuilderUtil.isCompileJavaIncrementally(context)) { final ProjectBuilderLogger logger = context.getLoggingManager().getProjectBuilderLogger(); if (logger.isEnabled()) { - if (filesToCompile.size() > 0) { + if (!filesToCompile.isEmpty()) { logger.logCompiledFiles(filesToCompile, BUILDER_NAME, "Compiling files:"); } } @@ -214,7 +217,7 @@ public class JavaBuilder extends ModuleLevelBuilder { finally { stream.close(); } - message = "Internal error: \n" + out.toString(); + message = "Internal error: \n" + out; } context.processMessage(new CompilerMessage(BUILDER_NAME, BuildMessage.Kind.ERROR, message)); throw new StopBuildException(); @@ -505,6 +508,7 @@ public class JavaBuilder extends ModuleLevelBuilder { counter.incTaskCount(); myTaskRunner.execute(new Runnable() { + @Override public void run() { try { taskRunnable.run(); @@ -526,9 +530,12 @@ public class JavaBuilder extends ModuleLevelBuilder { } final int listenPort = findFreePort(); server = new ExternalJavacManager(Utils.getSystemRoot()) { + @Override protected ExternalJavacProcessHandler createProcessHandler(Process process) { return new ExternalJavacProcessHandler(process) { - protected Future executeOnPooledThread(Runnable task) { + @Override + @NotNull + protected Future executeOnPooledThread(@NotNull Runnable task) { return SharedThreadPool.getInstance().executeOnPooledThread(task); } }; @@ -543,9 +550,9 @@ public class JavaBuilder extends ModuleLevelBuilder { if (ver == null) { return 0; } - final int quoteBegin = ver.indexOf("\""); + final int quoteBegin = ver.indexOf('\"'); if (quoteBegin >= 0) { - final int quoteEnd = ver.indexOf("\"", quoteBegin + 1); + final int quoteEnd = ver.indexOf('\"', quoteBegin + 1); if (quoteEnd > quoteBegin) { ver = ver.substring(quoteBegin + 1, quoteEnd); } @@ -557,7 +564,7 @@ public class JavaBuilder extends ModuleLevelBuilder { final String prefix = "1."; final int parseBegin = ver.startsWith(prefix)? prefix.length() : 0; - final int parseEnd = ver.indexOf(".", parseBegin); + final int parseEnd = ver.indexOf('.', parseBegin); if (parseEnd > 0) { ver = ver.substring(parseBegin, parseEnd); } @@ -730,7 +737,7 @@ public class JavaBuilder extends ModuleLevelBuilder { if (!profile.isObtainProcessorsFromClasspath()) { final String processorsPath = profile.getProcessorPath(); options.add("-processorpath"); - options.add(processorsPath == null? "" : FileUtil.toSystemDependentName(processorsPath.trim())); + options.add(FileUtil.toSystemDependentName(processorsPath.trim())); } final Set processors = profile.getProcessors(); @@ -888,11 +895,11 @@ public class JavaBuilder extends ModuleLevelBuilder { private static class DiagnosticSink implements DiagnosticOutputConsumer { private final CompileContext myContext; - private volatile int myErrorCount = 0; - private volatile int myWarningCount = 0; + private volatile int myErrorCount; + private volatile int myWarningCount; private final Set myFilesWithErrors = new HashSet(); - public DiagnosticSink(CompileContext context) { + private DiagnosticSink(CompileContext context) { myContext = context; } @@ -900,6 +907,7 @@ public class JavaBuilder extends ModuleLevelBuilder { public void javaFileLoaded(File file) { } + @Override public void registerImports(final String className, final Collection imports, final Collection staticImports) { //submitAsyncTask(myContext, new Runnable() { // public void run() { @@ -911,6 +919,7 @@ public class JavaBuilder extends ModuleLevelBuilder { //}); } + @Override public void outputLineAvailable(String line) { if (!StringUtil.isEmpty(line)) { if (line.startsWith(ExternalJavacManager.STDOUT_LINE_PREFIX)) { @@ -946,6 +955,7 @@ public class JavaBuilder extends ModuleLevelBuilder { return BuildMessage.Kind.INFO; } + @Override public void report(Diagnostic diagnostic) { final CompilerMessage.Kind kind; switch (diagnostic.getKind()) { @@ -1008,15 +1018,17 @@ public class JavaBuilder extends ModuleLevelBuilder { private final CompileContext myContext; private final OutputFileConsumer myDelegateOutputFileSink; - public ClassProcessingConsumer(CompileContext context, OutputFileConsumer sink) { + private ClassProcessingConsumer(CompileContext context, OutputFileConsumer sink) { myContext = context; myDelegateOutputFileSink = sink != null ? sink : new OutputFileConsumer() { + @Override public void save(@NotNull OutputFileObject fileObject) { throw new RuntimeException("Output sink for compiler was not specified"); } }; } + @Override public void save(@NotNull final OutputFileObject fileObject) { // generated files must be saved synchronously, because some compilers (e.g. eclipse) // may want to read them for further compilation @@ -1035,6 +1047,7 @@ public class JavaBuilder extends ModuleLevelBuilder { } submitAsyncTask(myContext, new Runnable() { + @Override public void run() { try { for (ClassPostProcessor processor : ourClassProcessors) { @@ -1053,13 +1066,13 @@ public class JavaBuilder extends ModuleLevelBuilder { private static final Key COUNTER_KEY = Key.create("_async_task_counter_"); private static final class TasksCounter { - private int myCounter = 0; + private int myCounter; - public synchronized void incTaskCount() { + private synchronized void incTaskCount() { myCounter++; } - public synchronized void decTaskCounter() { + private synchronized void decTaskCounter() { myCounter = Math.max(0, myCounter - 1); if (myCounter == 0) { notifyAll(); @@ -1071,7 +1084,7 @@ public class JavaBuilder extends ModuleLevelBuilder { try { wait(); } - catch (InterruptedException e) { + catch (InterruptedException ignored) { } } } diff --git a/jps/model-api/src/org/jetbrains/jps/service/SharedThreadPool.java b/jps/model-api/src/org/jetbrains/jps/service/SharedThreadPool.java index bb26dd49b031..0ef3533d613c 100644 --- a/jps/model-api/src/org/jetbrains/jps/service/SharedThreadPool.java +++ b/jps/model-api/src/org/jetbrains/jps/service/SharedThreadPool.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,8 @@ */ package org.jetbrains.jps.service; +import org.jetbrains.annotations.NotNull; + import java.util.concurrent.Executor; import java.util.concurrent.Future; @@ -26,5 +28,6 @@ public abstract class SharedThreadPool implements Executor { return JpsServiceManager.getInstance().getService(SharedThreadPool.class); } - public abstract Future executeOnPooledThread(Runnable action); + @NotNull + public abstract Future executeOnPooledThread(@NotNull Runnable action); } diff --git a/jps/model-impl/src/org/jetbrains/jps/service/impl/SharedThreadPoolImpl.java b/jps/model-impl/src/org/jetbrains/jps/service/impl/SharedThreadPoolImpl.java index 3f107a366c37..fd85c0e02dc3 100644 --- a/jps/model-impl/src/org/jetbrains/jps/service/impl/SharedThreadPoolImpl.java +++ b/jps/model-impl/src/org/jetbrains/jps/service/impl/SharedThreadPoolImpl.java @@ -16,6 +16,7 @@ package org.jetbrains.jps.service.impl; import com.intellij.util.ConcurrencyUtil; +import org.jetbrains.annotations.NotNull; import org.jetbrains.jps.service.SharedThreadPool; import java.util.concurrent.ExecutorService; @@ -29,12 +30,13 @@ public class SharedThreadPoolImpl extends SharedThreadPool { private final ExecutorService myService = Executors.newCachedThreadPool(ConcurrencyUtil.newNamedThreadFactory("JPS thread pool")); @Override - public void execute(Runnable command) { + public void execute(@NotNull Runnable command) { executeOnPooledThread(command); } + @NotNull @Override - public Future executeOnPooledThread(final Runnable action) { + public Future executeOnPooledThread(@NotNull final Runnable action) { return myService.submit(new Runnable() { @Override public void run() {