/* * @(#)$Id: AttributeRecoveryToken.java,v 1.8 2001/10/19 23:59:20 Bear Exp $ * * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved. * * This software is the proprietary information of Sun Microsystems, Inc. * Use is subject to license terms. * */ package com.sun.msv.verifier.regexp; import com.sun.msv.grammar.AttributeExp; import com.sun.msv.grammar.Expression; import com.sun.msv.grammar.ExpressionPool; /** * special AttributeToken that memorizes {@link AttributeExp} that fails to * validate itself. * * @author <a href="mailto:kohsuke.kawaguchi@eng.sun.com">Kohsuke KAWAGUCHI</a> */ final class AttributeRecoveryToken extends AttributeToken { AttributeRecoveryToken( REDocumentDeclaration docDecl, String namespaceURI, String localName, String qName, StringToken value ) { super( docDecl, namespaceURI, localName, qName, value ); } private Expression failedExp = Expression.nullSet; public boolean match( AttributeExp exp ) { // Attribute name must meet the constraint of NameClass if(!exp.nameClass.accepts(namespaceURI,localName)) return false; // content model of the attribute must consume the value if(!docDecl.resCalc.calcResidual(exp.exp, value).isEpsilonReducible()) failedExp = docDecl.pool.createChoice( failedExp, exp.exp ); // accept AttributeExp regardless of its content restriction return true; } Expression getFailedExp() { return failedExp; } }