james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Benoit Tellier <be...@minet.net>
Subject Re: james-server-util* location (was : Re: My thoughts on JMAP implementation)
Date Mon, 14 Dec 2015 10:17:31 GMT
Here we have an interesting topic ;-)

If I remember well; backend commons was introduced to share common code
across James project without introducing meaningless / cycle prone /
multiples and fast cardinality growing dependencies.

I happened to be on Cassandra between data-cassandra and mailbox/cassandra .

Now I propose you something I encountered yesterday :

 - JSIEVE body extension matches message content in a similar way
Message Search does. MessageSearcher (located in mailbox/store) is
generic as it can be used to match text either in raw streams and mime
parts. It seems logic to base JSIEVE body implementation on this tool.
Well, the question is then "Where should I locate MessageSearcher ?"

 - In JSIEVE ?
 - In server/containers/utils ?
 - In mailbox/store ?

In my opinion, it looks like the Cassandra problem...

( I did not answered this issue yet. I wanted to wait to launch this
discussion, but hey, here we are... )

Note 1 : I think such problem might arise more frequently as our
understanding of James existing code is growing, and might help to
factorize code.

Note 2 : backend-common name is not immutable...

Le 14/12/2015 08:28, Matthieu Baechler a écrit :
> 
> 
> On 13/12/2015 12:43, Tellier Benoit wrote:
> 
> [...]
> 
>>   - james-server-util is amaizing, as james-server-util-java8 . I  like
>> the idea of using these tools broadly. But maybe these projects should
>> be located in backends-common. rather than in server/container ? I find
>> it makes more sens...
> 
> backends-common was meant to contain backend related code (cassandra for
> a start, but maybe hbase or any other backend can follow).
> 
> IMO, general purpose util classes doesn't belong to backends-common.
> 
> I agree server/container is not a great choice either, but that's where
> james-server-util was located for 2+ years.
> 
> If we take a look at server/container content :
> 
>  * cassandra-guice
>  * cli
>  * core
>  * filesystem-api
>  * jetty
>  * lifecycle-api
>  * mailbox-adapter
>  * spring
>  * util
>  * util-java8
> 
> IMO, cassandra-guice and spring match 'container' but others don't.
> 
> I don't know how to sort this out, does someone have an idea about that ?
> 

Most of these projects looks better here than anywhere else (
lifecycle-api, spring, and cassandra-guice).

cli and mailbox-adapter should be kept together. It makes sens to me to
have them either in containers, bu will also make sens in app. I would
keep it like today.

Doesn't jetty better belongs to protocols ?

I think util and util-java8 better belongs in backend-commons.

filesystem-api can be moved to data, but keeping it in containers does
also makes sens.

I don't know what to say about core...

To sum up :

...
/backeds-commons/util
/backeds-commons/util-java8
...
/server/container/cassandra-guice
/server/container/cli
(/server/container/core)
/server/container/filesystem-api
/server/container/lifecycle-api
/server/container/mailbox-adapter
/server/container/spring
...
/server/protocols/jetty

What do you think about it ?



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


Mime
View raw message