public KettleSelectiveParentFirstClassLoader( URL[] url, ClassLoader classLoader, String name, String[] patterns ) { super( url, classLoader, name ); addPatterns( patterns ); }
private Class<?> loadClassParentFirst( String arg0, boolean arg1 ) throws ClassNotFoundException { try { return loadClassFromParent( arg0, arg1 ); } catch ( ClassNotFoundException | NoClassDefFoundError e ) { // ignore } return loadClassFromThisLoader( arg0, arg1 ); }
@Override protected synchronized Class<?> loadClass( String arg0, boolean arg1 ) throws ClassNotFoundException { for ( Pattern pattern : patterns ) { if ( pattern.matcher( arg0 ).matches() ) { return loadClassParentFirst( arg0, arg1 ); } } return super.loadClass( arg0, arg1 ); } }
private KettleURLClassLoader createClassLoader( PluginInterface plugin ) throws MalformedURLException, UnsupportedEncodingException { List<String> jarFiles = plugin.getLibraries(); URL[] urls = new URL[jarFiles.size()]; for ( int i = 0; i < jarFiles.size(); i++ ) { File jarfile = new File( jarFiles.get( i ) ); urls[i] = new URL( URLDecoder.decode( jarfile.toURI().toURL().toString(), "UTF-8" ) ); } ClassLoader classLoader = getClass().getClassLoader(); String[] patterns = parentClassloaderPatternMap.get( plugin ); if ( patterns != null ) { return new KettleSelectiveParentFirstClassLoader( urls, classLoader, plugin.getDescription(), patterns ); } else { return new KettleURLClassLoader( urls, classLoader, plugin.getDescription() ); } }
public KettleSelectiveParentFirstClassLoader( URL[] url, ClassLoader classLoader, String[] patterns ) { super( url, classLoader ); addPatterns( patterns ); }
private void addToClassLoader( PluginInterface plugin, KettleURLClassLoader ucl ) throws MalformedURLException, UnsupportedEncodingException { String[] patterns = parentClassloaderPatternMap.get( plugin ); if ( ucl instanceof KettleSelectiveParentFirstClassLoader ) { ( (KettleSelectiveParentFirstClassLoader) ucl ).addPatterns( patterns ); } for ( String jarFile : plugin.getLibraries() ) { File jarfile = new File( jarFile ); ucl.addURL( new URL( URLDecoder.decode( jarfile.toURI().toURL().toString(), "UTF-8" ) ) ); } }