jif.types.principal
Class DynamicPrincipal_c
java.lang.Object
polyglot.types.TypeObject_c
jif.types.principal.Principal_c
jif.types.principal.DynamicPrincipal_c
- All Implemented Interfaces:
- java.io.Serializable, java.lang.Cloneable, Param, DynamicPrincipal, Principal, polyglot.types.TypeObject, polyglot.util.Copy
public class DynamicPrincipal_c
- extends Principal_c
- implements DynamicPrincipal
An implementation of the DynamicPrincipal
interface.
- See Also:
- Serialized Form
Fields inherited from class polyglot.types.TypeObject_c |
position, ts |
Methods inherited from class polyglot.types.TypeObject_c |
copy, equals, position, typeSystem |
Methods inherited from class java.lang.Object |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
Methods inherited from interface polyglot.types.TypeObject |
position, typeSystem |
Methods inherited from interface polyglot.util.Copy |
copy |
DynamicPrincipal_c
public DynamicPrincipal_c(AccessPath path,
JifTypeSystem ts,
polyglot.util.Position pos,
PrincipalToJavaExpr toJava)
path
public AccessPath path()
- Specified by:
path
in interface DynamicPrincipal
isRuntimeRepresentable
public boolean isRuntimeRepresentable()
- Specified by:
isRuntimeRepresentable
in interface Param
- Specified by:
isRuntimeRepresentable
in class Principal_c
isCanonical
public boolean isCanonical()
- Specified by:
isCanonical
in interface Param
- Specified by:
isCanonical
in interface polyglot.types.TypeObject
- Specified by:
isCanonical
in class Principal_c
toString
public java.lang.String toString()
- Overrides:
toString
in class java.lang.Object
equalsImpl
public boolean equalsImpl(polyglot.types.TypeObject o)
- Specified by:
equalsImpl
in interface polyglot.types.TypeObject
- Specified by:
equalsImpl
in class Principal_c
hashCode
public int hashCode()
- Specified by:
hashCode
in class Principal_c
throwTypes
public java.util.List throwTypes(polyglot.types.TypeSystem ts)
- Description copied from interface:
Principal
- If the principal is runtime representable, when it is evaluated at
runtime it may throw exceptions. This method returns a list of
the exceptions that the runtime evaluation of the principal may produce.
If the principal cannot be evaluated at runtime, an empty list should be returned.
- Specified by:
throwTypes
in interface Principal
- Overrides:
throwTypes
in class Principal_c
subst
public Principal subst(LabelSubstitution substitution)
throws polyglot.types.SemanticException
- Specified by:
subst
in interface Principal
- Overrides:
subst
in class Principal_c
- Parameters:
substitution
- The LabelSubstitution
to apply to this
principal
- Returns:
- the result of applying labelSubst to this principal.
- Throws:
polyglot.types.SemanticException
labelCheck
public PathMap labelCheck(JifContext A,
LabelChecker lc)
- Description copied from interface:
Principal
- Label check the principal, which will determine how much information may be
gained if the principal is evaluated at runtime. For example, given the
dynamic principal p, where p is a local variable, evaluation of this
label at runtime will reveal as much information as the label of p. For
example, the following code is illegal, as the runtime evaluation of the
principal reveals too much information
boolean{Alice:} secret = ...;
final principal{Alice:} p = secret?Bob:Chuck;
boolean{} leak = false;
if (p actsfor Bob) { // evaluation of p reveals
// information at level {Alice:}
leak = true;
}
- Specified by:
labelCheck
in interface Principal
- Overrides:
labelCheck
in class Principal_c
- See Also:
Jif.labelCheck(LabelChecker)
,
Label.labelCheck(JifContext, LabelChecker)