1 package org.jicengine.expression; 2 3 11 12 public class ClassLoaderResolver { 13 14 private ClassLoaderResolver() { 15 } 16 17 30 public static ClassLoader getClassLoader(Class callerClass) 31 { 32 ClassLoader callerLoader = callerClass.getClassLoader (); 33 ClassLoader contextLoader = Thread.currentThread().getContextClassLoader(); 34 35 ClassLoader result; 36 37 if( isChild (contextLoader, callerLoader) ){ 40 result = callerLoader; 41 } 42 else if (isChild (callerLoader, contextLoader)){ 43 result = contextLoader; 44 } 45 else { 46 result = contextLoader; 48 } 49 50 61 62 return result; 63 } 64 65 71 private static boolean isChild(ClassLoader loader1, ClassLoader loader2) 72 { 73 if (loader1 == loader2){ 74 return true; 75 } 76 else if (loader2 == null){ 77 return false; 78 } 79 else if (loader1 == null){ 80 return true; 81 } 82 else { 83 84 for( ; loader2 != null; loader2 = loader2.getParent() ){ 85 if (loader2 == loader1){ 86 return true; 87 } 88 } 89 90 return false; 91 } 92 } 93 } | Popular Tags |