2011/4/25 Steve Ebersole <st...@hibernate.org>:
> Just to circle back to this (because my memory is so short)..
>
> What did we ever decide about this, especially in regards to the *how*?
>
> As and example, lets look at Search.  Search wraps Session in a
> FullTextSession.  Search would register some handler with the
> SessionFactory that says it knows how to handle Session.as(
> FullTextSession.class ) calls.  But what exactly is this handler going
> to do?  Unless Search maintains some global Session instance ->
> FullTextSession instance...  Or are you thinking the registration
> happens per-Session?

The entry points for Search are two:
 - the session *EventListener(s) (only one instance, but listening to
multiple types of events)
 - the FullTextSession

A FullTextSession needs a reference to the current session, and a
reference to the SearchFactoryImplementor, which is the heavy-weight
global component, similar to a SessionFactory.

Currently a FullTextSession implements Session and is created from the
Session it wraps using a static helper which searches for it's own
PostInsertEventListener in the Session itself, from which it takes a
reference to the needed  SearchFactoryImplementor.

I would be a nice improvement if the "as( FullTextSession.class )"
implementation could retrieve the SearchFactoryImplementor from the
ServiceRegistry instead.

In pseudo code, the "as" implementation for search would look like something as:

FullTextSession createFullTextSession() {
   return new FullTextSession( Session current, serviceRegistry.get(
SearchFactoryImplementor.class ) );
}

(or even simpler if SessionImplementor makes it possible to retrieve services )

Regards,
Sanne

>
>
> On 04/06/2011 09:28 AM, Emmanuel Bernard wrote:
>> yes as is indeed better.
>>
>> On 6 avr. 2011, at 13:29, Steve Ebersole wrote:
>>
>>> A phrase I see a lot here is "as":
>>>
>>> session.as( AuditReader.class ).someEnversSpecificMethod()
>>>
>>> or
>>>
>>> session.as( FullTextSession.class )...
>>>
>>>
>>> On 04/06/2011 06:26 AM, Adam Warski wrote:
>>>>
>>>> On Apr 6, 2011, at 1:20 PM, Steve Ebersole wrote:
>>>>
>>>>> The phrase 'unwrap' might be a bit misleading there because you may not 
>>>>> be dealing with wrapped objects.  But the idea itself is still solid I 
>>>>> believe.  Think of it more as a multi-directional cast
>>>>
>>>> Right, the idea sounds good; so it would be something like a per-session 
>>>> service? :)
>>>> Envers could use it as well, right now just as search has 
>>>> Search.getFullTextSession, envers has AuditReaderFactory.getFor
>>>> So we could have session.service(AuditReader.class / 
>>>> FullTextSession.class).
>>>>
>>>> Adam
>>>>
>>>>> On Apr 6, 2011 6:15 AM, "Adam Warski"<a...@warski.org>   wrote:
>>>>>>
>>>>>>> FullTextSession ftSession = session.unwrap(FullTextSession.class);
>>>>>>> //the current approach is via some static helper method
>>>>>>> //FullTextSession ftSession = Search.getFullTextSession(session);
>>>>>>>
>>>>>>> That would mean that the integration point between HSearch and 
>>>>>>> Hibernate would have an unwrap method and Hibernate would delegate the 
>>>>>>> unwrap calls to each integrator until a non null object is returned.
>>>>>>>
>>>>>>> It's just a thought, WDYT?
>>>>>>
>>>>>> But while EntityManager wraps a Session object, a Session doesn't wrap a 
>>>>>> FullTextSession, but the other way round, no?
>>>>>>
>>>>>> --
>>>>>> Adam Warski
>>>>>> http://www.warski.org
>>>>>> http://www.softwaremill.eu
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> hibernate-dev mailing list
>>>>>> hibernate-dev@lists.jboss.org
>>>>>> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>>>>
>>>
>>> --
>>> Steve Ebersole<st...@hibernate.org>
>>> http://hibernate.org
>>> _______________________________________________
>>> hibernate-dev mailing list
>>> hibernate-dev@lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>>
>
> --
> Steve Ebersole <st...@hibernate.org>
> http://hibernate.org
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>

_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to