org.apache.solr.core
Class SolrResourceLoader

java.lang.Object
  extended by org.apache.solr.core.SolrResourceLoader
All Implemented Interfaces:
Closeable, ResourceLoader
Direct Known Subclasses:
ZkSolrResourceLoader

public class SolrResourceLoader
extends Object
implements ResourceLoader, Closeable

Since:
solr 1.3

Field Summary
protected  URLClassLoader classLoader
           
static org.slf4j.Logger log
           
 
Constructor Summary
SolrResourceLoader(String instanceDir)
           
SolrResourceLoader(String instanceDir, ClassLoader parent)
           This loader will delegate to the context classloader when possible, otherwise it will attempt to resolve resources using any jar files found in the "lib/" directory in the specified instance directory.
SolrResourceLoader(String instanceDir, ClassLoader parent, Properties coreProperties)
           This loader will delegate to the context classloader when possible, otherwise it will attempt to resolve resources using any jar files found in the "lib/" directory in the specified instance directory.
 
Method Summary
 void 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 it's FQN or a short-name (solr.class-simplename or class-simplename).
 ClassLoader getClassLoader()
          EXPERT

The underlying class loader.

 String getConfigDir()
           
 Properties getCoreProperties()
           
 String getDataDir()
           
 String getInstanceDir()
           
 List<String> getLines(String resource)
          Accesses a resource by name and returns the (non comment) lines containing data.
 List<String> getLines(String resource, Charset charset)
           
 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.
 void inform(Map<String,SolrInfoMBean> infoRegistry)
          Register any SolrInfoMBeans
 void inform(ResourceLoader loader)
          Tell all ResourceLoaderAware instances about the loader
 void inform(SolrCore core)
          Tell all SolrCoreAware instances about the SolrCore
 String[] listConfigDir()
           
static String locateSolrHome()
          Finds the solrhome based on looking up the value in one of three places: JNDI: via java:comp/env/solr/home The system property solr.solr.home Look in the current working directory for a solr/ directory The return value is normalized.
 CoreAdminHandler newAdminHandlerInstance(CoreContainer coreContainer, String cname, String... subpackages)
           
<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)
          Ensures a directory name always ends with a '/'.
 InputStream openConfig(String name)
          Opens a config resource by its name.
 InputStream openResource(String resource)
          Opens any resource by its name.
 InputStream openSchema(String name)
          Opens a schema resource by its name.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

log

public static final org.slf4j.Logger log

classLoader

protected URLClassLoader classLoader
Constructor Detail

SolrResourceLoader

public SolrResourceLoader(String instanceDir,
                          ClassLoader parent,
                          Properties coreProperties)

This loader will delegate to the context classloader when possible, otherwise it will attempt to resolve resources using any jar files found in the "lib/" directory in the specified instance directory.

Parameters:
instanceDir - - base directory for this resource loader, if null locateSolrHome() will be used.
See Also:
locateSolrHome()

SolrResourceLoader

public SolrResourceLoader(String instanceDir,
                          ClassLoader parent)

This loader will delegate to the context classloader when possible, otherwise it will attempt to resolve resources using any jar files found in the "lib/" directory in the specified instance directory. If the instance directory is not specified (=null), SolrResourceLoader#locateInstanceDir will provide one.


SolrResourceLoader

public SolrResourceLoader(String instanceDir)
Method Detail

normalizeDir

public static String normalizeDir(String path)
Ensures a directory name always ends with a '/'.


listConfigDir

public String[] listConfigDir()

getConfigDir

public String getConfigDir()

getDataDir

public String getDataDir()

getCoreProperties

public Properties getCoreProperties()

getClassLoader

public ClassLoader getClassLoader()
EXPERT

The underlying class loader. Most applications will not need to use this.

Returns:
The ClassLoader

openSchema

public InputStream openSchema(String name)
                       throws IOException
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

public InputStream openConfig(String name)
                       throws IOException
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 interface ResourceLoader
Returns:
the stream for the named resource
Throws:
IOException

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 interface ResourceLoader

findClass

public <T> Class<? extends T> findClass(String cname,
                                        Class<T> expectedType,
                                        String... subpackages)
This method loads a class either with it's 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 interface ResourceLoader

newInstance

public <T> T newInstance(String cname,
                         Class<T> expectedType,
                         String... subpackages)

newAdminHandlerInstance

public CoreAdminHandler newAdminHandlerInstance(CoreContainer coreContainer,
                                                String cname,
                                                String... subpackages)

newInstance

public <T> T newInstance(String cName,
                         Class<T> expectedType,
                         String[] subPackages,
                         Class[] params,
                         Object[] args)

inform

public void inform(SolrCore core)
Tell all SolrCoreAware instances about the SolrCore


inform

public void inform(ResourceLoader loader)
            throws IOException
Tell all ResourceLoaderAware instances about the loader

Throws:
IOException

inform

public void inform(Map<String,SolrInfoMBean> infoRegistry)
Register any SolrInfoMBeans

Parameters:
infoRegistry - The Info Registry

locateSolrHome

public static String locateSolrHome()
Finds the solrhome based on looking up the value in one of three places:
  1. JNDI: via java:comp/env/solr/home
  2. The system property solr.solr.home
  3. Look in the current working directory for a solr/ directory
The return value is normalized. Normalization essentially means it ends in a trailing slash.

Returns:
A normalized solrhome
See Also:
normalizeDir(String)

getInstanceDir

public String getInstanceDir()

close

public void close()
           throws IOException
Specified by:
close in interface Closeable
Throws:
IOException


Copyright © 2000-2014 Apache Software Foundation. All Rights Reserved.