1 /* 2 * reserved comment block 3 * DO NOT REMOVE OR ALTER! 4 */ 5 /* 6 * Copyright 2002-2004 The Apache Software Foundation. 7 * 8 * Licensed under the Apache License, Version 2.0 (the "License"); 9 * you may not use this file except in compliance with the License. 10 * You may obtain a copy of the License at 11 * 12 * http://www.apache.org/licenses/LICENSE-2.0 13 * 14 * Unless required by applicable law or agreed to in writing, software 15 * distributed under the License is distributed on an "AS IS" BASIS, 16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 * See the License for the specific language governing permissions and 18 * limitations under the License. 19 */ 20 21 package com.sun.org.apache.xerces.internal.dom; 22 23 import java.io.IOException; 24 import java.io.NotSerializableException; 25 import java.io.ObjectInputStream; 26 import java.io.ObjectOutputStream; 27 28 import com.sun.org.apache.xerces.internal.xs.AttributePSVI; 29 import com.sun.org.apache.xerces.internal.xs.*; 30 31 /** 32 * Attribute namespace implementation; stores PSVI attribute items. 33 * 34 * @xerces.internal 35 * 36 * @author Sandy Gao, IBM 37 * 38 */ 39 public class PSVIAttrNSImpl extends AttrNSImpl implements AttributePSVI { 40 41 /** Serialization version. */ 42 static final long serialVersionUID = -3241738699421018889L; 43 44 /** 45 * Construct an attribute node. 46 */ PSVIAttrNSImpl(CoreDocumentImpl ownerDocument, String namespaceURI, String qualifiedName, String localName)47 public PSVIAttrNSImpl(CoreDocumentImpl ownerDocument, String namespaceURI, 48 String qualifiedName, String localName) { 49 super(ownerDocument, namespaceURI, qualifiedName, localName); 50 } 51 52 /** 53 * Construct an attribute node. 54 */ PSVIAttrNSImpl(CoreDocumentImpl ownerDocument, String namespaceURI, String qualifiedName)55 public PSVIAttrNSImpl(CoreDocumentImpl ownerDocument, String namespaceURI, 56 String qualifiedName) { 57 super(ownerDocument, namespaceURI, qualifiedName); 58 } 59 60 /** attribute declaration */ 61 protected XSAttributeDeclaration fDeclaration = null; 62 63 /** type of attribute, simpleType */ 64 protected XSTypeDefinition fTypeDecl = null; 65 66 /** If this attribute was explicitly given a 67 * value in the original document, this is true; otherwise, it is false */ 68 protected boolean fSpecified = true; 69 70 /** schema normalized value property */ 71 protected String fNormalizedValue = null; 72 73 /** schema actual value */ 74 protected Object fActualValue = null; 75 76 /** schema actual value type */ 77 protected short fActualValueType = XSConstants.UNAVAILABLE_DT; 78 79 /** actual value types if the value is a list */ 80 protected ShortList fItemValueTypes = null; 81 82 /** member type definition against which attribute was validated */ 83 protected XSSimpleTypeDefinition fMemberType = null; 84 85 /** validation attempted: none, partial, full */ 86 protected short fValidationAttempted = AttributePSVI.VALIDATION_NONE; 87 88 /** validity: valid, invalid, unknown */ 89 protected short fValidity = AttributePSVI.VALIDITY_NOTKNOWN; 90 91 /** error codes */ 92 protected StringList fErrorCodes = null; 93 94 /** validation context: could be QName or XPath expression*/ 95 protected String fValidationContext = null; 96 97 // 98 // AttributePSVI methods 99 // 100 101 /** 102 * [schema default] 103 * 104 * @return The canonical lexical representation of the declaration's {value constraint} value. 105 * @see <a href="http://www.w3.org/TR/xmlschema-1/#e-schema_default>XML Schema Part 1: Structures [schema default]</a> 106 */ getSchemaDefault()107 public String getSchemaDefault() { 108 return fDeclaration == null ? null : fDeclaration.getConstraintValue(); 109 } 110 111 /** 112 * [schema normalized value] 113 * 114 * 115 * @see <a href="http://www.w3.org/TR/xmlschema-1/#e-schema_normalized_value>XML Schema Part 1: Structures [schema normalized value]</a> 116 * @return the normalized value of this item after validation 117 */ getSchemaNormalizedValue()118 public String getSchemaNormalizedValue() { 119 return fNormalizedValue; 120 } 121 122 /** 123 * [schema specified] 124 * @see <a href="http://www.w3.org/TR/xmlschema-1/#e-schema_specified">XML Schema Part 1: Structures [schema specified]</a> 125 * @return false value was specified in schema, true value comes from the infoset 126 */ getIsSchemaSpecified()127 public boolean getIsSchemaSpecified() { 128 return fSpecified; 129 } 130 131 132 /** 133 * Determines the extent to which the document has been validated 134 * 135 * @return return the [validation attempted] property. The possible values are 136 * NO_VALIDATION, PARTIAL_VALIDATION and FULL_VALIDATION 137 */ getValidationAttempted()138 public short getValidationAttempted() { 139 return fValidationAttempted; 140 } 141 142 /** 143 * Determine the validity of the node with respect 144 * to the validation being attempted 145 * 146 * @return return the [validity] property. Possible values are: 147 * UNKNOWN_VALIDITY, INVALID_VALIDITY, VALID_VALIDITY 148 */ getValidity()149 public short getValidity() { 150 return fValidity; 151 } 152 153 /** 154 * A list of error codes generated from validation attempts. 155 * Need to find all the possible subclause reports that need reporting 156 * 157 * @return list of error codes 158 */ getErrorCodes()159 public StringList getErrorCodes() { 160 return fErrorCodes; 161 } 162 163 // This is the only information we can provide in a pipeline. getValidationContext()164 public String getValidationContext() { 165 return fValidationContext; 166 } 167 168 /** 169 * An item isomorphic to the type definition used to validate this element. 170 * 171 * @return a type declaration 172 */ getTypeDefinition()173 public XSTypeDefinition getTypeDefinition() { 174 return fTypeDecl; 175 } 176 177 /** 178 * If and only if that type definition is a simple type definition 179 * with {variety} union, or a complex type definition whose {content type} 180 * is a simple thype definition with {variety} union, then an item isomorphic 181 * to that member of the union's {member type definitions} which actually 182 * validated the element item's normalized value. 183 * 184 * @return a simple type declaration 185 */ getMemberTypeDefinition()186 public XSSimpleTypeDefinition getMemberTypeDefinition() { 187 return fMemberType; 188 } 189 190 /** 191 * An item isomorphic to the attribute declaration used to validate 192 * this attribute. 193 * 194 * @return an attribute declaration 195 */ getAttributeDeclaration()196 public XSAttributeDeclaration getAttributeDeclaration() { 197 return fDeclaration; 198 } 199 200 /** 201 * Copy PSVI properties from another psvi item. 202 * 203 * @param attr the source of attribute PSVI items 204 */ setPSVI(AttributePSVI attr)205 public void setPSVI(AttributePSVI attr) { 206 this.fDeclaration = attr.getAttributeDeclaration(); 207 this.fValidationContext = attr.getValidationContext(); 208 this.fValidity = attr.getValidity(); 209 this.fValidationAttempted = attr.getValidationAttempted(); 210 this.fErrorCodes = attr.getErrorCodes(); 211 this.fNormalizedValue = attr.getSchemaNormalizedValue(); 212 this.fActualValue = attr.getActualNormalizedValue(); 213 this.fActualValueType = attr.getActualNormalizedValueType(); 214 this.fItemValueTypes = attr.getItemValueTypes(); 215 this.fTypeDecl = attr.getTypeDefinition(); 216 this.fMemberType = attr.getMemberTypeDefinition(); 217 this.fSpecified = attr.getIsSchemaSpecified(); 218 } 219 220 /* (non-Javadoc) 221 * @see com.sun.org.apache.xerces.internal.xs.ItemPSVI#getActualNormalizedValue() 222 */ getActualNormalizedValue()223 public Object getActualNormalizedValue() { 224 return this.fActualValue; 225 } 226 227 /* (non-Javadoc) 228 * @see com.sun.org.apache.xerces.internal.xs.ItemPSVI#getActualNormalizedValueType() 229 */ getActualNormalizedValueType()230 public short getActualNormalizedValueType() { 231 return this.fActualValueType; 232 } 233 234 /* (non-Javadoc) 235 * @see com.sun.org.apache.xerces.internal.xs.ItemPSVI#getItemValueTypes() 236 */ getItemValueTypes()237 public ShortList getItemValueTypes() { 238 return this.fItemValueTypes; 239 } 240 241 // REVISIT: Forbid serialization of PSVI DOM until 242 // we support object serialization of grammars -- mrglavas 243 writeObject(ObjectOutputStream out)244 private void writeObject(ObjectOutputStream out) 245 throws IOException { 246 throw new NotSerializableException(getClass().getName()); 247 } 248 readObject(ObjectInputStream in)249 private void readObject(ObjectInputStream in) 250 throws IOException, ClassNotFoundException { 251 throw new NotSerializableException(getClass().getName()); 252 } 253 } 254