X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.osgi%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fosgi%2FSCLOsgi.java;fp=bundles%2Forg.simantics.scl.osgi%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fosgi%2FSCLOsgi.java;h=35438747c9ee6f4e699d600085dfd84d5a89a79c;hb=63369acd7e6020a2148f40f6bab96b0b2ba392d8;hp=1e0360051ff318849582e947f30f729033ed15b9;hpb=89539b3b9d550028d15c6abcc9ecee3423d5a4a7;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.osgi/src/org/simantics/scl/osgi/SCLOsgi.java b/bundles/org.simantics.scl.osgi/src/org/simantics/scl/osgi/SCLOsgi.java index 1e0360051..35438747c 100644 --- a/bundles/org.simantics.scl.osgi/src/org/simantics/scl/osgi/SCLOsgi.java +++ b/bundles/org.simantics.scl.osgi/src/org/simantics/scl/osgi/SCLOsgi.java @@ -9,6 +9,8 @@ import org.simantics.scl.compiler.module.Module; import org.simantics.scl.compiler.module.options.ModuleCompilationOptions; import org.simantics.scl.compiler.module.options.ModuleCompilationOptionsAdvisor; import org.simantics.scl.compiler.module.repository.ModuleRepository; +import org.simantics.scl.compiler.runtime.ExpressionClassLoader; +import org.simantics.scl.compiler.runtime.RuntimeEnvironment; import org.simantics.scl.compiler.runtime.RuntimeModule; import org.simantics.scl.compiler.source.repository.ModuleSourceRepository; import org.simantics.scl.compiler.testing.repository.TestRepository; @@ -70,36 +72,16 @@ public class SCLOsgi { return null; } - public static String compileAllModules2() { + public static String primeClassloading() { ArrayList modulesWithErrors = new ArrayList(); SCLOsgi.SOURCE_REPOSITORY.forAllModules(new TObjectProcedure() { @Override public boolean execute(String moduleName) { - System.out.print(moduleName); - System.out.print(" - "); - Failable module = SCLOsgi.MODULE_REPOSITORY.getModule(moduleName); - if(module.didSucceed()) { - System.out.println("succeeded"); - } else if(module == DoesNotExist.INSTANCE) - System.out.println("does not exist"); // should not happen - else { - System.out.println("error"); - modulesWithErrors.add(moduleName); - } - return true; - } - }); - SCLOsgi.SOURCE_REPOSITORY.forAllModules(new TObjectProcedure() { - @Override - public boolean execute(String moduleName) { - System.out.print(moduleName); - System.out.print(" - "); Failable module = SCLOsgi.MODULE_REPOSITORY.getModule(moduleName); if(module.didSucceed()) { Failable frm = SCLOsgi.MODULE_REPOSITORY.getRuntimeModule(moduleName); RuntimeModule rm = frm.getResult(); - rm.loadReferences(); - System.out.println("succeeded"); + rm.loadClasses(); } else if(module == DoesNotExist.INSTANCE) System.out.println("does not exist"); // should not happen else { @@ -109,12 +91,15 @@ public class SCLOsgi { return true; } }); - if(!modulesWithErrors.isEmpty()) { - StringBuilder b = new StringBuilder(); - b.append("Some SCL modules failed to compile:"); - for(String module : modulesWithErrors) - b.append(' ').append(module); - return b.toString(); + for(RuntimeEnvironment env : SCLOsgi.MODULE_REPOSITORY.getRuntimeEnvironments()) { + ExpressionClassLoader ecl = (ExpressionClassLoader)env.getMutableClassLoader(); + for(String name : ecl.localClasses.keySet()) { + try { + ecl.loadClass(name.replace("/", ".")); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + } } return null; }