/** * Copyright (c) 2014 Lemur Consulting Ltd. * <p/> * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * <p/> * http://www.apache.org/licenses/LICENSE-2.0 * <p/> * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package uk.co.flax.biosolr.ontology; import io.dropwizard.Application; import io.dropwizard.assets.AssetsBundle; import io.dropwizard.setup.Bootstrap; import io.dropwizard.setup.Environment; import uk.co.flax.biosolr.ontology.health.SolrHealthCheck; import uk.co.flax.biosolr.ontology.resources.DocumentTermSearchResource; import uk.co.flax.biosolr.ontology.resources.DynamicLabelFieldLookupResource; import uk.co.flax.biosolr.ontology.resources.JenaSearchResource; import uk.co.flax.biosolr.ontology.resources.OntologySearchResource; import uk.co.flax.biosolr.ontology.resources.SearchResource; import uk.co.flax.biosolr.ontology.search.DocumentSearch; import uk.co.flax.biosolr.ontology.search.OntologySearch; import uk.co.flax.biosolr.ontology.search.jena.JenaOntologySearch; import uk.co.flax.biosolr.ontology.search.solr.SolrDocumentSearch; import uk.co.flax.biosolr.ontology.search.solr.SolrOntologySearch; /** * The main application class for the Ontology web application. * * @author Matt Pearce */ public class OntologyApplication extends Application<OntologyConfiguration> { @Override public void initialize(Bootstrap<OntologyConfiguration> bootstrap) { // Add bundle for static asset directories bootstrap.addBundle(new AssetsBundle("/static", "/", "index.html", "static")); // Add webjars AssetsBundle, to include bootstrap, etc. bootstrap.addBundle(new AssetsBundle("/META-INF/resources/webjars", "/webjars", null, "webjars")); } @Override public void run(OntologyConfiguration configuration, Environment environment) throws Exception { // Create the ontolgy search engine OntologySearch ontologySearch = new SolrOntologySearch(configuration.getSolr()); // Create the document search engine DocumentSearch documentSearch = new SolrDocumentSearch(configuration.getSolr()); // Create the Jena ontology search engine JenaOntologySearch jenaSearch = new JenaOntologySearch(configuration.getJena(), configuration.getSolr()); // If you don't set the URL pattern, the AssetsBundle defined above don't work! environment.jersey().setUrlPattern(configuration.getUrlPattern()); // Add resources environment.jersey().register(new OntologySearchResource(ontologySearch)); environment.jersey().register(new DocumentTermSearchResource(documentSearch)); environment.jersey().register(new SearchResource(documentSearch)); environment.jersey().register(new DynamicLabelFieldLookupResource(documentSearch)); environment.jersey().register(new JenaSearchResource(jenaSearch)); // Add healthchecks environment.healthChecks().register("solr-ontology", new SolrHealthCheck(ontologySearch)); environment.healthChecks().register("solr-documents", new SolrHealthCheck(documentSearch)); } public static void main(String[] args) throws Exception { new OntologyApplication().run(args); } }