/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 * * http://www.apache.org/licenses/LICENSE-2.0 * * 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 org.apache.solr.core; import java.util.List; /** * Manage the discovery and persistence of core definitions across Solr restarts */ public interface CoresLocator { /** * Make new cores available for discovery * @param cc the CoreContainer * @param coreDescriptors CoreDescriptors to persist */ public void create(CoreContainer cc, CoreDescriptor... coreDescriptors); /** * Ensure that the core definitions from the passed in CoreDescriptors * will persist across container restarts. * @param cc the CoreContainer * @param coreDescriptors CoreDescriptors to persist */ public void persist(CoreContainer cc, CoreDescriptor... coreDescriptors); /** * Ensure that the core definitions from the passed in CoreDescriptors * are not available for discovery * @param cc the CoreContainer * @param coreDescriptors CoreDescriptors of the cores to remove */ public void delete(CoreContainer cc, CoreDescriptor... coreDescriptors); /** * Persist the new name of a renamed core * @param cc the CoreContainer * @param oldCD the CoreDescriptor of the core before renaming * @param newCD the CoreDescriptor of the core after renaming */ public void rename(CoreContainer cc, CoreDescriptor oldCD, CoreDescriptor newCD); /** * Swap two core definitions * @param cc the CoreContainer * @param cd1 the core descriptor of the first core, after swapping * @param cd2 the core descriptor of the second core, after swapping */ public void swap(CoreContainer cc, CoreDescriptor cd1, CoreDescriptor cd2); /** * Load all the CoreDescriptors from persistence store * @param cc the CoreContainer * @return a list of all CoreDescriptors found */ public List<CoreDescriptor> discover(CoreContainer cc); }