public synchronized SolrCore readSchema(String indexName) throws IOException, ParserConfigurationException,
SAXException
{
SolrCore core = cache.get(indexName);
if (core == null)
{
if (logger.isDebugEnabled())
logger.debug("loading index schema for: " + indexName);
ByteBuffer buf = readCoreResource(indexName, CassandraUtils.schemaKey);
if (buf == null)
{
throw new IOException(String.format("invalid core '%s'", indexName));
}
InputStream stream = new ByteArrayInputStream(ByteBufferUtil.getArray(buf));
SolrResourceLoader resourceLoader = new SolandraResourceLoader(indexName, null);
SolrConfig solrConfig = new SolrConfig(resourceLoader, solrConfigFile, null);
IndexSchema schema = new IndexSchema(solrConfig, indexName, new InputSource(stream));
core = new SolrCore(indexName, "/tmp", solrConfig, schema, null);
if (logger.isDebugEnabled())
logger.debug("Loaded core from cassandra: " + indexName);
cache.put(indexName, core);
}
return core;
}