Class PropertyResourceBundleControl


  • public class PropertyResourceBundleControl
    extends java.util.ResourceBundle.Control
    A ResourceBundle.Control implementation for loading property-based resource bundles with customizable character encoding.

    PropertyResourceBundleControl allows specifying the character encoding used when reading properties files, ensuring correct interpretation of non-ASCII characters. By default, it uses the platform's default encoding unless explicitly configured otherwise.

    Example Usage

     // Create a control with UTF-8 encoding
     ResourceBundle.Control utf8Control = new PropertyResourceBundleControl("UTF-8");
    
     // Load a resource bundle using the custom control
     ResourceBundle bundle = ResourceBundle.getBundle("my.resources.Messages", Locale.US, utf8Control);
     

    This class is thread-safe and can be reused across multiple calls to ResourceBundle.getBundle(String, ResourceBundle.Control).

    Since:
    1.0.0
    Author:
    Mercy
    See Also:
    PropertyResourceBundle, ResourceBundle.Control
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.String getEncoding()
      Sets the encoding of properties file.
      java.util.List<java.lang.String> getFormats​(java.lang.String baseName)
      Returns the list of supported formats for the given base name, restricted to properties files only.
      java.util.ResourceBundle newBundle​(java.lang.String baseName, java.util.Locale locale, java.lang.String format, java.lang.ClassLoader classLoader, boolean reload)
      Creates a new ResourceBundle instance for the given parameters, reading the properties file with the configured character encoding.
      static java.util.ResourceBundle.Control newControl​(java.lang.String encoding)
      Creates a new instance of PropertyResourceBundleControl if absent.
      • Methods inherited from class java.util.ResourceBundle.Control

        getCandidateLocales, getControl, getFallbackLocale, getNoFallbackControl, getTimeToLive, needsReload, toBundleName, toResourceName
      • Methods inherited from class java.lang.Object

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

      • PropertyResourceBundleControl

        protected PropertyResourceBundleControl()
                                         throws java.nio.charset.UnsupportedCharsetException
        Constructs a PropertyResourceBundleControl with the default encoding.

        Example Usage

        
           PropertyResourceBundleControl control = new PropertyResourceBundleControl();
           String encoding = control.getEncoding();
           System.out.println("Default encoding: " + encoding);
         
        Throws:
        java.nio.charset.UnsupportedCharsetException - if the default encoding is not supported
        Since:
        1.0.0
      • PropertyResourceBundleControl

        protected PropertyResourceBundleControl​(java.lang.String encoding)
                                         throws java.nio.charset.UnsupportedCharsetException
        Parameters:
        encoding - the encoding
        Throws:
        java.nio.charset.UnsupportedCharsetException - If encoding is not supported
    • Method Detail

      • getFormats

        public final java.util.List<java.lang.String> getFormats​(java.lang.String baseName)
        Returns the list of supported formats for the given base name, restricted to properties files only.

        Example Usage

        
           PropertyResourceBundleControl control = PropertyResourceBundleControl.DEFAULT_CONTROL;
           List<String> formats = control.getFormats("my.resources.Messages");
           System.out.println("Supported formats: " + formats);
         
        Overrides:
        getFormats in class java.util.ResourceBundle.Control
        Parameters:
        baseName - the base name of the resource bundle
        Returns:
        a list containing the properties format
        Throws:
        java.lang.NullPointerException - if baseName is null
        Since:
        1.0.0
      • newBundle

        public java.util.ResourceBundle newBundle​(java.lang.String baseName,
                                                  java.util.Locale locale,
                                                  java.lang.String format,
                                                  java.lang.ClassLoader classLoader,
                                                  boolean reload)
                                           throws java.io.IOException
        Creates a new ResourceBundle instance for the given parameters, reading the properties file with the configured character encoding.

        Example Usage

        
           PropertyResourceBundleControl control = PropertyResourceBundleControl.DEFAULT_CONTROL;
           ResourceBundle bundle = control.newBundle(
               "my.resources.Messages", Locale.US, "java.properties",
               Thread.currentThread().getContextClassLoader(), false
           );
           System.out.println(bundle.getString("greeting"));
         
        Overrides:
        newBundle in class java.util.ResourceBundle.Control
        Parameters:
        baseName - the base name of the resource bundle
        locale - the locale for which the resource bundle should be loaded
        format - the resource bundle format to be loaded
        classLoader - the class loader to use for loading the resource
        reload - whether to bypass the cache and reload the resource
        Returns:
        a new ResourceBundle instance, or null if the resource is not found
        Throws:
        java.io.IOException - if an I/O error occurs while reading the resource
        Since:
        1.0.0
      • getEncoding

        public java.lang.String getEncoding()
        Sets the encoding of properties file.
        Returns:
        the encoding
      • newControl

        public static java.util.ResourceBundle.Control newControl​(java.lang.String encoding)
                                                           throws java.nio.charset.UnsupportedCharsetException
        Creates a new instance of PropertyResourceBundleControl if absent.
        Parameters:
        encoding - Encoding
        Returns:
        Control
        Throws:
        java.nio.charset.UnsupportedCharsetException - If encoding is not supported