package org.jdom; import java.util.*; /** * Special factory for building documents without any content or structure * checking. This should only be used when you are 100% positive that the * input is absolutely correct. This factory can speed builds, but any * problems in the input will be uncaught until later when they could cause * infinite loops, malformed XML, or worse. Use with extreme caution. */ public class UncheckedJDOMFactory implements JDOMFactory { // ===================================================================== // Element Factory // ===================================================================== public Element element(String name, Namespace namespace) { Element e = new Element(); e.name = name; if (namespace == null) { namespace = Namespace.NO_NAMESPACE; } e.namespace = namespace; return e; } public Element element(String name) { Element e = new Element(); e.name = name; e.namespace = Namespace.NO_NAMESPACE; return e; } public Element element(String name, String uri) { return element(name, Namespace.getNamespace("", uri)); } public Element element(String name, String prefix, String uri) { return element(name, Namespace.getNamespace(prefix, uri)); } // ===================================================================== // Attribute Factory // ===================================================================== public Attribute attribute(String name, String value, Namespace namespace) { Attribute a = new Attribute(); a.name = name; a.value = value; if (namespace == null) { namespace = Namespace.NO_NAMESPACE; } a.namespace = namespace; return a; } public Attribute attribute(String name, String value, int type, Namespace namespace) { Attribute a = new Attribute(); a.name = name; a.type = type; a.value = value; if (namespace == null) { namespace = Namespace.NO_NAMESPACE; } a.namespace = namespace; return a; } public Attribute attribute(String name, String value) { Attribute a = new Attribute(); a.name = name; a.value = value; a.namespace = Namespace.NO_NAMESPACE; return a; } public Attribute attribute(String name, String value, int type) { Attribute a = new Attribute(); a.name = name; a.type = type; a.value = value; a.namespace = Namespace.NO_NAMESPACE; return a; } // ===================================================================== // Text Factory // ===================================================================== public Text text(String str) { Text t = new Text(); t.value = str; return t; } // ===================================================================== // CDATA Factory // ===================================================================== public CDATA cdata(String str) { CDATA c = new CDATA(); c.value = str; return c; } // ===================================================================== // Comment Factory // ===================================================================== public Comment comment(String str) { Comment c = new Comment(); c.text = str; return c; } // ===================================================================== // Processing Instruction Factory // ===================================================================== public ProcessingInstruction processingInstruction(String target, Map data) { ProcessingInstruction p = new ProcessingInstruction(); p.target = target; p.setData(data); return p; } public ProcessingInstruction processingInstruction(String target, String data) { ProcessingInstruction p = new ProcessingInstruction(); p.target = target; p.setData(data); return p; } // ===================================================================== // Entity Ref Factory // ===================================================================== public EntityRef entityRef(String name) { EntityRef e = new org.jdom.EntityRef(); e.name = name; return e; } public EntityRef entityRef(String name, String systemID) { EntityRef e = new EntityRef(); e.name = name; e.systemID = systemID; return e; } public EntityRef entityRef(String name, String publicID, String systemID) { EntityRef e = new EntityRef(); e.name = name; e.publicID = publicID; e.systemID = systemID; return e; } // ===================================================================== // DocType Factory // ===================================================================== public DocType docType(String elementName, String publicID, String systemID) { DocType d = new DocType(); d.elementName = elementName; d.publicID = publicID; d.systemID = systemID; return d; } public DocType docType(String elementName, String systemID) { return docType(elementName, null, systemID); } public DocType docType(String elementName) { return docType(elementName, null, null); } // ===================================================================== // Document Factory // ===================================================================== public Document document(Element rootElement, DocType docType, String baseURI) { Document d = new Document(); if (docType != null) { addContent(d, docType); } if (rootElement != null) { addContent(d, rootElement); } if (baseURI != null) { d.baseURI = baseURI; } return d; } public Document document(Element rootElement, DocType docType) { return document(rootElement, docType, null); } public Document document(Element rootElement) { return document(rootElement, null, null); } // ===================================================================== // List manipulation // ===================================================================== public void addContent(Parent parent, Content child) { if (parent instanceof Element) { Element elt = (Element) parent; elt.content.uncheckedAddContent(child); } else { Document doc = (Document) parent; doc.content.uncheckedAddContent(child); } } public void setAttribute(Element parent, Attribute a) { parent.attributes.uncheckedAddAttribute(a); } public void addNamespaceDeclaration(Element parent, Namespace additional) { if (parent.additionalNamespaces == null) { parent.additionalNamespaces = new ArrayList(5); //Element.INITIAL_ARRAY_SIZE } parent.additionalNamespaces.add(additional); } }