Wednesday, May 21, 2008

This (now-lastPost.time) In WOLips

Thanks to the many additional contributors we've had in the past few months -- Quinton Dolan, Andrew Lindesay, Lachlan Deck, Henrique Prange, David Avendasora, as well as the usual crew (and if I missed anyone, I apologize). The changes below represent the cumulative efforts of everyone. Currently these changes are only available in the nightly build. This will probably be moving to stable prior to WOWODC.

API Editor
API editor has been visually redesigned to hopefully make it easier to use. "Required" and "Settable" actually ... work properly now. Also, required bindings appear bolded in the binding list. There is still not an editor for complex binding validations, but Entity Modeler is getting a graphical qualifier editor (visually "inspired" by Core Data Modeler) that hopefully can be used to render/edit binding validations also.


You can now open API files in the API editor that do not have a corresponding WOComponent.

Component Editor
Completion works on Direct Action class names, Direct Action names (though it's not quite smart enough to know which DA's to restrict to based on the Direct Action class name, yet, so you'll get all DA methods shown as completion proposals), page names, framework names, resources, and actions. Resource completion is sort of sketchy as well, because the code isn't passing through flattening rules. I think if you use Wonder-style projects it should work out. If you flatten, it probably won't. All of these completion types require that your API files are defined properly with the appropriate binding type.

Component Live Search should work much better on Windows now.

Lots of fixes and cleanups in the Component Creation Wizard (particularly related to character encodings).

The default application and framework templates set the encoding of Components to UTF-8 by default.

Refactor=>Renaming components properly renames all the component files (java, api, etc). Previously this worked if you renamed the Java file but not if you renamed the WO.

Lots lots lots of fixes and enhancements to formatting component HTML. It should be MUCH better now.

Your selections in the Add Key/Add Action dialogs are preserved across executions now.

"Add Key" without an accessor creates a public ivar now.

Component validation runs in a background thread. This prevents the component editor from blocking the opening of your component while it performs a relatively expensive binding validation. There are still a little wonkiness with this -- every once in a while I lose my validations on a component until I resave it, but the performance increase for opening components is pretty substantial.

Initial support for Groovy components (Q can provide more info on this).

Keypath completion works inside of OGNL bindings.

Obnoxious long-standing bug where keypath completion would not work on values of unknown attributes is finally fixed.

Entity Modeler
SQL Generation properly passes through the necessary flags for index in 5.4 (though this requires 5.4.2).

Entity Modeler can now load EOModels from inside of jar frameworks.

Entity Modeler is much slicker about how it does live rename syncing. If you use infix caps, prefix caps, underscores, all uppercase, all lowercase, and several combinations of these, synced renames understand that. For example, if your attribute is named "firstName" and your column name is "first_name" if you rename the attribute to "personFirstName" it will sync-as-you-type the column name to be "person_first_name". It will also try to guess what it should use based on other attributes and entities in your model. There are still some things it misses, but it should be a much citizen in non-infix-caps database environments.

You can now provide a "parent class override" for an entity. This class will be set as the parent of your _Entity class. For instance rather than the EOGenericRecord-variant (which allows for per-entity custom "generic record" classes). This is set in the Advanced Entity Properties dialog.

The new relationship dialog has been redesigned. There's ONE more redesign coming to clarify the order of operations if you don't want to create an inverse relationship:


Entity Modeler now provides an option for selecting the REST adaptor (for Wonder's JavaRESTAdaptor).

Attributes and relationships now expose a "common class property" flag that can be used in eogenerator to generate methods that are shared between client and server classes for Java Client.

It's not available yet, but a graphical qualifier builder that will function pretty similarly to the predicate builder in Core Data Modeler is almost ready. This will allow you to build qualifiers completely without touching the big text area.

If you use Wonder and the Migration API, you know how annoying it can be to write your "zero" migration -- you spend all this time modeling your entities, and then you have to turn around and manually build the zero migration with the API. Entity Modeler can now generate a zero migration for you. Just select the model or set of entities to generate and click the "Generate Migration" button in the toolbar or the context menu and it will spit out:



EOGenerator
Entity Modeler and Velocity EOGenerator have exposed several new features for making it easier to write eogenerated Java Client classes.

EOModelDoc
EOModelDoc shows a list of all entities that reference an entity at the top of the entity docs.

EOModelDoc shows a list of all sub-entities at the top of the entity docs.

Building
The long-standing bug with component patternsets evaluating incorrectly on Windows has finally been fixed.

Maven (bear with me here, I don't use Maven, so these are mostly transcribed)
WO Maven plugin now has "install" and "deploy" goals.

woboostrap adds WO 5.4 libraries now.

New archetype for WebObjects applications conforms to new archetype plugin

Rule Editor
There's been a D2W rule editor inside of WOLips for a long time, but it's always .... well it's just been really broken. Finally the reigns have been picked up and a still-alpha, but functional rule editor plugin has been committed. So if you're not on OS X and can't use RuleModeler, you actually have some hope of a refreshed editor showing up.

Thanks again to everyone who has been involved. It's been very nice seeing submissions from several new faces, and we have plenty of ideas left to implement and more cool things coming.