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)