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() { @Override public boolean execute(String moduleName) { validateModule(printer_, moduleName); return true; } }); } private static void validateModule(SCLReportingHandler printer, String moduleName) { Failable module = SCLOsgi.MODULE_REPOSITORY.getModule(moduleName); if(module instanceof Failure) { Failure failure = (Failure)module; printer.print("--- " + moduleName + " ---------------------"); printer.print(failure.toString()); } } }