commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject DO NOT REPLY [Bug 29036] - [configuration] Load file configurations from the classpath
Date Tue, 18 May 2004 08:53:48 GMT
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=29036>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=29036

[configuration] Load file configurations from the classpath





------- Additional Comments From michael@advweb.com  2004-05-18 08:53 -------
I came up with a solution for XML files but I can't get it to work for 
properties, it breaks the tests.  For XML I did this:

public class HierarchicalDOM4JConfiguration ...

   /**
    * Loads and parses an XML document. The file to be loaded must have
    * been specified before.
    * @throws Exception if an error occurs
    */
   public void load() throws ConfigurationException {

		  // first try to find file on the classpath
      URL url = getClass().getResource("/" + file);
      if (url != null) {
         File f = new File(url.getFile());
         if (f.exists()) {
            load(url);
         }
      } else {
			   // file is not on the classpath, so use the old 
method
         try {
            load(ConfigurationUtils.getURL(getBasePath(), getFileName()));
         } catch (MalformedURLException mue) {
            throw new ConfigurationException("Could not load from " + 
getBasePath() + ", " + getFileName());
         }
      }
   }

and for properties:

public class PropertiesConfiguration ...

   protected InputStream getPropertyStream(String resourceName) throws 
IOException {
      InputStream resource = null;

      resource = getClass().getResourceAsStream("/" + extractFileName
(resourceName));
      if (resource != null) {
         return resource;
      }

      URL url = null;
      try {
         url = ConfigurationUtils.getURL(getBasePath(), resourceName);
      } /* try */
      catch (MalformedURLException uex) {
         throw new IOException("Cannot obtain URL for resource " + 
resourceName);
      } /* catch */

      resource = url.openStream();

      setBasePath(url.toString());
      setIncludesAllowed(true);

      return resource;
   }


I hope that helps.  I think some serious design rethinking needs to take place 
to implement this.  I really hope this will be come a priority, I don't find it 
very useful that all the config files must be located in the same directory as 
the configuration.xml.  For now we can work around this by copying our config 
files and not embedding them in the JARs but I really don't like this approach.

Michael

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message