On 12/12/2012 08:39 PM, Siegfried Goeschl wrote:
> Hi folks,
> 
> to avoid the full circles here
> 
> * I hopefully fixed the binary compatibility issue, wrote test and also
> tested it with my production code
> 
> * I moved the constants to EmailConstants because there are many
> constants and using an non-trivial implementation class (Email) to
> access a few constants is also questionable in my opinion
> 
> * The design of commons-email is flawed in a few ways and there is not a
> lot you can fix in a major version. So I suggest that we focus on
> delivered value instead

Hi Siegfried,

thanks for your feedback.

Taking this into account, together with the posts from sebb and Gary,
imho the best solutions is as sebb proposed:

* Change EmailConstants to a public final class
* Add back the constants to the Email class by referencing them from
  EmailConstants
* Mark the constants in Email as deprecated

btw. there are several constants that have not been in use since the 1.0
release:

    String SENDER_EMAIL = "sender.email";
    String SENDER_NAME = "sender.name";
    String RECEIVER_EMAIL = "receiver.email";
    String RECEIVER_NAME = "receiver.name";
    String EMAIL_SUBJECT = "email.subject";
    String EMAIL_BODY = "email.body";
    String CONTENT_TYPE = "content.type";
    String ATTACHMENTS = "attachments";
    String FILE_SERVER = "file.server";

Does anybody know how or if they are in use? They are now marked as
deprecated, but I am really curious about there origin.

Does everybody agree on wha?

Thomas

> 
> Cheers,
> 
> Siegfried Goeschl
> 
> 
> On 12.12.12 15:06, sebb wrote:
>> On 12 December 2012 13:17, Gary Gregory <garydgreg...@gmail.com> wrote:
>>> On Wed, Dec 12, 2012 at 3:59 AM, Thomas Neidhart
>>> <thomas.neidh...@gmail.com>wrote:
>>>
>>>> On Wed, Dec 12, 2012 at 4:58 AM, Gary Gregory <garydgreg...@gmail.com
>>>>> wrote:
>>>>
>>>>> Thank you for doing another RC.
>>>>>
>>>>> While I was digging for a justification of the Clirr errors, I
>>>>> found this
>>>>> in the release notes: "Clirr reports several errors for this
>>>>> release due
>>>> to
>>>>> moving constants from the Email class to the newly introduced
>>>>> EmailConstants interface. These changes are guaranteed to be binary
>>>>> compatible."
>>>>>
>>>>> Is it really binary compatible? What if I use reflection to access the
>>>>> constant on Email, will the reflection call be redirected to
>>>>> EmailConstants? There's unit test for ya ;)
>>>>>
>>>>> Using an interface to define constants is a no-no in my book. I've
>>>>> seen
>>>>> this discussed before in other places and for a long time, but to
>>>>> summarize, I see an interface as defining a contract for a class to
>>>>> implement. A constant does not fit.
>>>>>
>>>>> Constants in interface feels like a hack to provide the short hand
>>>>> of a
>>>>> class implementing an interface just to be able to access the
>>>>> constants
>>>>> without qualifying them with a type. Not nice design IMO and a
>>>>> dubious us
>>>>> of an interface, very Java 1.0. It seems that static imports is
>>>>> another
>>>>> attempt to solve this desire for a short hand to use constants.
>>>>>
>>>>> What to do? Move the constants back to their 1.2? What's so bad about
>>>> that?
>>>>> Hm...
>>>>>
>>>>> Make the EmailConstants a class instead of an interface? If binary
>>>>> compatible is broken, the constants have to move back, and you can
>>>>> still
>>>>> have a new EmailConstants class and deprecate the old constants to
>>>>> point
>>>> to
>>>>> the new class.
>>>>>
>>>>> Maybe I'll see this more clearly in the AM...
>>>>>
>>>>> Interested in you all's feedback.
>>>>>
>>>>
>>>> Hi Gary,
>>>>
>>>> well, I think we go in circles with this change ;-).
>>>>
>>>> I assumed that this topic is settled after reading the comment from
>>>> sebb in
>>>> the RC2 thread (see http://markmail.org/message/svrb7nf3ocz7lgmd).
>>>>
>>>> Otoh, it's the first time I see constants in an interface and would
>>>> be in
>>>> favor of reverting to the previous version (also because I do not fully
>>>> understand the rationale behind the change, some of the constants
>>>> are not
>>>> even used and thus have been deprecated).
>>>>
>>> -- 
>>>
>>>>
>>>> Maybe we should postpone this kind of refactoring to 2.0 and do it
>>>> then in
>>>> a proper way. Introducing this interface just created headaches and
>>>> I also
>>>> had to disable some checks (e.g. InterfaceIsAType in checkstyle)
>>>> because of
>>>> it.
>>>>
>>>
>>> That sounds like a good way to go to get 1.3 out the door.
>>
>> Agreed.
>>
>>> Gary
>>>
>>>
>>>>
>>>> Thomas
>>>>
>>>>
>>>>> On Tue, Dec 11, 2012 at 5:24 PM, Thomas Neidhart
>>>>> <thomas.neidh...@gmail.com>wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I would like to call a vote from commons-email-1.3 based on RC5.
>>>>>>
>>>>>> This release candidate has the following changes compared to RC4
>>>>>>
>>>>>> +) update index and building page with correct information wrt Java
>>>>>>     compatibility
>>>>>> +) update release notes with info on Java compatibility and Clirr
>>>> errors
>>>>>> +) fix svn:keywords for all source files and remove use of $Date$
>>>>>> tags
>>>>>> +) add $Id$ tags for all newly introduced source files in 1.3
>>>>>> +) update javax.mail.mail dependency to 1.4.5
>>>>>> +) fix PMD warnings and add NOPMD comment for false positives
>>>>>> +) added findbugs exclude filter for false positives
>>>>>> +) fix release date in changes.xml
>>>>>> +) correctly removed *.asc.[md5,sha1] files from Nexus staging area
>>>>>>
>>>>>> The files:
>>>>>>
>>>>>> The artifacts are deployed to Nexus:
>>>>>>
>>>> https://repository.apache.org/content/repositories/orgapachecommons-137/
>>>>
>>>>>>
>>>>>> The tag:
>>>>>>
>>>>>
>>>> https://svn.apache.org/repos/asf/commons/proper/email/tags/EMAIL_1_3_RC5/
>>>>
>>>>>>
>>>>>> The site:
>>>>>> http://people.apache.org/builds/commons/email/1.3/RC5/
>>>>>>
>>>>>> Additional Notes:
>>>>>>
>>>>>> o the download page and api links to older releases only work on
>>>>>>    the published site and will be corrected after release.
>>>>>>
>>>>>> Please take a look at the commons-email-1.3 artifacts and vote!
>>>>>>
>>>>>> ------------------------------------------------
>>>>>> [ ] +1 release it
>>>>>> [ ] +0 go ahead I don't care
>>>>>> [ ] -1 no, do not release it because
>>>>>> ------------------------------------------------
>>>>>>
>>>>>> Vote will remain open for at least 72 hours.
>>>>>>
>>>>>> Thanks in advance,
>>>>>>
>>>>>> Thomas
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>>>>>> For additional commands, e-mail: dev-h...@commons.apache.org
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> -- 
>>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
>>>>> JUnit in Action, 2nd Ed: <http://goog_1249600977>http://bit.ly/ECvg0
>>>>> Spring Batch in Action: <http://s.apache.org/HOq>http://bit.ly/bqpbCK
>>>>> Blog: http://garygregory.wordpress.com
>>>>> Home: http://garygregory.com/
>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>
>>>>
>>>
>>>
>>>
>>> -- 
>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
>>> JUnit in Action, 2nd Ed: <http://goog_1249600977>http://bit.ly/ECvg0
>>> Spring Batch in Action: <http://s.apache.org/HOq>http://bit.ly/bqpbCK
>>> Blog: http://garygregory.wordpress.com
>>> Home: http://garygregory.com/
>>> Tweet! http://twitter.com/GaryGregory
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>> For additional commands, e-mail: dev-h...@commons.apache.org
>>
>>
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to