All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.htmlunit.cyberneko.xerces.dom.DOMImplementationImpl Maven / Gradle / Ivy

/*
 * Copyright (c) 2017-2024 Ronald Brill
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.htmlunit.cyberneko.xerces.dom;

import org.w3c.dom.DOMImplementation;
import org.w3c.dom.DocumentType;

/**
 * The DOMImplementation class is description of a particular implementation of
 * the Document Object Model. As such its data is static, shared by all
 * instances of this implementation.
 * 

* The DOM API requires that it be a real object rather than static methods. * However, there's nothing that says it can't be a singleton, so that's how * I've implemented it. */ public class DOMImplementationImpl extends CoreDOMImplementationImpl { /** Dom implementation singleton. */ private static final DOMImplementationImpl singleton = new DOMImplementationImpl(); // NON-DOM: Obtain and return the single shared object public static DOMImplementation getDOMImplementation() { return singleton; } /** * {@inheritDoc} * * Test if the DOM implementation supports a specific "feature" -- currently * meaning language and level thereof. * * @param feature The package name of the feature to test. In Level 1, supported * values are "HTML" and "XML" (case-insensitive). At this * writing, org.htmlunit.cyberneko.xerces.dom supports only * XML. * * @param version The version number of the feature being tested. This is * interpreted as "Version of the DOM API supported for the * specified Feature", and in Level 1 should be "1.0" * * @return true iff this implementation is compatable with the specified feature * and version. */ @Override public boolean hasFeature(String feature, final String version) { final boolean result = super.hasFeature(feature, version); if (!result) { final boolean anyVersion = version == null || version.length() == 0; if (feature.startsWith("+")) { feature = feature.substring(1); } return ("Events".equalsIgnoreCase(feature) && (anyVersion || "2.0".equals(version))) || ("MutationEvents".equalsIgnoreCase(feature) && (anyVersion || "2.0".equals(version))) || ("Traversal".equalsIgnoreCase(feature) && (anyVersion || "2.0".equals(version))) || ("Range".equalsIgnoreCase(feature) && (anyVersion || "2.0".equals(version))) || ("MutationEvents".equalsIgnoreCase(feature) && (anyVersion || "2.0".equals(version))); } return result; } /** * {@inheritDoc} */ @Override protected CoreDocumentImpl createDocument(final DocumentType doctype) { return new DocumentImpl(doctype); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy