Hi,
Re:
https://issues.jboss.org/browse/ISPN-986
As indicated in my comments, there's two room for two types of serialization
mechanisms: one for end users and the other for SPIs.
I've got a solution for this in
https://github.com/galderz/infinispan/commit/09096f7998c0d0a5aae76d55bf59... and
wanted to give a heads up to everyone on what it involves:
- Two separate externalizer interfaces: Externalizer (which currently, to disrupt as
little code as possible, is named EndUserExternalier) and ExternalizerSpi or
ServiceProviderExternalizer (currently named Externalizer). The first API is basic
read/write methods and the second one with a couple of more methods for more specialised
behaivour. Do people like these names? Or can someone come up with better names? More
detailed info on the use cases in the JIRA.
- A related factor here would be to find a better name for the XML/programmatic
configuration, i.e. getServiceProviderExternalizers()? <serviceProviderExternalzer>
or getExternalizeSpis() <externalizerSpi>? This is one thing and the other is that
I'd want this XML and programmatic configuration to be a bit hidden away cos it's
specialised or for edge cases. The obvious route the average Infinispan user should be
annotation and implement Infinispan's Externalizer interface. However, I'm
don't think there's anything special that can be done in the current architechture
of Infinispan without rethinking end user and spi configuration.
- To hide JBoss Marshaller details away and to simplify some of the API it provides,
I've created a new @MarshallableBy annotation that maps directly to what JBMAR's
@Externalizer does. To get an idea of the differences for the end users, see
https://github.com/galderz/infinispan/commit/09096f7998c0d0a5aae76d55bf59...
as opposed to
https://github.com/galderz/infinispan/commit/09096f7998c0d0a5aae76d55bf59....
Are people happy with the annotation name? The cool thing is that if someone wants to
really use JBoss Marshaller Externalizers, they can, but I think the majority will be
happy with just a read/write object method.
And that's about it! Afterwards it just needs proper documentation in wiki and
javadocs, but right now I'm mostly focused at getting naming right. Thoughts?
Ideally I'd like to get this into BETA1 (release date next Tuesday, 5th April), but
I'll prob hold till BETA2 to get the naming right.
Cheers,
--
Galder Zamarreño
Sr. Software Engineer
Infinispan, JBoss Cache