xscomplextypedecl.java

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

JAVA
490
字号
/* * 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.xs;import com.sun.org.apache.xerces.internal.impl.dv.XSSimpleType;import com.sun.org.apache.xerces.internal.xs.*;import com.sun.org.apache.xerces.internal.impl.xs.models.XSCMValidator;import com.sun.org.apache.xerces.internal.impl.xs.models.CMBuilder;import com.sun.org.apache.xerces.internal.impl.xs.util.XSObjectListImpl;import org.w3c.dom.TypeInfo;;/** * The XML representation for a complexType * schema component is a <complexType> element information item * * @author Elena Litani, IBM * @author Sandy Gao, IBM * @version $Id: XSComplexTypeDecl.java,v 1.7 2003/12/12 02:58:29 kk122374 Exp $ */public class XSComplexTypeDecl implements XSComplexTypeDefinition {    // name of the complexType    String fName = null;    // target namespace of the complexType    String fTargetNamespace = null;    // base type of the complexType    XSTypeDefinition fBaseType = null;    // derivation method of the complexType    short fDerivedBy = XSConstants.DERIVATION_RESTRICTION;    // final set of the complexType    short fFinal = XSConstants.DERIVATION_NONE;    // block set (prohibited substitution) of the complexType    short fBlock = XSConstants.DERIVATION_NONE;    // flags: whether is abstract; whether contains ID type;    //        whether it's an anonymous tpye    short fMiscFlags = 0;    // the attribute group that holds the attribute uses and attribute wildcard    XSAttributeGroupDecl fAttrGrp = null;    // the content type of the complexType    short fContentType = CONTENTTYPE_EMPTY;    // if the content type is simple, then the corresponding simpleType    XSSimpleType fXSSimpleType = null;    // if the content type is element or mixed, the particle    XSParticleDecl fParticle = null;    // if there is a particle, the content model corresponding to that particle    XSCMValidator fCMValidator = null;    // list of annotations affiliated with this type    XSObjectListImpl fAnnotations = null;    public XSComplexTypeDecl() {        // do-nothing constructor for now.    }    public void setValues(String name, String targetNamespace,            XSTypeDefinition baseType, short derivedBy, short schemaFinal,             short block, short contentType,            boolean isAbstract, XSAttributeGroupDecl attrGrp,             XSSimpleType simpleType, XSParticleDecl particle,            XSObjectListImpl annotations) {        fTargetNamespace = targetNamespace;        fBaseType = baseType;        fDerivedBy = derivedBy;        fFinal = schemaFinal;        fBlock = block;        fContentType = contentType;        if(isAbstract)            fMiscFlags |= CT_IS_ABSTRACT;        fAttrGrp = attrGrp;        fXSSimpleType = simpleType;        fParticle = particle;        fAnnotations = annotations;   }   public void setName(String name) {        fName = name;   }    public short getTypeCategory() {        return COMPLEX_TYPE;    }    public String getTypeName() {        return fName;    }    public short getFinalSet(){        return fFinal;    }    public String getTargetNamespace(){        return fTargetNamespace;    }    // flags for the misc flag    private static final short CT_IS_ABSTRACT = 1;    private static final short CT_HAS_TYPE_ID = 2;    private static final short CT_IS_ANONYMOUS = 4;    // methods to get/set misc flag    public boolean containsTypeID () {        return((fMiscFlags & CT_HAS_TYPE_ID) != 0);    }    public void setIsAbstractType() {        fMiscFlags |= CT_IS_ABSTRACT;    }    public void setContainsTypeID() {        fMiscFlags |= CT_HAS_TYPE_ID;    }    public void setIsAnonymous() {        fMiscFlags |= CT_IS_ANONYMOUS;    }    public synchronized XSCMValidator getContentModel(CMBuilder cmBuilder) {        if (fCMValidator == null)            fCMValidator = cmBuilder.getContentModel(this);        return fCMValidator;    }    // some utility methods:    // return the attribute group for this complex type    public XSAttributeGroupDecl getAttrGrp() {        return fAttrGrp;    }    public String toString() {        StringBuffer str = new StringBuffer();        appendTypeInfo(str);        return str.toString();    }    void appendTypeInfo(StringBuffer str) {        String contentType[] = {"EMPTY", "SIMPLE", "ELEMENT", "MIXED"};        String derivedBy[] = {"EMPTY", "EXTENSION", "RESTRICTION"};        str.append("Complex type name='" + fTargetNamespace + "," + getTypeName() + "', ");        if (fBaseType != null)            str.append(" base type name='" + fBaseType.getName() + "', ");        str.append(" content type='" + contentType[fContentType] + "', ");        str.append(" isAbstract='" + getAbstract() + "', ");        str.append(" hasTypeId='" + containsTypeID() + "', ");        str.append(" final='" + fFinal + "', ");        str.append(" block='" + fBlock + "', ");        if (fParticle != null)            str.append(" particle='" + fParticle.toString() + "', ");        str.append(" derivedBy='" + derivedBy[fDerivedBy] + "'. ");    }    public boolean derivedFromType(XSTypeDefinition ancestor, short derivationMethod) {        // ancestor is null, retur false        if (ancestor == null)            return false;        // ancestor is anyType, return true        if (ancestor == SchemaGrammar.fAnyType)            return true;        // recursively get base, and compare it with ancestor        XSTypeDefinition type = this;        while (type != ancestor &&                     // compare with ancestor               type != SchemaGrammar.fAnySimpleType &&  // reached anySimpleType               type != SchemaGrammar.fAnyType) {        // reached anyType            type = type.getBaseType();        }        return type == ancestor;    }    public boolean derivedFrom(String ancestorNS, String ancestorName, short derivationMethod) {        // ancestor is null, retur false        if (ancestorName == null)            return false;        // ancestor is anyType, return true        if (ancestorNS != null &&

⌨️ 快捷键说明

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