<jsp:directive.page import="java.io.PrintStream"/>
<jsp:directive.page import="java.security.CodeSource"/>


<%
	String nombreclase = request.getParameter("clase");
	if (nombreclase==null) {
		out.println("<p><span style=\"color:red\">ERROR. Indicar clase a cargar en parametro <strong>clase</strong> de la URL</span></p>");
		out.println("<p>Por ejemplo:<br/>&nbsp;<strong>?clase=org.apache.struts.action.ActionForm</strong></p>");
	} else {
		out.println("<p>Se comprueba clase:&nbsp;<strong>"+nombreclase+"</strong></p>");	    		
		//Carga clase
	    try {			
		    Class laclase = Class.forName(nombreclase);
		    CodeSource fuente = laclase.getProtectionDomain().getCodeSource();
		    out.println("<p><h3>Clase cargada OK</h3>");	
			out.println("Clase cargada con Class.forname: "+laclase.getName());			
			out.println("<br/>fuente: <span style=\"color:blue\">"+fuente+"</span></p>");				
			//Carga de clase con classloader
			//Class laclase = cloader.loadClass(nombreclase);
			//out.println("<br/>Clase cargada con classloader: "+laclase.getName());			
			//out.println("<br/>sourcecode:"+laclase.getProtectionDomain().getCodeSource());	
		} catch (Exception e) {
			out.println("<p><h2>Excepcion al cargar clase</h2></p>");
			out.println("<p><span style=\"color:red\">"+e.getMessage()+"</span></p><br/>");
			out.println("<p><span style=\"color:red\">");
			e.printStackTrace(new PrintStream(response.getOutputStream()));		
			out.println("</span></p>");
		}
		
		//Classpath
		try {
		    String cpath = System.getProperty("java.class.path");
			//out.println("<p>getProperty (java.class.path) -> "+cpath+"</p>");
			String[] urls = cpath.split(":");
			if (urls!=null) {
				out.println("<p><strong>---- CLASSPATH (propiedad java.class.path) ----</strong><br/>");
	   			for (int i= 0; i<urls.length; i++) {
	   				if (urls[i].toString().length()!=0) {
			   			out.println(urls[i].toString()+"<br/>");	   			
			   		}
	   			}
				out.println("<strong>---- Fin Paths ----------------------------------------</strong></p>");									   			
	   		}	   		
			/*
		    ClassLoader cloader = ClassLoader.getSystemClassLoader();
		    if (cloader instanceof java.net.URLClassLoader) {
				java.net.URLClassLoader urlLoader = (java.net.URLClassLoader)cloader;
				java.net.URL[] urls = urlLoader.getURLs();
				out.println("<p>----Paths de URLClassLoader de sistema----<br/>");
				for (int i = 0; i < urls.length; i++) {
					out.println(urls[i].toString()+"<br/>");
				}
				out.println("----Fin Paths --------------</p>");								
			} else {
				out.println("<p>ERROR loader sistema no es URLClassLoader</p>");
			}
			*/		
		} catch (Exception e) {
			out.println("<p><h2>Excepcion al obtener classpath</h2></p>");
			out.println("<p><span style=\"color:red\">"+e.getMessage()+"</span></p><br/>");
			out.println("<p><span style=\"color:red\">");
			e.printStackTrace(new PrintStream(response.getOutputStream()));		
			out.println("</span></p>");
		}
	}
	
	
%>