]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.osgi/src/org/simantics/scl/osgi/internal/ModuleUtils.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.osgi / src / org / simantics / scl / osgi / internal / ModuleUtils.java
diff --git a/bundles/org.simantics.scl.osgi/src/org/simantics/scl/osgi/internal/ModuleUtils.java b/bundles/org.simantics.scl.osgi/src/org/simantics/scl/osgi/internal/ModuleUtils.java
new file mode 100644 (file)
index 0000000..6f4d264
--- /dev/null
@@ -0,0 +1,37 @@
+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());
+        }
+    }
+}