On Wed, Aug 6, 2008 at 8:51 AM, Stefano Bagnara <[EMAIL PROTECTED]> wrote: > Robert Burrell Donkin ha scritto: >> >> On Tue, Aug 5, 2008 at 12:48 PM, Stefano Bagnara <[EMAIL PROTECTED]> wrote: >>> >>> Robert Burrell Donkin ha scritto: >>>> >>>> On Mon, Aug 4, 2008 at 12:59 AM, Stefano Bagnara <[EMAIL PROTECTED]> >>>> wrote: >> >> <snip> >> >>>>> we have these packages in user-api: >>>>> o.a.j.vut >>>>> o.a.j.api.user >>>>> o.a.j.services >>>>> >>>>> then we have these in user-library: >>>>> o.a.j.core >>>>> o.a.j.management >>>>> o.a.j.security >>>>> o.a.j.services >>>>> o.a.j.userrepository >>>>> o.a.j.util >>>>> o.a.j.vut >>>>> o.a.j (for JamesMBean) >>>> >>>> i think that this is too many >>>> >>>> i would prefer all api's to be packaged under o.a.j.api.**.* so that >>>> interfaces used internally from those intended to allow external >>>> extension and so on >>> >>> What about >>> >>> moving this in the user-api module: >>> - from user-api/o.a.j.services/Users*|James* to user-api/o.a.j.api.user >>> - from user-api/o.a.j.services/Virtual* to user-api/o.a.j.api.vut >>> - from user-api/o.a.j.vut to user-api/o.a.j.api.vut >>> >>> the vut and user packages do not need to be nested because they do not >>> have >>> dependencies (they could even be 2 separate modules, but this is a matter >>> of >>> style once the packages are correct and self contained). >> >> sounds good to me >> >>> move this classes from user-library to user-api in the >>> o.a.j.api.vut.management package: >>> o.a.j.management.VirtualUserTableManagementException >>> o.a.j.vut.InvalidMappingException >>> o.a.j.services.VirtualUserTableManagementService >>> move this classes from user-library to user-api in the >>> o.a.j.api.user.management package: >>> o.a.j.management.UserManagementException >>> o.a.j.management.UserManagementMBean >>> (they simply expose "mutable" stuff for the User / VUTs) >> >> i've been wondering about the coupling around remote manager and the >> management interfaces for a while now. in some ways, i think that >> management interfaces should be private so that implementations can >> vary but i didn't find including them in higher layer worked for me >> either. so let's try out this proposal. > > I see your point, indeed. I didn't evaluate this so good, so I'll refresh > this once/if I'll put my hands on this issue. > BTW my first goal here is to have good packages, then if put some code in > api instead of library it should be really easy to move it later again. > I don't think/plan we'll be able to get it right on the first attempt, but > we have to move some step forward.
+1 definitely: i'm positive about the repackaging but we may need some more refinements later >>> move o.a.j.services.JamesUser from library to user-api/o.a.j.api.user >>> package. >>> >>> reorganize classe in user-library according to the repackaging of the >>> api: >>> they deserve a similar tree (user | vut | vut.management | >>> user.management). >>> >>> This should make the library module much more compact in term of >>> packages. >> >> i dislike JamesUser and prefer smaller APIs but let's give this a go > > IIRC this User / JamesUser / DefaultUser / DefaultJamesUser is something I > always felt as weird. The api is User but everywhere in server code we check > instanceof JamesUser and cast to it. Maybe overengineered considering that > the api currently serve only server codebase. > > But this is a different issue, I'd like to keep repackage/remodularization > separated from other aspects, in order to keep the goal narrow. +1 - robert --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]