On 07/05/2008, at 6:29 AM, Emmanuel Venisse wrote:
Hi Brett,
Great work, I like it and I'm ok to merge it regularly to trunk.
Cool. I'll give it another day and a bit more of a spin then do that.
I don't have idea about maps of beans.
I think this branch is a good start to do more refactoring.
1- split DefaultBuildController to a controller + a builder
The builder should be in it's own module and doesn't use/know the
store, it
checkout/update the working copy and build the project
agreed - this is one of the key objectives of the structure I brought
up before.
The controller get an event from the UI, the scheduler or an other
way and
send and event to one or more builder (local or remote), JMS is
probably the
solution
yeah, I think the first stage is just to make sure the code is
separate enough that you could replace the implementation.
I think JMS might only be needed for the events - I like the idea of a
RESTful request model to the separate builder.
2- for each steps, the builder send the new project state
notification, by
JMS too and the Controller store it in memory, The project state
must be
transient instead of to store it in the db like today.
By state, do you mean "building", "checking out", "svn error" (which
are transient), or "success", "fail" (which are permanent and
historical?). I agree on the first ones - actually Marica mentioned
this in a previous mail and said she was going to start a new thread
for it :)
When the build is done, the builder send a new event with the build
result
Yep - we can probably send progress events too.
I have a point that I don't know for the moment how to resolve. How to
access to the working copy when the builder is a remote builder and
how to
do when we use more than one remote builder? But we'll can find a
solution
later.
well, I don't think the working copy belongs under the main interface
at that point - you should be able to go straight to the remote server
and access it over HTTP (we'll still need to wire in security, but
that's needed for any RESTful interface to them too). The aggregating
interface can probably link out to them or integrate the listing using
javascript or something.
Cheers,
Brett
--
Brett Porter
[EMAIL PROTECTED]
http://blogs.exist.com/bporter/