1 package org.simantics.scl.osgi;
3 import java.util.ArrayList;
5 import org.simantics.scl.compiler.errors.DoesNotExist;
6 import org.simantics.scl.compiler.errors.Failable;
7 import org.simantics.scl.compiler.module.Module;
8 import org.simantics.scl.compiler.module.repository.ModuleRepository;
9 import org.simantics.scl.compiler.source.repository.ModuleSourceRepository;
10 import org.simantics.scl.compiler.testing.repository.TestRepository;
11 import org.simantics.scl.osgi.internal.Activator;
12 import org.simantics.scl.osgi.internal.ServiceBasedModuleSourceRepository;
13 import org.simantics.scl.osgi.internal.ServiceBasedTestRepository;
15 import gnu.trove.procedure.TObjectProcedure;
18 public class SCLOsgi {
22 public static ModuleSourceRepository SOURCE_REPOSITORY = new ServiceBasedModuleSourceRepository(Activator.getContext());
23 public static ModuleRepository MODULE_REPOSITORY = new ModuleRepository(SOURCE_REPOSITORY);
24 public static TestRepository TEST_REPOSITORY = new ServiceBasedTestRepository(Activator.getContext());
27 public static String compileAllModules() {
28 ArrayList<String> modulesWithErrors = new ArrayList<String>();
29 SCLOsgi.SOURCE_REPOSITORY.forAllModules(new TObjectProcedure<String>() {
31 public boolean execute(String moduleName) {
32 System.out.print(moduleName);
33 System.out.print(" - ");
34 Failable<Module> module = SCLOsgi.MODULE_REPOSITORY.getModule(moduleName);
35 if(module.didSucceed())
36 System.out.println("succeeded");
37 else if(module == DoesNotExist.INSTANCE)
38 System.out.println("does not exist"); // should not happen
40 System.out.println("error");
41 modulesWithErrors.add(moduleName);
46 if(!modulesWithErrors.isEmpty()) {
47 StringBuilder b = new StringBuilder();
48 b.append("Some SCL modules failed to compile:");
49 for(String module : modulesWithErrors)
50 b.append(' ').append(module);