--- /dev/null
+package org.simantics.scl.osgi.internal;
+
+import gnu.trove.procedure.TObjectProcedure;
+
+import org.simantics.scl.compiler.errors.Failable;
+import org.simantics.scl.compiler.errors.Failure;
+import org.simantics.scl.compiler.module.Module;
+import org.simantics.scl.osgi.SCLOsgi;
+import org.simantics.scl.runtime.SCLContext;
+import org.simantics.scl.runtime.reporting.SCLReportingHandler;
+
+public class ModuleUtils {
+ public static void validateModules() {
+ SCLOsgi.SOURCE_REPOSITORY.checkUpdates();
+ SCLContext context = SCLContext.getCurrent();
+ SCLReportingHandler printer = (SCLReportingHandler)context.get(SCLReportingHandler.REPORTING_HANDLER);
+ if(printer == null)
+ printer = SCLReportingHandler.DEFAULT;
+ final SCLReportingHandler printer_ = printer;
+ SCLOsgi.SOURCE_REPOSITORY.forAllModules(new TObjectProcedure<String>() {
+ @Override
+ public boolean execute(String moduleName) {
+ validateModule(printer_, moduleName);
+ return true;
+ }
+ });
+ }
+
+ private static void validateModule(SCLReportingHandler printer, String moduleName) {
+ Failable<Module> module = SCLOsgi.MODULE_REPOSITORY.getModule(moduleName);
+ if(module instanceof Failure) {
+ Failure failure = (Failure)module;
+ printer.print("--- " + moduleName + " ---------------------");
+ printer.print(failure.toString());
+ }
+ }
+}