001 package railo.runtime.type.util; 002 003 import railo.runtime.Component; 004 import railo.runtime.reflection.Reflector; 005 import railo.runtime.text.xml.struct.XMLStruct; 006 import railo.runtime.type.Array; 007 import railo.runtime.type.Query; 008 import railo.runtime.type.Scope; 009 import railo.runtime.type.Struct; 010 import railo.runtime.type.UDF; 011 import railo.runtime.type.dt.DateTime; 012 013 public final class Type { 014 015 public static String getName(Object o) { 016 if(o == null) return "null"; 017 if(o instanceof UDF) return "user defined function ("+(((UDF)o).getFunctionName())+")"; 018 else if(o instanceof Boolean) return "Boolean"; 019 else if(o instanceof Number) return "Number"; 020 else if(o instanceof Array) return "Array"; 021 else if(o instanceof Component) return "Component "+((Component)o).getAbsName(); 022 else if(o instanceof Scope) return ((Scope)o).getTypeAsString(); 023 else if(o instanceof Struct) { 024 if(o instanceof XMLStruct)return "XML"; 025 return "Struct"; 026 } 027 else if(o instanceof Query) return "Query"; 028 else if(o instanceof DateTime) return "DateTime"; 029 else if(o instanceof byte[]) return "Binary"; 030 else { 031 String className=o.getClass().getName(); 032 if(className.startsWith("java.lang.")) { 033 return className.substring(10); 034 } 035 return className; 036 } 037 038 } 039 040 public static String getName(Class clazz) { 041 if(clazz == null) return "null"; 042 //String name=clazz.getName(); 043 //if(Reflector.isInstaneOf(clazz,String.class)) return "String"; 044 if(Reflector.isInstaneOf(clazz,UDF.class)) return "user defined function"; 045 //else if(Reflector.isInstaneOf(clazz,Boolean.class)) return "Boolean"; 046 //else if(Reflector.isInstaneOf(clazz,Number.class)) return "Number"; 047 else if(Reflector.isInstaneOf(clazz,Array.class)) return "Array"; 048 else if(Reflector.isInstaneOf(clazz,Struct.class)) return "Struct"; 049 else if(Reflector.isInstaneOf(clazz,Query.class)) return "Query"; 050 else if(Reflector.isInstaneOf(clazz,DateTime.class)) return "DateTime"; 051 else if(Reflector.isInstaneOf(clazz,Component.class)) return "Component"; 052 else if(Reflector.isInstaneOf(clazz,byte[].class)) return "Binary"; 053 else { 054 String className=clazz.getName(); 055 if(className.startsWith("java.lang.")) { 056 return className.substring(10); 057 } 058 return className; 059 } 060 061 062 } 063 064 }