From 9e51fdf780be4dde5b720b89618739b0024001c3 Mon Sep 17 00:00:00 2001 From: hankting Date: Fri, 24 May 2019 11:55:35 +0800 Subject: [PATCH] support adding validation annotation to list of object in query parameter (#70) --- cmd/rdl-gen-parsec-java-server/main.go | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/cmd/rdl-gen-parsec-java-server/main.go b/cmd/rdl-gen-parsec-java-server/main.go index 127ec33..eb3a0ed 100644 --- a/cmd/rdl-gen-parsec-java-server/main.go +++ b/cmd/rdl-gen-parsec-java-server/main.go @@ -1038,7 +1038,14 @@ func (gen *javaServerGenerator) handlerSignature(r *rdl.Resource) string { } else { pdecl = gen.extendedValueAnnotation(v.Annotations) } - ptype := gen.javaType(reg, v.Type, true, "", "") + + ptype := "" + bt := reg.FindType(v.Type) + if v.QueryParam != "" && reg.BaseType(bt) == rdl.BaseTypeArray { + ptype = gen.generateStructFieldType(v.Type, r) + } else { + ptype = gen.javaType(reg, v.Type, true, "", "") + } params = append(params, "\n "+pdecl+ptype+" "+javaName(k)) } spec := "" @@ -1292,3 +1299,14 @@ func javaName(name rdl.Identifier) string { return string(name) } } + +func (gen *javaServerGenerator) generateStructFieldType(rdlType rdl.TypeRef, r *rdl.Resource) string { + t := gen.registry.FindType(rdlType) + subItems := t.ArrayTypeDef.Items + annotations := utils.GetUserDefinedTypeAnnotations(subItems, gen.schema.Types) + pdecl := "" + if len(annotations) > 0 { + pdecl = gen.extendedValueAnnotation(annotations) + } + return "List<" + pdecl + gen.javaType(gen.registry, subItems, true, "", "") + ">" +}