mirror of https://github.com/sbt/sbt.git
Java 6 friendliness
This commit is contained in:
parent
59c24ed258
commit
a1585ab27c
|
|
@ -51,7 +51,7 @@ public class Bootstrap {
|
||||||
}
|
}
|
||||||
|
|
||||||
static Map<String, URL[]> readIsolationContexts(File jarDir, String[] isolationIDs, String bootstrapProtocol, ClassLoader loader) throws IOException {
|
static Map<String, URL[]> readIsolationContexts(File jarDir, String[] isolationIDs, String bootstrapProtocol, ClassLoader loader) throws IOException {
|
||||||
final Map<String, URL[]> perContextURLs = new LinkedHashMap<>();
|
final Map<String, URL[]> perContextURLs = new LinkedHashMap<String, URL[]>();
|
||||||
|
|
||||||
for (String isolationID: isolationIDs) {
|
for (String isolationID: isolationIDs) {
|
||||||
String[] strUrls = readStringSequence("bootstrap-isolation-" + isolationID + "-jar-urls");
|
String[] strUrls = readStringSequence("bootstrap-isolation-" + isolationID + "-jar-urls");
|
||||||
|
|
@ -69,7 +69,7 @@ public class Bootstrap {
|
||||||
|
|
||||||
// http://stackoverflow.com/questions/872272/how-to-reference-another-property-in-java-util-properties/27724276#27724276
|
// http://stackoverflow.com/questions/872272/how-to-reference-another-property-in-java-util-properties/27724276#27724276
|
||||||
public static Map<String,String> loadPropertiesMap(InputStream s) throws IOException {
|
public static Map<String,String> loadPropertiesMap(InputStream s) throws IOException {
|
||||||
final Map<String, String> ordered = new LinkedHashMap<>();
|
final Map<String, String> ordered = new LinkedHashMap<String, String>();
|
||||||
//Hack to use properties class to parse but our map for preserved order
|
//Hack to use properties class to parse but our map for preserved order
|
||||||
Properties bp = new Properties() {
|
Properties bp = new Properties() {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -83,7 +83,7 @@ public class Bootstrap {
|
||||||
|
|
||||||
final Pattern propertyRegex = Pattern.compile(Pattern.quote("${") + "[^" + Pattern.quote("{[()]}") + "]*" + Pattern.quote("}"));
|
final Pattern propertyRegex = Pattern.compile(Pattern.quote("${") + "[^" + Pattern.quote("{[()]}") + "]*" + Pattern.quote("}"));
|
||||||
|
|
||||||
final Map<String,String> resolved = new LinkedHashMap<>(ordered.size());
|
final Map<String, String> resolved = new LinkedHashMap<String, String>(ordered.size());
|
||||||
|
|
||||||
for (String k : ordered.keySet()) {
|
for (String k : ordered.keySet()) {
|
||||||
String value = ordered.get(k);
|
String value = ordered.get(k);
|
||||||
|
|
@ -132,6 +132,25 @@ public class Bootstrap {
|
||||||
return new File(jarDir, fileName);
|
return new File(jarDir, fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// from http://www.java2s.com/Code/Java/File-Input-Output/Readfiletobytearrayandsavebytearraytofile.htm
|
||||||
|
static void writeBytesToFile(File file, byte[] bytes) throws IOException {
|
||||||
|
BufferedOutputStream bos = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
FileOutputStream fos = new FileOutputStream(file);
|
||||||
|
bos = new BufferedOutputStream(fos);
|
||||||
|
bos.write(bytes);
|
||||||
|
} finally {
|
||||||
|
if (bos != null) {
|
||||||
|
try {
|
||||||
|
// flush and close the BufferedOutputStream
|
||||||
|
bos.flush();
|
||||||
|
bos.close();
|
||||||
|
} catch (Exception e) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static List<URL> getLocalURLs(List<URL> urls, final File jarDir, String bootstrapProtocol) throws MalformedURLException {
|
static List<URL> getLocalURLs(List<URL> urls, final File jarDir, String bootstrapProtocol) throws MalformedURLException {
|
||||||
|
|
||||||
ThreadFactory threadFactory = new ThreadFactory() {
|
ThreadFactory threadFactory = new ThreadFactory() {
|
||||||
|
|
@ -147,10 +166,10 @@ public class Bootstrap {
|
||||||
ExecutorService pool = Executors.newFixedThreadPool(concurrentDownloadCount, threadFactory);
|
ExecutorService pool = Executors.newFixedThreadPool(concurrentDownloadCount, threadFactory);
|
||||||
|
|
||||||
CompletionService<URL> completionService =
|
CompletionService<URL> completionService =
|
||||||
new ExecutorCompletionService<>(pool);
|
new ExecutorCompletionService<URL>(pool);
|
||||||
|
|
||||||
List<URL> localURLs = new ArrayList<>();
|
List<URL> localURLs = new ArrayList<URL>();
|
||||||
List<URL> missingURLs = new ArrayList<>();
|
List<URL> missingURLs = new ArrayList<URL>();
|
||||||
|
|
||||||
for (URL url : urls) {
|
for (URL url : urls) {
|
||||||
|
|
||||||
|
|
@ -184,7 +203,7 @@ public class Bootstrap {
|
||||||
byte[] b = readFullySync(s);
|
byte[] b = readFullySync(s);
|
||||||
File tmpDest = new File(dest.getParentFile(), dest.getName() + "-" + random.nextInt());
|
File tmpDest = new File(dest.getParentFile(), dest.getName() + "-" + random.nextInt());
|
||||||
tmpDest.deleteOnExit();
|
tmpDest.deleteOnExit();
|
||||||
Files.write(tmpDest.toPath(), b);
|
writeBytesToFile(tmpDest, b);
|
||||||
Files.move(tmpDest.toPath(), dest.toPath(), StandardCopyOption.ATOMIC_MOVE);
|
Files.move(tmpDest.toPath(), dest.toPath(), StandardCopyOption.ATOMIC_MOVE);
|
||||||
dest.setLastModified(lastModified);
|
dest.setLastModified(lastModified);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
@ -239,8 +258,8 @@ public class Bootstrap {
|
||||||
|
|
||||||
static List<URL> getURLs(String[] rawURLs, String[] resources, String bootstrapProtocol, ClassLoader loader) throws MalformedURLException {
|
static List<URL> getURLs(String[] rawURLs, String[] resources, String bootstrapProtocol, ClassLoader loader) throws MalformedURLException {
|
||||||
|
|
||||||
List<String> errors = new ArrayList<>();
|
List<String> errors = new ArrayList<String>();
|
||||||
List<URL> urls = new ArrayList<>();
|
List<URL> urls = new ArrayList<URL>();
|
||||||
|
|
||||||
for (String urlStr : rawURLs) {
|
for (String urlStr : rawURLs) {
|
||||||
try {
|
try {
|
||||||
|
|
@ -354,7 +373,7 @@ public class Bootstrap {
|
||||||
exit("Error: main method not found in class " + mainClass0);
|
exit("Error: main method not found in class " + mainClass0);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> userArgs0 = new ArrayList<>();
|
List<String> userArgs0 = new ArrayList<String>();
|
||||||
|
|
||||||
for (int i = 0; i < args.length; i++)
|
for (int i = 0; i < args.length; i++)
|
||||||
userArgs0.add(args[i]);
|
userArgs0.add(args[i]);
|
||||||
|
|
|
||||||
|
|
@ -254,7 +254,7 @@ lazy val cli = project
|
||||||
if (scalaVersion.value startsWith "2.10.")
|
if (scalaVersion.value startsWith "2.10.")
|
||||||
Seq()
|
Seq()
|
||||||
else
|
else
|
||||||
Seq("com.github.alexarchambault" %% "case-app" % "1.0.0-M2")
|
Seq("com.github.alexarchambault" %% "case-app" % "1.0.0-M4")
|
||||||
},
|
},
|
||||||
resourceGenerators in Compile += packageBin.in(bootstrap).in(Compile).map { jar =>
|
resourceGenerators in Compile += packageBin.in(bootstrap).in(Compile).map { jar =>
|
||||||
Seq(jar)
|
Seq(jar)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue