package eu.aniketos.pdplib; import security.iit.pdp.EnvException; import security.iit.pdp.VarEnvironment; import eu.aniketos.spec.AExp; import eu.aniketos.spec.BConst; import eu.aniketos.spec.BExp; import eu.aniketos.spec.BGuard; import eu.aniketos.spec.BIdentifier; import eu.aniketos.spec.BInvocation; import eu.aniketos.spec.BOp; import eu.aniketos.spec.IGuard; import eu.aniketos.spec.SGuard; import eu.aniketos.spec.SConst; import eu.aniketos.spec.Append; import eu.aniketos.spec.SIdentifier; import eu.aniketos.spec.SInvocation; import eu.aniketos.spec.SExp; import security.iit.pdp.EnvException; import security.iit.pdp.VarEnvironment; public abstract class SExpPDP extends SExp{ public static SExpPDP generateSExpPDP(SExp sexp) { if(sexp instanceof SConst){ return new SExpConstPDP(sexp); } else if(sexp instanceof SIdentifier){ return new SExpIdentifierPDP(sexp); } else if(sexp instanceof SInvocation){ return new SExpInvocationPDP(sexp); } else if(sexp instanceof Append){ return new SExpAppendPDP(sexp); } else return null; } /** * evaluate the string expression * @param env: the Environment * @return the evaluation * @throws EnvException */ public abstract String eval(VarEnvironment env) throws EnvException; }