package railo.runtime.util;
import railo.runtime.exp.PageException;
import railo.runtime.type.Collection;
import railo.runtime.type.Collection.Key;
/**
* Object to test if a Object is a specific type
*/
public interface Decision {
// FUTURE add function isJson and others we support in the core
// FUTURE add function is(String type, Object value)
/**
* tests if value is a simple value (Number,String,Boolean,Date,Printable)
* @param value value to test
* @return is value a simple value
*/
public boolean isSimpleValue(Object value);
/**
* tests if value is Numeric
* @param value value to test
* @return is value numeric
*/
public boolean isNumeric(Object value);
/**
* tests if String value is Numeric
* @param str value to test
* @return is value numeric
*/
public boolean isNumeric(String str);
/** tests if String value is Hex Value
* @param str value to test
* @return is value numeric
*/
public boolean isHex(String str);
/** tests if String value is UUID Value
* @param str value to test
* @return is value numeric
*/
public boolean isUUID(String str);
/**
* tests if value is a Boolean (Numbers are not acctepeted)
* @param value value to test
* @return is value boolean
*/
public boolean isBoolean(Object value);
/**
* tests if value is a Boolean
* @param str value to test
* @return is value boolean
*/
public boolean isBoolean(String str);
/**
* tests if value is DateTime Object
* @param value value to test
* @param alsoNumbers interpret also a number as date
* @return is value a DateTime Object
*/
public boolean isDate(Object value,boolean alsoNumbers);
/**
* tests if object is a struct
* @param o
* @return is struct or not
*/
public boolean isStruct(Object o);
/**
* tests if object is a array
* @param o
* @return is array or not
*/
public boolean isArray(Object o);
/**
* tests if object is a native java array
* @param o
* @return is a native (java) array
*/
public boolean isNativeArray(Object o);
/**
* tests if object is a binary
* @param object
* @return boolean
*/
public boolean isBinary(Object object);
/**
* tests if object is a Component
* @param object
* @return boolean
*/
public boolean isComponent(Object object);
/**
* tests if object is a Query
* @param object
* @return boolean
*/
public boolean isQuery(Object object);
/**
* tests if object is a binary
* @param object
* @return boolean
*/
public boolean isUserDefinedFunction(Object object);
// FUTURE add isClosure and isFunction, set function above to deprecated
/**
* tests if year is a leap year
* @param year year to check
* @return boolean
*/
public boolean isLeapYear(int year);
/**
* tests if object is a WDDX Object
* @param o Object to check
* @return boolean
*/
public boolean isWddx(Object o);
/**
* tests if object is a XML Object
* @param o Object to check
* @return boolean
*/
public boolean isXML(Object o);
/**
* tests if object is a XML Element Object
* @param o Object to check
* @return boolean
*/
public boolean isXMLElement(Object o);
/**
* tests if object is a XML Document Object
* @param o Object to check
* @return boolean
*/
public boolean isXMLDocument(Object o);
/**
* tests if object is a XML Root Element Object
* @param o Object to check
* @return boolean
*/
public boolean isXMLRootElement(Object o);
/**
* @param string
* @return returns if string represent a variable name
*/
public boolean isVariableName(String string);
/**
* @param string
* @return returns if string represent a variable name
*/
public boolean isSimpleVariableName(String string);
/**
* returns if object is a CFML object
* @param o Object to check
* @return is or not
*/
public boolean isObject(Object o);
/**
*
* @param str
* @return return if a String is "Empty", that means NULL or String with length 0 (whitespaces will not counted)
*/
public boolean isEmpty(String str);
/**
*
* @param str
* @param trim
* @return return if a String is "Empty", that means NULL or String with length 0 (whitespaces will not counted)
*/
public boolean isEmpty(String str, boolean trim);
public Key toKey(Object obj) throws PageException;
public Key toKey(Object obj, Collection.Key defaultValue);
}