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}