I forgot about the refactoring of the clustering API, which is in
trunk but didn't go into 1.5. That indeed means that that we can't do
a 1.5.1 release from trunk.

To summarize, the roadmap for the months after the 1.5 release (when
is this actually going to happen?) would look like this:

Release 1.5.1 (from 1.5 branch):
- Critical bug fixes (if required)
- Changes that didn't make it into 1.5 (e.g. the changes in
axis2-saaj) and that can easily be merged from the trunk (if there is
a user demand for this)

Release 1.6 (current trunk):
- API cleanup (concrete classes -> interfaces)
- Refactoring of the clustering API (already in trunk)
- Improvements to message builder/formatter API and implementations,
as discussed in December
- Clarifications and improvements in the transport API (if I'm not
mistaken, there was a discussion around this some time ago)
- ...

If everybody is fine with this, then we should go ahead.

Andreas

On Mon, May 11, 2009 at 11:51, keith chapman <keithgchap...@gmail.com> wrote:
> AFAIK there have been quite a bit of development on the trunk since the
> Axis2 1.5 branch was cut hence if we are to do a 1.5.1 release it will have
> to be done off the 1.5 branch and not the trunk. Hence I don't see an issue
> with doing this change on the trunk.
>
> Thanks,
> Keith.
>
> On Mon, May 11, 2009 at 3:09 PM, Andreas Veithen <andreas.veit...@gmail.com>
> wrote:
>>
>> Please note that changing the return types from concrete
>> implementations to interfaces will break binary compatibility. This
>> means that if we do the change on trunk now, the next release from
>> trunk should be a major release, i.e. 1.6. How are we going to handle
>> the case where we need to produce a new release quickly after 1.5 to
>> fix serious issues (don't forget that 1.4.1 was produces by merging
>> only selected changes from trunk to 1.4 and that therefore 1.5
>> contains probably lots of changes)? If we don't do the API changes
>> immediately, then we keep the option of doing a 1.5.1 maintenance
>> release from the trunk.
>>
>> Andreas
>>
>> On Mon, May 11, 2009 at 10:27, keith chapman <keithgchap...@gmail.com>
>> wrote:
>> > I don't think we can put it into 1.5. Lets make the change in the trunk
>> > so
>> > that it will be available in the next release.
>> >
>> > Thanks,
>> > Keith.
>> >
>> > On Mon, May 11, 2009 at 1:45 PM, Andreas Veithen
>> > <andreas.veit...@gmail.com>
>> > wrote:
>> >>
>> >> +1, but we need to agree on the target release for this change.
>> >>
>> >> Andreas
>> >>
>> >> On Mon, May 11, 2009 at 09:57, keith chapman <keithgchap...@gmail.com>
>> >> wrote:
>> >> > Shall we go ahead with this change then?
>> >> >
>> >> > Thanks,
>> >> > Keith.
>> >> >
>> >> > On Wed, May 6, 2009 at 7:11 PM, Amila Suriarachchi
>> >> > <amilasuriarach...@gmail.com> wrote:
>> >> >>
>> >> >>
>> >> >> On Wed, May 6, 2009 at 4:33 PM, Glen Daniels <g...@thoughtcraft.com>
>> >> >> wrote:
>> >> >>>
>> >> >>> Amila Suriarachchi wrote:
>> >> >>> >     Hm - it seems like you didn't actually get my point.  We
>> >> >>> > CAN'T
>> >> >>> >     return the
>> >> >>> >     actual allServices map because that would be breaking the
>> >> >>> > abstraction
>> >> >>> >     boundary provided by the class.
>> >> >>> >
>> >> >>> > As I remember this change was done to avoid concurrent
>> >> >>> > modifications
>> >> >>> > to
>> >> >>> > service map[1].
>> >> >>>
>> >> >>> Right - before this change we were doing something actively
>> >> >>> bad/wrong,
>> >> >>> i.e.
>> >> >>> returning the internal map.  After the change we were returning a
>> >> >>> cloned
>> >> >>> copy
>> >> >>> of the map (though not using clone() for some reason), which is
>> >> >>> good
>> >> >>> in
>> >> >>> that
>> >> >>> it prevented people from misusing it.
>> >> >>>
>> >> >>> > At that time services map was a HashMap and could not fix the
>> >> >>> > issue
>> >> >>> > by
>> >> >>> > changing it to a ConcurrentHashMap since API method returns a
>> >> >>> > HashMap.
>> >> >>> >
>> >> >>> > Currently anyone can get a copy of internal map (I think we can
>> >> >>> > not
>> >> >>> > use
>> >> >>> > clone() method since internal implementation is ConcurrentHashMap
>> >> >>> > and
>> >> >>> > we
>> >> >>> > need to return a HashMap). And if they want to add or remove
>> >> >>> > service
>> >> >>> > they have to use addService and removeService respectively.
>> >> >>> >
>> >> >>> > Keith, if you really need the internal map IMHO best way is to
>> >> >>> > add a
>> >> >>> > new
>> >> >>> > API method.
>> >> >>>
>> >> >>> Ah, no.  The "best way" is NOT TO OFFER ACCESS TO THE INTERNAL MAP.
>> >> >>>
>> >> >>> Keith's suggestion is to change the API so that it returns a Map -
>> >> >>> this
>> >> >>> would
>> >> >>> be much more correct since it increases the level of abstraction
>> >> >>> for
>> >> >>> the
>> >> >>> method, and would therefore let us, the implementors, freely decide
>> >> >>> how
>> >> >>> this
>> >> >>> should work internally.  Right now we have problems because someone
>> >> >>> made
>> >> >>> this
>> >> >>> method overly specific, and this is what we should fix.  (I was
>> >> >>> incorrect
>> >> >>> earlier when I said this wouldn't break people, btw - I was
>> >> >>> thinking
>> >> >>> about
>> >> >>> stuff like getServices().get("MyService"), but of course "HashMap
>> >> >>> foo
>> >> >>> =
>> >> >>> getServices()" would fail.  I still think we should fix it.)
>> >> >>>
>> >> >>> My comment is that we should not only return a Map, we should
>> >> >>> change
>> >> >>> the
>> >> >>> implementation to make sure the Map is immutable, and make sure the
>> >> >>> JavaDoc
>> >> >>> explains what is going on.
>> >> >>
>> >> >> +1. Here the real problem is this API contains a hashMap instead of
>> >> >> Map.
>> >> >>
>> >> >> What I got from the Keiths' first mail is that he need the API
>> >> >> change
>> >> >> to
>> >> >> return the internal map without copying. I suggested to add a new
>> >> >> method if
>> >> >> he really need it so that only he use that method. I agree with you
>> >> >> that
>> >> >> this is not a good change.
>> >> >>
>> >> >> thanks,
>> >> >> Amila.
>> >> >>>
>> >> >>>
>> >> >>> Make sense?
>> >> >>>
>> >> >>> --Glen
>> >> >>
>> >> >>
>> >> >>
>> >> >> --
>> >> >> Amila Suriarachchi
>> >> >> WSO2 Inc.
>> >> >> blog: http://amilachinthaka.blogspot.com/
>> >> >
>> >> >
>> >> >
>> >> > --
>> >> > Keith Chapman
>> >> > Senior Software Engineer
>> >> > WSO2 Inc.
>> >> > Oxygenating the Web Service Platform.
>> >> > http://wso2.org/
>> >> >
>> >> > blog: http://www.keith-chapman.org
>> >> >
>> >
>> >
>> >
>> > --
>> > Keith Chapman
>> > Senior Software Engineer
>> > WSO2 Inc.
>> > Oxygenating the Web Service Platform.
>> > http://wso2.org/
>> >
>> > blog: http://www.keith-chapman.org
>> >
>
>
>
> --
> Keith Chapman
> Senior Software Engineer
> WSO2 Inc.
> Oxygenating the Web Service Platform.
> http://wso2.org/
>
> blog: http://www.keith-chapman.org
>

Reply via email to