[ https://issues.apache.org/jira/browse/GEODE-86?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14646500#comment-14646500 ]
ASF subversion and git services commented on GEODE-86: ------------------------------------------------------ Commit 298ff7911ffcc7b5f7b026de340b95804b7fab5a in incubator-geode's branch refs/heads/develop from [~dschneider] [ https://git-wip-us.apache.org/repos/asf?p=incubator-geode.git;h=298ff79 ] GEODE-86: add a way to get the deserialized value to KeyValueOperationContext KeyValueOperationContext now has a getDeserializedValue method that can be used to get the operation value as a deserialized object. The javadocs on getValue now explain that the result may be a serialized blob. Unit test coverage has been added for PutOperationContext and GetOperationContextImpl which are subclasses of KeyValueOperationContext. > KeyValueOperationContext getValue returns a byte array when the value was not > a byte array > ------------------------------------------------------------------------------------------ > > Key: GEODE-86 > URL: https://issues.apache.org/jira/browse/GEODE-86 > Project: Geode > Issue Type: Bug > Reporter: Darrel Schneider > Assignee: Darrel Schneider > Priority: Minor > Original Estimate: 48h > Remaining Estimate: 48h > > 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); > 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. -- This message was sent by Atlassian JIRA (v6.3.4#6332)