From 6d012abaf99244cc24e1c21ccf569e47a191aa55 Mon Sep 17 00:00:00 2001 From: jvican Date: Sat, 20 May 2017 02:04:23 +0200 Subject: [PATCH] Remove verbose Java global lock implementation --- .../main/java/sbt/inc/ZincBridgeProvider.java | 28 +------------------ .../internal/inc/ZincComponentCompiler.scala | 6 ++++ 2 files changed, 7 insertions(+), 27 deletions(-) diff --git a/internal/zinc-ivy-integration/src/main/java/sbt/inc/ZincBridgeProvider.java b/internal/zinc-ivy-integration/src/main/java/sbt/inc/ZincBridgeProvider.java index f68ff596c..01d023296 100644 --- a/internal/zinc-ivy-integration/src/main/java/sbt/inc/ZincBridgeProvider.java +++ b/internal/zinc-ivy-integration/src/main/java/sbt/inc/ZincBridgeProvider.java @@ -47,20 +47,6 @@ public final class ZincBridgeProvider { return ZincComponentCompiler$.MODULE$.getDefaultConfiguration(baseDirectory, ivyHome, resolvers, logger); } - /** - * Cast a CheckedException as an unchecked one. - * - * @param throwable to cast - * @param the type of the Throwable - * @return this method will never return a Throwable instance, it will just throw it. - * @throws T the throwable as an unchecked throwable - */ - @SuppressWarnings("unchecked") - private static RuntimeException rethrow(Throwable throwable) throws T { - throw (T) throwable; // rely on vacuous cast - } - - /** * Defines a global lock that does nothing but calling the callable to synchronize * across threads. The lock file is used to resolve and download dependencies via ivy. @@ -70,19 +56,7 @@ public final class ZincBridgeProvider { * @return A default global lock. */ public static GlobalLock getDefaultLock() { - return new GlobalLock() { - @Override - public T apply(File lockFile, Callable run) { - T value = null; - try { - value = run.call(); - } catch (Exception e) { - // Rethrow runtime exception because apply does not define throwing Exception - rethrow(e); - } - return value; - } - }; + return ZincComponentCompiler$.MODULE$.getDefaultLock(); } /** diff --git a/internal/zinc-ivy-integration/src/main/scala/sbt/internal/inc/ZincComponentCompiler.scala b/internal/zinc-ivy-integration/src/main/scala/sbt/internal/inc/ZincComponentCompiler.scala index 1eb777de5..61d75a672 100644 --- a/internal/zinc-ivy-integration/src/main/scala/sbt/internal/inc/ZincComponentCompiler.scala +++ b/internal/zinc-ivy-integration/src/main/scala/sbt/internal/inc/ZincComponentCompiler.scala @@ -11,6 +11,7 @@ package inc import java.io.File import java.net.URLClassLoader +import java.util.concurrent.Callable import sbt.internal.inc.classpath.ClasspathUtilities import sbt.io.{ Hash, IO } @@ -19,6 +20,7 @@ import sbt.internal.util.FullLogger import sbt.librarymanagement._ import sbt.librarymanagement.syntax._ import sbt.util.{ InterfaceUtil, Logger } +import xsbti.GlobalLock import xsbti.compile.CompilerBridgeProvider private[sbt] object ZincComponentCompiler { @@ -145,6 +147,10 @@ private[sbt] object ZincComponentCompiler { FileRepository("local", Resolver.defaultFileConfiguration, finalPatterns) } + def getDefaultLock: GlobalLock = new GlobalLock { + override def apply[T](file: File, callable: Callable[T]): T = callable.call() + } + def getDefaultConfiguration(baseDirectory: File, ivyHome: File, resolvers0: Array[Resolver],