Greetings all...
I have a system where I have a constants class in Perl like so:
package FooConstants;
## ISA exporter and so on...
use constant TYPE_BAR => 'bar';
use constant TYPE_BAZ => 'baz';
## etc...
Which is fine... the constants are handy, self-documenting, and keep me from making typos. Problem: I have this Java interface class they have to stay in sync with, like so:
// Note-- Java code. Heresy! Heresy!
public interface FooConstants {
public static final String TYPE_BAR = "bar";
public static final String TYPE_BAZ = "baz";
//... etc...
}
I'm expecting to have to add types to these classes on a relatively frequent basis, but the two have to stay in sync or chaos will ensue. How can I keep the data for both the files in the same place, so I don't run the risk of them going out of sync? I can think of a couple of ways to do it:
- I can maintain a list of all my constants in some independent format-- XML maybe, or just a text file-- and generate both my Java class and my Perl module from a Makefile (or Ant equivalent.)
- I could keep the list in independent format as above, but have the Perl module autogenerate the constants it needs from that file directly. I'd need to reengineer the Java stuff to do the same thing, meaning replacing my constants with method calls.
- I could write a Java antfile function to generate the Perl module from the Java class.
- I could write a Perl script to generate the Java class from the Perl module.
- I could delegate the whole thing to somebody else.
What's the best way to handle this? I just know there's a trap in here someplace, and I'm doing my best to avoid it. Any advice would be greatly appreciated.
stephen