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

org.mozilla.javascript.xml.XMLLib Maven / Gradle / Ivy

The newest version!
/* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

package org.mozilla.javascript.xml;

import org.mozilla.javascript.Context;
import org.mozilla.javascript.Ref;
import org.mozilla.javascript.ScriptRuntime;
import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.ScriptableObject;

public abstract class XMLLib {
    private static final Object XML_LIB_KEY = new Object();

    /**
     * An object which specifies an XMLLib implementation to be used at runtime.
     *
     * 

This interface should be considered experimental. It may be better (and certainly more * flexible) to write an interface that returns an XMLLib object rather than a class name, for * example. But that would cause many more ripple effects in the code, all the way back to * {@link ScriptRuntime}. */ public abstract static class Factory { public static Factory create(final String className) { return new Factory() { @Override public String getImplementationClassName() { return className; } }; } public abstract String getImplementationClassName(); } public static XMLLib extractFromScopeOrNull(Scriptable scope) { ScriptableObject so = ScriptRuntime.getLibraryScopeOrNull(scope); if (so == null) { // If library is not yet initialized, return null return null; } // Ensure lazily initialization of real XML library instance // which is done on first access to XML property ScriptableObject.getProperty(so, "XML"); return (XMLLib) so.getAssociatedValue(XML_LIB_KEY); } public static XMLLib extractFromScope(Scriptable scope) { XMLLib lib = extractFromScopeOrNull(scope); if (lib != null) { return lib; } String msg = ScriptRuntime.getMessageById("msg.XML.not.available"); throw Context.reportRuntimeError(msg); } protected final XMLLib bindToScope(Scriptable scope) { ScriptableObject so = ScriptRuntime.getLibraryScopeOrNull(scope); if (so == null) { // standard library should be initialized at this point throw new IllegalStateException(); } return (XMLLib) so.associateValue(XML_LIB_KEY, this); } public abstract boolean isXMLName(Context cx, Object name); public abstract Ref nameRef(Context cx, Object name, Scriptable scope, int memberTypeFlags); public abstract Ref nameRef( Context cx, Object namespace, Object name, Scriptable scope, int memberTypeFlags); /** * Escapes the reserved characters in a value of an attribute. * * @param value Unescaped text * @return The escaped text */ public abstract String escapeAttributeValue(Object value); /** * Escapes the reserved characters in a value of a text node. * * @param value Unescaped text * @return The escaped text */ public abstract String escapeTextValue(Object value); /** Construct namespace for default xml statement. */ public abstract Object toDefaultXmlNamespace(Context cx, Object uriValue); public void setIgnoreComments(boolean b) { throw new UnsupportedOperationException(); } public void setIgnoreWhitespace(boolean b) { throw new UnsupportedOperationException(); } public void setIgnoreProcessingInstructions(boolean b) { throw new UnsupportedOperationException(); } public void setPrettyPrinting(boolean b) { throw new UnsupportedOperationException(); } public void setPrettyIndent(int i) { throw new UnsupportedOperationException(); } public boolean isIgnoreComments() { throw new UnsupportedOperationException(); } public boolean isIgnoreProcessingInstructions() { throw new UnsupportedOperationException(); } public boolean isIgnoreWhitespace() { throw new UnsupportedOperationException(); } public boolean isPrettyPrinting() { throw new UnsupportedOperationException(); } public int getPrettyIndent() { throw new UnsupportedOperationException(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy