001/*
002 * Copyright (c) 2013 Nu Echo Inc. All rights reserved.
003 */
004
005package com.nuecho.rivr.voicexml.servlet;
006
007import static com.nuecho.rivr.voicexml.rendering.voicexml.VoiceXmlDomUtil.*;
008
009import javax.servlet.http.*;
010
011import org.w3c.dom.*;
012
013import com.nuecho.rivr.core.util.*;
014
015/**
016 * Generates the standard Rivr root document. The root document will:
017 * <ul>
018 * <li>declare the <code>rivr</code> variable (an object)</li>
019 * <li>load the <code>rivr.js</code> script which contains the necessary
020 * JavaScript methods for result manipulation</li>
021 * </ul>
022 * 
023 * @author Nu Echo Inc.
024 */
025public class DefaultVoiceXmlRootDocumentFactory implements VoiceXmlRootDocumentFactory {
026
027    @Override
028    public Document getDocument(HttpServletRequest request) {
029        String contextPath = request.getContextPath();
030        String servletPath = request.getServletPath();
031
032        Element vxmlElement = createVoiceXmlDocumentRoot();
033        createVarElement(vxmlElement, RIVR_VARIABLE, "new Object()");
034
035        Element scriptElement = DomUtils.appendNewElement(vxmlElement, SCRIPT_ELEMENT);
036        scriptElement.setAttribute(SRC_ATTRIBUTE, contextPath + servletPath + VoiceXmlDialogueServlet.RIVR_SCRIPT);
037        return vxmlElement.getOwnerDocument();
038    }
039
040}