| 1 5 package org.terracotta.modules.iBatis_2_2_0.object.config; 6 7 import org.terracotta.modules.iBatis_2_2_0.object.dna.impl.IBatisAccessPlanInstance; 8 9 import com.tc.object.config.ChangeApplicatorSpec; 10 11 public class IBatisChangeApplicatorSpec implements ChangeApplicatorSpec { 12 private final static String IBATIS_ACCESS_PLAN_APPLICATOR_CLASS_NAME = "org.terracotta.modules.iBatis_2_2_0.object.applicator.IBatisAccessPlanApplicator"; 13 14 private final ClassLoader classLoader; 15 16 public IBatisChangeApplicatorSpec(ClassLoader classLoader) { 17 this.classLoader = classLoader; 18 } 19 20 public Class getChangeApplicator(Class clazz) { 21 String changeApplicatorClassName = null; 22 if (isIBatisAccessPlan(clazz)) { 23 changeApplicatorClassName = IBATIS_ACCESS_PLAN_APPLICATOR_CLASS_NAME; 24 } 25 if (changeApplicatorClassName != null) { 26 try { 27 if (classLoader == null) { 28 return Class.forName(changeApplicatorClassName); 29 } else { 30 return Class.forName(changeApplicatorClassName, false, classLoader); 31 } 32 } catch (Exception e) { 33 throw new AssertionError (e); 34 } 35 } 36 return null; 37 } 38 39 public static boolean isIBatisAccessPlan(Class clazz) { 40 if (IBatisAccessPlanInstance.class.getName().equals(clazz.getName())) { return true; } 41 Class superclass = clazz.getSuperclass(); 42 if (superclass == null) { return false; } 43 if (superclass.getName().equals("com.ibatis.sqlmap.engine.accessplan.BaseAccessPlan")) { return true; } 44 return false; 45 46 } 47 } 48 | Popular Tags |