/**
* =============================================================================
*
* ORCID (R) Open Source
* http://orcid.org
*
* Copyright (c) 2012-2014 ORCID, Inc.
* Licensed under an MIT-Style License (MIT)
* http://orcid.org/open-source-license
*
* This copyright and license information (including a link to the full license)
* shall be included in its entirety in all copies or substantial portion of
* the software.
*
* =============================================================================
*/
package org.orcid.persistence.dao;
import java.io.File;
import java.io.FileNotFoundException;
import java.net.URL;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
import org.apache.solr.core.CoreContainer;
/**
* Factory method to wire in an embedded solr server to the SolrDao for testing
*
* @author jamesb
*
*/
class EmbeddedSolrFactory {
private static CoreContainer coreContainer;
public static SolrServer createInstance() throws Exception {
return createInstance("");
}
public static SolrServer createInstance(String coreName) throws Exception {
if(coreContainer == null){
coreContainer = createCoreContainer();
}
EmbeddedSolrServer server = new EmbeddedSolrServer(coreContainer, coreName);
return server;
}
private static CoreContainer createCoreContainer() throws FileNotFoundException {
URL solrHome = EmbeddedSolrFactory.class.getResource("/solr");
URL solrXml = EmbeddedSolrFactory.class.getResource("/solr" + "/solr.xml");
File solrHomeDir = new File(solrHome.getFile());
System.setProperty("solr.solr.home", solrHomeDir.getAbsolutePath());
File solrXmlFile = new File(solrXml.getFile());;
CoreContainer coreContainer = CoreContainer.createAndLoad(solrHomeDir.getAbsolutePath(), solrXmlFile);
return coreContainer;
}
}