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    }