package bl; import G.T; import V.ExceptionInVPackage; import bH.D; import com.efiAnalytics.plugin.ApplicationPlugin; import com.efiAnalytics.plugin.ecu.ControllerAccess; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.net.URL; import java.net.URLClassLoader; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.jar.JarInputStream; import java.util.jar.Manifest; import java.util.logging.Level; import java.util.logging.Logger; import r.ExceptionInVPackage; import r.ThreadedFile; public class ApplicationPluginExtension { static HashMap ExceptionInVPackage = new HashMap<>(); private static l e = null; Map b = new HashMap<>(); Map c = new HashMap<>(); Map d = new HashMap<>(); public static l ExceptionInVPackage() { if (e == null) e = new l(); return e; } public static void b() { try { c c = new c(); ExceptionInVPackage ExceptionInVPackage = new ExceptionInVPackage(); T.ExceptionInVPackage().ExceptionInVPackage(ExceptionInVPackage); ControllerAccess.initialize(ExceptionInVPackage, c); ControllerAccess.getInstance().setConfigurationNameProvider(new m()); ControllerAccess.getInstance().setMathExpressionEvaluator(new n()); ControllerAccess.getInstance().setUiComponentServerProvider(r.ExceptionInVPackage()); ControllerAccess.getInstance().setBurnExecutor(new f()); ControllerAccess.getInstance().setOnlineExecutor(new p()); } catch (Exception exception) { Logger.getLogger(l.class.getName()).log(Level.SEVERE, (String)null, exception); throw new ExceptionInVPackage("Failed to initialize Plugin Server, error:\n" + exception.getMessage()); } } public ApplicationPlugin ExceptionInVPackage(String paramString) { ApplicationPlugin applicationPlugin; Class clazz = (Class)this.b.get(paramString); try { applicationPlugin = clazz.newInstance(); applicationPlugin.initialize(ControllerAccess.getInstance()); } catch (InstantiationException instantiationException) { Logger.getLogger(l.class.getName()).log(Level.SEVERE, (String)null, instantiationException); throw new ExceptionInVPackage("Unable to create Plugin: " + paramString); } catch (IllegalAccessException illegalAccessException) { Logger.getLogger(l.class.getName()).log(Level.SEVERE, (String)null, illegalAccessException); throw new ExceptionInVPackage("Unable to create Plugin: " + paramString); } catch (Exception exception) { Logger.getLogger(l.class.getName()).log(Level.SEVERE, (String)null, exception); throw new ExceptionInVPackage("Plugin Not Found: " + paramString); } return applicationPlugin; } public Collection c() { return this.c.values(); } public ApplicationPlugin b(String paramString) { return (ApplicationPlugin)this.c.get(paramString); } public void d() { File file = ThreadedFile.b(); File[] arrayOfFile = file.listFiles(new o(this)); for (byte b = 0; b < arrayOfFile.length; b++) { try { c(arrayOfFile[b]); } catch (Exception exception) { D.ExceptionInVPackage("Failed to initialize plugin in file:\n" + arrayOfFile[b].getAbsolutePath(), exception, null); } } } private void c(File paramFile) { JarInputStream jarInputStream = null; D.c("Loading Plugin from " + paramFile.getName()); try { Class clazz; BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(paramFile)); jarInputStream = new JarInputStream(bufferedInputStream); Manifest manifest = jarInputStream.getManifest(); String str = manifest.getMainAttributes().getValue("ApplicationPlugin"); if (str == null || str.length() == 0) str = manifest.getMainAttributes().getValue("Main-Class"); if (str == null || str.length() == 0) throw new ExceptionInVPackage("ApplicationPlugin not defined in Manifest for jar:\n" + paramFile.getAbsolutePath()); URLClassLoader uRLClassLoader = URLClassLoader.newInstance(new URL[] { paramFile.toURI().toURL() }, getClass().getClassLoader()); try { clazz = Class.forName(str, true, uRLClassLoader); } catch (ClassNotFoundException classNotFoundException) { throw new ExceptionInVPackage("ApplicationPlugin class '" + str + "' not found in jar file:\n" + paramFile.getAbsolutePath()); } Class clazz1 = clazz.asSubclass(ApplicationPlugin.class); try { ApplicationPlugin applicationPlugin = clazz1.newInstance(); if (applicationPlugin.getRequiredPluginSpec() > 1.0D) throw new ExceptionInVPackage("Plugin requires Specification: " + applicationPlugin.getRequiredPluginSpec() + "\nCurrently using: " + 1.0D); this.b.put(applicationPlugin.getIdName(), clazz1); this.c.put(applicationPlugin.getIdName(), applicationPlugin); this.d.put(applicationPlugin.getIdName(), paramFile); } catch (InstantiationException instantiationException) { Logger.getLogger(l.class.getName()).log(Level.SEVERE, (String)null, instantiationException); throw new ExceptionInVPackage("Failed to instantiate '" + str + "' in jar file:\n" + paramFile.getAbsolutePath()); } catch (IllegalAccessException illegalAccessException) { Logger.getLogger(l.class.getName()).log(Level.SEVERE, (String)null, illegalAccessException); throw new ExceptionInVPackage("Failed to instantiate '" + str + "' in jar file:\n" + paramFile.getAbsolutePath()); } } catch (FileNotFoundException fileNotFoundException) { throw new ExceptionInVPackage("Plugin file not found: " + paramFile.getAbsolutePath()); } catch (IOException iOException) { throw new ExceptionInVPackage("Error reading Plugin file: " + paramFile.getAbsolutePath()); } catch (Exception exception) { exception.printStackTrace(); throw new ExceptionInVPackage("Error loading Plugin file: " + paramFile.getAbsolutePath()); } catch (AbstractMethodError abstractMethodError) { abstractMethodError.printStackTrace(); throw new ExceptionInVPackage("Error calling core Plugin API method: \n" + abstractMethodError.getMessage() + "\nOn Plugin in file:\n" + paramFile.getName()); } catch (Error error) { error.printStackTrace(); throw new ExceptionInVPackage("This jar file does not meet minimum Plugin API Specifications: \n" + paramFile.getAbsolutePath()); } finally { try { if (jarInputStream != null) jarInputStream.close(); } catch (IOException iOException) { Logger.getLogger(l.class.getName()).log(Level.SEVERE, (String)null, iOException); } } } public ApplicationPlugin ExceptionInVPackage(File paramFile) { JarInputStream jarInputStream = null; D.c("Loading Plugin from " + paramFile.getName()); try { Class clazz; BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(paramFile)); jarInputStream = new JarInputStream(bufferedInputStream); Manifest manifest = jarInputStream.getManifest(); String str = manifest.getMainAttributes().getValue("ApplicationPlugin"); if (str == null || str.length() == 0) str = manifest.getMainAttributes().getValue("Main-Class"); if (str == null || str.length() == 0) throw new ExceptionInVPackage("File does not appear to be ExceptionInVPackage valid " + ExceptionInVPackage.b + " Plugin\n ApplicationPlugin not defined in Manifest of jar file:\n" + paramFile.getAbsolutePath()); URLClassLoader uRLClassLoader = URLClassLoader.newInstance(new URL[] { paramFile.toURI().toURL() }, getClass().getClassLoader()); try { clazz = Class.forName(str, true, uRLClassLoader); } catch (ClassNotFoundException classNotFoundException) { throw new ExceptionInVPackage("ApplicationPlugin class '" + str + "' not found in jar file:\n" + paramFile.getAbsolutePath()); } Class clazz1 = clazz.asSubclass(ApplicationPlugin.class); } catch (FileNotFoundException fileNotFoundException) { throw new ExceptionInVPackage("Plugin file not found: " + paramFile.getAbsolutePath()); } catch (IOException iOException) { throw new ExceptionInVPackage("Error reading Plugin file: " + paramFile.getAbsolutePath()); } finally { try { jarInputStream.close(); } catch (IOException iOException) { Logger.getLogger(l.class.getName()).log(Level.SEVERE, (String)null, iOException); } } } public boolean c(String paramString) { return (this.b.get(paramString) != null); } public void d(String paramString) { File file = (File)this.d.get(paramString); if (file == null || !file.exists()) throw new ExceptionInVPackage("Plugin " + paramString + " not installed or file name changed."); this.b.remove(paramString); this.c.remove(paramString); c(file); } public File e(String paramString) { return (File)this.d.get(paramString); } public boolean b(File paramFile) { return this.d.containsValue(paramFile); } } /* Location: /home/rewrich/Downloads/TunerStudioMS/TunerStudioMS/!/bl/l.class * Java compiler version: 8 (52.0) * JD-Core Version: 1.1.3 */