/* * @(#)$Id: DataTypeWithLexicalConstraintFacet.java,v 1.14 2002/06/24 19:57:27 kk122374 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.datatype.xsd; import org.relaxng.datatype.ValidationContext; import org.relaxng.datatype.DatatypeException; /** * base class for facets which constrains lexical space of data * * @author <a href="mailto:kohsuke.kawaguchi@eng.sun.com">Kohsuke KAWAGUCHI</a> */ abstract class DataTypeWithLexicalConstraintFacet extends DataTypeWithFacet { DataTypeWithLexicalConstraintFacet( String nsUri, String typeName, XSDatatypeImpl baseType, String facetName, TypeIncubator facets ) throws DatatypeException { super( nsUri, typeName, baseType, facetName, facets ); } // this class does not perform any lexical check. protected final boolean checkFormat( String literal, ValidationContext context ) { if(!baseType.checkFormat(literal,context)) return false; return checkLexicalConstraint(literal); } public final Object _createValue( String literal, ValidationContext context ) { Object o = baseType._createValue(literal,context); if(o!=null && !checkLexicalConstraint(literal) ) return null; return o; } protected abstract boolean checkLexicalConstraint( String literal ); }