/*
* @(#)$Id: BinaryBaseType.java,v 1.15 2002/10/08 22:01: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 com.sun.msv.datatype.SerializationContext;
/**
* base implementation for "hexBinary" and "base64Binary" types.
*
* @author <a href="mailto:kohsuke.kawaguchi@eng.sun.com">Kohsuke KAWAGUCHI</a>
*/
abstract class BinaryBaseType extends BuiltinAtomicType implements Discrete {
BinaryBaseType( String typeName ) { super(typeName); }
final public int isFacetApplicable( String facetName ) {
if( facetName.equals( FACET_LENGTH )
|| facetName.equals( FACET_MAXLENGTH )
|| facetName.equals( FACET_MINLENGTH )
|| facetName.equals( FACET_PATTERN )
|| facetName.equals(FACET_WHITESPACE)
|| facetName.equals( FACET_ENUMERATION ) )
return APPLICABLE;
else
return NOT_ALLOWED;
}
final public XSDatatype getBaseType() {
return SimpleURType.theInstance;
}
final public int countLength( Object value ) {
// for binary types, length is the number of bytes
return ((BinaryValueType)value).rawData.length;
}
public Object _createJavaObject( String literal, ValidationContext context ) {
BinaryValueType v = (BinaryValueType)createValue(literal,context);
if(v==null) return null;
// return byte[]
else return v.rawData;
}
// since we've overrided the createJavaObject method, the serializeJavaObject method
// needs to be overrided, too.
public abstract String serializeJavaObject( Object value, SerializationContext context );
public Class getJavaObjectType() {
return byte[].class;
}
}