I think it's bad idea. This contract nowhere defined and it's not clear for users.
чт, 24 янв. 2019 г. в 17:18, Pavel Tupitsyn <[email protected]>: > Yes > > On Thu, Jan 24, 2019 at 5:15 PM Sergey Antonov <[email protected]> > wrote: > > > Pavel, > > > > "Leave it as is, use instanceof." > > You meant always use CacheInterceptor<Object, Object> and in all methods > > check, that passed arguments is BinaryObject? > > > > чт, 24 янв. 2019 г. в 17:10, Pavel Tupitsyn <[email protected]>: > > > > > I don't think we should complicate things. Leave it as is, use > > instanceof. > > > The fact is - you can get anything, BinaryObject or any user class, so > be > > > prepared. > > > Good example of older API is CacheEvent, which actually has oldValue() > > and > > > newValue() as Object. > > > > > > Igniters, any other thoughts? > > > > > > > > > On Thu, Jan 24, 2019 at 2:16 PM Sergey Antonov < > > [email protected]> > > > wrote: > > > > > > > Pavel, how about marker interface DeserializedValueCacheInterceptor? > We > > > > will deserialize data and pass it to cache interceptor, if > > > CacheInterceptor > > > > implements marker interface. > > > > > > > > чт, 24 янв. 2019 г. в 13:41, Pavel Tupitsyn <[email protected]>: > > > > > > > > > You are exactly right, generic parameters don't make much sense > here. > > > > > Ignite caches are not restricted to any type, and there is type > > erasure > > > > in > > > > > Java so you have no runtime guarantees. > > > > > > > > > > Maybe Interceptor design should be improved (e.g. add a flag to > force > > > > > binary or non-binary mode), > > > > > but Thin or Thick client connector logic is unrelated here. > > > > > withKeepBinary() call is valid and should not depend on Interceptor > > > > > presence or implementation. > > > > > > > > > > On Thu, Jan 24, 2019 at 1:17 PM Sergey Antonov < > > > > [email protected]> > > > > > wrote: > > > > > > > > > > > Hi, Pavel, > > > > > > > > > > > > "Interceptor should support both modes, binary or not. Any code > can > > > > call > > > > > > withKeepBinary(), this should be expected. > > > > > > Just add if (x instanceof BinaryObject) and go from there. " > > > > > > I don't agree. The cache interceptor[1] is a parametrized class > and > > > you > > > > > > couldn't pass multiple cache interceptors in cache configuration. > > So > > > > all > > > > > > cache interceptors must have Object, Object parameters for > > supporting > > > > > both > > > > > > modes: binary and deserialized. In this case parametrized class > no > > > > sense. > > > > > > > > > > > > [1] > > > > > > > > > > > > > > > > > > > > > > > > > > > https://ignite.apache.org/releases/latest/javadoc/org/apache/ignite/cache/CacheInterceptor.html > > > > > > > > > > > > чт, 24 янв. 2019 г. в 13:06, Pavel Tupitsyn < > [email protected] > > >: > > > > > > > > > > > > > Hi Sergey, > > > > > > > > > > > > > > I don't think this is a bug. > > > > > > > > > > > > > > Thick or thin clients always work in binary mode on server > side, > > > > > because > > > > > > > you receive data in serialized form and there is no point in > > > > > > deserializing > > > > > > > it. > > > > > > > Moreover, in most cases you don't have classes on the server, > so > > > > binary > > > > > > > mode is the only way. > > > > > > > > > > > > > > Interceptor should support both modes, binary or not. Any code > > can > > > > call > > > > > > > withKeepBinary(), this should be expected. > > > > > > > Just add if (x instanceof BinaryObject) and go from there. > > > > > > > > > > > > > > Thanks, > > > > > > > Pavel > > > > > > > > > > > > > > On Thu, Jan 24, 2019 at 12:38 PM Sergey Antonov < > > > > > > [email protected] > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > I did a little investigation. In > > > > > > > o.a.i.i.p.p.c.c.ClientCacheRequest#cache() > > > > > > > > enforced cache with keep binary. Why we should always work > > binary > > > > > > > objects? > > > > > > > > > > > > > > > > чт, 24 янв. 2019 г. в 12:29, Sergey Antonov < > > > > > [email protected] > > > > > > >: > > > > > > > > > > > > > > > > > Hello, Igniters! > > > > > > > > > > > > > > > > > > I have ignite node with configured cache. The cache have > > cache > > > > > > > > > interceptor. I wiil got ClassCastException on cache > > > interceptor, > > > > > If I > > > > > > > put > > > > > > > > > some entry to the cache (without keepBinary) from thin java > > > > client. > > > > > > > > > > > > > > > > > > I think it's a bug. I'd like to find out yours view! > > > > > > > > > > > > > > > > > > Also I made JIRA ticket with reproducer [1]. > > > > > > > > > > > > > > > > > > [1] https://issues.apache.org/jira/browse/IGNITE-10789 > > > > > > > > > > > > > > > > > > -- > > > > > > > > > BR, Sergey Antonov > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > BR, Sergey Antonov > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > BR, Sergey Antonov > > > > > > > > > > > > > > > > > > > > > > > -- > > > > BR, Sergey Antonov > > > > > > > > > > > > > -- > > BR, Sergey Antonov > > > -- BR, Sergey Antonov
