/* * Copyright 2013 Guidewire Software, Inc. */ package gw.internal.xml.xsd.typeprovider.validator; import gw.internal.xml.XmlSimpleValueValidationContext; import gw.internal.xml.xsd.typeprovider.XmlWhitespaceHandling; import gw.internal.xml.xsd.typeprovider.primitive.XmlSchemaPrimitiveType; import gw.xml.XmlSimpleValueException; public abstract class XmlSimpleValueValidator { public abstract void validate( String value, XmlSimpleValueValidationContext validationContext ) throws XmlSimpleValueException; public abstract XmlSchemaPrimitiveType getPrimitiveType(); protected abstract XmlWhitespaceHandling getWhitespaceHandling( String value ); public final String collapseWhitespace( String value, XmlSimpleValueValidationContext validationContext ) { XmlWhitespaceHandling whitespaceHandling; switch ( getPrimitiveType() ) { case STRING: case UNION: { whitespaceHandling = getWhitespaceHandling( value ); break; } default: { whitespaceHandling = XmlWhitespaceHandling.collapse; } } switch ( whitespaceHandling ) { case collapse: value = validationContext.doCollapse( value ); break; case replace: value = validationContext.doReplace( value ); break; } return value; } }