Class Locators


  • public class Locators
    extends java.lang.Object
    Utilities to load and locate resources.
    Author:
    tomyeh
    See Also:
    Locator
    • Constructor Summary

      Constructors 
      Constructor Description
      Locators()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static Locator getDefault()
      Returns the default resource locator which is an instance of ClassLocator.
      static Locators.URLLocation locate​(java.lang.String file, java.util.Locale locale, Locator locator)
      Locates the filename based on the locale.
      static Locators.StreamLocation locateAsStream​(java.lang.String file, java.util.Locale locale, Locator locator)
      Locates the input stream based on the locale, and returns the info of StreamLocation.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • Locators

        public Locators()
    • Method Detail

      • getDefault

        public static final Locator getDefault()
        Returns the default resource locator which is an instance of ClassLocator.
      • locate

        public static final Locators.URLLocation locate​(java.lang.String file,
                                                        java.util.Locale locale,
                                                        Locator locator)
        Locates the filename based on the locale.

        Example, assume file="/a/b.ext" and locale="zh_TW", then the following files are tried in sequence:
        /a/b_zh_TW.ext
        /a/b_zh.ext
        /a/b.ext

        Unlike ClassLoader.getResource, it returns the found file, not the URL. In the previous example, one of /a/b_zh_TW.ext, /a/b_zh.ext and /a/b.ext will be returned.

        To get the real URL, you still require locator.getResource:
        locator.getResource(Locators.locate(locator, "/a/b.ext", locale));

        Note: '_' is considered as a special character in the parsing, so there might be problem if a filename contains '_' used other than locale.

        Unlike Files.locate(java.lang.String), where the filename must contain '*', this method always tries to locate the file by inserting the locale before '.'. In other words, Files.locate("/a/b*.c") is similar to Locators.locate(("/a/b.c", null, a_file_locator);

        Parameters:
        locale - the locale; null means the current locale
        Returns:
        the URL containing proper locale characters; null if not found. Note: it could compare it with the file argument with ==, because this method will return the same string if it is the result.