Skip to content

Commit

Permalink
opti: add recommend third config (#351)
Browse files Browse the repository at this point in the history
  • Loading branch information
tangcent authored Feb 25, 2021
1 parent c4ac0d8 commit 6b799b0
Show file tree
Hide file tree
Showing 3 changed files with 159 additions and 0 deletions.
49 changes: 49 additions & 0 deletions third/javax.validation.mock.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# mock for javax.validation

###set resolveMulti = first
# define var
number_min=-9999
number_max=9999
float_dmin=2
java_integer_types=["java.lang.Integer","int","java.lang.Long","long","java.lang.Short","short","java.math.BigInteger"]
java_float_types=["java.lang.Float","float","java.lang.Double","double","java.math.BigDecimal"]
# mock_integer_or_float=${java_integer_types}.contains(it.type().name())?"@integer":"@float"

# AssertTrue|AssertFalse|Email
field.mock[@javax.validation.constraints.AssertTrue]=true
field.mock[@javax.validation.constraints.AssertFalse]=false
field.mock[@javax.validation.constraints.Email]=groovy:"@email"

# Positive&PositiveOrZero
field.mock[groovy:it.hasAnn("javax.validation.constraints.Positive")&&${java_integer_types}.contains(it.jsonType().name())]=groovy:"@integer(1,${number_max})"
field.mock[groovy:it.hasAnn("javax.validation.constraints.PositiveOrZero")&&${java_integer_types}.contains(it.jsonType().name())]=groovy:"@integer(0,${number_max})"
field.mock[groovy:it.hasAnn("javax.validation.constraints.Positive")&&${java_float_types}.contains(it.jsonType().name())]=groovy:"@float(0.01,${number_max},${float_dmin})"
field.mock[groovy:it.hasAnn("javax.validation.constraints.PositiveOrZero")&&${java_float_types}.contains(it.jsonType().name())]=groovy:"@float(0,${number_max},${float_dmin})"

# Negative&NegativeOrZero
field.mock[groovy:it.hasAnn("javax.validation.constraints.Negative")&&${java_integer_types}.contains(it.jsonType().name())]=groovy:"@integer(${number_min},-1)"
field.mock[groovy:it.hasAnn("javax.validation.constraints.NegativeOrZero")&&${java_integer_types}.contains(it.jsonType().name())]=groovy:"@integer(${number_min},0)"
field.mock[groovy:it.hasAnn("javax.validation.constraints.Negative")&&${java_float_types}.contains(it.jsonType().name())]=groovy:"@float(${number_min},0.01,${float_dmin})"
field.mock[groovy:it.hasAnn("javax.validation.constraints.NegativeOrZero")&&${java_float_types}.contains(it.jsonType().name())]=groovy:"@float(${number_min},0,${float_dmin})"

# Max+Min
field.mock[groovy:it.hasAnn("javax.validation.constraints.Max")&&it.hasAnn("javax.validation.constraints.Min")&&${java_integer_types}.contains(it.jsonType().name())]=groovy:"@integer("+it.ann("javax.validation.constraints.Min")+","+it.ann("javax.validation.constraints.Max")+")"
field.mock[groovy:it.hasAnn("javax.validation.constraints.Max")&&it.hasAnn("javax.validation.constraints.Min")&&${java_float_types}.contains(it.jsonType().name())]=groovy:"@float("+it.ann("javax.validation.constraints.Min")+","+it.ann("javax.validation.constraints.Max")+",${float_dmin})"

# Max|Min
field.mock[groovy:it.hasAnn("javax.validation.constraints.Max")&&${java_integer_types}.contains(it.jsonType().name())]=groovy:"@integer(0,"+it.ann("javax.validation.constraints.Max")+")"
field.mock[groovy:it.hasAnn("javax.validation.constraints.Min")&&${java_integer_types}.contains(it.jsonType().name())]=groovy:"@integer("+it.ann("javax.validation.constraints.Min")+")"
field.mock[groovy:it.hasAnn("javax.validation.constraints.Max")&&${java_float_types}.contains(it.jsonType().name())]=groovy:"@float(0,"+it.ann("javax.validation.constraints.Max")+")"
field.mock[groovy:it.hasAnn("javax.validation.constraints.Min")&&${java_float_types}.contains(it.jsonType().name())]=groovy:"@float("+it.ann("javax.validation.constraints.Min")+")"

# DecimalMax+DecimalMin
field.mock[groovy:it.hasAnn("javax.validation.constraints.DecimalMax")&&it.hasAnn("javax.validation.constraints.DecimalMin")&&${java_integer_types}.contains(it.jsonType().name())]=groovy:"@integer("+it.ann("javax.validation.constraints.DecimalMin")+","+it.ann("javax.validation.constraints.DecimalMax")+")"
field.mock[groovy:it.hasAnn("javax.validation.constraints.DecimalMax")&&it.hasAnn("javax.validation.constraints.DecimalMin")&&${java_float_types}.contains(it.jsonType().name())]=groovy:"@float("+it.ann("javax.validation.constraints.DecimalMin")+","+it.ann("javax.validation.constraints.DecimalMax")+",${float_dmin})"

# DecimalMax|DecimalMin
field.mock[groovy:it.hasAnn("javax.validation.constraints.DecimalMax")&&${java_integer_types}.contains(it.jsonType().name())]=groovy:"@integer(0,"+it.ann("javax.validation.constraints.DecimalMax")+")"
field.mock[groovy:it.hasAnn("javax.validation.constraints.DecimalMin")&&${java_integer_types}.contains(it.jsonType().name())]=groovy:"@integer("+it.ann("javax.validation.constraints.DecimalMin")+")"
field.mock[groovy:it.hasAnn("javax.validation.constraints.DecimalMax")&&${java_float_types}.contains(it.jsonType().name())]=groovy:"@float(0,"+it.ann("javax.validation.constraints.DecimalMax")+",${float_dmin})"
field.mock[groovy:it.hasAnn("javax.validation.constraints.DecimalMin")&&${java_float_types}.contains(it.jsonType().name())]=groovy:"@float("+it.ann("javax.validation.constraints.DecimalMin")+",${float_dmin})"

###set resolveMulti = error
85 changes: 85 additions & 0 deletions third/swagger.advanced.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# swagger-advanced

# resolve the parameters from ApiImplicitParam
resolve_api_implicit_param=```
def desc = map.value
def allowableValues = map.allowableValues
if(tool.notNullOrBlank(allowableValues)){
desc = desc + "\n允许的值:" + allowableValues
}

def paramType = map.paramType ?: "query"
def required = map.required?:true
if(paramType==""||paramType=="query"){
api.setParam(map.name,map.defaultValue,required,desc)
}else if(paramType=="form"){
api.setFormParam(map.name,map.defaultValue,required,desc)
}else if(paramType=="path"){
api.setPathParam(map.name,map.defaultValue,desc)
}else if(paramType=="header"){
api.setHeader(map.name,map.defaultValue,required,desc)
}
```

# extract map from ApiImplicitParam
export.after[@io.swagger.annotations.ApiImplicitParam]=groovy:```
def map = it.annMap("io.swagger.annotations.ApiImplicitParam")
${resolve_api_implicit_param}
```

# extract maps from ApiImplicitParams
export.after[@io.swagger.annotations.ApiImplicitParams]=groovy:```
def maps = it.annMap("io.swagger.annotations.ApiImplicitParams")
for(map in maps.value){
${resolve_api_implicit_param}
}
```


# Resolve the response from `APIResponse` into the API description
resolve_api_response=```
def desc = "\\n\\n***响应码***:"+map.code+"\\n\\n"
desc += map.message+"\\n\\n"
def response = map.response
if(response!=null){
def responseClass = helper.findClass(response)
if(responseClass!=null){
desc += "响应内容:\\n```json\\n" + responseClass.toJson(true) + "\\n```\\n"
}
}
api.appendDesc(desc)
```


# Resolve `APIResponse` into the API description
export.after[@io.swagger.annotations.ApiResponse]=groovy:```
def map = it.annMap("io.swagger.annotations.ApiResponse")
${resolve_api_response}
```

# Resolve `APIResponses` into the API description
export.after[@io.swagger.annotations.ApiResponses]=groovy:```
def maps = it.annMap("io.swagger.annotations.ApiResponses")
for(map in maps.value){
${resolve_api_response}
}
```


# Resolve one `APIResponse` into the API description
export.after[@io.swagger.annotations.ApiResponse]=groovy:```
def map = it.annMap("io.swagger.annotations.ApiResponse")

api.setResponseCode(map.code?:200)
api.appendResponseBodyDesc(map.message)
def responseHeaders = map.responseHeaders
if(responseHeaders!=null){
for(responseHeader in responseHeaders) {
api.setResponseHeader(responseHeader.name,"",true,responseHeader.description)
}
}
def response = map.response
if(response!=null){
api.setResponseBodyClass(response)
}
```
25 changes: 25 additions & 0 deletions third/swagger.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# swagger

# ApiParam
[email protected]#value
[email protected]#defaultValue
[email protected]#required
[email protected]#hidden

# Api
[email protected]#value

# ApiModel
class.doc=io.swagger.annotations.ApiModel#value
class.doc=io.swagger.annotations.ApiModel#description

# ApiModelProperty
[email protected]#name
[email protected]#hidden
[email protected]#value
[email protected]#notes
[email protected]#required

# ApiOperation
[email protected]#value
[email protected]#tags

0 comments on commit 6b799b0

Please sign in to comment.