@zzzwjm

For this:
``quot
   for primitive type, even there is no @DefaultValue annotation, should have 
it's default value
``


Do we need to consider required = true? Why we should give default value to 
primitive types even when required = true?


As I know, JAX-RS do not have an annotations to specify required property, and 
it's implementation some like required=false, and give primitive types the java 
default value.
And Spring MVC(spring boot implementation) defaults to required=true, if 
primitive types not given, will throw Bad Param exception.
------------------ ???????? ------------------
??????: "zzzwjm"<zzz...@gmail.com>;
????????: 2018??7??26??(??????) ????10:00
??????: "dev"<dev@servicecomb.apache.org>;

????: Re: [DISCUSS] Swagger parameter default values while generatingtheschema 
file



" e. when generating swagger, generate defalutValue only when explicitly
specified."

add another point:
for primitive type, even there is no @DefaultValue annotation, should have
it's default value

2018-07-26 19:42 GMT+08:00 bismy <bi...@qq.com>:

> My suggestions are as follows
> 1. Encourage providers to specify required & defalutValue explicitly.
>    a. when required=true and defaultValue is given, if consumers do not
> give a value, use default value;
>    b. when required=true and defaultValue is not given, if consumers do
> not give a value, throw a BadParam exception.
>    c. when required=false and defaultValue is given, if consumers do not
> give a value, use default value;
>    d. when required=false and defaultValue is not given, give default
> values to parameter according to java conventions. e.g. integer is 0 and
> object is null.
>    e. when generating swagger, generate defalutValue only when explicitly
> specified.
>
>
> 2. As I know from PR[2], JAX-RS do not have annotations to specify
> required, required is always false. This is different from Spring MVC,
> which required defaults to true.
>    a. JAX-RS defaults: required=false and defalutValue not specified
>    b. Spring MVC default: required=true adefalutValue not specifiednd
>
>
>
>
> This suggestion seems equals to your Solution 1, the difference seems you
> take JAX-RS defaults required=true
>
>
> [1] https://docs.jboss.org/resteasy/2.0.0.GA/javadocs/
> javax/ws/rs/DefaultValue.html
> [2] https://issues.apache.org/jira/browse/SCB-709
> [3] Spring MVC: RequestParam annotation: boolean required() default true;
>
>
> ------------------ Original ------------------
> From:  "mahesh somalaraju"<mahesh.somalar...@huawei.com>;
> Date:  Thu, Jul 26, 2018 03:23 PM
> To:  "dev@servicecomb.apache.org"<dev@servicecomb.apache.org>;
> Cc:  "Vinay Murudi"<vin...@huawei.com>; "Sukesh A C"<sukes...@huawei.com>;
> "Mohammad Asif Siddiqui"<mohammad.asif.siddiq...@huawei.com>;
> Subject:  [DISCUSS] Swagger parameter default values while generating
> theschema file
>
>
>
> Hi All,
>
> Currently we are handling the issue related to swagger parameter default
> values while generating the swagger content.
>
> Default value annotation(@DefaultValue) we can provide for PathParam,
> QueryParam, MatrixParam, CookieParam, FormParam and HeaderParam.
>
> The query is when to consider default value for swagger parameter.
>
> Solution:1 [parameter value required case]
>   While generating the swagger content:
>
> 1)      consider default value(@DefaultValue) if and only the parameter
> configured required is false(required=false).
>
> 2)      If default value(@DefaultValue)  is not available then consider
> JAVA primitive default values only when the parameter configured required
> is false(required=false).
>
> The default values as follows:
>
> Object types  --> null
>
> collection for List, Set or SortedSet --> Empty list
>
> primitive types:
>
> int, long --> 0
>
>                 float, double --> 0.0
>
>                 boolean  --> false     etc..
>
> 3)      When the user not provided value in request(meta-data) and the
> parameter is configured with required is true(required=true) then throw
> exception by saying that "Invalid parameter".
>
> Solution:2 [General case]
>   While generating the swagger content:
>
> 1)      consider default value(@DefaultValue) without checking whether it
> is required or not(required=true or required=false)
>
> 2)      If default value(@DefaultValue)  is not available then consider
> JAVA primitive default values without checking whether it is required or
> not(required=true or required=false)
>
> The default values as follows:
>
> Object types  --> null
>
> collection for List, Set or SortedSet --> Empty list
>
> primitive types:
>
> int, long --> 0
>
>                 float, double --> 0.0
>
>                 boolean  --> false     etc..
>
> 3)      When the user not provided value in request(meta-data) , first it
> will check annotated default value field and then it will check JAVA
> primitive default values.
>
> Always some default values will be there for parameters and If user not
> given any values in request then it will consider the default values
> presented in schema content.
>
>
> Any thoughts on this?
> Please suggest which solution is best for handling the swagger parameter
> default values. Thank you in advance !
>
>
> Thanks & Regards
> Mahesh Raju Somalaraju
> Github(id: maheshrajus)
>

Reply via email to