package hello;

import java.net.URL;

import weblogic.utils.classloaders.GenericClassLoader;

public class Analyzer {

	public static String show(String className) {

		//int pos = className.lastIndexOf(".");
		//String pkg = className.substring(0, pos);
		//String cname = className.substring(pos);
		//String res = pkg.replaceAll("\\.", "/") + cname + ".class";
		String res = className.replaceAll("\\.","/") + ".class";
						
		StringBuffer sb = new StringBuffer();
		sb.append("className=" + className + "\n");
		sb.append("resource=" + res + "\n");
		sb.append("-------------------\n");
		
		//ClassLoader loader = Thread.currentThread().getContextClassLoader();
		ClassLoader loader = Analyzer.class.getClassLoader();

		
		while(loader != null){			
			
			URL url = loader.getResource(res);
			sb.append("loader=" + loader.getClass() + "\n");

			if(loader instanceof GenericClassLoader){
				GenericClassLoader cl = (GenericClassLoader)loader;
				sb.append(cl.getAnnotationString() + "\n");
				sb.append(cl.getClassFinder().getClassPath());
			}

			sb.append("url=" + url + "\n");	
			loader = loader.getParent();
		}
		
		
		sb.append("-------------------\n");
		sb.append("load is \n");
		try {
			Class c = Class.forName(className);
			sb.append("OK from " + c.getClassLoader().getResource(res));
		} catch (Exception e) {
			sb.append("FAIL : " + e);
		}

		

		return sb.toString();
	}


	public static void main(String[] args) {
		String s = show(
			"org.apache.commons.BeanUtils"
		);
		System.out.println(s);
	}

}
