///////////////////////////////////////////////////////////////
 * 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.
///////////////////////////////////////////////////////////////

[[library-script-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/qi4j/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/qi4j/lang/javascript/HelloSpeaker.java
tag=mixin
----
