[
https://issues.apache.org/jira/browse/GEODE-9450?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Darrel Schneider updated GEODE-9450:
------------------------------------
Priority: Minor (was: Major)
> StringBytesGlossary has a large number of MakeImmutable annotations
> -------------------------------------------------------------------
>
> Key: GEODE-9450
> URL: https://issues.apache.org/jira/browse/GEODE-9450
> Project: Geode
> Issue Type: Improvement
> Components: redis
> Reporter: Darrel Schneider
> Priority: Minor
>
> All of the byte array constants in StringBytesGlossary are annotated with
> MakeImmutable. This annotation indicates that changes need to be made.
> We could just change the annotation to Immutable but then we would still have
> static fields that could actually be mutated.
> In the case of StringBytesGlossary it seems like some of the byte array
> constants in it could be encapsulated into an Enum constant. The Enum
> constructor would take a byte array and store it the instance. But it would
> not have methods that allow other classes to get a reference to the byte
> array. Instead it could just have a "boolean equalsIgnoreCaseBytes(byte[])"
> and any other comparison methods needed and only those methods would need to
> be coded correctly to not modify the array. This would work fine for all the
> redis keywords we need to identify. Instead of passing a byte array to the
> constructor we could probably just use Enum.getName() in the constructor and
> call stringToBytes on it.
> But other constants in StringBytesGlossary are used for output to be sent
> back the the client (for example see bPING_RESPONSE). For those we probably
> should just mark the as Immutable.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)