Class SolrResourceLoader

    • Constructor Detail

      • SolrResourceLoader

        public SolrResourceLoader()
      • SolrResourceLoader

        public SolrResourceLoader​(Path instanceDir)
      • SolrResourceLoader

        public SolrResourceLoader​(Path instanceDir,
                                  ClassLoader parent)
    • Method Detail

      • 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 directory
        filter - 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 directory
        regex - 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 '/'.
      • getConfigDir

        public String getConfigDir()
      • getClassLoader

        public ClassLoader getClassLoader()
        EXPERT

        The 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 interface org.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.
      • findClass

        public <T> Class<? extends T> findClass​(String cname,
                                                Class<T> expectedType)
        Specified by:
        findClass in interface org.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 interface org.apache.lucene.analysis.util.ResourceLoader
      • newInstance

        public <T> T newInstance​(String cname,
                                 Class<T> expectedType,
                                 String... subpackages)
      • 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​(org.apache.lucene.analysis.util.ResourceLoader loader)
                    throws IOException
        Tell all ResourceLoaderAware instances about the loader
        Throws:
        IOException
      • 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
      • persistConfLocally

        public static void persistConfLocally​(SolrResourceLoader loader,
                                              String resourceName,
                                              byte[] content)