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