An SPI is a contract that a user would implement, but also a contract
the need to implement such a contract.
For example, take SessionImplementor from ORM. It is the SPI contract
for Session. Most other SPI contracts pass SessionImplementor as an
argment, or make it available in some fashion for the SPI implementor
to user. We don't really expect the user to implement
SessionImplementor; it is just there to provide an expanded set of
features they will likely need.
On Mon 02 Apr 2012 05:33:59 PM CDT, Gunnar Morling wrote:
Hi,
> What's your definition of an SPI
I think an SPI is something which the user implements (as you say
typically advanced users which need to plug-in custom functionality
into the framework) opposed to an API, which is something which a user
just uses/invokes.
> That's the proposal I have pushed to the common guidelines at JBoss.
Do you have a link to these guidelines?
I think I like the combined interface/abstract implementation approach.
--Gunnar
2012/4/2 Emmanuel Bernard<emmanuel(a)hibernate.org>:
>
> On 2 avr. 2012, at 11:44, Hardy Ferentschik wrote:
>
>>>
>>> What's your definition of an SPI, in the team we have slightly different
ones.
>>>
>>> In Hibernate search an SPI is targeted at frameworks or hyper advanced user
who are willing to integrate or enhance Hibernate Search. Otherwise, they are considered
APIs - which includes interfaces you might need to implement like FieldBridge. Hibernate
ORM has a different semantic where an API is what the application directly code on.
>>
>> The HV interpretation of SPI is the same view as in ORM. Imo It makes for a
simpler, easier to understand cut between API and SPI.
>
> You guys think too much of your own comfort and less of the user's ;P
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/hibernate-dev
_______________________________________________
hibernate-dev mailing list
hibernate-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev
--
steve(a)hibernate.org
http://hibernate.org