| /////////////////////////////////////////////////////////////// |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| /////////////////////////////////////////////////////////////// |
| |
| [[lang-javascript, Javascript Scripting Library]] |
| = Javascript Scripting = |
| |
| [devstatus] |
| -------------- |
| source=libraries/lang-javascript/dev-status.xml |
| -------------- |
| |
| The Javascript Scripting Library allows Mixin methods to be implemented in Javascript and loaded dynamically on first use. |
| |
| include::../../build/docs/buildinfo/artifact.txt[] |
| |
| The Javascript Scripting Library is a Generic mixin class that implements |
| Composite interfaces by delegating to JavaScript functions using Rhino. Each |
| method in an interface is declared as a JS function in a file located in |
| classpath with the name "<interface>.<method>.js", where the interface name |
| includes the package, and has "." replaced with "/". |
| |
| Example: |
| |
| org/apache/zest/samples/hello/domain/HelloWorldSpeaker.say.js |
| |
| That means that the HelloWorldSpeaker.say.js file may be co-located with the |
| class files in the same package. It is currently not supported to place the |
| Javascript implementation of the mixin in a different package than the |
| interface it implements. |
| |
| To use Javascript to implement the Mixin functionality for a given interface, |
| simply declare the +JavaScriptMixin+ like any other mixin, either in the |
| interface or at assembly time. |
| |
| [snippet,java] |
| ---- |
| source=libraries/lang-javascript/src/test/java/org/apache/zest/library/javascript/HelloSpeaker.java |
| tag=mixin |
| ---- |