IDDV.java revision 628:2bfaf29cc90b
1/*
2 * reserved comment block
3 * DO NOT REMOVE OR ALTER!
4 */
5/*
6 * Copyright 2001, 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
21package com.sun.org.apache.xerces.internal.impl.dv.xs;
22
23import com.sun.org.apache.xerces.internal.impl.dv.InvalidDatatypeValueException;
24import com.sun.org.apache.xerces.internal.util.XMLChar;
25import com.sun.org.apache.xerces.internal.impl.dv.ValidationContext;
26
27/**
28 * Represent the schema type "ID"
29 *
30 * @xerces.internal
31 *
32 * @author Neeraj Bajaj, Sun Microsystems, inc.
33 * @author Sandy Gao, IBM
34 *
35 */
36public class IDDV extends TypeValidator{
37
38    public short getAllowedFacets(){
39        return (XSSimpleTypeDecl.FACET_LENGTH | XSSimpleTypeDecl.FACET_MINLENGTH | XSSimpleTypeDecl.FACET_MAXLENGTH | XSSimpleTypeDecl.FACET_PATTERN | XSSimpleTypeDecl.FACET_ENUMERATION | XSSimpleTypeDecl.FACET_WHITESPACE );
40    }
41
42    public Object getActualValue(String content, ValidationContext context) throws InvalidDatatypeValueException {
43        if (!XMLChar.isValidNCName(content)) {
44            throw new InvalidDatatypeValueException("cvc-datatype-valid.1.2.1", new Object[]{content, "NCName"});
45        }
46        return content;
47    }
48
49    public void checkExtraRules(Object value, ValidationContext context) throws InvalidDatatypeValueException {
50        String content = (String)value;
51        if (context.isIdDeclared(content))
52            throw new InvalidDatatypeValueException("cvc-id.2", new Object[]{content});
53        context.addId(content);
54    }
55} // class IDDV
56