> On Jun 3, 2020, at 10:14 PM, sha.ji...@oracle.com wrote:
> 
> Hi Max,
> 
> On 2020/6/3 17:17, Weijun Wang wrote:
>> TimeStampCheck.java:
>> 
>> - Can you please inline all those private getXyz() calls in Interceptor into 
>> getRespParam()? I would like to see all these customizations in one place. 
>> Just add a blank line in between and it will be clean enough for me.
> OK
> 
>> 
>> TsaParam.java:
>> 
>> - Please group the fields into different area. Looks like some are fields in 
>> TSTInfo, and some are server internals.
> One usage of this class is carrying all parameters delivered by HTTP
> request. Do you mean they should be grouped in different classes?

No. Just add some comment lines inside the class and separate them into 
different groups.

> 
>> 
>> The overall design is good, but I have a feeling that the interface and 
>> implementation can be further separated. I can see that there are a lot of 
>> methods and classes that will not be touched by TimeStampCheck at all. 
>> Should these things be taken out to be another implementation which is 
>> parallel to the one in TimeStampCheck? Maybe TsaHandler::createSigner will 
>> be abstract.
> All RespInterceptor methods are used by TimeStampCheck.
> DefaultRespInterceptor is used by standalone TSA server. In this style, no
> more RespInterceptor implementation is needed.

See below.

> 
>> 
>> There are quite some public constructors in the classes. Are they meant to 
>> be called by a user? Or by a child class? Or just internal?
> The public constructors in TsaServer can be called by applications for
> making standalone servers.

How about the other classes?

> 
>> 
>> Also, for those protected methods (Ex: parseRequestParam and createResponse 
>> in TsaSigner), do you meant to override it in the future?
> Possibly.
> For example, a sub parseRequestParam() may need to parse extensions from
> request. A test may directly twist the byte[] returned by createResponse(),
> or even an overridden createResponse() just returns an empty byte[].

Can we make them internal at the moment until someone really need to extend it?

> 
>> 
>> Can you give examples on how to use this server? Will it always use 
>> DefaultRespInterceptor? If so, will the default impl in RespInterceptor.java 
>> ever be used?
> I'll use this server as standalone-like service. The custom TSA fields
> just be delivered by HTTP request query string. I won't provide a custom
> RespInterceptor, and DefaultRespInterceptor is enough to me.

You can put DefaultRespInterceptor in the standalone server.

If you change TsaSigner.java

  80     public TsaSigner(SignerEntry signerEntry, byte[] requestData,
  81             TsaParam param) {
  82         this(signerEntry, requestData,
  83                 new DefaultRespInterceptor<TsaParam>(param));

to use the even more "default" RespInterceptor, i.e. new RespInterceptor(){}, 
is it still useable?

Thanks,
Max

> 
> Best regards,
> John Jiang
> 

Reply via email to