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.String toString()
           
 
Methods inherited from class pnuts.ext.ImplementationAdapter
getBaseImpl, loadFile
 
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, compareTo, compareTo, createBeanAccessor, createMap, defineTopLevelFunction, defineUnboundFunction, divide, divide, eq, eq, escape, exec, execute, fileToURL, findCallableMethod, format, format, ge, ge, getAccessor, 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

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