/* * Copyright 2013 Guidewire Software, Inc. */ package gw.internal.xml.xsd.typeprovider.xmlmatcher; import gw.internal.xml.xsd.typeprovider.schema.XmlSchemaCollection; import gw.internal.xml.xsd.typeprovider.schema.XmlSchemaComplexContentExtension; import gw.internal.xml.xsd.typeprovider.schema.XmlSchemaType; import javax.xml.namespace.QName; public class XmlSchemaComplexContentExtensionMatchHandler extends XmlMatchHandler { private final XmlSchemaComplexContentExtension _extension; private XmlMatchHandler _baseTypeMatchHandler; private XmlMatchHandler _particleMatchHandler; public XmlSchemaComplexContentExtensionMatchHandler( XmlSchemaComplexContentExtension extension ) { _extension = extension; } @Override public void match( QName elementName, XmlSchemaCollection collection ) { if ( _baseTypeMatchHandler == null ) { XmlSchemaType baseType = _extension.getSchemaIndex().getXmlSchemaTypeByQName( _extension.getBaseTypeName() ); _baseTypeMatchHandler = XmlMatchHandler.getMatchHandler( baseType ); } _baseTypeMatchHandler.match( elementName, collection ); if ( _extension.getParticle() != null ) { if ( _particleMatchHandler == null ) { _particleMatchHandler = XmlMatchHandler.getMatchHandler( _extension.getParticle() ); } _particleMatchHandler.match( elementName, collection ); } } }