schemadvfactoryimpl.java

来自「JAVA的一些源码 JAVA2 STANDARD EDITION DEVELO」· Java 代码 · 共 392 行 · 第 1/2 页

JAVA
392
字号
/* * The Apache Software License, Version 1.1 * * * Copyright (c) 2001-2003 The Apache Software Foundation.  All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in *    the documentation and/or other materials provided with the *    distribution. * * 3. The end-user documentation included with the redistribution, *    if any, must include the following acknowledgment: *       "This product includes software developed by the *        Apache Software Foundation (http://www.apache.org/)." *    Alternately, this acknowledgment may appear in the software itself, *    if and wherever such third-party acknowledgments normally appear. * * 4. The names "Xerces" and "Apache Software Foundation" must *    not be used to endorse or promote products derived from this *    software without prior written permission. For written *    permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache", *    nor may "Apache" appear in their name, without prior written *    permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation and was * originally based on software copyright (c) 2001, International * Business Machines, Inc., http://www.apache.org.  For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */package com.sun.org.apache.xerces.internal.impl.dv.xs;import com.sun.org.apache.xerces.internal.impl.dv.SchemaDVFactory;import com.sun.org.apache.xerces.internal.impl.dv.XSSimpleType;import com.sun.org.apache.xerces.internal.impl.dv.XSFacets;import com.sun.org.apache.xerces.internal.impl.xs.XSDeclarationPool;import com.sun.org.apache.xerces.internal.xs.XSConstants;import com.sun.org.apache.xerces.internal.xs.XSObjectList;import com.sun.org.apache.xerces.internal.util.SymbolHash;/** * the factory to create/return built-in schema DVs and create user-defined DVs * * @author Neeraj Bajaj, Sun Microsystems, inc. * @author Sandy Gao, IBM * * @version $Id: SchemaDVFactoryImpl.java,v 1.14 2003/11/12 23:17:32 sandygao Exp $ */public class SchemaDVFactoryImpl extends SchemaDVFactory {    static final String URI_SCHEMAFORSCHEMA = "http://www.w3.org/2001/XMLSchema";    static SymbolHash fBuiltInTypes = new SymbolHash();    static {        createBuiltInTypes();    }    protected XSDeclarationPool fDeclPool = null;    /**     * Get a built-in simple type of the given name     * REVISIT: its still not decided within the Schema WG how to define the     *          ur-types and if all simple types should be derived from a     *          complex type, so as of now we ignore the fact that anySimpleType     *          is derived from anyType, and pass 'null' as the base of     *          anySimpleType. It needs to be changed as per the decision taken.     *     * @param name  the name of the datatype     * @return      the datatype validator of the given name     */    public XSSimpleType getBuiltInType(String name) {        return (XSSimpleType)fBuiltInTypes.get(name);    }    /**     * get all built-in simple types, which are stored in a hashtable keyed by     * the name     *     * @return      a hashtable which contains all built-in simple types     */    public SymbolHash getBuiltInTypes() {        return (SymbolHash)fBuiltInTypes.makeClone();    }    /**     * Create a new simple type which is derived by restriction from another     * simple type.     *     * @param name              name of the new type, could be null     * @param targetNamespace   target namespace of the new type, could be null     * @param finalSet          value of "final"     * @param base              base type of the new type     * @param annotations       set of annotations     * @return                  the newly created simple type     */    public XSSimpleType createTypeRestriction(String name, String targetNamespace,                                              short finalSet, XSSimpleType base, XSObjectList annotations) {                if (fDeclPool != null) {           XSSimpleTypeDecl st= fDeclPool.getSimpleTypeDecl();           return st.setRestrictionValues((XSSimpleTypeDecl)base, name, targetNamespace, finalSet, annotations);        }        return new XSSimpleTypeDecl((XSSimpleTypeDecl)base, name, targetNamespace, finalSet, false, annotations);    }    /**     * Create a new simple type which is derived by list from another simple     * type.     *     * @param name              name of the new type, could be null     * @param targetNamespace   target namespace of the new type, could be null     * @param finalSet          value of "final"     * @param itemType          item type of the list type     * @param annotations       set of annotations     * @return                  the newly created simple type     */    public XSSimpleType createTypeList(String name, String targetNamespace,                                       short finalSet, XSSimpleType itemType,                                       XSObjectList annotations) {        if (fDeclPool != null) {           XSSimpleTypeDecl st= fDeclPool.getSimpleTypeDecl();           return st.setListValues(name, targetNamespace, finalSet, (XSSimpleTypeDecl)itemType, annotations);        }        return new XSSimpleTypeDecl(name, targetNamespace, finalSet, (XSSimpleTypeDecl)itemType, false, annotations);    }    /**     * Create a new simple type which is derived by union from a list of other     * simple types.     *     * @param name              name of the new type, could be null     * @param targetNamespace   target namespace of the new type, could be null     * @param finalSet          value of "final"     * @param base              member types of the union type     * @param annotations       set of annotations     * @return                  the newly created simple type     */    public XSSimpleType createTypeUnion(String name, String targetNamespace,                                        short finalSet, XSSimpleType[] memberTypes,                                        XSObjectList annotations) {        int typeNum = memberTypes.length;        XSSimpleTypeDecl[] mtypes = new XSSimpleTypeDecl[typeNum];        System.arraycopy(memberTypes, 0, mtypes, 0, typeNum);        if (fDeclPool != null) {           XSSimpleTypeDecl st= fDeclPool.getSimpleTypeDecl();           return st.setUnionValues(name, targetNamespace, finalSet, mtypes, annotations);        }        return new XSSimpleTypeDecl(name, targetNamespace, finalSet, mtypes, annotations);    }    // create all built-in types    static void createBuiltInTypes() {        // all schema simple type names        final String ANYSIMPLETYPE     = "anySimpleType";        final String ANYURI            = "anyURI";        final String BASE64BINARY      = "base64Binary";        final String BOOLEAN           = "boolean";        final String BYTE              = "byte";        final String DATE              = "date";        final String DATETIME          = "dateTime";        final String DAY               = "gDay";        final String DECIMAL           = "decimal";        final String DOUBLE            = "double";        final String DURATION          = "duration";        final String ENTITY            = "ENTITY";        final String ENTITIES          = "ENTITIES";        final String FLOAT             = "float";        final String HEXBINARY         = "hexBinary";

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?