Download Jar. Libraryless. Click here for Pure Java version (12427L/76K).
1 | !7 |
2 | |
3 | sS defaultJavaTarget = "1.11"; |
4 | |
5 | sS standardCredentials() { ret ""; } // public snippets only |
6 | |
7 | // (transpilation md5, snippetID) => jar file |
8 | //static new SerializeComputations<PairS, File> computations; |
9 | // transpilation md5 => jar file |
10 | static new SerializeComputations<S, File> computations; |
11 | |
12 | html { |
13 | // lock lock; // now using SerializeComputations |
14 | |
15 | uri = dropPrefixSlash(uri); |
16 | S snippetID = fsI(uri); |
17 | if (!isSnippetPublic(snippetID)) fail("Snippet not public: " + snippetID); |
18 | S transpiledSrc = getServerTranspiled2(snippetID); |
19 | |
20 | // md5 check (if parameter supplied) |
21 | |
22 | S md5 = params.get('md5); |
23 | S srcMD5 = md5(transpiledSrc); |
24 | if (md5 != null && !eq(md5, srcMD5)) ret "md5 mismatch"; |
25 | |
26 | File jar = computations.get(srcMD5/*, snippetID)*/, -> { |
27 | remutable transpiledSrc; |
28 | int i = transpiledSrc.indexOf('\n'); |
29 | S libs = transpiledSrc.substring(0, Math.max(0, i)); |
30 | printVars(+snippetID, +libs); |
31 | transpiledSrc = transpiledSrc.substring(i+1); |
32 | S javaTarget = or(params.get('javaTarget), defaultJavaTarget); |
33 | CompilerBot.verbose = true; |
34 | ret CompilerBot.compile(transpiledSrc, libs, javaTarget, snippetID); |
35 | }); |
36 | |
37 | bool forceRepackage = eq("1", params.get("repackage")); |
38 | bool withLibs = eq("1", params.get("withLibs")); |
39 | bool noCompiler = eq("1", params.get("noCompiler")); |
40 | bool withX30 = eq("1", params.get("withX30")); |
41 | bool noSrc = eq("1", params.get("noSrc")); |
42 | bool dynamicObjectOnly = eq("dynamicObjectOnly", params.get("mode")); |
43 | |
44 | File jar2 = jar; |
45 | if (withLibs) jar2 = appendToBaseFileName(jar2, ".with-libs"); |
46 | if (noCompiler) jar2 = appendToBaseFileName(jar2, ".no-compiler"); |
47 | if (dynamicObjectOnly) jar2 = appendToBaseFileName(jar2, ".dynamicObjectOnly"); |
48 | if (noSrc) jar2 = appendToBaseFileName(jar2, ".noSrc"); |
49 | |
50 | if (!eq(jar, jar2)) { |
51 | if (fileLength(jar2) <= 22 || forceRepackage) { |
52 | temp var jarOut = zipOutputStream(jar2); |
53 | new Set<S> entries; |
54 | |
55 | text2zip(jarOut, "source.txt", f2s(jar2)); |
56 | |
57 | bool withSrc = !noSrc; |
58 | |
59 | zip2zip_collectFiles(jar, jarOut, entries, name -> withSrc || !endsWith(name, ".java")); |
60 | |
61 | if (withLibs) { |
62 | Pair<S, LS> srcAndLibs = extractLibsFromTranspilation(transpiledSrc); |
63 | fOr (S libID : srcAndLibs.b) { |
64 | File fixer = compilerBotDestDir("fixer" + psI(libID) + ".jar"); |
65 | |
66 | if (fileExists(fixer)) { |
67 | println("APPLYING FIXER: " + fixer); |
68 | zip2zip_collectFiles(fixer, jarOut, entries); |
69 | } |
70 | |
71 | zip2zip_collectFiles(loadLibraryOrSrcLib(libID), jarOut, entries); |
72 | /*if (withSrc && isSrcLib(libID)) |
73 | text2zip(jarOut, "lib" + libID + ".java", getServerTranspiledWithoutLibs(libID)); // TODO: use actual package and main class |
74 | */ |
75 | } |
76 | } |
77 | |
78 | if (withX30) |
79 | zip2zip_collectFiles(pathToJavaxJar(), jarOut, entries); |
80 | else if (noCompiler) |
81 | zip2zip_collectFiles(pathToJavaxJar(), jarOut, entries, name -> ! |
82 | startsWithOneOf(name, "org/eclipse/", "META-INF/")); |
83 | else if (dynamicObjectOnly) |
84 | zip2zip_collectFiles(pathToJavaxJar(), jarOut, entries, name -> contains(name, "DynamicObject")); |
85 | } |
86 | |
87 | jar = jar2; |
88 | } |
89 | |
90 | print("Serving jar for " + snippetID + ": " + renderFileInfo(jar)); |
91 | ret subBot_serveFileWithName(jar, psI(snippetID) + ".jar", "application/java-archive"); |
92 | } |
Began life as a copy of #1020140
download show line numbers debug dex old transpilations
Travelled to 2 computer(s): bhatertpkbcr, mqqgnosmbjvj
No comments. add comment
Snippet ID: | #1033537 |
Snippet name: | Jar Web Bot [backup] |
Eternal ID of this version: | #1033537/2 |
Text MD5: | 9b6ab0ad27c8c8d98faaabb22c9c11e9 |
Transpilation MD5: | 810b62b98a178b1d9fca207b4317a8da |
Author: | stefan |
Category: | javax / web |
Type: | JavaX module (desktop) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2021-11-01 20:55:03 |
Source code size: | 3502 bytes / 92 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 214 / 833 |
Version history: | 1 change(s) |
Referenced in: | [show references] |