/** * */ package ecologylab.bigsemantics.actions; import java.util.ArrayList; import ecologylab.bigsemantics.metadata.builtins.DocumentClosure; import ecologylab.collections.Scope; import ecologylab.generic.Continuation; import ecologylab.serialization.annotations.simpl_collection; import ecologylab.serialization.annotations.simpl_inherit; import ecologylab.serialization.annotations.simpl_scope; /** * @author andruid * */ @simpl_inherit public abstract class ContinuableSemanticAction extends SemanticAction implements Continuation<DocumentClosure> { @simpl_collection @simpl_scope(SemanticActionTranslationScope.SEMANTIC_ACTION_TRANSLATION_SCOPE) protected ArrayList<SemanticAction> continuation; /** * */ public ContinuableSemanticAction() { super(); } @Override public void callback(DocumentClosure documentClosure) { SemanticActionHandler originalHandler = this.getSemanticActionHandler(); Scope<Object> originalVariableMap = originalHandler.getSemanticActionVariableMap(); Scope<Object> newVariableMap = new Scope<Object>(originalVariableMap); SemanticActionHandler continuationHandler = new SemanticActionHandler(documentParser.getSemanticsScope(), documentParser, newVariableMap); newVariableMap.put(SemanticsConstants.DOCUMENT_CALLER, documentParser.getDocument()); //TODO -- how to make old and new Document available continuationHandler.takeSemanticActions(originalHandler.metaMetadata, documentClosure.getDocument(), continuation); } }