Currently the class needs to be public, if we want to make calls to it from WebView's engine
2 * Back 2 Browser Bytecode Translator
3 * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, version 2 of the License.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. Look for COPYING file in the top folder.
16 * If not, see http://opensource.org/licenses/GPL-2.0.
18 package org.apidesign.bck2brwsr.core;
20 import java.lang.annotation.ElementType;
21 import java.lang.annotation.Retention;
22 import java.lang.annotation.RetentionPolicy;
23 import java.lang.annotation.Target;
25 /** Put this annotation on a method to provide its special implementation
26 * in JavaScript. This is a way to define <em>native</em> methods that
27 * interact with the surrounding environment.
29 * @author Jaroslav Tulach <jtulach@netbeans.org>
31 @Retention(RetentionPolicy.CLASS)
32 @Target({ ElementType.METHOD, ElementType.CONSTRUCTOR })
33 public @interface JavaScriptBody {
34 /** Names of parameters for the method generated method that can
35 * be referenced from {@link #body()}.
37 * @return array of the names of parameters for the method
40 public String[] args();
42 /** The actual body of the method in JavaScript. This string will be
43 * put into generated header (ends with '{') and footer (ends with '}').
44 * The body can reference provided arguments. In case of non-static
45 * instance method it may reference <code>this</code>. It can also
46 * call methods and access fields - if
47 * <a href="http://wiki.apidesign.org/wiki/Bck2BrwsrMangling">proper mangling</a>
48 * is used. Methods that return some value should end with <code>return</code>