View Javadoc
1   /*
2    * DavMail POP/IMAP/SMTP/CalDav/LDAP Exchange Gateway
3    * Copyright (C) 2010  Mickael Guessant
4    *
5    * This program is free software; you can redistribute it and/or
6    * modify it under the terms of the GNU General Public License
7    * as published by the Free Software Foundation; either version 2
8    * of the License, or (at your option) any later version.
9    *
10   * This program is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   * GNU General Public License for more details.
14   *
15   * You should have received a copy of the GNU General Public License
16   * along with this program; if not, write to the Free Software
17   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
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  }