This looks like a bug in com.gemstone.gemfire.cache.operations.KeyValueOperationContext.getValue(). This method should return to deserialized value for the operation. The javadocs don't actually say this but I think that was the idea. If you wanted to serialized value you could call getSerializedValue().
The problem with the current getValue implementation is that if the context has a serialized value it just returns it. But the serialized value will always be a byte[] that contains the serialized bytes. getValue should only return a byte array if the actual value passed to the operation was a byte array. I will fire a jira ticket for this. Thanks for reporting it. Your workaround looks reasonable. On Wed, Jul 8, 2015 at 11:08 AM, gtantachuco . <[email protected]> wrote: > All, > I am using a plain-old Java object and Geode PDX to PUT and GET values > from a client app to a Geode region. Thanks to PDX, I don't have to install > the class on the Geode cluster. > > In my implementation of the AccessControl interface, I receive the > OperationContext object as part of the pre- and post-authorization > callbacks. I was expecting to receive a PdxInstance object but instead I am > receiving a byte[] object. > In the future, It would be nice to receive a PdxInstance to make the > process much cleaner. For now I have to do this something like this to get > my PdxInstance object: > > PdxInputStream pdxIs = new PdxInputStream((byte[]) > ((KeyValueOperationContext) context).getValue()); > > userData = (PdxInstance) DataSerializer.readObject(pdxIs); > > -- > Best regards, > -Guillermo > >
