1 /* 2 * reserved comment block 3 * DO NOT REMOVE OR ALTER! 4 */ 5 /* 6 * Copyright 2001-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.impl.xs.models; 22 23 import com.sun.org.apache.xerces.internal.xni.QName; 24 import com.sun.org.apache.xerces.internal.impl.xs.SubstitutionGroupHandler; 25 import com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaException; 26 27 import java.util.Vector; 28 import java.util.ArrayList; 29 30 /** 31 * Note: State of the content model is stored in the validator 32 * 33 * @xerces.internal 34 * 35 * @author Sandy Gao, IBM 36 * @author Elena Litani, IBM 37 * @version $Id: XSCMValidator.java,v 1.6 2009/07/28 15:18:12 spericas Exp $ 38 */ 39 public interface XSCMValidator { 40 41 42 public static final short FIRST_ERROR = -1; 43 44 // on subsequent errors the validator should not report 45 // an error 46 // 47 public static final short SUBSEQUENT_ERROR = -2; 48 49 /** 50 * This methods to be called on entering a first element whose type 51 * has this content model. It will return the initial state of the content model 52 * 53 * @return Start state of the content model 54 */ startContentModel()55 public int[] startContentModel(); 56 57 58 /** 59 * The method corresponds to one transaction in the content model. 60 * 61 * @param elementName 62 * @param state Current state 63 * @return element decl or wildcard decl that 64 * corresponds to the element from the Schema grammar 65 */ oneTransition(QName elementName, int[] state, SubstitutionGroupHandler subGroupHandler)66 public Object oneTransition (QName elementName, int[] state, SubstitutionGroupHandler subGroupHandler); 67 68 69 /** 70 * The method indicates the end of list of children 71 * 72 * @param state Current state of the content model 73 * @return true if the last state was a valid final state 74 */ endContentModel(int[] state)75 public boolean endContentModel (int[] state); 76 77 /** 78 * check whether this content violates UPA constraint. 79 * 80 * @param subGroupHandler the substitution group handler 81 * @return true if this content model contains other or list wildcard 82 */ checkUniqueParticleAttribution(SubstitutionGroupHandler subGroupHandler)83 public boolean checkUniqueParticleAttribution(SubstitutionGroupHandler subGroupHandler) throws XMLSchemaException; 84 85 /** 86 * Check which elements are valid to appear at this point. This method also 87 * works if the state is in error, in which case it returns what should 88 * have been seen. 89 * 90 * @param state the current state 91 * @return a Vector whose entries are instances of 92 * either XSWildcardDecl or XSElementDecl. 93 */ whatCanGoHere(int[] state)94 public Vector whatCanGoHere(int[] state); 95 96 /** 97 * Used by constant space algorithm for a{n,m} for n > 1 and 98 * m <= unbounded. Called by a validator if validation of 99 * countent model succeeds after subsuming a{n,m} to a* 100 * (or a+) to check the n and m bounds. 101 * Returns <code>null</code> if validation of bounds is 102 * successful. Returns a list of strings with error info 103 * if not. Even entries in list returned are error codes 104 * (used to look up properties) and odd entries are parameters 105 * to be passed when formatting error message. Each parameter 106 * is associated with the error code that preceeds it in 107 * the list. 108 */ checkMinMaxBounds()109 public ArrayList checkMinMaxBounds(); 110 111 } // XSCMValidator 112