001 package railo.runtime.functions.decision; 002 003 import railo.runtime.PageContext; 004 import railo.runtime.exp.FunctionException; 005 import railo.runtime.exp.PageException; 006 import railo.runtime.ext.function.Function; 007 import railo.runtime.functions.string.Len; 008 import railo.runtime.op.Caster; 009 import railo.runtime.op.Decision; 010 011 public class IsEmpty implements Function { 012 013 private static final long serialVersionUID = -2839407878650099024L; 014 015 public static boolean call(PageContext pc , Object value) throws PageException { 016 if(value==null) return true; 017 if(value instanceof Boolean) return !Caster.toBoolean(value); 018 if(value instanceof Number) return Caster.toDoubleValue(value)==0D; 019 020 021 double len=Len.invoke(value, -1); 022 if(len==-1)throw new FunctionException(pc,"isEmpty",1,"variable","this type ["+Caster.toTypeName(value)+"] is not supported"); 023 return len==0; 024 } 025 026 }