/* * $Id: JSPDocument.java,v 1.1.2.1 2007/01/12 19:32:17 idegaweb Exp $ * Created on 8.5.2005 * * Copyright (C) 2005 Idega Software hf. All Rights Reserved. * * This software is the proprietary information of Idega hf. * Use is subject to license terms. */ package com.idega.builder.jsp; import java.util.Stack; import com.idega.xml.XMLAttribute; import com.idega.xml.XMLDocument; import com.idega.xml.XMLElement; import com.idega.xml.XMLNamespace; /** * * Last modified: $Date: 2007/01/12 19:32:17 $ by $Author: idegaweb $ * * @author <a href="mailto:gummi@idega.com">Gudmundur Agust Saemundsson</a> * @version $Revision: 1.1.2.1 $ */ public class JSPDocument extends XMLDocument { private static XMLNamespace NAMESPACE_JSP = new XMLNamespace("jsp","http://java.sun.com/JSP/Page"); private static XMLNamespace NAMESPACE_JSF_HTML = new XMLNamespace("h","http://java.sun.com/jsf/html"); private static XMLNamespace NAMESPACE_JSF_CORE = new XMLNamespace("f","http://java.sun.com/jsf/core"); private Stack elementStack = null; private XMLElement currentElement = null; /** * @param element */ public JSPDocument() { super(new XMLElement("root",NAMESPACE_JSP)); getRootElement().setAttribute("version","1.2"); } public XMLElement getCurrentElement(){ if(this.currentElement == null){ this.currentElement = getRootElement(); } return this.currentElement; } private void setCurrentElement(XMLElement element){ this.currentElement = element; } protected Stack getElementStack(){ if(this.elementStack==null){ this.elementStack = new Stack(); } return this.elementStack; } public void startElement(String name, XMLNamespace namespace){ XMLElement element = new XMLElement(name,namespace); getRootElement().addNamespaceDeclaration(namespace); getCurrentElement().addContent(element); getElementStack().push(getCurrentElement()); setCurrentElement(element); } public void endElement(String name){ if(!getCurrentElement().getName().equals(name)){ throw new IllegalStateException("Cannot end '"+name+"' you must end '"+getCurrentElement().getName()+"' first."); } setCurrentElement((XMLElement) getElementStack().pop()); } public void setAttribute(String name, String value){ getCurrentElement().setAttribute(name,value); } public void setAttribute(XMLAttribute attribute){ getCurrentElement().setAttribute(attribute); } /** * @return Returns the JSF Core Namespace. */ public XMLNamespace getJsfCoreNamespace() { return NAMESPACE_JSF_CORE; } /** * @return Returns the JSF HTML namespace. */ public XMLNamespace getJsfHtmlNamespace() { return NAMESPACE_JSF_HTML; } /** * @return Returns the JSP namespace. */ public XMLNamespace getJspNamespace() { return NAMESPACE_JSP; } }