org.orcid.persistence.dao.EmbeddedSolrFactory.java Source code

Java tutorial

Introduction

Here is the source code for org.orcid.persistence.dao.EmbeddedSolrFactory.java

Source

/**
 * =============================================================================
 *
 * 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;
    }
}