Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

49
LINES

< > BotCompany Repo | #1005811 // BACKUP of hotwire using outer JavaX

JavaX fragment (include)

  // compile JavaX source, load classes & return main class
  // src can be a snippet ID or path to sources dir
  // TODO: record injection?
  
  static Class<?> hotwire(String src) {
    try {
      Class j = getJavaX();
      
      synchronized(j) { // hopefully this goes well...
        List<File> libraries = new ArrayList<File>();
        File srcDir = (File) call(j, "transpileMain", src, libraries);
        if (srcDir == null)
          fail("transpileMain returned null (src=" + quote(src) + ")");
        
        Object androidContext = get(j, "androidContext");
        if (androidContext != null)
          return (Class) call(j, "loadx2android", srcDir, src);
          
        File classesDir = (File) call(j, "TempDirMaker_make");
        String javacOutput = (String) call(j, "compileJava", srcDir, libraries, classesDir);
        System.out.println(javacOutput);
        
        URL[] urls = new URL[libraries.size()+1];
        urls[0] = classesDir.toURI().toURL();
        for (int i = 0; i < libraries.size(); i++)
          urls[i+1] = libraries.get(i).toURI().toURL();
  
        // make class loader
        URLClassLoader classLoader = new URLClassLoader(urls);
    
        // load & return main class
        Class<?> theClass = classLoader.loadClass("main");
        
        callOpt(j, "registerSourceCode", theClass, loadTextFile(new File(srcDir, "main.java")));

        call(j, "setVars", theClass, isSnippetID(src) ? src : null);
        
        if (isSnippetID(src))
          callOpt(j, "addInstance", src, theClass);
          
        if (!_inCore())
          hotwire_copyOver(theClass);
  
        return theClass;
      }
    } catch (Exception e) {
      throw e instanceof RuntimeException ? (RuntimeException) e : new RuntimeException(e);
    }
  }

Author comment

Began life as a copy of #1000963

download  show line numbers  debug dex  old transpilations   

Travelled to 13 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt

No comments. add comment

Snippet ID: #1005811
Snippet name: BACKUP of hotwire using outer JavaX
Eternal ID of this version: #1005811/1
Text MD5: b9ddfcc5638c50a6c3acb12af169154f
Author: stefan
Category:
Type: JavaX fragment (include)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2016-12-09 14:40:26
Source code size: 1844 bytes / 49 lines
Pitched / IR pitched: No / No
Views / Downloads: 459 / 443
Referenced in: [show references]