OK...here's what I've found out. (When all else fails...look at the code ;)

The loadProperties() routine in org.exolab.castor.util.Configuration.java looks in Castor's jar file first to find the properties files. It complains if it can't find one there.

Then it will look in "lib" directory below where java.home points to. It gets the java.home value via this call:
javaHome = System.getProperty("java.home");


It does not complain if it can't find it here. As far as I can tell, there is no code (in the 0.9.5 code base or the code at the Head) that looks in the users working directory.

And yes, if I stuck my properties file in java's lib directory it finds it. But this is a poor solution. I want my team to be able to regenerate these files on the fly and having to copy properties files into Java's lib directory is not an acceptable way of handling this.

If lines 885-909 in org.exolab.castor.util.Configuration.java were changed to the following, then the configuration files will get pulled from the current working directory.

       // Get overriding configuration from the current
       // working directory, ignore if not found. If
       // found merge existing properties.
       String homeDir = null;
       try {
           homeDir = System.getProperty("user.dir");
       }
       catch(Exception except) {
           // Ignore probably running in an applet
       }

if (homeDir != null) {
try { file = new File( homeDir, fileName );
if ( file.exists() ) {
properties = new Properties(properties);
properties.load( new FileInputStream( file ) );
found = true;
} }
catch ( IOException except ) {
// Do nothing
}
}


If this is the behaviour it is suppose to exhibit can someone commit this change?

Thanks,
Brent








Brent Hale wrote:


What am I doing wrong. At first I thought it must have something to do with maven. But then I created a batch file that I run to create the source files. In the same directory as the batch (which is also where I run it from) are my .properties files. But when I run it, my superclass property is still never being seen.
Here's my output from a command prompt:


C:\dev\projects\qbfccastor>java -cp ../repository/castor/jars/castor-0.9.5.jar;.
./repository/xerces/jars/xerces-J_1.4.0.jar org.exolab.castor.builder.SourceGene
rator -i src/conf/qbxmlops21.xsd -package com.evnt.qbfccastor -types j2 -dest ta
rget/castor/src


target\castor\src\com\evnt\qbfccastor\InvoiceLineAdd.java already exists. overwr
ite(y|n|a|?)a



C:\dev\projects\qbfccastor>ls castor.properties genXML.xml maven.xml~ project.xml castorbuilder.properties maven.bak project.bak project.xml~ doit.bak maven.log project.properties src doit.bat maven.xml project.properties~ target

C:\dev\projects\qbfccastor>grep superclass *.properties
File castorbuilder.properties:
org.exolab.castor.builder.superclass=com.evnt.qb.QBCastorBase


But it doesn't seem to be getting picked up. I was using the castor.properties file to set the indent property. It did seem to get picked up properly. But not the castorbuilder.properties file.


Any ideas?
Brent






Keith Visco wrote:


Hi Brent,

You can place a *copy* of the castorbuilder.properties in your working
directory (the directory in which you will be executing your compile
command) and Castor will use that copy instead of the one in the jar. So
you don't need to unpack/repack the jar file.

This is also true for the castor.properties file. Castor checks the
working directory before it checks the classpath.

--Keith


Brent Hale wrote:


Hi,

I'm new to Castor but have found that it will work nicely. Thanks,

I'm using Castor to generate my classes from with Maven (which I would
suggest to Castor since the current build - although easy - is rather
unstandard..needing to use the batch file rather than Ant directly for
instance). I need to be able to specify the superclass for my generated
file. I've done this in the castorbuilder.properties file and then
repackaged the jar. The build process packages the
castorbuilder.properties file into it which I find less than useful.
Ideally I want to download Castor standard jar file and be able to
modify behavior external to it. Since the properties file is embedded
into the standard jar file I don't know of a way to override it without
re-jarring. If there is a way please tell me.


I'm wondering if all of the options available via the
castorbuilder.properties file could easily be made available via command
line arguments. This would make it so an external process could use the
standard jar file and modify its behaviour at will without having to rejar.


Thanks

--
Brent Hale
Fishbowl Inventory
www.fishbowlinventory.com

-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev


----------------------------------------------------------- If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev




-- Brent Hale Fishbowl Inventory www.fishbowlinventory.com

----------------------------------------------------------- If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev




Reply via email to