001/* 002 * Copyright (c) 2013 Nu Echo Inc. All rights reserved. 003 */ 004 005package com.nuecho.rivr.voicexml.turn.last; 006 007import static com.nuecho.rivr.voicexml.rendering.voicexml.VoiceXmlDomUtil.*; 008 009import org.w3c.dom.*; 010 011import com.nuecho.rivr.core.channel.*; 012import com.nuecho.rivr.core.util.*; 013import com.nuecho.rivr.voicexml.dialogue.*; 014import com.nuecho.rivr.voicexml.rendering.voicexml.*; 015import com.nuecho.rivr.voicexml.turn.*; 016 017/** 018 * Base class for the last turn returned by a {@link VoiceXmlDialogue}. 019 * 020 * @author Nu Echo Inc. 021 * @see VoiceXmlDialogue 022 */ 023public abstract class VoiceXmlLastTurn extends VoiceXmlDocumentTurn implements LastTurn { 024 025 public VoiceXmlLastTurn(String name) { 026 super(name); 027 } 028 029 @Override 030 protected Document createVoiceXmlDocument(VoiceXmlDialogueContext dialogueContext) 031 throws VoiceXmlDocumentRenderingException { 032 Document document = createDocument(dialogueContext); 033 Element formElement = createForm(document); 034 fillVoiceXmlDocument(document, formElement, dialogueContext); 035 addEventHandlers(document.getDocumentElement()); 036 addFatalErrorHandlerForm(dialogueContext, document, this); 037 return document; 038 } 039 040 private void addEventHandlers(Element vxmlElement) { 041 Element catchElement = DomUtils.appendNewElement(vxmlElement, CATCH_ELEMENT); 042 catchElement.setAttribute(EVENT_ATTRIBUTE, ERROR_EVENT_NAME); 043 createGotoFatalHandler(catchElement); 044 } 045 046 protected abstract void fillVoiceXmlDocument(Document document, 047 Element formElement, 048 VoiceXmlDialogueContext dialogueContext) 049 throws VoiceXmlDocumentRenderingException; 050 051}