Arf firm1 y’a plein de trucs moches dans ce bout de code :
1/ Tu log rien, tu te contentes d’un printStackTrace
, c’est vraiment une mauvaise pratique
2/ Tu te compliques énormément la vie pour lire un bête fichier, si tu veux un Path
, fais juste une Paths.get(...)
, et de manière générale, pense à java.nio
3/ En parlant de ça, prends l’habitude de wrapper toutes les opérations sur les fichiers (lectures, écritures) dans des bloc "try-with-resources"
Bref, utilise java 7, on en est à Java 10 là
=>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 | public class ZMD {
ScriptEngineManager engineManager;
ScriptEngine engine;
Invocable invocable;
public ZMD() {
engineManager = new ScriptEngineManager();
engine = engineManager.getEngineByName("nashorn");
invocable = (Invocable) engine;
try(Reader convert = read("js/convert.js"); Reader zmd = read("js/zmarkdown.js")) {
engine.eval(convert);
engine.eval(zmd);
} catch (IOException | ScriptException e) {
LOG.error("Could not evaluate JS scripts", e);
}
}
public String toHtml(String md) {
Object html = null;
try {
html = invocable.invokeFunction("toHtml", md);
return html.toString();
} catch (ScriptException | NoSuchMethodException e) {
LOG.error("Could not convert md to html", e);
}
return null;
}
private static Reader read(String path) throws IOException {
return Files.newBufferedReader(Paths.get(path));
}
}
|
C’est pas fou, mais c’est plus "récent" comme Java déjà.