Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.commons.jexl3.introspection
Class JexlSandbox

    java.lang.Object
      org.apache.commons.jexl3.introspection.JexlSandbox

    public final class JexlSandbox

extends Object

A sandbox describes permissions on a class by explicitly allowing or forbidding access to methods and properties through "whitelists" and "blacklists".

A whitelist explicitly allows methods/properties for a class;

- If a whitelist is empty and thus does not contain any names, all properties/methods are allowed for its class.
- If it is not empty, the only allowed properties/methods are the ones contained.

A blacklist explicitly forbids methods/properties for a class;

- If a blacklist is empty and thus does not contain any names, all properties/methods are forbidden for its class.
- If it is not empty, the only forbidden properties/methods are the ones contained.

Permissions are composed of three lists, read, write, execute, each being "white" or "black":

- read controls readable properties
- write controls writable properties
- execute controls executable methods and constructor

Note that a JexlUberspect always uses a copy of the JexlSandbox used to built it to avoid synchronization and/or concurrent modifications at runtime.

Since:
  3.0

Nested Class Summary
`static class` | `JexlSandbox.BlackSet` A black set of names.
`static class` | `JexlSandbox.Names` A base set of names.
`static class` | `JexlSandbox.Permissions` Contains the white or black lists for properties and methods for a given class.
`static class` | `JexlSandbox.WhiteSet` A white set of names.

Constructor Summary
`` | `JexlSandbox()` Creates a new default sandbox.
`` | `JexlSandbox(boolean wb)` Creates a new default sandbox.
`protected` | `JexlSandbox(boolean wb, Map<String,JexlSandbox.Permissions> map)` Creates a sandbox based on an existing permissions map.
`protected` | `JexlSandbox(Map<String,JexlSandbox.Permissions> map)` Creates a sandbox based on an existing permissions map.

Method Summary
`JexlSandbox.Permissions` | `black(String clazz)` Creates a new set of permissions based on black lists for methods and properties for a given class.
`JexlSandbox` | `copy()`
`String` | `execute(Class<?> clazz, String name)` Gets the execute permission value for a given method of a class.
`String` | `execute(String clazz, String name)` Gets the execute permission value for a given method of a class.
`JexlSandbox.Permissions` | `get(String clazz)` Gets the set of permissions associated to a class.
`JexlSandbox.Permissions` | `permissions(String clazz, boolean readFlag, boolean writeFlag, boolean executeFlag)` Creates the set of permissions for a given class.
`String` | `read(Class<?> clazz, String name)` Gets the read permission value for a given property of a class.
`String` | `read(String clazz, String name)` Gets the read permission value for a given property of a class.
`JexlSandbox.Permissions` | `white(String clazz)` Creates a new set of permissions based on white lists for methods and properties for a given class.
`String` | `write(Class<?> clazz, String name)` Gets the write permission value for a given property of a class.
`String` | `write(String clazz, String name)` Gets the write permission value for a given property of a class.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### JexlSandbox

    public JexlSandbox()

  Creates a new default sandbox.

  In the absence of explicit permissions on a class, the sandbox is a white-box, white-listing that class for all permissions (read, write and execute).

### JexlSandbox

    public JexlSandbox(boolean wb)

  Creates a new default sandbox.

  A white-box considers no permissions as "everything is allowed" when a black-box considers no permissions as "nothing is allowed".

  Parameters:
    `wb` - whether this sandbox is white (true) or black (false) if no permission is explicitly defined for a class.
  Since:
    3.1

### JexlSandbox

    protected JexlSandbox(Map<String,JexlSandbox.Permissions> map)

  Creates a sandbox based on an existing permissions map.

  Parameters:
    `map` - the permissions map

### JexlSandbox

    protected JexlSandbox(boolean wb,
                          Map<String,JexlSandbox.Permissions> map)

  Creates a sandbox based on an existing permissions map.

  Parameters:
    `wb` - whether this sandbox is white (true) or black (false)
    `map` - the permissions map
  Since:
    3.1

Method Detail

### copy

    public JexlSandbox copy()

  Returns:
    a copy of this sandbox

### read

    public String read(Class<?> clazz,
                       String name)

  Gets the read permission value for a given property of a class.

  Parameters:
    `clazz` - the class
    `name` - the property name
  Returns:
    null if not allowed, the name of the property to use otherwise

### read

    public String read(String clazz,
                       String name)

  Gets the read permission value for a given property of a class.

  Parameters:
    `clazz` - the class name
    `name` - the property name
  Returns:
    null if not allowed, the name of the property to use otherwise

### write

    public String write(Class<?> clazz,
                        String name)

  Gets the write permission value for a given property of a class.

  Parameters:
    `clazz` - the class
    `name` - the property name
  Returns:
    null if not allowed, the name of the property to use otherwise

### write

    public String write(String clazz,
                        String name)

  Gets the write permission value for a given property of a class.

  Parameters:
    `clazz` - the class name
    `name` - the property name
  Returns:
    null if not allowed, the name of the property to use otherwise

### execute

    public String execute(Class<?> clazz,
                          String name)

  Gets the execute permission value for a given method of a class.

  Parameters:
    `clazz` - the class
    `name` - the method name
  Returns:
    null if not allowed, the name of the method to use otherwise

### execute

    public String execute(String clazz,
                          String name)

  Gets the execute permission value for a given method of a class.

  Parameters:
    `clazz` - the class name
    `name` - the method name
  Returns:
    null if not allowed, the name of the method to use otherwise

### permissions

    public JexlSandbox.Permissions permissions(String clazz,
                                               boolean readFlag,
                                               boolean writeFlag,
                                               boolean executeFlag)

  Creates the set of permissions for a given class.

  Parameters:
    `clazz` - the class for which these permissions apply
    `readFlag` - whether the readable property list is white - true - or black - false -
    `writeFlag` - whether the writable property list is white - true - or black - false -
    `executeFlag` - whether the executable method list is white white - true - or black - false -
  Returns:
    the set of permissions

### white

    public JexlSandbox.Permissions white(String clazz)

  Creates a new set of permissions based on white lists for methods and properties for a given class.

  Parameters:
    `clazz` - the whitened class name
  Returns:
    the permissions instance

### black

    public JexlSandbox.Permissions black(String clazz)

  Creates a new set of permissions based on black lists for methods and properties for a given class.

  Parameters:
    `clazz` - the blackened class name
  Returns:
    the permissions instance

### get

    public JexlSandbox.Permissions get(String clazz)

  Gets the set of permissions associated to a class.

  Parameters:
    `clazz` - the class name
  Returns:
    the defined permissions or an all-white permission instance if none were defined

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2001–2017 The Apache Software Foundation. All rights reserved.