----------------------
Sling javashell sample
----------------------

-------------------------------------------------------------------
SECURITY WARNING:
javashell lets user execute arbitrary code with NO LIMITS, and
is only meant as a teaching/demo tool. Use at your own risk, or
do not use if you don't understand the issues.

Just try "System.exit(0)" if you don't know what this means ;-)
-------------------------------------------------------------------

This sample application executes java code entered in an HTML form,
by generating and compiling java servlets on the fly.

Launch Sling
------------
The Sling Container can be launched by running the following command in the 
launchpad/builder/target directory:
  java -jar org.apache.sling.launchpad-<version>-standalone.jar
so if the current version is 7, the command should be:
  java -jar org.apache.sling.launchpad-7-standalone.jar

Prerequisites
-------------
To run this demo the following bundle must be installed:
  org.apache.sling.scripting.java

Install it as follows:
  contrib/scripting/java $ mvn install -P autoInstallBundle
  
Run this sample
---------------
Build and install the sample bundle by running
  $  mvn install -P autoInstallBundle
  
Then:
1. Log in by navigating to:
     http://localhost:8080/system/sling/login.html
   using admin/admin as credentials.
   
2. Navigate to:
     http://localhost:8080/content/javashell/scripts/first_example.html
     
   That page should include a "Result of execution" section which lists
   some properties and child nodes. This section is generated by the
   javashell script.
   
   If you get the default HTML rendering under the "Result of execution"
   header, the scripting.java bundle is probably not active.		
		
3. The above page includes links to edit the java code, and create new
   pages with more code to execute. 
   
The servlets are generated under /apps/javashell/servlets, and are *not* 
cleaned up currently, this is something that should be improved.
