1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package davmail.exchange.auth;
21
22 import javafx.scene.web.WebEngine;
23 import org.apache.log4j.Logger;
24
25 import java.lang.reflect.InvocationTargetException;
26 import java.lang.reflect.Method;
27
28 @SuppressWarnings({"rawtypes", "unchecked"})
29 public class O365InteractiveJSLogger {
30 private static final Logger LOGGER = Logger.getLogger(O365InteractiveJSLogger.class);
31 public void log(String message) {
32 LOGGER.info(message);
33 }
34
35 public static void register(WebEngine webEngine) {
36
37 try {
38 Class jsObjectClass = Class.forName("netscape.javascript.JSObject");
39 Method setMemberMethod = jsObjectClass.getDeclaredMethod("setMember", String.class,Object.class);
40
41 Object window = webEngine.executeScript("window");
42 setMemberMethod.invoke(window, "davmail", new O365InteractiveJSLogger());
43
44 webEngine.executeScript("console.log = function(message) { davmail.log(message); }");
45 } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
46 LOGGER.info("netscape.javascript.JSObject not available");
47 }
48
49 }
50 }