Niklas Therning ha scritto:
Stefano Bagnara wrote:
Niklas Therning ha scritto:
Stefano Bagnara wrote:
[...]
Here is an updated summary of what are our current proposed solutions:

A) vote down MIME4J-51 and revert the code change.
   + least surprise
   + no upgrading effort required
   * parser is in main package
   - not good package classification
   - cyclic dependencies

B) move mime4j.* to mime4j.core.* and mime4j.parser.* to mime4j.* (so to bring parser classes in the main package).
   + remove cyclic dependencies
   + better packaging
   * parser is in main package
- BodyDescriptor and MimeException are in a different package than before (upgrading issue) - MaximalBodyDescriptor is a different package than before (upgrading issue, at least for james-server)

C) leave everything as is in trunk (mime4j-51 applied!).
   + remove cyclic dependencies
   + better packaging
   + better organization to host non parsing related code, too.
   * parser is in the parser package
   - most "public" classes are moved around (upgrading issue)
   - main parser classes are in mime4j.parser instead of main.

D) move ContentHandler, AbstractContentHandler, MimeStreamParser, MimeTokenStream from parser to main:
   + better packaging
   * parser is in main package
   - cyclic dependencies: introduce 6 new package cycles:
     main => parser => descriptor => field.datetime.parser => main
     main => parser => descriptor => field.mimeversion => main
     main => parser => descriptor => field.structured => main
     main => parser => descriptor => field.language => main
     main => parser => descriptor => main
     main => parser => mime4j
   - MaximalBodyDescriptor is in a differet package (upgrading issue)
[...]
This is what I think should be used as starting point for a POLL unless we find a better agreement, so, before going to a POLL (given that Bernd say we should not use polls), can you tell if #3 would work for you by fixing the "parser centrality" issue but not fixing the "upgrading issue" ?

I'm not following you here. Do you mean "C" when you say #3?

My bad!! The mail refactoring before posting gone wrong! I need explicit type casting so refactoring can take care of updating my mail automatically :-P

#3 should have been "B"...

The "D" option (your proposal) was not on discussion previously so I can only tell what is my current understanding of what people would support. Where I don't put more names is because I don't yet know/understand their position wrt the given option. Of course this is my personal feeling and while I only do my best to understand people I may be wrong in interpreting ideas, so everyone is welcome to fix my understanding.

A. -0 bago
B. +0/+1 robert/oleg/bago/bernd.
C. +1 bago/robert -0.5 bernd/niklas
D. -0.5 bago, +1 niklas

If you like "B" I think (based on the above "table" and considerations) we could find consensus there, otherwise I would prefer to go the poll way so we test for real what people think and we don't have to go through my understanding.

I've thought about these options and I think I can actually live happily! :) with "C". I understand why you want the parser package and after giving this a bit more thought I think it would be a good way of organizing the code. We will have to add the package documentation for the main package as Bernd suggested.

I added an overview.html file. I thought this is more appropriate than a package documentation, ATM. It simply have some paragraph from our website home including a link to the parser/MimeStreamParser and the message/Message classes. I'm not so good in english and I don't have the same mime4j knowledge you may have, so please look at it and make any change you think is needed :-) (or write them here and I'll take care of the commit)

Here (if last build on hudson is working) you see how the generated javadocs looks like:
http://hudson.zones.apache.org/hudson/job/mime4j-trunk/ws/trunk/target/site/apidocs/index.html

I have two requests when it comes to "C":

* move the *Descriptor classes from the main package to the descriptor package. It doesn't make sense to have a package named descriptor and then having some classes, so closely related to what's inside this package, outside of it. AFAICS this doesn't introduce any cycles. Please verify this because my JDepend skills are terrible. :)

You mean moving "BodyDescriptor", "ContentDescriptor" and "MutableBodyDescritor" from main to descriptor, right? This sounds great, no new cycles and indeed a better "class-tree" to "package" classification!

I already committed it :-)

Here is the current package tree:
http://people.apache.org/~bago/mime4j/mime4j-51/graph-mime4j-package.gif

* Rename the stream package io. MimeTokenStream is a stream too. It's a bit confusing to me that it isn't in the stream package.

I agree.

I just committed a refactoring to make most of them extensions of FilterInputStream as they all of them take an inputstream in the constructor, so maybe streamfilters is the best one... I didn't convert EOLConvertingInputStream because it introduce one more filter in between and it's less easy to update, but it is a filter in facts.

I'm fine with "io" but maybe a better option would be "streamfilters"/"inputstreams"/"inputfilters"/"filterinputstreams"/"filteris" so to make it more descriptive. Opinions?


In the mean time I also created a message.storage package we discussed in past so to remove some more utility classes from the util package. ATM I have no solution (to the concern raised by Bernd and Robert) for the remaining utils because each of them is used by almost every other package we have:
http://people.apache.org/~bago/mime4j/mime4j-51/mime4j-utils.gif

Stefano

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

Reply via email to