Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.caucho.quercus.lib.dom.DOMImplementation Maven / Gradle / Ivy
/*
* Copyright (c) 1998-2012 Caucho Technology -- all rights reserved
*
* This file is part of Resin(R) Open Source
*
* Each copy or derived work must preserve the copyright notice and this
* notice unmodified.
*
* Resin Open Source is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* Resin Open Source is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
* of NON-INFRINGEMENT. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License
* along with Resin Open Source; if not, write to the
*
* Free Software Foundation, Inc.
* 59 Temple Place, Suite 330
* Boston, MA 02111-1307 USA
*
* @author Sam
*/
package com.caucho.quercus.lib.dom;
import com.caucho.quercus.UnimplementedException;
import com.caucho.quercus.annotation.NotNull;
import com.caucho.quercus.annotation.Optional;
import com.caucho.quercus.annotation.ReturnNullAsFalse;
import com.caucho.quercus.env.Env;
import com.caucho.util.L10N;
import com.caucho.vfs.ReadStream;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
import java.io.IOException;
import java.util.IdentityHashMap;
public class DOMImplementation
{
private static L10N L = new L10N(DOMImplementation.class);
private final IdentityHashMap _wrapperMap =
new IdentityHashMap();
private final DOMFactory _factory;
final org.w3c.dom.DOMImplementation _delegate;
static DOMImplementation get(Env env)
{
DOMImplementation impl
= (DOMImplementation) env.getSpecialValue("caucho.dom");
if (impl == null) {
impl = new DOMImplementation();
env.setSpecialValue("caucho.dom", impl);
}
return impl;
}
public DOMImplementation()
{
_factory = new QDOMFactory();
_delegate = _factory.getImplementation();
}
static public boolean hasFeature(Env env, String feature, String version)
{
return get(env)._delegate.hasFeature(feature, version);
}
static public DOMDocument createDocument(Env env,
@Optional String namespaceURI,
@Optional String name,
@Optional DOMDocumentType docType)
{
DOMDocument doc;
if (docType != null)
doc = get(env).createDocument(docType);
else
doc = get(env).createDocument();
if (name != null && name.length() > 0) {
DOMElement elt;
if (namespaceURI != null && namespaceURI.length() > 0)
elt = doc.createElementNS(namespaceURI, name);
else
elt = doc.createElement(name);
doc.appendChild(elt);
}
return doc;
}
@ReturnNullAsFalse
static public DOMDocumentType createDocumentType(
Env env,
@NotNull String qualifiedName,
@Optional String publicId,
@Optional String systemId) {
if (qualifiedName == null)
return null;
if ((publicId != null && publicId.length() > 0)
&& (publicId != null && publicId.length() > 0))
return get(env).createDocumentType(qualifiedName, publicId, systemId);
else
return get(env).createDocumentType(qualifiedName);
}
DOMAttr createWrapper(Attr node)
{
DOMAttr wrapper = new DOMAttr(this, node);
_wrapperMap.put(node, wrapper);
return wrapper;
}
DOMCDATASection createWrapper(CDATASection node)
{
DOMCDATASection wrapper = new DOMCDATASection(this, node);
_wrapperMap.put(node, wrapper);
return wrapper;
}
DOMComment createWrapper(Comment node)
{
DOMComment wrapper = new DOMComment(this, node);
_wrapperMap.put(node, wrapper);
return wrapper;
}
DOMDocument createWrapper(Document node)
{
DOMDocument wrapper = new DOMDocument(this, node);
_wrapperMap.put(node, wrapper);
return wrapper;
}
DOMDocumentFragment createWrapper(DocumentFragment node)
{
DOMDocumentFragment wrapper = new DOMDocumentFragment(this, node);
_wrapperMap.put(node, wrapper);
return wrapper;
}
DOMDocumentType createWrapper(DocumentType node)
{
DOMDocumentType wrapper = new DOMDocumentType(this, node);
_wrapperMap.put(node, wrapper);
return wrapper;
}
DOMConfiguration createWrapper(org.w3c.dom.DOMConfiguration node)
{
DOMConfiguration wrapper = new DOMConfiguration(this, node);
_wrapperMap.put(node, wrapper);
return wrapper;
}
DOMException createWrapper(org.w3c.dom.DOMException node)
{
DOMException wrapper = new DOMException(this, node);
_wrapperMap.put(node, wrapper);
return wrapper;
}
DOMElement createWrapper(Element node)
{
DOMElement wrapper = new DOMElement(this, node);
_wrapperMap.put(node, wrapper);
return wrapper;
}
DOMEntityReference createWrapper(EntityReference node)
{
DOMEntityReference wrapper = new DOMEntityReference(this, node);
_wrapperMap.put(node, wrapper);
return wrapper;
}
DOMNamedNodeMap createWrapper(NamedNodeMap node)
{
DOMNamedNodeMap wrapper = new DOMNamedNodeMap(this, node);
_wrapperMap.put(node, wrapper);
return wrapper;
}
DOMNodeList createWrapper(NodeList node)
{
DOMNodeList wrapper = new DOMNodeList(this, node);
_wrapperMap.put(node, wrapper);
return wrapper;
}
DOMNotation createWrapper(Notation node)
{
DOMNotation wrapper = new DOMNotation(this, node);
_wrapperMap.put(node, wrapper);
return wrapper;
}
DOMProcessingInstruction createWrapper(ProcessingInstruction node)
{
DOMProcessingInstruction wrapper = new DOMProcessingInstruction(this, node);
_wrapperMap.put(node, wrapper);
return wrapper;
}
DOMStringList createWrapper(org.w3c.dom.DOMStringList node)
{
DOMStringList wrapper = new DOMStringList(this, node);
_wrapperMap.put(node, wrapper);
return wrapper;
}
DOMText createWrapper(Text node)
{
DOMText wrapper = new DOMText(this, node);
_wrapperMap.put(node, wrapper);
return wrapper;
}
DOMTypeInfo createWrapper(TypeInfo node)
{
DOMTypeInfo wrapper = new DOMTypeInfo(this, node);
_wrapperMap.put(node, wrapper);
return wrapper;
}
Object getWrapper(Object obj)
{
if (obj == null)
return null;
Object wrapper;
if (obj instanceof NodeList)
wrapper = createWrapper((NodeList) obj);
else {
wrapper = _wrapperMap.get(obj);
if (wrapper == null) {
if (obj instanceof Attr)
wrapper = createWrapper((Attr) obj);
else if (obj instanceof CDATASection)
wrapper = createWrapper((CDATASection) obj);
else if (obj instanceof Comment)
wrapper = createWrapper((Comment) obj);
else if (obj instanceof Document)
wrapper = createWrapper((Document) obj);
else if (obj instanceof DocumentFragment)
wrapper = createWrapper((DocumentFragment) obj);
else if (obj instanceof DocumentType)
wrapper = createWrapper((DocumentType) obj);
else if (obj instanceof org.w3c.dom.DOMConfiguration)
wrapper = createWrapper((org.w3c.dom.DOMConfiguration) obj);
else if (obj instanceof org.w3c.dom.DOMException)
wrapper = createWrapper((org.w3c.dom.DOMException) obj);
else if (obj instanceof Element)
wrapper = createWrapper((Element) obj);
else if (obj instanceof EntityReference)
wrapper = createWrapper((EntityReference) obj);
else if (obj instanceof NamedNodeMap)
wrapper = createWrapper((NamedNodeMap) obj);
else if (obj instanceof Notation)
wrapper = createWrapper((Notation) obj);
else if (obj instanceof ProcessingInstruction)
wrapper = createWrapper((ProcessingInstruction) obj);
else if (obj instanceof org.w3c.dom.DOMStringList)
wrapper = createWrapper((org.w3c.dom.DOMStringList) obj);
else if (obj instanceof Text)
wrapper = createWrapper((Text) obj);
else if (obj instanceof TypeInfo)
wrapper = createWrapper((TypeInfo) obj);
else
throw new UnimplementedException(
L.l("cannot wrap element of type {0}", obj.getClass().getName()));
_wrapperMap.put(obj, wrapper);
}
}
return wrapper;
}
public String toString()
{
return getClass().getSimpleName();
}
DOMAttr createAttr(String name)
{
return createWrapper(_factory.createAttr(name));
}
public DOMComment createComment()
{
return createWrapper(_factory.createComment());
}
public DOMDocument createDocument()
{
return createWrapper(_factory.createDocument());
}
public DOMDocument createDocument(DOMDocumentType docType)
{
return createWrapper(_factory.createDocument(docType._delegate));
}
public DOMDocumentType createDocumentType(String qualifiedName)
{
return createWrapper(_factory.createDocumentType(qualifiedName));
}
public DOMDocumentType createDocumentType(String qualifiedName,
String publicId,
String systemId)
{
return createWrapper(_factory.createDocumentType(qualifiedName,
publicId,
systemId));
}
public DOMElement createElement(String name)
{
return createWrapper(_factory.createElement(name));
}
public DOMElement createElement(String name, String namespace)
{
return createWrapper(_factory.createElement(name, namespace));
}
public DOMEntityReference createEntityReference(String name)
{
return createWrapper(_factory.createEntityReference(name));
}
public DOMProcessingInstruction createProcessingInstruction(String name)
{
return createWrapper(_factory.createProcessingInstruction(name));
}
public DOMText createText()
{
return createWrapper(_factory.createText());
}
public void parseHTMLDocument(Document document, ReadStream is, String path)
throws IOException, SAXException
{
_factory.parseHTMLDocument(document, is, path);
}
public void parseXMLDocument(Document document, ReadStream is, String path)
throws IOException, SAXException
{
_factory.parseXMLDocument(document, is, path);
}
}