1 18 package org.apache.beehive.netui.databinding.datagrid.runtime.util; 19 20 import org.apache.beehive.netui.databinding.datagrid.api.exceptions.DataGridExtensionException; 21 import org.apache.beehive.netui.util.logging.Logger; 22 import org.apache.beehive.netui.util.Bundle; 23 24 27 public final class ExtensionUtil { 28 29 private static final Logger LOGGER = Logger.getInstance(ExtensionUtil.class); 30 31 private ExtensionUtil() { 32 } 33 34 42 public static final Object instantiateClass(String className, Class assignableFrom) { 43 if(className == null) 44 throw new IllegalArgumentException (Bundle.getErrorString("DataGridUtil_CantCreateClass")); 45 46 Class clazz = null; 47 try { 48 clazz = Class.forName(className, false, Thread.currentThread().getContextClassLoader()); 49 } 50 catch(Exception e) { 51 assert e instanceof IllegalAccessException || 52 e instanceof InstantiationException || 53 e instanceof ClassNotFoundException : "Caught exception of unexpected type: " + e.getClass().getName(); 54 55 String msg = Bundle.getErrorString("DataGridUtil_CantInstantiateClass", new Object []{e}); 56 LOGGER.error(msg, e); 57 throw new DataGridExtensionException(msg, e); 58 } 59 60 return instantiateClass(clazz, assignableFrom); 61 } 62 63 71 public static final Object instantiateClass(Class clazz, Class assignableFrom) { 72 if(clazz == null) 73 throw new IllegalArgumentException (Bundle.getErrorString("DataGridUtil_CantCreateClass")); 74 75 try { 76 Object obj = clazz.newInstance(); 77 78 if(assignableFrom == null || assignableFrom.isAssignableFrom(clazz)) 79 return obj; 80 else 81 throw new DataGridExtensionException(Bundle.getErrorString("DataGridUtil_InvalidParentClass", new Object []{clazz.getName(), assignableFrom})); 82 } 83 catch(Exception e) { 84 assert 85 e instanceof DataGridExtensionException || 86 e instanceof IllegalAccessException || 87 e instanceof InstantiationException || 88 e instanceof ClassNotFoundException : "Caught exception of unexpected type " + e.getClass().getName(); 89 90 String msg = Bundle.getErrorString("DataGridUtil_CantInstantiateClass", new Object []{e}); 91 LOGGER.error(msg, e); 92 throw new DataGridExtensionException(msg, e); 93 } 94 } 95 } 96 | Popular Tags |