1 87 package org.codehaus.loom.components.classloader; 88 89 import java.io.IOException ; 90 import java.net.URL ; 91 import java.net.URLClassLoader ; 92 import java.security.CodeSource ; 93 import java.security.PermissionCollection ; 94 import java.security.Policy ; 95 import java.util.Enumeration ; 96 import org.codehaus.dna.LogEnabled; 97 import org.codehaus.dna.Logger; 98 99 107 class PolicyClassLoader 108 extends URLClassLoader 109 implements LogEnabled 110 { 111 private final Policy m_policy; 113 114 private Logger m_logger; 116 117 125 PolicyClassLoader( final URL [] urls, 126 final ClassLoader parent, 127 final Policy policy ) 128 { 129 super( urls, parent ); 130 if( null == policy ) 131 { 132 throw new NullPointerException ( "policy" ); 133 } 134 m_policy = policy; 135 } 136 137 public void enableLogging( final Logger logger ) 138 { 139 m_logger = logger; 140 } 141 142 150 protected Class findClass( final String name ) 151 throws ClassNotFoundException 152 { 153 if( m_logger.isDebugEnabled() ) 154 { 155 m_logger.debug( "findClass(" + name + ")" ); 156 } 157 return super.findClass( name ); 158 } 159 160 167 protected PermissionCollection getPermissions( final CodeSource codeSource ) 168 { 169 if( m_logger.isDebugEnabled() ) 170 { 171 m_logger.debug( "getPermissions(" + codeSource + ")" ); 172 } 173 return m_policy.getPermissions( codeSource ); 174 } 175 176 188 public Enumeration findResources( final String name ) 189 throws IOException 190 { 191 if( m_logger.isDebugEnabled() ) 192 { 193 m_logger.debug( "findResources(" + name + ")" ); 194 } 195 196 return super.findResources( name ); 197 } 198 199 209 public URL findResource( final String name ) 210 { 211 if( m_logger.isDebugEnabled() ) 212 { 213 m_logger.debug( "findResource(" + name + ")" ); 214 } 215 216 final URL url = super.findResource( name ); 217 218 if( m_logger.isDebugEnabled() ) 219 { 220 if( null != url ) 221 { 222 m_logger.debug( "Resource " + name + " located (" + url + ")" ); 223 } 224 else 225 { 226 m_logger.debug( "Resource " + name + " not located" ); 227 } 228 } 229 230 return url; 231 } 232 } 233 | Popular Tags |