1 21 package com.db4o; 22 23 import java.io.ByteArrayInputStream ; 24 import java.io.ByteArrayOutputStream ; 25 import java.io.ObjectInputStream ; 26 import java.io.ObjectOutputStream ; 27 import java.lang.reflect.*; 28 import java.text.SimpleDateFormat ; 29 import java.util.Date ; 30 31 import com.db4o.reflect.Reflector; 32 import com.db4o.reflect.generic.*; 33 import com.db4o.reflect.jdk.JdkReflector; 34 35 42 class JDKReflect extends JDK { 43 Class constructorClass(){ 44 return Constructor.class; 45 } 46 47 Object deserialize(byte[] bytes) { 48 try { 49 return new ObjectInputStream (new ByteArrayInputStream (bytes)).readObject(); 50 } catch (Exception e) { 51 } 52 return null; 53 } 54 55 String format(Date date, boolean showTime) { 56 String fmt = "yyyy-MM-dd"; 57 if (showTime) { 58 fmt += " HH:mm:ss"; 59 } 60 return new SimpleDateFormat (fmt).format(date); 61 } 62 63 67 final boolean methodIsAvailable( 68 String className, 69 String methodName, 70 Class [] params) { 71 72 try { 73 74 Class clazz = Class.forName(className); 75 if (clazz.getMethod(methodName, params) !=null) { 76 return true; 77 } 78 return false; 79 } catch (Throwable t) { 80 } 81 return false; 82 } 83 84 public static Object invoke (Class clazz, String methodName, Class [] paramClasses, Object [] params){ 85 return invoke(clazz.getName(), methodName, paramClasses, params, null); 86 } 87 88 89 93 public static Object invoke (Object obj, String methodName, Class [] paramClasses, Object [] params){ 94 return invoke(obj.getClass().getName(), methodName, paramClasses, params, obj ); 95 } 96 97 101 public static Object invoke (String className, String methodName, Class [] paramClasses, Object [] params, Object onObject){ 102 try { 103 Method method = getMethod(className, methodName, paramClasses); 104 return method.invoke(onObject, params); 105 } catch (Throwable t) { 106 } 107 return null; 108 } 109 110 116 public static Method getMethod(String className, String methodName, Class [] paramClasses) { 117 try { 118 Class clazz = Class.forName(className); 119 Method method = clazz.getMethod(methodName, paramClasses); 120 return method; 121 } catch (Throwable t) { 122 } 123 return null; 124 } 125 126 public void registerCollections(GenericReflector reflector) { 127 if(! Deploy.csharp){ 128 reflector.registerCollection(java.util.Vector .class); 129 reflector.registerCollection(java.util.Hashtable .class); 130 reflector.registerCollectionUpdateDepth(java.util.Hashtable .class, 3); 131 } 132 } 133 134 byte[] serialize(Object obj) throws Exception { 135 ByteArrayOutputStream byteStream = new ByteArrayOutputStream (); 136 new ObjectOutputStream (byteStream).writeObject(obj); 137 return byteStream.toByteArray(); 138 } 139 140 public Reflector createReflector(Object classLoader) { 141 if(classLoader==null) { 142 classLoader=getContextClassLoader(); 143 144 147 classLoader= Db4o.class.getClassLoader(); 149 } 151 return new JdkReflector((ClassLoader )classLoader); 152 } 153 } 154 | Popular Tags |