]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.reflection/src/org/simantics/scl/reflection/internal/Activator.java
Prime SCL BindingRegistry to shave ~0.5s from startup
[simantics/platform.git] / bundles / org.simantics.scl.reflection / src / org / simantics / scl / reflection / internal / Activator.java
index 4e1d01816381d3ca486bae5b558f07f9af5cb7b2..a14be489618d659c6bf394405bce1e2d8868ac04 100644 (file)
@@ -1,11 +1,14 @@
 package org.simantics.scl.reflection.internal;
 
+import java.util.concurrent.ForkJoinPool;
+
 import org.eclipse.core.runtime.ILog;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Status;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
+import org.simantics.scl.reflection.internal.registry.BindingRegistry;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -20,6 +23,21 @@ public class Activator implements BundleActivator {
     public void start(BundleContext context) throws Exception {
         this.context = context;
         instance = this;
+        
+        primeBindingRegistry();
+    }
+
+    private static void primeBindingRegistry() {
+        LOGGER.info("Priming BindingRegistry");
+        ForkJoinPool.commonPool().submit(() -> {
+            try {
+                // this forces static initialzation of the registry in advance
+                BindingRegistry.primeBindingRegistry();
+            } catch (Exception e) {
+                LOGGER.error("Could not prime binding registry", e);
+            }
+            LOGGER.info("Priming done");
+        });
     }
 
     @Override