1 3 package jodd.bean; 4 5 import java.util.HashMap ; 6 import java.util.Iterator ; 7 import java.util.Map ; 8 9 import jodd.bean.loader.*; 10 11 14 public class BeanLoaderManager { 15 16 18 private static Map loaders = new HashMap (); 19 20 static { 21 registerDefaults(); 22 } 23 24 27 public static void unregisterAll() { 28 loaders.clear(); 29 } 30 31 32 42 public static void registerDefaults() { 43 register(java.util.Map .class, new MapBeanLoader()); 44 register(java.sql.ResultSet .class, new ResultSetBeanLoader()); 45 try { 46 Class.forName("javax.servlet.http.HttpServletRequest"); register(javax.servlet.http.HttpServletRequest .class, new RequestBeanLoader()); 48 Class.forName("javax.servlet.http.HttpSession"); 49 register(javax.servlet.http.HttpSession .class, new SessionBeanLoader()); 50 Class.forName("javax.servlet.ServletContext"); 51 register(javax.servlet.ServletContext .class, new ServletContextBeanLoader()); 52 register(jodd.servlet.upload.MultipartRequest.class, new MultipartRequestBeanLoader()); 53 register(jodd.servlet.upload.MultipartRequestWrapper.class, new MultipartRequestWrapperBeanLoader()); 54 } catch (ClassNotFoundException cnfex) { 55 } 57 } 58 59 67 public static void register(Class type, BeanLoader load) { 68 loaders.put(type, load); 69 } 70 71 public static void unregister(Class type) { 72 loaders.remove(type); 73 } 74 75 76 78 79 86 public static BeanLoader lookup(Class type) { 87 return (BeanLoader) loaders.get(type); 88 } 89 90 94 public static BeanLoader lookup(Object source) { 95 BeanLoader load = lookup(source.getClass()); 96 if (load == null) { Iterator it = loaders.keySet().iterator(); 98 while (it.hasNext()) { 99 Class key = (Class ) it.next(); 100 if (key.isInstance(source)) { 101 load = lookup(key); 102 break; 103 } 104 } 105 } 106 return load; 107 } 108 109 111 114 public static void load(Object bean, Object source) { 115 BeanLoader loader = lookup(source); 116 if (loader == null) { 117 throw new BeanException("No registered loader for source: " + source.getClass().getName()); 118 } 119 loader.load(bean, source); 120 } 121 122 public static void load(Object bean, Object source, Class type) { 123 BeanLoader loader = lookup(type); 124 if (loader == null) { 125 throw new BeanException("No registered loader for type: " + type.getName()); 126 } 127 loader.load(bean, source); 128 } 129 130 131 public static void load(Object bean, Object source, BeanLoader loader) { 132 loader.load(bean, source); 133 } 134 } | Popular Tags |