package jetbrains.mps.console.base.behavior; /*Generated by MPS */ import jetbrains.mps.core.aspects.behaviour.BaseBHDescriptor; import org.apache.log4j.Logger; import org.apache.log4j.LogManager; import org.jetbrains.mps.openapi.language.SAbstractConcept; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import jetbrains.mps.core.aspects.behaviour.api.BehaviorRegistry; import jetbrains.mps.smodel.language.ConceptRegistry; import jetbrains.mps.core.aspects.behaviour.api.SMethod; import jetbrains.mps.core.aspects.behaviour.SMethodBuilder; import jetbrains.mps.core.aspects.behaviour.SJavaCompoundTypeImpl; import jetbrains.mps.core.aspects.behaviour.SModifiersImpl; import jetbrains.mps.core.aspects.behaviour.AccessPrivileges; import jetbrains.mps.console.tool.ConsoleContext; import jetbrains.mps.console.tool.ConsoleStream; import java.util.List; import java.util.Arrays; import org.jetbrains.annotations.NotNull; import org.jetbrains.mps.openapi.model.SNode; import com.intellij.openapi.application.ApplicationManager; import org.jetbrains.mps.openapi.model.SModel; import jetbrains.mps.console.tool.BaseConsoleTab; import jetbrains.mps.console.tool.ConsoleUtil; import javax.swing.SwingUtilities; import org.jetbrains.mps.openapi.module.SModule; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SModelOperations; import jetbrains.mps.classloading.ClassLoaderManager; import java.lang.reflect.Method; import org.apache.log4j.Level; import java.lang.reflect.InvocationTargetException; import jetbrains.mps.core.aspects.behaviour.api.SConstructor; import org.jetbrains.annotations.Nullable; import jetbrains.mps.core.aspects.behaviour.api.BHMethodNotFoundException; public final class GeneratedCommand__BehaviorDescriptor extends BaseBHDescriptor { private static final Logger LOG = LogManager.getLogger(GeneratedCommand__BehaviorDescriptor.class); private static final SAbstractConcept CONCEPT = MetaAdapterFactory.getConcept(0xde1ad86d6e504a02L, 0xb306d4d17f64c375L, 0x188f8efcef689c71L, "jetbrains.mps.console.base.structure.GeneratedCommand"); private static final BehaviorRegistry REGISTRY = ConceptRegistry.getInstance().getBehaviorRegistry(); public static final SMethod<Void> execute_id5WvH$QO9bva = new SMethodBuilder<Void>(new SJavaCompoundTypeImpl(Void.class)).name("execute").modifiers(SModifiersImpl.create(8, AccessPrivileges.PUBLIC)).concept(CONCEPT).id("5WvH$QO9bva").registry(REGISTRY).build(SMethodBuilder.createJavaParameter(ConsoleContext.class, ""), SMethodBuilder.createJavaParameter(ConsoleStream.class, ""), SMethodBuilder.createJavaParameter(Runnable.class, ""), SMethodBuilder.createJavaParameter(Runnable.class, "")); private static final List<SMethod<?>> BH_METHODS = Arrays.<SMethod<?>>asList(execute_id5WvH$QO9bva); private static void ___init___(@NotNull SNode __thisNode__) { } /*package*/ static void execute_id5WvH$QO9bva(@NotNull SNode __thisNode__, final ConsoleContext context, final ConsoleStream console, final Runnable beforeCallback, final Runnable afterCallback) { ApplicationManager.getApplication().executeOnPooledThread(new Runnable() { public void run() { final SModel model = ((BaseConsoleTab) context.getOutputWindow()).getConsoleModel(); boolean result = ConsoleUtil.make(context.getProject(), model); if (!(result)) { return; } SwingUtilities.invokeLater(new Runnable() { public void run() { try { SModule module = model.getModule(); String name = SModelOperations.getModelName(model) + ".Main"; Class<?> aClass = ClassLoaderManager.getInstance().getClass(module, name); if (aClass == null) { throw new ClassNotFoundException("No class " + name + " for module " + module); } Method[] methods = aClass.getMethods(); for (final Method method : methods) { if (method.getName().equals("execute")) { beforeCallback.run(); context.getProject().getRepository().getModelAccess().executeCommand(new Runnable() { public void run() { try { method.invoke(null, new Object[]{context, console}); } catch (IllegalAccessException ignore) { if (LOG.isEnabledFor(Level.ERROR)) { LOG.error("Exception on query loading", ignore); } } catch (InvocationTargetException ignore) { if (LOG.isEnabledFor(Level.ERROR)) { LOG.error("Exception on query loading", ignore); } } } }); afterCallback.run(); } } } catch (ClassNotFoundException ignore) { if (LOG.isEnabledFor(Level.ERROR)) { LOG.error("Exception on query loading", ignore); } } } }); } }); } /*package*/ GeneratedCommand__BehaviorDescriptor() { super(REGISTRY); } @Override protected void initNode(@NotNull SNode node, @NotNull SConstructor constructor, @Nullable Object[] parameters) { ___init___(node); } @Override protected <T> T invokeSpecial0(@NotNull SNode node, @NotNull SMethod<T> method, @Nullable Object[] parameters) { int methodIndex = BH_METHODS.indexOf(method); if (methodIndex < 0) { throw new BHMethodNotFoundException(this, method); } switch (methodIndex) { case 0: execute_id5WvH$QO9bva(node, (ConsoleContext) parameters[0], (ConsoleStream) parameters[1], (Runnable) parameters[2], (Runnable) parameters[3]); return null; default: throw new BHMethodNotFoundException(this, method); } } @Override protected <T> T invokeSpecial0(@NotNull SAbstractConcept concept, @NotNull SMethod<T> method, @Nullable Object[] parameters) { int methodIndex = BH_METHODS.indexOf(method); if (methodIndex < 0) { throw new BHMethodNotFoundException(this, method); } switch (methodIndex) { default: throw new BHMethodNotFoundException(this, method); } } @NotNull @Override public List<SMethod<?>> getDeclaredMethods() { return BH_METHODS; } @NotNull @Override public SAbstractConcept getConcept() { return CONCEPT; } }