/*
* 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
* .
*/
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.dv.ValidatedInfo;
/**
* The XML representation for an attribute declaration
* schema component is an element information item
*
* @author Elena Litani, IBM
* @author Sandy Gao, IBM
* @version $Id: XSAttributeDecl.java,v 1.15 2003/11/12 23:17:33 sandygao Exp $
*/
public class XSAttributeDecl implements XSAttributeDeclaration {
// scopes
public final static short SCOPE_ABSENT = 0;
public final static short SCOPE_GLOBAL = 1;
public final static short SCOPE_LOCAL = 2;
// the name of the attribute
String fName = null;
// the target namespace of the attribute
String fTargetNamespace = null;
// the simple type of the attribute
XSSimpleType fType = null;
// value constraint type: default, fixed or !specified
short fConstraintType = XSConstants.VC_NONE;
// scope
short fScope = XSConstants.SCOPE_ABSENT;
// enclosing complex type, when the scope is local
XSComplexTypeDecl fEnclosingCT = null;
// optional annotation
XSAnnotationImpl fAnnotation = null;
// value constraint value
ValidatedInfo fDefault = null;
public void setValues(String name, String targetNamespace,
XSSimpleType simpleType, short constraintType, short scope,
ValidatedInfo valInfo, XSComplexTypeDecl enclosingCT,
XSAnnotationImpl annotation) {
fName = name;
fTargetNamespace = targetNamespace;
fType = simpleType;
fConstraintType = constraintType;
fScope = scope;
fDefault = valInfo;
fEnclosingCT = enclosingCT;
fAnnotation = annotation;
}
public void reset(){
fName = null;
fTargetNamespace = null;
fType = null;
fConstraintType = XSConstants.VC_NONE;
fScope = XSConstants.SCOPE_ABSENT;
fDefault = null;
fAnnotation = null;
}
/**
* Get the type of the object, i.e ELEMENT_DECLARATION.
*/
public short getType() {
return XSConstants.ATTRIBUTE_DECLARATION;
}
/**
* The name
of this XSObject
depending on the
* XSObject
type.
*/
public String getName() {
return fName;
}
/**
* The namespace URI of this node, or null
if it is
* unspecified. defines how a namespace URI is attached to schema
* components.
*/
public String getNamespace() {
return fTargetNamespace;
}
/**
* A simple type definition
*/
public XSSimpleTypeDefinition getTypeDefinition() {
return fType;
}
/**
* Optional. Either global or a complex type definition (
* ctDefinition
). This property is absent in the case of
* declarations within attribute group definitions: their scope will be
* determined when they are used in the construction of complex type
* definitions.
*/
public short getScope() {
return fScope;
}
/**
* Locally scoped declarations are available for use only within the
* complex type definition identified by the scope
* property.
*/
public XSComplexTypeDefinition getEnclosingCTDefinition() {
return fEnclosingCT;
}
/**
* Value constraint: one of default, fixed.
*/
public short getConstraintType() {
return fConstraintType;
}
/**
* Value constraint: The actual value (with respect to the {type
* definition}) Should we return Object instead of DOMString?
*/
public String getConstraintValue() {
// REVISIT: SCAPI: what's the proper representation
return getConstraintType() == XSConstants.VC_NONE ?
null :
fDefault.stringValue();
}
/**
* Optional. Annotation.
*/
public XSAnnotation getAnnotation() {
return fAnnotation;
}
public ValidatedInfo getValInfo() {
return fDefault;
}
/**
* @see com.sun.org.apache.xerces.internal.xs.XSObject#getNamespaceItem()
*/
public XSNamespaceItem getNamespaceItem() {
// REVISIT: implement
return null;
}
public Object getActualVC() {
return fDefault.actualValue;
}
public short getActualVCType() {
return fDefault.actualValueType;
}
public ShortList getItemValueTypes() {
return fDefault.itemValueTypes;
}
} // class XSAttributeDecl