|
We did discuss (Stockholm) the potential for a "integration point singularity" for things like OGM, etc that had different types of integration points to override/supplement. I cannot remember if we named that concept or if we did what the name was; interestingly if I were starting this today, I'd call that contract Integrator and yes it would define methods for each of the different ways integrators (OGM, spatial, etc) supply things to the ORM engine. I do seem to recall that we wanted to name all the individual pieces "contributors". The idea being that an "integrator" would supply one or more "contributors" of various types (in a non-magic way, I agree); the point being that they are all defined in a single place for a given "integrator". E.g:
public interface Integrator {
/**
* Obtain any delegates for contributing things (services/initiators generally speaking) to the
* BootstrapServiceRegistry, by way of the BootstrapServiceRegistryBuilder. Typical use cases
* include OSGi, WildFly, etc.
*/
public List<BootstrapServiceRegistryContributor> getBootstrapServiceRegistryContributors();
/**
* Obtain any delegates for contributing Type instances to the ...
*/
public List<TypeContributor> getTypeContributors();
public List<StandardServiceRegistryContributor> getStandardServiceRegistryContributors();
public List<SessionFactoryServiceRegistryContributor> getSessionFactoryServiceRegistryContributors();
...
}
(and standard "abstract convenience" implementation).
This was already all discussed in Stockholm and those outcomes planned for ORM 5.0.
|