EOGenerator is a command-line tool for generating Java and Objective-C EO classes from EOModel file(s) using a different method than Apple's EOModeler. Two classes are generated for each EOEntity: one that is generated every time the EOEntity changes, and a subclass (the real EO class) that is only generated once. This approach allows business logic to be implemented in the subclass without fear of being overwritten later.

When using customized templates, it is possible (among other things) to generate methods to call fetch specifications, generate methods to add and remove objects from relationships with typed arguments, to have a custom superclass for all your EOs, and generate cross-framework #import statements correctly for Objective-C classes when models are in separate frameworks. Example templates are provided for Java and Objective-C that show some of these additional abilities.

EOGenerator can be compiled and used on MacOS X 10.x, MacOS X Server 1.2, WebObjects/NT, and OPENSTEP. It comes with source code. EOF or WebObjects is also required.


EOGenerator is freeware. Please see our About page for more information.


We are always interested in bug reports, suggestions, comments, or any other feedback on EOGenerator. Send feedback to here.


1.7, March 2006

  • Built as a universal binary for use on Intel Macs.
  • Fixed Apple's buggy handling of Boolean attributes (Number attributes with a valueType of "c"). These should now be generated correctly as Boolean instead of Number. Reported by Miguel Arroz.
  • Added -encoding and -templateEncoding parameters to control character encoding of generated files and templates. Suggested by Francis Labrie.
  • Added enhancements to -filenameTemplate (isSubclass/isSuperclass variables) for more flexible filename generation. Suggested by Stéphane Corthésy.
  • Added -lastLetter NSString method for use in templates. Suggested by Greg Hulands.
  • Added barebones EOF headers to allow compilation with WebObjects 5.3. Contributed by Mike Schrag.
  • Fixed a bug that skipped JavaClient class generation if the server-side class was EOGenericRecord. Reported by David Avendasora.
  • Fixed WebObjects 5.2+ JavaClient generation when using entity inheritance. Reported by David Avendasora.
  • Added a log message in verbose mode when skipping EOGenericRecord entities.
  • Avoided strange but harmless "EOControlJava RemoveMethodList..." log message which sometimes appeared.
  • Updated with new MiscMerge; adds encoding support and fixes a few bugs.

1.6, May 2005

  • Updated for WebObjects 5.2.4 on MacOS X.
  • Updated to a new MiscMerge version; new features include a debug command, and additional commands to set variables in different scopes.
  • Added method javaValueTypeClassName and javaScalarValueTypeClassName that returns the name for a class or scalar value for Number attributes. For example, you can get a Boolean or Float instead of a Number.
  • Added -define- flag to the -help list.
  • Added initialLowercaseString to return a string with the first letter lowercased.
  • Added additional template code in the standard Java template.
  • Added -filenameTemplate option for more flexible filename generation. Suggested by Jason Jobe.
  • Reset the NEXT_ROOT environment variable to blank so that it does not cause problems with EOAdapter frameworks loaded dynamically. Reported by Pierre Frisch.
  • Fixed possible exceptions with the deleteAllXXXRelationships method defined in EOGJavaSource.eotemplate. We were removing objects from an array during enumeration.

1.5, December 2002

  • On WebObjects 5.x systems, output now defaults to Java.
  • Added support for WebObjects 5.2 (slightly changed templates).
  • Added generation of methods to call named fetch specifications to the example templates.
  • Added generation of relationship methods to call addObjectToBothSidesOfRelationshipWithKey to the example templates. Suggested by Jonathan Rentzsch.
  • Added MyGenericRecord.java as an example of a custom EO superclass.
  • Fixed import statements in Java WO 5.x templates to conform to Apple's versions. Reported by Eike Dierks.
  • Updated to a new MiscMerge version; new features include break/continue and mathematical expressions.
  • The generated classes are now declared as being abstract in Java. Suggested by Joseph Leo Moreno.
  • Avoid spurious "EOSchemaSynchronization" message being printed to console.
  • Added advanced examples to the Java example templates.

1.4, August 2001

  • Log explicit error message for failed model lookups.
  • Added ability to specify the prefix used for the generated classes. Submitted by Dominik Westner.
  • Added -packagedirs option to generate classes under directories based on the Java package name. Suggested by Emily Catherine Bach.
  • Added EOGJavaSource example template.
  • Added support for WebObjects 5.0.
  • Added support for MacOS X 10.x.
  • Added Project Builder (MacOS X) integration instructions. Submitted by David Teran.

1.3, November 2000

  • Added implementations of methods used in templates that are not in the standard frameworks -- EOModeler gets them from EOJavaClientExtensions.EOMBundle. This caused accessor methods to never be defined in JavaClient generated classes. Reported by Todd Thomas.
  • Linked against EOJavaClient.framework so JavaClient generation will work with WOF 4.0.
  • When generating JavaClient classes, make sure to use the clientClassName for the file name. Reported by Todd Thomas.
  • Will not overwrite read-only files, unless -force flag is given.
  • Allow wildcards when specifying entity names. Suggested by Rajnish Dogra.

1.2, October 2000

  • Added support for generating JavaClient classes.
  • Fixed cosmetic whitespace errors in some of the Java templates.
  • Made sure to ignore EOPrototypes entities, which aren't real entities. Reported by William Swats.

1.1, July 2000

  • Added a JavaSubclassSourceEOF3.eotemplate, which is needed for Java projects using WOF 4.0.
  • Fixed a crasher when the specified templates could not be found. Reported by Richard Lewis-Shell.

1.0.1, May 2000

  • Fixed a typo in JavaSource.eotemplate, and class name errors in JavaSublassSource.eotemplate. Reported by Jim Roepcke.

1.0, May 2000

  • Initial release.