40 days passed without comments/opinions so today I found a bit of time to experiment with the modular build system and I committed it.

I extracted a mailet-api module and the mailet-library module from the phoenix-deployment and it worked fine.

Then I moved all of the source code (escluding Main.java) to the core-library module. I had to move to core-library/build.xml the Constants.java properties based source pre-processing. I also had to add hacks because this code depends on mailet-library module but being it a library itself was not possible to depends on it.

Then I extracted most of the functions modules in their own folder:
smtpserver, pop3server, fetchmail, nntpserver, remotemanager, imapserver and spoolmanager (maybe to be splitten in mailetcontainer/transport) worked out of the box.

Running ant from the root did not work because the default target is "lite" and it expects modules to be already built and only run deployments, so I switched the default target to Full.

Please review the commits and let me know if this is what you intended with your proposal.

I have a bunch of problems to proceed:

1) we can reorganize stuff but libraries will depends on other libraries: how can we manage intra-libraries dependencies? We will refactor when we have cross-dependency but we cannot avoid simple dependency. The same apply to APIs (e.g: the MailRepository apis depends on the Mailet apis). We will probably need an "util/common" library to be imported by every other library, too.

2) How should we manage javadocs creation and sdk creation in this multimodule structure? I think the "move" broke them.

Once this steps are solved the following step is to split the core-library into multiple libraries and to move around 3-4 classes belonging to function-modules packages but we need them in the libraries.

Once we are done with this we should try to isolate the use of avalon from the api/library layer and isolate it to the function modules.

The last step is to refactor the function modules to move the avalon stuff into a specific avalon-deployment module and the phoenix-deployment will depend on this module (we need intra module dependency here too).

WDYT?

robert burrell donkin ha scritto:
(moved stage two discussion into a new thread)

i've created some spaces on
http://wiki.apache.org/james/Development/Modularisation to help
develop ideas about the actual movement of code (stage two of the
proposal, stage one being preparations). please feel free to dive in
an update :-)
[...]
>> Function Modules
>> - smtpserver
>> - pop3server
>> - fetchmail
>> - remotemanager
>> - nntpserver
>> - imapserver
>> - transport (maybe to be named spoolmanager)
>> - mailetcontainer: to contain the James.java and some of the
>> transport/*loader* stuff.
>
> sounds reasonable



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to