|
Java example source code file (XSElementDecl.java)
The XSElementDecl.java Java example source code/*
* reserved comment block
* DO NOT REMOVE OR ALTER!
*/
/*
* Copyright 2001-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.impl.dv.ValidatedInfo;
import com.sun.org.apache.xerces.internal.impl.xs.identity.IdentityConstraint;
import com.sun.org.apache.xerces.internal.impl.xs.util.XSNamedMapImpl;
import com.sun.org.apache.xerces.internal.impl.xs.util.XSObjectListImpl;
import com.sun.org.apache.xerces.internal.xni.QName;
import com.sun.org.apache.xerces.internal.xs.ShortList;
import com.sun.org.apache.xerces.internal.xs.XSAnnotation;
import com.sun.org.apache.xerces.internal.xs.XSComplexTypeDefinition;
import com.sun.org.apache.xerces.internal.xs.XSConstants;
import com.sun.org.apache.xerces.internal.xs.XSElementDeclaration;
import com.sun.org.apache.xerces.internal.xs.XSNamedMap;
import com.sun.org.apache.xerces.internal.xs.XSNamespaceItem;
import com.sun.org.apache.xerces.internal.xs.XSObjectList;
import com.sun.org.apache.xerces.internal.xs.XSTypeDefinition;
/**
* The XML representation for an element declaration
* schema component is an <element> element information item
*
* @xerces.internal
*
* @author Elena Litani, IBM
* @author Sandy Gao, IBM
* @version $Id: XSElementDecl.java,v 1.7 2010-11-01 04:39:55 joehw Exp $
*/
public class XSElementDecl implements XSElementDeclaration {
// scopes
public final static short SCOPE_ABSENT = 0;
public final static short SCOPE_GLOBAL = 1;
public final static short SCOPE_LOCAL = 2;
// name of the element
public String fName = null;
// target namespace of the element
public String fTargetNamespace = null;
// type of the element
public XSTypeDefinition fType = null;
public QName fUnresolvedTypeName = null;
// misc flag of the element: nillable/abstract/fixed
short fMiscFlags = 0;
public short fScope = XSConstants.SCOPE_ABSENT;
// enclosing complex type, when the scope is local
XSComplexTypeDecl fEnclosingCT = null;
// block set (disallowed substitutions) of the element
public short fBlock = XSConstants.DERIVATION_NONE;
// final set (substitution group exclusions) of the element
public short fFinal = XSConstants.DERIVATION_NONE;
// optional annotation
public XSObjectList fAnnotations = null;
// value constraint value
public ValidatedInfo fDefault = null;
// the substitution group affiliation of the element
public XSElementDecl fSubGroup = null;
// identity constraints
static final int INITIAL_SIZE = 2;
int fIDCPos = 0;
IdentityConstraint[] fIDConstraints = new IdentityConstraint[INITIAL_SIZE];
// The namespace schema information item corresponding to the target namespace
// of the element declaration, if it is globally declared; or null otherwise.
private XSNamespaceItem fNamespaceItem = null;
private static final short CONSTRAINT_MASK = 3;
private static final short NILLABLE = 4;
private static final short ABSTRACT = 8;
// methods to get/set misc flag
public void setConstraintType(short constraintType) {
// first clear the bits
fMiscFlags ^= (fMiscFlags & CONSTRAINT_MASK);
// then set the proper one
fMiscFlags |= (constraintType & CONSTRAINT_MASK);
}
public void setIsNillable() {
fMiscFlags |= NILLABLE;
}
public void setIsAbstract() {
fMiscFlags |= ABSTRACT;
}
public void setIsGlobal() {
fScope = SCOPE_GLOBAL;
}
public void setIsLocal(XSComplexTypeDecl enclosingCT) {
fScope = SCOPE_LOCAL;
fEnclosingCT = enclosingCT;
}
public void addIDConstraint(IdentityConstraint idc) {
if (fIDCPos == fIDConstraints.length) {
fIDConstraints = resize(fIDConstraints, fIDCPos*2);
}
fIDConstraints[fIDCPos++] = idc;
}
public IdentityConstraint[] getIDConstraints() {
if (fIDCPos == 0) {
return null;
}
if (fIDCPos < fIDConstraints.length) {
fIDConstraints = resize(fIDConstraints, fIDCPos);
}
return fIDConstraints;
}
static final IdentityConstraint[] resize(IdentityConstraint[] oldArray, int newSize) {
IdentityConstraint[] newArray = new IdentityConstraint[newSize];
System.arraycopy(oldArray, 0, newArray, 0, Math.min(oldArray.length, newSize));
return newArray;
}
/**
* get the string description of this element
*/
private String fDescription = null;
public String toString() {
if (fDescription == null) {
if (fTargetNamespace != null) {
StringBuffer buffer = new StringBuffer(
fTargetNamespace.length() +
((fName != null) ? fName.length() : 4) + 3);
buffer.append('"');
buffer.append(fTargetNamespace);
buffer.append('"');
buffer.append(':');
buffer.append(fName);
fDescription = buffer.toString();
}
else {
fDescription = fName;
}
}
return fDescription;
}
/**
* get the hash code
*/
public int hashCode() {
int code = fName.hashCode();
if (fTargetNamespace != null)
code = (code<<16)+fTargetNamespace.hashCode();
return code;
}
/**
* whether two decls are the same
*/
public boolean equals(Object o) {
return o == this;
}
/**
* Reset current element declaration
*/
public void reset(){
fScope = XSConstants.SCOPE_ABSENT;
fName = null;
fTargetNamespace = null;
fType = null;
fUnresolvedTypeName = null;
fMiscFlags = 0;
fBlock = XSConstants.DERIVATION_NONE;
fFinal = XSConstants.DERIVATION_NONE;
fDefault = null;
fAnnotations = null;
fSubGroup = null;
// reset identity constraints
for (int i=0;i<fIDCPos;i++) {
fIDConstraints[i] = null;
}
fIDCPos = 0;
}
/**
* Get the type of the object, i.e ELEMENT_DECLARATION.
*/
public short getType() {
return XSConstants.ELEMENT_DECLARATION;
}
/**
* The <code>name of this
Other Java examples (source code examples)Here is a short list of links related to this Java XSElementDecl.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.