package gw.solr.schema uses gw.xsd.config.solr_search_config.Indexer uses gw.xsd.config.solr_search_config.Query uses gw.xsd.config.solr_search_config.QueryResult uses gw.xsd.config.solr_search_config.SolrSchemaMapping uses java.io.File uses java.io.Reader uses java.lang.Exception /** * Represents a Solr document configuration file that's been read and parsed * and is available for use. */ @ReadOnly class SolrSchemaConfigReader { var _schemaFile : File var _schema : SolrSchemaMapping construct(theFile : File) { _schemaFile = theFile _schema = SolrSchemaMapping.parse(_schemaFile) } construct(theStream : Reader) { _schema = SolrSchemaMapping.parse(theStream) } property get Indexer() : Indexer { return _schema.Indexer } property get Query() : Query { return _schema.Query } property get QueryResult() : QueryResult { return _schema.QueryResult } /** * Perform some rudimentary validation of this Solr document configuration. */ function validate() { var keyFound = false for (var entry in _schema.Indexer.IndexField) { if(entry.Key) { if (keyFound) { throw new Exception("Cannot have more than one key field in Solr/Lucene index" + _schemaFile != null ? " in file ${_schemaFile.Name}" : "") } keyFound = true } } } }