diff options
Diffstat (limited to 'src/share/classes/com/sun/org/apache/xerces/internal/impl/xs/XSImplementationImpl.java')
-rw-r--r-- | src/share/classes/com/sun/org/apache/xerces/internal/impl/xs/XSImplementationImpl.java | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/src/share/classes/com/sun/org/apache/xerces/internal/impl/xs/XSImplementationImpl.java b/src/share/classes/com/sun/org/apache/xerces/internal/impl/xs/XSImplementationImpl.java new file mode 100644 index 0000000..8cf0c4a --- /dev/null +++ b/src/share/classes/com/sun/org/apache/xerces/internal/impl/xs/XSImplementationImpl.java @@ -0,0 +1,119 @@ +/* + * reserved comment block + * DO NOT REMOVE OR ALTER! + */ +/* + * Copyright 2003,2004 The Apache Software Foundation. + * + * 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 + * + * http://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 com.sun.org.apache.xerces.internal.impl.xs; + +import com.sun.org.apache.xerces.internal.dom.CoreDOMImplementationImpl; +import com.sun.org.apache.xerces.internal.dom.DOMMessageFormatter; +import com.sun.org.apache.xerces.internal.impl.xs.util.StringListImpl; +import com.sun.org.apache.xerces.internal.xs.StringList; +import com.sun.org.apache.xerces.internal.xs.XSException; +import com.sun.org.apache.xerces.internal.xs.XSImplementation; +import com.sun.org.apache.xerces.internal.xs.XSLoader; +import org.w3c.dom.DOMImplementation; + + +/** + * Implements XSImplementation interface that allows one to retrieve an instance of <code>XSLoader</code>. + * This interface should be implemented on the same object that implements + * DOMImplementation. + * + * @xerces.internal + * + * @author Elena Litani, IBM + */ +public class XSImplementationImpl extends CoreDOMImplementationImpl + implements XSImplementation { + + // + // Data + // + + // static + + /** Dom implementation singleton. */ + static XSImplementationImpl singleton = new XSImplementationImpl(); + + // + // Public methods + // + + /** NON-DOM: Obtain and return the single shared object */ + public static DOMImplementation getDOMImplementation() { + return singleton; + } + + // + // DOMImplementation methods + // + + /** + * 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, com.sun.org.apache.xerces.internal.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. + */ + public boolean hasFeature(String feature, String version) { + + return (feature.equalsIgnoreCase("XS-Loader") && (version == null || version.equals("1.0")) || + super.hasFeature(feature, version)); + } // hasFeature(String,String):boolean + + + + /* (non-Javadoc) + * @see com.sun.org.apache.xerces.internal.xs.XSImplementation#createXSLoader(com.sun.org.apache.xerces.internal.xs.StringList) + */ + public XSLoader createXSLoader(StringList versions) throws XSException { + XSLoader loader = new XSLoaderImpl(); + if (versions == null){ + return loader; + } + for (int i=0; i<versions.getLength();i++){ + if (!versions.item(i).equals("1.0")){ + String msg = + DOMMessageFormatter.formatMessage( + DOMMessageFormatter.DOM_DOMAIN, + "FEATURE_NOT_SUPPORTED", + new Object[] { versions.item(i) }); + throw new XSException(XSException.NOT_SUPPORTED_ERR, msg); + } + } + return loader; + } + + /* (non-Javadoc) + * @see com.sun.org.apache.xerces.internal.xs.XSImplementation#getRecognizedVersions() + */ + public StringList getRecognizedVersions() { + StringListImpl list = new StringListImpl(new String[]{"1.0"}, 1); + return list; + } + +} // class XSImplementationImpl |