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.ConcreteModule;
8 import org.simantics.scl.compiler.module.Module;
9 import org.simantics.scl.compiler.module.options.ModuleCompilationOptions;
10 import org.simantics.scl.compiler.module.options.ModuleCompilationOptionsAdvisor;
11 import org.simantics.scl.compiler.module.repository.ModuleRepository;
12 import org.simantics.scl.compiler.runtime.RuntimeModule;
13 import org.simantics.scl.compiler.source.repository.ModuleSourceRepository;
14 import org.simantics.scl.compiler.testing.repository.TestRepository;
15 import org.simantics.scl.osgi.internal.Activator;
16 import org.simantics.scl.osgi.internal.ServiceBasedModuleSourceRepository;
17 import org.simantics.scl.osgi.internal.ServiceBasedTestRepository;
19 import gnu.trove.procedure.TObjectProcedure;
22 public class SCLOsgi {
26 public static ModuleSourceRepository SOURCE_REPOSITORY = new ServiceBasedModuleSourceRepository(Activator.getContext());
27 public static ModuleRepository MODULE_REPOSITORY = new ModuleRepository(SOURCE_REPOSITORY);
28 public static TestRepository TEST_REPOSITORY = new ServiceBasedTestRepository(Activator.getContext());
31 MODULE_REPOSITORY.setAdvisor(new ModuleCompilationOptionsAdvisor() {
32 ModuleCompilationOptions options = null;
34 public ModuleCompilationOptions getOptions(String moduleName) {
36 options = new ModuleCompilationOptions(false);
37 options.collectDebugInfo = Activator.getContext().getProperty("osgi.dev") != null; //$NON-NLS-1$
44 public static String compileAllModules() {
45 ArrayList<String> modulesWithErrors = new ArrayList<String>();
46 SCLOsgi.SOURCE_REPOSITORY.forAllModules(new TObjectProcedure<String>() {
48 public boolean execute(String moduleName) {
49 System.out.print(moduleName);
50 System.out.print(" - ");
51 Failable<Module> module = SCLOsgi.MODULE_REPOSITORY.getModule(moduleName);
52 if(module.didSucceed()) {
53 System.out.println("succeeded");
54 } else if(module == DoesNotExist.INSTANCE)
55 System.out.println("does not exist"); // should not happen
57 System.out.println("error");
58 modulesWithErrors.add(moduleName);
63 if(!modulesWithErrors.isEmpty()) {
64 StringBuilder b = new StringBuilder();
65 b.append("Some SCL modules failed to compile:");
66 for(String module : modulesWithErrors)
67 b.append(' ').append(module);
73 public static String compileAllModules2() {
74 ArrayList<String> modulesWithErrors = new ArrayList<String>();
75 SCLOsgi.SOURCE_REPOSITORY.forAllModules(new TObjectProcedure<String>() {
77 public boolean execute(String moduleName) {
78 System.out.print(moduleName);
79 System.out.print(" - ");
80 Failable<Module> module = SCLOsgi.MODULE_REPOSITORY.getModule(moduleName);
81 if(module.didSucceed()) {
82 System.out.println("succeeded");
83 } else if(module == DoesNotExist.INSTANCE)
84 System.out.println("does not exist"); // should not happen
86 System.out.println("error");
87 modulesWithErrors.add(moduleName);
92 SCLOsgi.SOURCE_REPOSITORY.forAllModules(new TObjectProcedure<String>() {
94 public boolean execute(String moduleName) {
95 System.out.print(moduleName);
96 System.out.print(" - ");
97 Failable<Module> module = SCLOsgi.MODULE_REPOSITORY.getModule(moduleName);
98 if(module.didSucceed()) {
99 Failable<RuntimeModule> frm = SCLOsgi.MODULE_REPOSITORY.getRuntimeModule(moduleName);
100 RuntimeModule rm = frm.getResult();
102 System.out.println("succeeded");
103 } else if(module == DoesNotExist.INSTANCE)
104 System.out.println("does not exist"); // should not happen
106 System.out.println("error");
107 modulesWithErrors.add(moduleName);
112 if(!modulesWithErrors.isEmpty()) {
113 StringBuilder b = new StringBuilder();
114 b.append("Some SCL modules failed to compile:");
115 for(String module : modulesWithErrors)
116 b.append(' ').append(module);