Package org.apache.solr.core
Class SolrResourceLoader
- java.lang.Object
-
- org.apache.solr.core.SolrResourceLoader
-
- All Implemented Interfaces:
Closeable,AutoCloseable,org.apache.lucene.analysis.util.ResourceLoader
- Direct Known Subclasses:
ZkSolrResourceLoader
public class SolrResourceLoader extends Object implements org.apache.lucene.analysis.util.ResourceLoader, Closeable
- Since:
- solr 1.3
-
-
Field Summary
Fields Modifier and Type Field Description protected URLClassLoaderclassLoaderstatic StringUSER_FILES_DIRECTORYDeprecated.
-
Constructor Summary
Constructors Constructor Description SolrResourceLoader()SolrResourceLoader(String name, List<Path> classpath, Path instanceDir, ClassLoader parent)Creates a loader.SolrResourceLoader(Path instanceDir)SolrResourceLoader(Path instanceDir, ClassLoader parent)SolrResourceLoader(Path instanceDir, ClassLoader parent, Properties properties)Deprecated.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description <T> booleanaddToCoreAware(T obj)the inform() callback should be invoked on the listener.<T> voidaddToInfoBeans(T obj)<T> booleanaddToResourceLoaderAware(T obj)static voidassertAwareCompatibility(Class aware, Object obj)Utility function to throw an exception if the class is invalidvoidclose()<T> Class<? extends T>findClass(String cname, Class<T> expectedType)<T> Class<? extends T>findClass(String cname, Class<T> expectedType, String... subpackages)This method loads a class either with its FQN or a short-name (solr.class-simplename or class-simplename).ClassLoadergetClassLoader()EXPERTStringgetConfigDir()PropertiesgetCoreProperties()Deprecated.StringgetDataDir()Deprecated.static List<URL>getFilteredURLs(Path libDir, String regex)Utility method to get the URLs of all paths under a given directory that match a regexList<SolrInfoBean>getInfoMBeans()PathgetInstancePath()List<String>getLines(String resource)Accesses a resource by name and returns the (non comment) lines containing data.List<String>getLines(String resource, String encoding)Accesses a resource by name and returns the (non comment) lines containing data using the given character encoding.List<String>getLines(String resource, Charset charset)RestManager.RegistrygetManagedResourceRegistry()static List<URL>getURLs(Path libDir)Utility method to get the URLs of all paths under a given directorystatic List<URL>getURLs(Path libDir, DirectoryStream.Filter<Path> filter)Utility method to get the URLs of all paths under a given directory that match a filtervoidinform(Map<String,SolrInfoBean> infoRegistry)Register anySolrInfoBeansvoidinform(org.apache.lucene.analysis.util.ResourceLoader loader)Tell allResourceLoaderAwareinstances about the loadervoidinform(SolrCore core)Tell allSolrCoreAwareinstances about the SolrCoreString[]listConfigDir()Deprecated.static PathlocateSolrHome()Deprecated.<T> TnewInstance(String name, Class<T> expectedType)<T> TnewInstance(String cname, Class<T> expectedType, String... subpackages)<T> TnewInstance(String cName, Class<T> expectedType, String[] subPackages, Class[] params, Object[] args)static StringnormalizeDir(String path)Deprecated.InputStreamopenConfig(String name)Deprecated.InputStreamopenResource(String resource)Opens any resource by its name.InputStreamopenSchema(String name)Deprecated.static voidpersistConfLocally(SolrResourceLoader loader, String resourceName, byte[] content)StringresourceLocation(String resource)Report the location of a resource found by the resource loader
-
-
-
Field Detail
-
classLoader
protected URLClassLoader classLoader
-
USER_FILES_DIRECTORY
@Deprecated public static final String USER_FILES_DIRECTORY
Deprecated.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
SolrResourceLoader
public SolrResourceLoader()
-
SolrResourceLoader
public SolrResourceLoader(String name, List<Path> classpath, Path instanceDir, ClassLoader parent)
Creates a loader. Note: we do NOT callreloadLuceneSPI().
-
SolrResourceLoader
public SolrResourceLoader(Path instanceDir)
-
SolrResourceLoader
public SolrResourceLoader(Path instanceDir, ClassLoader parent)
-
SolrResourceLoader
@Deprecated public SolrResourceLoader(Path instanceDir, ClassLoader parent, Properties properties)
Deprecated.- Parameters:
instanceDir- - base directory for this resource loader, if null locateSolrHome() will be used.- See Also:
SolrPaths.locateSolrHome()
-
-
Method Detail
-
getManagedResourceRegistry
public RestManager.Registry getManagedResourceRegistry()
-
getURLs
public static List<URL> getURLs(Path libDir, DirectoryStream.Filter<Path> filter) throws IOException
Utility method to get the URLs of all paths under a given directory that match a filter- Parameters:
libDir- the root directoryfilter- the filter- Returns:
- all matching URLs
- Throws:
IOException- on error
-
getURLs
public static List<URL> getURLs(Path libDir) throws IOException
Utility method to get the URLs of all paths under a given directory- Parameters:
libDir- the root directory- Returns:
- all subdirectories as URLs
- Throws:
IOException- on error
-
getFilteredURLs
public static List<URL> getFilteredURLs(Path libDir, String regex) throws IOException
Utility method to get the URLs of all paths under a given directory that match a regex- Parameters:
libDir- the root directoryregex- the regex as a String- Returns:
- all matching URLs
- Throws:
IOException- on error
-
normalizeDir
@Deprecated public static String normalizeDir(String path)
Deprecated.Ensures a directory name always ends with a '/'.
-
listConfigDir
@Deprecated public String[] listConfigDir()
Deprecated.
-
getConfigDir
public String getConfigDir()
-
getDataDir
@Deprecated public String getDataDir()
Deprecated.
-
getCoreProperties
@Deprecated public Properties getCoreProperties()
Deprecated.
-
getClassLoader
public ClassLoader getClassLoader()
EXPERTThe underlying class loader. Most applications will not need to use this.
- Returns:
- The
ClassLoader
-
openSchema
@Deprecated public InputStream openSchema(String name) throws IOException
Deprecated.Opens a schema resource by its name. Override this method to customize loading schema resources.- Returns:
- the stream for the named schema
- Throws:
IOException
-
openConfig
@Deprecated public InputStream openConfig(String name) throws IOException
Deprecated.Opens a config resource by its name. Override this method to customize loading config resources.- Returns:
- the stream for the named configuration
- Throws:
IOException
-
openResource
public InputStream openResource(String resource) throws IOException
Opens any resource by its name. By default, this will look in multiple locations to load the resource: $configDir/$resource (if resource is not absolute) $CWD/$resource otherwise, it will look for it in any jar accessible through the class loader. Override this method to customize loading resources.- Specified by:
openResourcein interfaceorg.apache.lucene.analysis.util.ResourceLoader- Returns:
- the stream for the named resource
- Throws:
IOException
-
resourceLocation
public String resourceLocation(String resource)
Report the location of a resource found by the resource loader
-
getLines
public List<String> getLines(String resource) throws IOException
Accesses a resource by name and returns the (non comment) lines containing data.A comment line is any line that starts with the character "#"
- Returns:
- a list of non-blank non-comment lines with whitespace trimmed from front and back.
- Throws:
IOException- If there is a low-level I/O error.
-
getLines
public List<String> getLines(String resource, String encoding) throws IOException
Accesses a resource by name and returns the (non comment) lines containing data using the given character encoding.A comment line is any line that starts with the character "#"
- Parameters:
resource- the file to be read- Returns:
- a list of non-blank non-comment lines with whitespace trimmed
- Throws:
IOException- If there is a low-level I/O error.
-
getLines
public List<String> getLines(String resource, Charset charset) throws IOException
- Throws:
IOException
-
findClass
public <T> Class<? extends T> findClass(String cname, Class<T> expectedType)
- Specified by:
findClassin interfaceorg.apache.lucene.analysis.util.ResourceLoader
-
findClass
public <T> Class<? extends T> findClass(String cname, Class<T> expectedType, String... subpackages)
This method loads a class either with its FQN or a short-name (solr.class-simplename or class-simplename). It tries to load the class with the name that is given first and if it fails, it tries all the known solr packages. This method caches the FQN of a short-name in a static map in-order to make subsequent lookups for the same class faster. The caching is done only if the class is loaded by the webapp classloader and it is loaded using a shortname.- Parameters:
cname- The name or the short name of the class.subpackages- the packages to be tried if the cname starts with solr.- Returns:
- the loaded class. An exception is thrown if it fails
-
newInstance
public <T> T newInstance(String name, Class<T> expectedType)
- Specified by:
newInstancein interfaceorg.apache.lucene.analysis.util.ResourceLoader
-
newInstance
public <T> T newInstance(String cName, Class<T> expectedType, String[] subPackages, Class[] params, Object[] args)
-
addToInfoBeans
public <T> void addToInfoBeans(T obj)
-
addToResourceLoaderAware
public <T> boolean addToResourceLoaderAware(T obj)
-
addToCoreAware
public <T> boolean addToCoreAware(T obj)
the inform() callback should be invoked on the listener. If this is 'live', the callback is not called so currently this returns 'false'
-
inform
public void inform(SolrCore core)
Tell allSolrCoreAwareinstances about the SolrCore
-
inform
public void inform(org.apache.lucene.analysis.util.ResourceLoader loader) throws IOExceptionTell allResourceLoaderAwareinstances about the loader- Throws:
IOException
-
inform
public void inform(Map<String,SolrInfoBean> infoRegistry)
Register anySolrInfoBeans- Parameters:
infoRegistry- The Info Registry
-
locateSolrHome
@Deprecated public static Path locateSolrHome()
Deprecated.
-
getInstancePath
public Path getInstancePath()
- Returns:
- the instance path for this resource loader
-
assertAwareCompatibility
public static void assertAwareCompatibility(Class aware, Object obj)
Utility function to throw an exception if the class is invalid
-
close
public void close() throws IOException- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Throws:
IOException
-
getInfoMBeans
public List<SolrInfoBean> getInfoMBeans()
-
persistConfLocally
public static void persistConfLocally(SolrResourceLoader loader, String resourceName, byte[] content)
-
-