private void startLambdaInvocation(VMObservableEvent event) { org.lgna.project.ast.UserLambda lambda = (UserLambda) event.getObject(); ComponentThread thread = event.getThread(); double startTime = event.getTime(); org.lgna.project.ast.AbstractMethod method = (AbstractMethod) event.getProperties()[0]; // We ignore scene activation if (!method.getName().contentEquals("sceneActivated")) { AbstractEventNode<?> eventNode = EventNodeFactory.createEventNode(lambda, thread, startTime, null); ((LambdaEventNode) eventNode).setInvokingEventMethod(method); pushEventNode(eventNode, false); } }
/** * Handles beginning execution of container statement ( {@link AbstractStatementWithBody} or * {@link BlockStatement}). * * @param event {@link VMObservableEvent} event for container type statement */ private void startContainer(VMObservableEvent event) { Statement statement = (Statement) event.getObject(); ComponentThread thread = event.getThread(); double startTime = event.getTime(); AbstractEventNode<?> parentNode = peekEventNode(getThreadForNode(statement, thread)); // Root case if (parentNode == null) { AbstractEventNode<?> eventNode = EventNodeFactory.createEventNode(statement, thread, startTime, null); this.rootEventNode = eventNode; pushEventNode(eventNode, true); } else if (parentNode instanceof ConditionalStatementEventNode) { AbstractEventNode<?> eventNode = EventNodeFactory.createEventNode(statement, thread, startTime, parentNode); pushEventNode(eventNode, true); } else if (parentNode instanceof ContainerEventNode) { AbstractEventNode<?> eventNode = EventNodeFactory.createEventNode(statement, thread, startTime, parentNode); pushEventNode(eventNode, true); } else if (parentNode instanceof ExpressionStatementEventNode) { AbstractEventNode<?> eventNode = EventNodeFactory.createEventNode(statement, thread, startTime, parentNode); ((ExpressionStatementEventNode) parentNode) .addUserMethodEventNode((ContainerEventNode<?>) eventNode); pushEventNode(eventNode, true); } else if (parentNode instanceof ExpressionEvaluationEventNode) { AbstractEventNode<?> eventNode = EventNodeFactory.createEventNode(statement, thread, startTime, parentNode); pushEventNode(eventNode, true); } else if (parentNode instanceof LambdaEventNode) { AbstractEventNode<?> eventNode = EventNodeFactory.createEventNode(statement, thread, startTime, parentNode); ((LambdaEventNode) parentNode).addBodyEventNode((ContainerEventNode<?>) eventNode); pushEventNode(eventNode, true); } else { throw new ExecutionObserverException("Parent node invalid: " + parentNode.toString(), event); } }