[
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)