You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by Simon Nash <na...@apache.org> on 2008/03/02 23:19:23 UTC

Re: [DISCUSSION] PassByValue SPI, was: Re: svn commit: r628163

Jean-Sebastien Delfino wrote:
> Simon Nash wrote:
> ...
>>> This is going in circles :) If you add a parameter to createInvoker 
>>> to pass an InvokerProperties... then I have two questions:
>>> - who actually creates the InvokerProperties?
>>  >
>> The Tuscany core runtime code that calls createInvoker().
>>
>>> - can it still be an interface implemented by the extension?
>>>
>> No.  It's used by the extension but not implemented by it.
> 
> I don't understand why. If my extension must implement InvokerProperties 
> getInvokerProperties(); and InvokerProperties is an interface, I should 
> be able to provide my own implementation of InvokerProperties.
> 
I tried to explain the reason in [1].  Apologies if that wasn't clear.
I'll try again here.

SPI interfaces divide into two categories: those that are intended for
extensions to implement, and those that are intended for extensions
to use.

This is a very important distinction because it affects what changes
can be made to the interface without breaking compatibility with
existing extensions.

For interfaces that are intended for extensions to implement, adding
a new method breaks compatibility.  Removing a method does not break
compatibility.

For interfaces that are intended for extensions to use, adding a new
method does not break compatibility.  Removing a method breaks
compatibility.

My InvokerProperties proposal is designed to allow new methods to be
added to the InvokerProperties interface without breaking compatibility
with existing extensions.  This requires InvokerProperties to be an
interface that is intended for extensions to use, and not an interface
that is intended for extensions to implement.  If it were intended for
extensions to implement, it would not be possible to add new methods
to it without breaking compatibility.

   Simon

[1] http://www.mail-archive.com/tuscany-dev@ws.apache.org/msg28292.html


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