[Pki-devel] [PATCH] Ticket #888 - TPS rewrite: provide remote authority functions (patch 1: TKS functions)

Christina Fu cfu at redhat.com
Thu Mar 20 20:42:25 UTC 2014


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.
>




More information about the Pki-devel mailing list