In some cases there is necessity to control a type of object that is being
inserted into a cache.
Presently this kind of check is accomplished at compile time only relying
on Java Generics. However it doesn't prevent us from connecting to a
cluster using a non-generic instance of a cache and put any kind of data in
it. This may be not a harmful intention but rather a silly developer mistake.
It's preferable to rely on the cache interceptor based solution:
- user will create a generic interceptor that will accept "typeName" in its constructor;
- class of this interceptor will be placed in the classpath of all the nodes;
- when a new cache is started statically (Spring cfg) or dynamically this interceptor can be set with a particular allowed "typeName";
- when interceptor is invoked allowed typeId (taken from allowed "typeName") will be compared with a typeID of a key/value being inserted;
- exception has to be thrown if allowed typeId is not equal to a key/value typeId being inserted.
We need to allow to throw exceptions from interceptor and provide an example on how perform type validation using interceptors based approach.
Refer to the discussion on the dev list: