Paul Hammant wrote:
> Nicola,
>
>>> Refering to "..artificial dependencies between the Merlin Project
>>> and the Pheonix Project" and "..Phoenix legacy..":- Phoenix
>>> compatability is what we are talking about here unless I am wrong.
>>> It could be we are talking about Phoenix obsolesence (I am not).
>>
>>
>>
>> I am *definately* not either.
>
>
> Kewl, it looks we're all on the same page then.
>
>> Phoenix has his very important space, Merlin/Fortress will have his.
>> The more they can work together and in *synergy* the better.
>
>
> I agree.
>
>>> We have an agreement a way forward for on the BlockContext issue.
>>> It is simply to include the BlockContext class (via
>>> phoenix-client.jar) in second and subsequent Phoenix compatible
>>> containers. Given K/HC/CAPI conversation of the past, and the need
>>> for separation of CAPI and K, GenericBlockContext in Phoenix CVS is
>>> the wrong solution, I think we all agree that. Given also that the
>>> home for GenericBlockContext is not certain (A-F is mooted above,
>>> but Phoenix is where it was added). Given also that the content of
>>> GenericBlockContext was nothing special - nothing that could not be
>>> added to another kernel's CVS tree.
>>>
>>> My feeling is that this single issue is nothing to do with the
>>> attributes thread. That attributes need to be handled correctly
>>> designed properly and due consideration given to backards
>>> compatability is paramount. Can multiple containers handle
>>> attribute changes (well additions reeally) as they are rolled out?
>>> Yes, in my opinion. Should attribute strings be added to
>>> BlockContext, yes in my opinion.
>>>
>>> *** Vote ***
>>> As such, can we vote on the recommendation :
>>>
>>> (*) The Avalon team recommends that Phoenix compatile container
>>> include phoenix-client.jar in their distribution and make it visible
>>> to hosted components at runtime. The Avalon team recommends that
>>> Phoenix compatible containers hide their implementations of
>>> BlockContext in the kernel's classloader and further hide the impl
>>> via use of a Refelection's dynamic proxy.
>>
>>
>>
>> You are saying that a container that wants to use Phoenix-compatible
>> Components use BlockContext?
>>
>> Hmmm..., rephrasing: that a Container that uses Phoenix's blocks must
>> use other Phoenix stuff too?
>
>
> I'm uncomfortable with the word stuff Nicola. BlockContext for one,
> other classes from phoenix-client.jar too. I've suggested before that
> phoenix-client can be paired down a little further and think we should
> revisit that in a later discussion.
>
>> Now, since Cornerstone is about Phoenix blocks IIUC, does this mean
>> that the Phoenix blocks are the standard Avalon Components?
>
>
> People in this list for a while know I sway away from the use the of
> the word Avalon in anything other than a 'project' sense. Avalon is
> not a product it has not components. Avalon-Framework is a set of of
> interfaces (++) that define the way that a nomber of containers
> interoperate with lifecycle things. Some things in excalibur are
> simple A-F aware components that can be used like normal libraries
> jars by Java classes. Something are containers for special situations
> - ECM for Servlets (not exclusive). Tweety for play, Phoenix for
> enterprise. Some of these containers have different rules as the
> lacing together of components. Phoenix separates lacing-together into
> assembly.xml and configuration into config.xml. Others are less
> strict. A less strict one is EOB, which affords its components the
> runtime binding that Phoenix itself does not.
>
>> If yes, they should be in framework IMNSHO.
>
>
> I might agree that, given our time over that would be a better place.
> However that is off-topic. We are principally addressing one element
> of the recent disagreement. Namely the adding of GenericBlockContext
> to Phoenix CVS. Its author did so because he felt it was the only
> choice. Between us we have come up with an alternate solution that
> seems to be more inline with the original design of Phoenix. Nicola,
> please take a look at the contents of phoenix-client.jar - it is quite
> benign.
>
>> If no, it should be clearly stated that they are Phoenix-only
>> compatible.
>
>
>> And compatibility should not be attained by wrapping Phoenix stuff
>> artificially, but by hierarchically containing Phoenix, which is a
>> much cleaner solution.
>>
>> I don't like your proposal.
>
>
> Well that is a shame, but you are admitting that is a possible
> solution to the central issue of this thread which was the adding of
> GenericBlockContext tp Phoenix by Stephen.
>
> I do intend to adress the enhanced featuresof Merlin later. I also
> intend to be favourable to the concept of value-added. One issue at a
> time please.
>
>>>>>> Look at the Servlet/EJB/other APIs. They all follow this pattern
>>>>>> and I believe some (servlet API 2.1+) actually mandates that no
>>>>>> container specific classes can be in same classloader.
>>>>>
>>>>>
>>>>>
>>>>
>>>> Such a policy concerning Avalon containers is also appropriate. In
>>>> general we should not be exposing container specific APIs to
>>>> components. It locks the component to a particular container and
>>>> introduces the problems we are currently dealing with.
>>>
>>>
>>>
>>> For Phoenix, given its separation of interface and impl, it is only
>>> the word phoenix that is objectionable in the phoenix-client.jar and
>>> its attendant package names. If we had our time over we could have
>>> moved these classes to another tree/package. Like with othr
>>> packages in Avalon, we are keeping there where they are for
>>> compatability reasons. This line of discussion deviates from (*)
>>> above and its central discussion point alternatives for
>>> GenericBlockContext (being added to Phoenix CVS).
>>
>>
>>
>> So you are saying that the Phoenix BlockContext has to be regarded as
>> the standard Container Context?
>
>
> Yup, it seems that the multi-year-old BlockContext is part of a
> defacto API. If you look at phoenix-client.jar you'll see that it is
> quite small and given amazing accident or far-sighted design by
> Stefano/Fede and others marks a good division between interface and
> impl of Phoenix from the component writers point of view.
Strong disagreement!
This is the wrong approach. We have the framework and the framework we
have Context and Context defines a named value pair scheme.
Irrespective of what you change about BlocContext - that fact is that
it is a Context object and as such the keys that are used and the types
of objects retured are part of the contract. Resolving the question of
keys in the context of a common container-component contract is a
precusor to any convinience interface - and BlockContext is just a
convinience interface.
>
>
> Yes, it has the word phoenix in it, but as I have pointed out before
> does not mean that all of Phoenix has to be included. It is already a
> better interface/impl separation than Sun's JMX or Servlet APIs are
> which require forking by alternative container developers.
>
>> This I understand, and I would like to see it become part of the
>> containerkit somehow or of the framework if this is the case.
>>
>> Don't ask me why, it's obvious.
>
>
> Apart from backards compatability. Yes, I might agree to a move to
> A-F. No, I might agree that it we had our design time again, we'd have
> a hierarchy (or not) of Context in A-F. A move to containerkit is not
> going to please the Merlin folks as they are based on
> excalibur/container.
Minor note - the Merlin folks ;-) use the excalibur/meta pacikage for
the meta-info layer (whicbis what your referencing here).
> However the central point of this thread is to adress the need for
> GenericBlockContext in Phoenix CVS. Perhaps my suggested vote topic
> was wrong. It should have been "[Vote] GenericBlockContext in Phoenix
> CVS is the wrong solution +1"
>
>>>>>> And we don't want to limit our evolution in future for so little
>>>>>> a gain as having a generic implementation. It is rare that the
>>>>>> implementations are more than 20-30 lines of code, so I am not
>>>>>> sure what the great technical difficulty is.
>>>>>>
>>>>> Err I agree with you Peter. The interface remains in
>>>>> phoenix-client.jar and the impl is left to the container in
>>>>> question. I think Stephen is coming round to the possibility of
>>>>> that fact.
>>>>
>>>>
>>>>
>>>>
>>>> I'm comming around to the conclusion that :
>>>>
>>>> 1. the first step is to resolve the context key issue
>>>>
>>>> - context keys are part of the Avalon component contract
>>>> - contract are intended to be maintained
>>>> - solving this issue has to be addressed as a higher
>>>> priority than convinience interfaces, Phoenix fixes,
>>>> or other actions such as defining additional
>>>> interfaces
>>>
>>>
>>>
>>>
>>> I completely disagree. We have got so far on the
>>> GenericBlockContext (the need for it in Phoenix CVS) issue. Please
>>> don't switch conversational threads when we are on the cusp of an
>>> agreement. Please let me tackle these issues one by one. I'll move
>>> on to attributes, meta info and other issues in time. It is
>>> important for a sense of progress during mediation to resolve an
>>> issue. Please try to meet me on this simple goal Stephen. Just
>>> because this is against you original posting of GenericBlockContext
>>> does not mean all things in this process are going to fall against
>>> you. Besides, you see the logic of the BlockContext argument don't
>>> you :-))
>>
>>
>>
>> I completely disagree.
>>
>> *If* I understand what you are saying that is...
>>
>> To be more clear, *what* are we discussing about?
>>
>> A temporary solution for interoperability between Phoenix and
>> Merlin/Fortress or standard way of defining the Context?
>>
>> If it's the first case, I agree; this is the easiest solution ATM and
>> the best given that Phoenix is mature while Merlin is still growing.
>>
>> If it's the second case, I really fail to understand how you think
>> that all Containers must adopt Phoenix inventions.
>
>
> I did not say that. Do not put words in my mouth. I am suggesting
> that all 'enterprise' containers that look to support blocks should be
> compatible with phoenix. I'm not covering ECM here. I'm not covering
> Servlet containers etc. I am covering containers who's stated aim is
> some level of interoperability with Pheonix. Could we try to keep
> discussion on the topic of GenericBlockContext.
But lets keep in mind that GenericBlockContext was introduced within the
scope of component portability.
:-)
>
>> I thought they had to adopt the framework.
>
>
> As well yes. That /is/ a prerequisite for all Lifecycle aware
> containers. Again though, that does not cover Servlet containers, or
> EJB containers. It also does not cover Applets (given they too are
> mounted in a container).
>
>> IMHO this has come out from the fact that Phoenix has been defining
>> (in a concerted effort) and bringing forward the concept of Blocks
>> and SARs.
>>
>> These are becoming important concepts for Component reuse, and Peter
>> is correctly working with ContainerKit for better reusability.
>
>
> With all due respect to Peter's effort there, Merlin is not using it.
> You will have a diffucult time convincing Stephen to move Merlin to
> containerkit. At a certain 'personal choice' level he should not have
> to.
Steve is really keen to see a comon solution - but he doesn't want the
containerkit architecture - it does not fit Merlin's requirements. The
excalibur/meta package represents an extended sub-set of containerkit
that addressed a more general requirement. The containerkit
architecture could very easily adapt to the meta-info model defined in
excalibur/meta. But that's not a real issue - the excalibur/meta
package can deal with containerkit based solutions just as containerkit
could easily deal with excalibur/meta solutions.
Cheers, Steve.
>
>
>> Can we make this "spec" become more clearly defined and part of
>> framework somehow?
>> Do I understand correctly that ContainerKit is Peter's tentative in
>> that direction, and that Merlin is Stephen's?
>
>
> No Merlin is a container that cn do the lot. Container kit is a
> reusable kit that a container writer may use as a part of a larger
> development which is a container.
>
>> I repeat myself, let's define the contracts and the boundaries well,
>> and I humbly suggest you to also tackle the block and SAR think,
>> because I think that they are valuable concepts that need to be
>> integrated more at a lower level.
>
>
> Could we try to keep discussion on the topic of GenericBlockContext.
>
> SAR, Block, Assembly, .xinfo later please.
>
> - Paul
>
>
>
>
> --
> To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
>
--
Stephen J. McConnell
OSM SARL
digital products for a global economy
mailto:[EMAIL PROTECTED]
http://www.osm.net
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>