pnuts.security
Class SecurePnutsImpl

java.lang.Object
  extended by pnuts.lang.Runtime
      extended by pnuts.lang.PnutsImpl
          extended by pnuts.ext.ImplementationAdapter
              extended by pnuts.security.SecurePnutsImpl
All Implemented Interfaces:
Executable, Implementation
Direct Known Subclasses:
JAASPnutsImpl

public class SecurePnutsImpl
extends ImplementationAdapter

A PnutsImpl subclass that execute scripts in an access control context in Java2 Security.

e.g.
  context.setImplementation(new SecurePnutsImpl(new CompilerPnutsImpl(), codesource))
 


Nested Class Summary
 
Nested classes/interfaces inherited from class pnuts.lang.Runtime
Runtime.Accessor, Runtime.Break, Runtime.Continue, Runtime.FunctionSerializer, Runtime.TypeMap
 
Field Summary
 
Fields inherited from class pnuts.lang.PnutsImpl
properties
 
Fields inherited from class pnuts.lang.Runtime
BOOLEAN_SYMBOL, BYTE_SYMBOL, CHAR_SYMBOL, CLONE, DOUBLE_SYMBOL, EXCEPTOIN_FIELD_SYMBOL, FLOAT_SYMBOL, INT_SYMBOL, LONG_SYMBOL, SHORT_SYMBOL, VOID_SYMBOL
 
Constructor Summary
SecurePnutsImpl(Implementation impl)
          A Constructor
SecurePnutsImpl(Implementation impl, java.security.CodeSource codeSource)
          A Constructor
SecurePnutsImpl(PnutsImpl impl)
          Deprecated. replaced by SecurePnutsImpl(Implementation)
SecurePnutsImpl(PnutsImpl impl, java.security.CodeSource codeSource)
          Deprecated. replaced by SecurePnutsImpl(Implementation, CodeSource)
 
Method Summary
 java.lang.Object accept(SimpleNode node, Context context)
          Evaluate a parsed script
protected  void addSandBoxPermissions(java.net.URL codebase, java.security.PermissionCollection perms)
          Add Applet sand-box permissions to the specified PermissionCollection.
 java.lang.Object eval(java.lang.String expr, Context context)
          Evaluate an expreesion
protected  java.security.PermissionCollection getPermissions(java.security.CodeSource codesource)
          Returns permissions from policy file, plus Applet's sand-box permissions.
protected  java.security.PermissionCollection getPolicyPermissions(java.security.CodeSource codesource)
          Gets permission declared in the policy file
 java.lang.Object load(java.lang.String file, Context context)
          Load a script file using classloader
 java.lang.Object load(java.net.URL scriptURL, Context context)
          Load a script file from a URL
 java.lang.Object loadFile(java.lang.String filename, Context context)
          Load a script file from local file system
 java.lang.String toString()
           
 
Methods inherited from class pnuts.ext.ImplementationAdapter
getBaseImpl
 
Methods inherited from class pnuts.lang.PnutsImpl
getDefault, popFile, provide, pushFile, queryProperty, revoke, setProperties, setProperty
 
Methods inherited from class pnuts.lang.Runtime
_callConstructor, _callMethod, add, add, add1, add1, addImport, addStaticMembers, and, and, applyGenerator, arraydim, arrayType, call, call, callConstructor, callFunction, callMethod, cast, catchException, checkException, checkException, compareObjects, compareTo, compareTo, createList, createMap, defineTopLevelFunction, defineUnboundFunction, divide, divide, eq, eq, escape, exec, execute, fileToURL, findCallableMethod, format, format, ge, ge, getArrayLength, getBeanProperty, getBeanProperty, getBeanProperty, getBeanPropertyType, getBeginColumn, getBeginLine, getBottomType, getCompiledScript, getConstructors, getElement, getElementAt, getEndLine, getField, getField, getFunction, getFunction, getFunctions, getMessage, getMethods, getProperty, getRange, getRuntime, getScriptReader, getScriptSource, getScriptURL, getStaticField, getThreadContext, gt, gt, isArray, isGenerator, jump, le, le, loadNode, lt, lt, makeArray, matchType, mod, mod, multiply, multiply, ne, ne, negate, negate, newInstance, not, not, or, or, parseChar, parseFloat, parseInt, parseString, primitive, printError, putField, putStaticField, quantity, replaceChar, run, saveNode, setBeanProperty, setBeanProperty, setBeanProperty, setElement, setExitHook, setLine, setLine, setPackage, setRange, setThreadContext, shiftArithmetic, shiftArithmetic, shiftLeft, shiftLeft, shiftRight, shiftRight, subtract, subtract, subtract1, subtract1, throwException, toBoolean, toEnumeration, transform, transform, unparse, xor, xor
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

SecurePnutsImpl

public SecurePnutsImpl(PnutsImpl impl)
Deprecated. replaced by SecurePnutsImpl(Implementation)

A Constructor

Parameters:
impl - a PnutsImpl object

SecurePnutsImpl

public SecurePnutsImpl(Implementation impl)
A Constructor

Parameters:
impl - a PnutsImpl object

SecurePnutsImpl

public SecurePnutsImpl(PnutsImpl impl,
                       java.security.CodeSource codeSource)
Deprecated. replaced by SecurePnutsImpl(Implementation, CodeSource)

A Constructor

Parameters:
impl - the base implementation
codeSource - a CodeSource object which indicates the source of the expression execute by eval(String, Context).

SecurePnutsImpl

public SecurePnutsImpl(Implementation impl,
                       java.security.CodeSource codeSource)
A Constructor

Parameters:
impl - the base implementation
codeSource - a CodeSource object which indicates the source of the expression execute by eval(String, Context).
Method Detail

eval

public java.lang.Object eval(java.lang.String expr,
                             Context context)
Evaluate an expreesion

Specified by:
eval in interface Implementation
Overrides:
eval in class ImplementationAdapter
Parameters:
expr - the expression to be evaluated
context - the context in which the expression is evaluated
Returns:
the result of the evaluation

accept

public java.lang.Object accept(SimpleNode node,
                               Context context)
Evaluate a parsed script

Specified by:
accept in interface Implementation
Overrides:
accept in class ImplementationAdapter
Parameters:
node - the parsed script
context - the context in which the script is evaluated
Returns:
the result of the evaluation

load

public java.lang.Object load(java.lang.String file,
                             Context context)
                      throws java.io.FileNotFoundException
Load a script file using classloader

Specified by:
load in interface Implementation
Overrides:
load in class ImplementationAdapter
Parameters:
file - the name of the script
context - the context in which the script is executed
Returns:
the result of the evaluation
Throws:
java.io.FileNotFoundException

loadFile

public java.lang.Object loadFile(java.lang.String filename,
                                 Context context)
                          throws java.io.FileNotFoundException
Load a script file from local file system

Specified by:
loadFile in interface Implementation
Overrides:
loadFile in class ImplementationAdapter
Parameters:
filename - the file name of the script
context - the context in which the expression is evaluated
Returns:
the result of the evaluation
Throws:
java.io.FileNotFoundException

load

public java.lang.Object load(java.net.URL scriptURL,
                             Context context)
Load a script file from a URL

Specified by:
load in interface Implementation
Overrides:
load in class ImplementationAdapter
Parameters:
scriptURL - the URL of the script
context - the context in which the script is executed
Returns:
the result of the evaluation

getPolicyPermissions

protected java.security.PermissionCollection getPolicyPermissions(java.security.CodeSource codesource)
Gets permission declared in the policy file

Parameters:
codesource - the CodeSource of the script
Returns:
the permissions for the script

addSandBoxPermissions

protected void addSandBoxPermissions(java.net.URL codebase,
                                     java.security.PermissionCollection perms)
Add Applet sand-box permissions to the specified PermissionCollection.

Parameters:
codebase - the codebase of the script
perms - the base PermissionCollection

getPermissions

protected java.security.PermissionCollection getPermissions(java.security.CodeSource codesource)
Returns permissions from policy file, plus Applet's sand-box permissions. A subclass may override this method to define a custom security policy.

Parameters:
codesource - the CodeSource of the script
Returns:
the PermissionCollection for the script

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object