mschachter    01/06/18 15:50:38

  Added:       resources/src/java/org/apache/commons/resources
                        AbstractResource.java Resource.java
  Log:
   - Added Resource interface and AbstractResource class
  
  Revision  Changes    Path
  1.1                  
jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/AbstractResource.java
  
  Index: AbstractResource.java
  ===================================================================
  package org.apache.commons.resources;
  
  import java.util.Locale;
  import java.util.TimeZone;
  import java.util.MissingResourceException;
  
  import java.io.Reader;
  import java.io.InputStream;
  import java.io.StringReader;
  import java.io.Serializable;
  import java.io.ByteArrayInputStream;
  
  import java.net.URL;
  
  /**
   * This class implements some of the methods of the Resource interface
   * and should be extended to shield developers from changes in the interface.
   * The only method not implemented is 
   * {@link Resource#getData(String,Locale,TimeZone) getData(String,Locale,TimeZone)}.
   * Implementators are encouraged to implement more efficient getReader() and
   * getStream() methods for large-sized content.
   */
  public abstract class AbstractResource implements Resource {
  
      /**
       * The name of this resource
       */
      protected String name = "Abstract Resource";
      
      /**
       * The configuration URL for this resource
       */
      protected URL config;
      
      /**
       * This is called on to initialize the Resource, before any of the
       * getData methods are called, and after the setConfigurationURL() method
       * is called.  The default implementation wipes the hard drive of the
       * unsuspecting developer...
       */
      public void init() {
          ;
      }
      
      /**
       * This method is called when the manager of this resource decides that
       * it's no longer needed.  The default implementation does nothing.
       */
      public void destroy() {
          ;
      }
      
      /**
       * Get the name of this resource
       * @return A logical String representation of the name of this resource
       */
      public String getName() {
          return name;
      }
      
      /**
       * Set the name of this resource
       * @param name The name of this resource
       */
      public void setName(String name) {
          this.name = name;
      }
      
      /**
       * Retrieves content based on the locale and time zone specified.  Note
       * that this method has the potential to cause memory problems for content
       * that is relatively large.  The default implementation of this returns
       * the String value of {@link #getData(String,Locale,TimeZone) getData}
       * with the arguments given in the default system encoding.
       * @param key The key for the content
       * @param locale The locale to retreive the content in, if <code>null</code>,
       *               the default locale
       * @param timeZone The time zone to retrieve the content for, if 
<code>null</code>,
       *                 the default time zone.  Resource implementations may ignore
       *                 the time zone argument.
       * @return A String representing the data specified by key.  The encoding
       *         of the String is implementation dependent.
       */
      public String getString(String key, Locale locale, TimeZone timeZone) 
          throws MissingResourceException    {
              return new String(getData(key, locale, timeZone));
      }
      
      /**
       * Retrieves an InputStream representing the content based on the key, locale,
       * and time zone specified.  The default implementation constructs a
       * ByteArrayInputStream based on the bytes retrieved from
       * {@link #getData(String,Locale,TimeZone) getData}.
       * @param key The key for the content
       * @param locale The locale to retreive the content in, if <code>null</code>,
       *               the default locale
       * @param timeZone The time zone to retrieve the content for, if 
<code>null</code>,
       *                 the default time zone.  Resource implementations may ignore
       *                 the time zone argument all together.
       */
      public InputStream getStream(String key, Locale locale, TimeZone timeZone)
          throws MissingResourceException {            
              return new ByteArrayInputStream(getData(key, locale, timeZone));
      }
      
      /**
       * Retrieves a Reader representing the content based on the key, locale,
       * and time zone specified.  The default implementation returns a StringReader
       * with the data returned from {@link #getString(String,Locale,TimeZone) 
getString}.
       * @param key The key for the content
       * @param locale The locale to retreive the content in, if <code>null</code>,
       *               the default locale
       * @param timeZone The time zone to retrieve the content for, if 
<code>null</code>,
       *                 the default time zone.  Resource implementations may ignore
       *                 the time zone argument all together.
       */
      public Reader getReader(String key, Locale locale, TimeZone timeZone) 
          throws MissingResourceException {
              return new StringReader(getString(key, locale, timeZone));
      }
  
      /**
       * This method is guaranteed to be called before the init() method for this 
       * class.
       * @param config The URL of the configuration file for this resource
       */    
      public void setConfig(URL config) {
          this.config = config;
      }
  }
  
  
  
  
  
  
  1.1                  
jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/Resource.java
  
  Index: Resource.java
  ===================================================================
  package org.apache.commons.resources;
  
  import java.util.Locale;
  import java.util.TimeZone;
  import java.util.MissingResourceException;
  
  import java.io.Reader;
  import java.io.InputStream;
  import java.io.Serializable;
  
  import java.net.URL;
  
  /**
   * This class represents an internationalized resource, that is, anything
   * that can pull specific content out in the context of a certain locale and
   * optionally time zone.  The basic idea is that each peice of content is
   * associated with a String key, and that key is used to retrieve the content.
   * Developers using implementations of this class should keep in mind that
   * they should use the getStream method that returns an InputStream and write
   * directly to the Stream they're using for resources that contain large size
   * content.<br />
   * Developers implementing resources should extend the 
   * {@link org.apache.commons.resources.AbstractResource AbstractResource}
   * class and override the necessary methods to shield themselves from any
   * changes that may occur in this interface.
   */
  public interface Resource extends Serializable {
  
      
      /**
       * This is called on to initialize the Resource, before any of the
       * getData* methods are called, and after the setConfigurationURL() method
       * is called.
       */
      public void init();
      
      /**
       * This method is called when the manager of this resource decides that
       * it's no longer needed.
       */
      public void destroy();
      
      /**
       * Get the name of this resource
       * @return A logical String representation of the name of this resource
       */
      public String getName();
      
      /**
       * Retrieves content based on the locale and time zone specified.  Note
       * that this method has the potential to cause memory problems for content
       * that is relatively large.
       * @param key The key for the content
       * @param locale The locale to retreive the content in, if <code>null</code>,
       *               the default locale
       * @param timeZone The time zone to retrieve the content for, if 
<code>null</code>,
       *                 the default time zone.  Resource implementations may ignore
       *                 the time zone argument all together.
       */
      public byte[] getData(String key, Locale locale, TimeZone timeZone)
          throws MissingResourceException;
      
      /**
       * Retrieves content based on the locale and time zone specified.  Note
       * that this method has the potential to cause memory problems for content
       * that is relatively large.
       * @param key The key for the content
       * @param locale The locale to retreive the content in, if <code>null</code>,
       *               the default locale
       * @param timeZone The time zone to retrieve the content for, if 
<code>null</code>,
       *                 the default time zone.  Resource implementations may ignore
       *                 the time zone argument.
       * @return A String representing the data specified by key.  The encoding
       *         of the String is implementation dependent.
       */
      public String getString(String key, Locale locale, TimeZone timeZone)
          throws MissingResourceException;    
      
      /**
       * Retrieves an InputStream representing the content based on the key, locale,
       * and time zone specified
       * @param key The key for the content
       * @param locale The locale to retreive the content in, if <code>null</code>,
       *               the default locale
       * @param timeZone The time zone to retrieve the content for, if 
<code>null</code>,
       *                 the default time zone.  Resource implementations may ignore
       *                 the time zone argument all together.
       */
      public InputStream getStream(String key, Locale locale, TimeZone timeZone)
          throws MissingResourceException;
      
      /**
       * Retrieves a Reader representing the content based on the key, locale,
       * and time zone specified
       * @param key The key for the content
       * @param locale The locale to retreive the content in, if <code>null</code>,
       *               the default locale
       * @param timeZone The time zone to retrieve the content for, if 
<code>null</code>,
       *                 the default time zone.  Resource implementations may ignore
       *                 the time zone argument all together.
       */
      public Reader getReader(String key, Locale locale, TimeZone timeZone)
          throws MissingResourceException;
  
      /**
       * This method is guaranteed to be called before the init() method for this 
       * class.
       * @param config The URL of the configuration file for this resource
       */    
      public void setConfig(URL config);
  }
  
  
  
  
  

Reply via email to