001/** 002 * 003 * Copyright (c) 2014, the Railo Company Ltd. All rights reserved. 004 * 005 * This library is free software; you can redistribute it and/or 006 * modify it under the terms of the GNU Lesser General Public 007 * License as published by the Free Software Foundation; either 008 * version 2.1 of the License, or (at your option) any later version. 009 * 010 * This library is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 013 * Lesser General Public License for more details. 014 * 015 * You should have received a copy of the GNU Lesser General Public 016 * License along with this library. If not, see <http://www.gnu.org/licenses/>. 017 * 018 **/ 019package lucee.commons.lang; 020 021import java.io.IOException; 022import java.io.InputStream; 023import java.net.URL; 024import java.util.Enumeration; 025 026import lucee.commons.io.log.Log; 027 028public final class LogClassLoader extends ClassLoader { 029 030 private final ClassLoader cl; 031 private final Log log; 032 033 public LogClassLoader(ClassLoader cl,Log log){ 034 this.cl=cl; 035 this.log=log; 036 } 037 038 @Override 039 public synchronized void clearAssertionStatus() { 040 log.log(Log.LEVEL_DEBUG,"LogClassLoader", "clearAssertion"); 041 cl.clearAssertionStatus(); 042 } 043 044 @Override 045 protected Package definePackage(String name, String specTitle, String specVersion, String specVendor, String implTitle, String implVersion, String implVendor, URL sealBase) throws IllegalArgumentException { 046 log.log(Log.LEVEL_DEBUG,"LogClassLoader", "definePackage"); 047 return null; 048 } 049 050 @Override 051 protected Class findClass(String name) throws ClassNotFoundException { 052 log.log(Log.LEVEL_DEBUG,"LogClassLoader", "findClass"); 053 return null; 054 } 055 056 @Override 057 protected String findLibrary(String libname) { 058 log.log(Log.LEVEL_DEBUG,"LogClassLoader", "findLibrary"); 059 return null; 060 } 061 062 @Override 063 protected URL findResource(String name) { 064 log.log(Log.LEVEL_DEBUG,"LogClassLoader", "findResource"); 065 return null; 066 } 067 068 @Override 069 protected Enumeration findResources(String name) throws IOException { 070 log.log(Log.LEVEL_DEBUG,"LogClassLoader", "findResources"); 071 return null; 072 } 073 074 @Override 075 protected Package getPackage(String name) { 076 log.log(Log.LEVEL_DEBUG,"LogClassLoader", "getPackage"); 077 return null; 078 } 079 080 @Override 081 protected Package[] getPackages() { 082 log.log(Log.LEVEL_DEBUG,"LogClassLoader", "getPackages"); 083 return null; 084 } 085 086 @Override 087 public URL getResource(String name) { 088 log.log(Log.LEVEL_DEBUG,"LogClassLoader", "getResource"); 089 return cl.getResource(name); 090 } 091 092 @Override 093 public InputStream getResourceAsStream(String name) { 094 log.log(Log.LEVEL_DEBUG,"LogClassLoader", "getResourceAsStream"); 095 return cl.getResourceAsStream(name); 096 } 097 098 @Override 099 protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException { 100 log.log(Log.LEVEL_DEBUG,"LogClassLoader", "loadClass"); 101 return null; 102 } 103 104 @Override 105 public Class loadClass(String name) throws ClassNotFoundException { 106 Class clazz = cl.loadClass(name); 107 log.log(Log.LEVEL_DEBUG,"LogClassLoader", "loadClass("+name+"):"+clazz); 108 return clazz; 109 } 110 111 @Override 112 public synchronized void setClassAssertionStatus(String className, boolean enabled) { 113 log.log(Log.LEVEL_DEBUG,"LogClassLoader", "setClassAssertionStatus"); 114 cl.setClassAssertionStatus(className, enabled); 115 } 116 117 @Override 118 public synchronized void setDefaultAssertionStatus(boolean enabled) { 119 log.log(Log.LEVEL_DEBUG,"LogClassLoader", "setdefaultAssertionStatus"); 120 cl.setDefaultAssertionStatus(enabled); 121 } 122 123 @Override 124 public synchronized void setPackageAssertionStatus(String packageName, boolean enabled) { 125 log.log(Log.LEVEL_DEBUG,"LogClassLoader", "setPackageAssertionStatus"); 126 cl.setPackageAssertionStatus(packageName, enabled); 127 } 128}