]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.osgi/src/org/simantics/scl/osgi/SCLOsgi.java
Simupedia tuning
[simantics/platform.git] / bundles / org.simantics.scl.osgi / src / org / simantics / scl / osgi / SCLOsgi.java
index 2e717f945780574f71c3382c33cb3bf157fa55e2..1e0360051ff318849582e947f30f729033ed15b9 100644 (file)
@@ -4,10 +4,12 @@ import java.util.ArrayList;
 
 import org.simantics.scl.compiler.errors.DoesNotExist;
 import org.simantics.scl.compiler.errors.Failable;
+import org.simantics.scl.compiler.module.ConcreteModule;
 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.RuntimeModule;
 import org.simantics.scl.compiler.source.repository.ModuleSourceRepository;
 import org.simantics.scl.compiler.testing.repository.TestRepository;
 import org.simantics.scl.osgi.internal.Activator;
@@ -47,9 +49,9 @@ public class SCLOsgi {
                 System.out.print(moduleName);
                 System.out.print(" - ");
                 Failable<Module> module = SCLOsgi.MODULE_REPOSITORY.getModule(moduleName);
-                if(module.didSucceed())
+                if(module.didSucceed()) {
                     System.out.println("succeeded");
-                else if(module == DoesNotExist.INSTANCE)
+                else if(module == DoesNotExist.INSTANCE)
                     System.out.println("does not exist"); // should not happen
                 else {
                     System.out.println("error");
@@ -67,4 +69,54 @@ public class SCLOsgi {
         }
         return null;
     }
+    
+    public static String compileAllModules2() {
+        ArrayList<String> modulesWithErrors = new ArrayList<String>(); 
+        SCLOsgi.SOURCE_REPOSITORY.forAllModules(new TObjectProcedure<String>() {
+            @Override
+            public boolean execute(String moduleName) {
+                System.out.print(moduleName);
+                System.out.print(" - ");
+                Failable<Module> 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<String>() {
+            @Override
+            public boolean execute(String moduleName) {
+                System.out.print(moduleName);
+                System.out.print(" - ");
+                Failable<Module> module = SCLOsgi.MODULE_REPOSITORY.getModule(moduleName);
+                if(module.didSucceed()) {
+                    Failable<RuntimeModule> frm = SCLOsgi.MODULE_REPOSITORY.getRuntimeModule(moduleName);
+                    RuntimeModule rm = frm.getResult();
+                    rm.loadReferences();
+                    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;
+            }
+        });
+        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();
+        }
+        return null;
+    }
+    
 }