My previous changes to the readCf() method introduced some regressions around the logic that determines how to calculate the column name and column value. I needed to check if there is meta data for the column name and value. If and only if there is meta data, the component value is calculated with a type conversion; otherwise, we just take the raw byte buffer. Note that the ByteBuffer cannot be stored as is in JsonObject. We need to get the bytes which are in turn encoded. We might want to see about providing an alternate implementation that will be more efficient, if that is possible.
While I was looking at something else, I noticed that the callers of HandlerUtils.readCf both take the list of maps that gets populated, iterates through the list, converts each map to a JsonObject, and then adds that object to a JsonArray that is sent back in the response to the reply handler. This commit removes that duplicate work and also eliminates the extra work of looping over all of the columns again.