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 URLClassLoader
classLoader
static String
USER_FILES_DIRECTORY
Deprecated.
-
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> boolean
addToCoreAware(T obj)
the inform() callback should be invoked on the listener.<T> void
addToInfoBeans(T obj)
<T> boolean
addToResourceLoaderAware(T obj)
static void
assertAwareCompatibility(Class aware, Object obj)
Utility function to throw an exception if the class is invalidvoid
close()
<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).ClassLoader
getClassLoader()
EXPERTString
getConfigDir()
Properties
getCoreProperties()
Deprecated.String
getDataDir()
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()
Path
getInstancePath()
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.Registry
getManagedResourceRegistry()
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 filtervoid
inform(Map<String,SolrInfoBean> infoRegistry)
Register anySolrInfoBean
svoid
inform(org.apache.lucene.analysis.util.ResourceLoader loader)
Tell allResourceLoaderAware
instances about the loadervoid
inform(SolrCore core)
Tell allSolrCoreAware
instances about the SolrCoreString[]
listConfigDir()
Deprecated.static Path
locateSolrHome()
Deprecated.<T> T
newInstance(String name, Class<T> expectedType)
<T> T
newInstance(String cname, Class<T> expectedType, String... subpackages)
<T> T
newInstance(String cName, Class<T> expectedType, String[] subPackages, Class[] params, Object[] args)
static String
normalizeDir(String path)
Deprecated.InputStream
openConfig(String name)
Deprecated.InputStream
openResource(String resource)
Opens any resource by its name.InputStream
openSchema(String name)
Deprecated.static void
persistConfLocally(SolrResourceLoader loader, String resourceName, byte[] content)
String
resourceLocation(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:
openResource
in 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:
findClass
in 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:
newInstance
in 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 allSolrCoreAware
instances about the SolrCore
-
inform
public void inform(org.apache.lucene.analysis.util.ResourceLoader loader) throws IOException
Tell allResourceLoaderAware
instances about the loader- Throws:
IOException
-
inform
public void inform(Map<String,SolrInfoBean> infoRegistry)
Register anySolrInfoBean
s- 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:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Throws:
IOException
-
getInfoMBeans
public List<SolrInfoBean> getInfoMBeans()
-
persistConfLocally
public static void persistConfLocally(SolrResourceLoader loader, String resourceName, byte[] content)
-
-