[hibernate-dev] [Search] OSGi split packages

Hardy Ferentschik hardy at hibernate.org
Wed Mar 26 16:18:54 EDT 2014

On 26 Jan 2014, at 20:52, Sanne Grinovero <sanne at hibernate.org> wrote:

> The classes in the ORM module are extremely widely used by our primary target:
> - FullTextQuery
> - Search
> - FullTextSession
> and two more lesser ones, but I think the 3 above are probably "THE
> API”.

That was my thinking as well.

> To move these out of the way we'd at least need to postpone the
> OSGi work for after a Beta to include a deprecated version of these.

? I don’t get what you are saying here. Deprecate it in an Alpha in order 
to then move them in a Beta release? That makes no sense what soever to me.
My take on this is, that we are dealing with a new major version of Search 
and that we are still in Alpha phase. If we need to make non backwards 
compatible changes we should do it now.

> Or we keep them around in the backwards compatible module
> "hibernate-search” ?

For what? Making things even more complicated?

> On the other option, in Engine we have:
> - Environment (containing all the configuration constants)
> - ProjectionConstants (more useful constants)
> - SearchException
> - SearchFactory (another strong case of public API)
> Also to remember the changes in Engine also affect the HQL parser
> (OGM) and Infinispan Query and its users; we can adapt for it but
> ultimately that's our responsibility too, probably best to verify
> early on to see the impact. Not really a reason to not do it, but it
> has an impact on several other projects which we need to facilitate.

Mind you, we are talking just about an import statement change. No API
or functional change. And yes, our downstream projects would need to adjust.

> I think I like Hardy's approach of moving from Engine better; not
> least we can provide alternative deprecated constants in the ORM
> module for ORM users to use as a migration help (Environment and
> ProjectionConstants).


> To reply on the more fine-grained details:
>> org.hibernate.search.Environment        ->  org.hibernate.search.cfg.Environment
> since it's API, WDYT of a fully fledged mouthfull
> “org.hibernate.search.configuration.Environment"

I like it. In fact I wish cfg would have been called configuration in the first place.
Having both, cfg and configuration seems odd to me. In this case I prefer to just 
use cfg

>> org.hibernate.search.SearchFactory     ->  org.hibernate.search.spi.SearchFactory
> as Emmanuel said, that's an API currently.

Right. I am not 100% happy with this choice either. Mainly moved it there, since we have SearchFactory 
related classes in there already (not all of which are api either)

> I'm inclined to think we
> should convert it to an SPI, and provide a richer more ORM specific
> version in the ORM module?

Interesting. On the other hand, making SearchFactory an spi sounds strange to me.

>> org.hibernate.search.SearchException ->  org.hibernate.search.exception.SearchException
> Maybe making the package plural? We should add variations for specific failures.

+1 I was about to suggest that as well

>> org.hibernate.search.FullTextFilter        ->  org.hibernate.search.filter.FullTextFilter
> "filtering" ? "filters" ?
> Not too fond of the singular term as it's not very explicit (yes I
> know it's an existing one).

I think I would stick with filter. I guess it comes down to how disruptive we want to be

>> org.hibernate.search.Version                ->  org.hibernate.search.engine.Version
> +1



More information about the hibernate-dev mailing list