Was told that there is a convention to follow -- reporting a push to the
master when that happens...
So here you go...
pushed to master
Christina
On 03/17/2014 08:17 AM, Endi Sukma Dewata wrote:
On 3/14/2014 1:42 PM, Christina Fu wrote:
> Thank you Endi and Jack for your comments.
> Attached please find the patch that addressed your comments.
>
> thanks,
> Christina
Just a few more comments:
1. The computeSessionKey() will throw an exception if it's missing the
RESPONSE_STATUS. The other methods will just ignore that. I think they
should be consistent.
2. Right now the code gets a string value from the response object,
decodes the value into TPSBuffer, then puts it back to the same
response object under the same name. Then the new Response classes
would read from the same response object again. It works fine but code
maintainer would have to be aware of the current type of the attribute
because it could change.
// response contains String or TPSBuffer values
Hashtable<String, Object> response = parseResponse(content);
value = (String) response.get(IRemoteRequest.TKS_RESPONSE_SessionKey);
if (value == null) {
CMS.debug(...);
} else {
CMS.debug(...);
response.put(IRemoteRequest.TKS_RESPONSE_SessionKey,
Util.specialDecode(value));
}
return new TKSComputeSessionKeyResponse(response);
It might be easier to simply wrap the original response object with
the new Response class, then decode the value only when the attribute
is used:
// response contains string values
Hashtable<String, String> response = parseResponse(content);
return new TKSComputeSessionKeyResponse(response);
public TPSBuffer getSessionKey() {
String value =
response.get(IRemoteRequest.TKS_RESPONSE_SessionKey);
if (value == null) return null;
// decode value only when needed
return Util.specialDecode(value));
}
Or alternatively the new Response class can hold just the decoded
values either in a separate hashtable or in fields:
Hashtable<String, String> response = parseResponse(content);
TKSComputeSessionKeyResponse res =
new TKSComputeSessionKeyResponse(); // don't use response
value = response.get(IRemoteRequest.TKS_RESPONSE_SessionKey);
if (value == null) {
CMS.debug(...);
} else {
CMS.debug(...);
// store decoded value
res.setSessionKey(Util.specialDecode(value));
}
return res;
Issue #1 I think should be fixed. ACK once that is addressed.
For #2, it's not a problem, but it would improve code clarity. I'll
let you decide. Thanks.