Right now SpecificData resolves classes for SpecificRecords by calling Class.forName(), which uses the ClassLoader used to load the SpecificData class. I believe this makes it impossible to deserialize into SpecificRecords that are loaded using a different ClassLoader.
One relatively simple way to fix this limitations involves:
- Adding a constructor to SpecificData that allows the user to specify a ClassLoader.
- Changing the current protected constructor of SpecificDatumReader that takes a SpecificData to be public instead of protected.
- Changing SpecificDatumReader to actually use the SpecificData that is passed into the constructor.