package org.jsondoc.core.scanner.builder; import java.lang.annotation.Annotation; import java.lang.reflect.Method; import java.util.LinkedHashSet; import java.util.Set; import org.jsondoc.core.annotation.ApiParams; import org.jsondoc.core.annotation.ApiPathParam; import org.jsondoc.core.pojo.ApiParamDoc; import org.jsondoc.core.pojo.ApiParamType; import org.jsondoc.core.util.JSONDocType; import org.jsondoc.core.util.JSONDocTypeBuilder; public class JSONDocApiPathParameterDocBuilder { public static Set<ApiParamDoc> build(Method method) { Set<ApiParamDoc> docs = new LinkedHashSet<ApiParamDoc>(); if (method.isAnnotationPresent(ApiParams.class)) { for (ApiPathParam apiParam : method.getAnnotation(ApiParams.class).pathparams()) { ApiParamDoc apiParamDoc = ApiParamDoc.buildFromAnnotation(apiParam, JSONDocTypeBuilder.build(new JSONDocType(), apiParam.clazz(), apiParam.clazz()), ApiParamType.PATH); docs.add(apiParamDoc); } } Annotation[][] parametersAnnotations = method.getParameterAnnotations(); for (int i = 0; i < parametersAnnotations.length; i++) { for (int j = 0; j < parametersAnnotations[i].length; j++) { if (parametersAnnotations[i][j] instanceof ApiPathParam) { ApiPathParam annotation = (ApiPathParam) parametersAnnotations[i][j]; ApiParamDoc apiParamDoc = ApiParamDoc.buildFromAnnotation(annotation, JSONDocTypeBuilder.build(new JSONDocType(), method.getParameterTypes()[i], method.getGenericParameterTypes()[i]), ApiParamType.PATH); docs.add(apiParamDoc); } } } return docs; } }