package de.tub.tfs.henshin.tgg.interpreter.config; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import javax.script.ScriptEngine; import org.eclipse.core.runtime.Platform; public class JavaScriptTggInitializer { public void initEMFPackage(String bundle,String clazz){ try { Class<?> loadClass = Platform.getBundle(bundle).loadClass(clazz); Field declaredField = loadClass.getDeclaredField("eINSTANCE"); Object instance = declaredField.get(null); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void initXtext(String bundle,String clazz){ try { Object newInstance = Platform.getBundle(bundle).loadClass(clazz).newInstance(); Method declaredMethod = newInstance.getClass().getMethod("createInjectorAndDoEMFRegistration"); declaredMethod.invoke(newInstance); } catch (Exception e) { try { Object newInstance = Platform.getBundle(bundle).loadClass(clazz).newInstance(); Method declaredMethod = newInstance.getClass().getDeclaredMethod("createInjectorAndDoEMFRegistration"); declaredMethod.invoke(newInstance); } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } public Class<?> loadClass(String bundle,String clazz){ try { return Platform.getBundle(bundle).loadClass(clazz); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } public static void registerWithScriptingEngine(ScriptEngine engine){ engine.put("Init", new JavaScriptTggInitializer()); } }