* PBX Setup

- Create a directory "Roots" in your home directory.
  (This is only a suggestion for the location, it could be another directory)

- In PBX, go to Preferences>Building
  Check "Separate location for build products" and enter "~/Roots"
  Check "Put intermediate build files with build products"

- In *your own* applications and frameworks, select the top node of the project tree
   - Choose Project>Show Info menu
   - Check "Place build product at default location"
   - Check "Place intermediate files with build products"

- Do not change these settings! 

- For deployment, there will be a script that fixes the paths in your start script. 
  For now, you should copy the relevant directories manually and edit your startup script to reflect the location of the copied frameworks.


* Log4j initialization

To get Log4j going, you will need something akin to the following in your WebObjects.properties (in your home directory under 5.1)
//log4j appender and formatting
log4j.rootLogger=INFO, A1
log4j.loggerFactory=er.extensions.ERXLogger$Factory
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=er.extensions.ERXPatternLayout
log4j.appender.A1.layout.ConversionPattern=%-5p %d{HH:mm:ss} (%-20c:%L) %x -%m%n

//log4j logger configuration
log4j.logger.er=INFO


* ERCrypto

using ERCrypto's methods will require a little bit of setup with JDK 1.3

this class requires that you have JCE (javax.crypto and the sun provider) installed
JCE is standard in the 1.4 JDK
For 1.3 you can find it at http://java.sun.com/products/jce/index-122.html
All, you will have to put the 4 JCE jars in your extensions directory
(/Library/Java/Extensions on X) for ERExtensionsJava to build.
And edit /Library/Java/Home/lib/security/java.security, add the following line
security.provider.4=com.sun.crypto.provider.SunJCE


* Validation

The validation should make localization of model-thrown messages much easier, however there are a few prerequisites: 
- Your classes (currently) must descend from ERXGenericRecord, also your EOGenericRecord classes will be transformed to ERXGenericRecord
- If you want to use your own ClassDescription, you must subclass from ERXEntityClassDescription

- In your model, instead of 
  throw new NSValidation.ValidationException("Something went wrong!");
write
  throw new ERXValidationException(eo, key, value, "somecode");
or (more lengthy)
  throw ERXValidationFactory.defaultFactory().createException(eo, key, value, "somecode");

and in a Validations.strings add

  somecode = "Something went wrong";

Translations of the standard exception to German and Japanese are provided in ERD2W. For the moment, you should include ERD2W but we are working on removing that requirement.

* Compiler Proxy

There is a rapid-turnaround extension provided that allows you to make changes to your code of your components and then see them immediately in your browser. See Resources/CompilerProxy.html for more details.

* Localization

Localization is made as simple as possible. If you want to contribute, create a localized version of Validation.strings and Localizable.string for another language. As for localizing your own D2W apps, please see the code for ERXLocalizer at the moment.

