use of org.apache.servicecomb.swagger.generator.ParameterGenerator in project incubator-servicecomb-java-chassis by apache.
the class AbstractOperationGenerator method scanMethodParameters.
protected void scanMethodParameters() {
initParameterGenerators();
Set<String> names = new HashSet<>();
for (ParameterGenerator parameterGenerator : parameterGenerators) {
scanMethodParameter(parameterGenerator);
if (!names.add(parameterGenerator.getParameterName())) {
throw new IllegalStateException(String.format("not support duplicated parameter, name=%s.", parameterGenerator.getParameterName()));
}
swaggerOperation.addParameter(parameterGenerator.getGeneratedParameter());
}
}
use of org.apache.servicecomb.swagger.generator.ParameterGenerator in project incubator-servicecomb-java-chassis by apache.
the class PojoOperationGenerator method wrapParametersToBody.
private void wrapParametersToBody(List<ParameterGenerator> bodyFields) {
String simpleRef = MethodUtils.findSwaggerMethodName(method) + "Body";
bodyModel = new ModelImpl();
bodyModel.setType(ModelImpl.OBJECT);
for (ParameterGenerator parameterGenerator : bodyFields) {
// to collect all information by swagger mechanism
// must have a parameter type
// but all these parameters will be wrap to be one body parameter, their parameter type must be null
// so we first set to be BODY, after collected, set back to be null
parameterGenerator.setHttpParameterType(HttpParameterType.BODY);
scanMethodParameter(parameterGenerator);
Property property = ModelConverters.getInstance().readAsProperty(parameterGenerator.getGenericType());
property.setDescription(parameterGenerator.getGeneratedParameter().getDescription());
bodyModel.addProperty(parameterGenerator.getParameterName(), property);
parameterGenerator.setHttpParameterType(null);
}
swagger.addDefinition(simpleRef, bodyModel);
SwaggerGeneratorFeature feature = swaggerGenerator.getSwaggerGeneratorFeature();
// if not care for this, then can just delete all logic about EXT_JAVA_CLASS/EXT_JAVA_INTF
if (feature.isExtJavaClassInVendor() && bodyFields.size() > 1 && StringUtils.isNotEmpty(feature.getPackageName())) {
bodyModel.getVendorExtensions().put(SwaggerConst.EXT_JAVA_CLASS, feature.getPackageName() + "." + simpleRef);
}
RefModel refModel = new RefModel();
refModel.setReference("#/definitions/" + simpleRef);
bodyParameter = new BodyParameter();
bodyParameter.name(simpleRef);
bodyParameter.setSchema(refModel);
bodyParameter.setName(parameterGenerators.size() == 1 ? parameterGenerators.get(0).getParameterName() : simpleRef);
List<ParameterGenerator> newParameterGenerators = new ArrayList<>();
newParameterGenerators.add(new ParameterGenerator(bodyParameter.getName(), Collections.emptyList(), null, HttpParameterType.BODY, bodyParameter));
parameterGenerators.stream().filter(p -> p.getHttpParameterType() != null).forEach(p -> newParameterGenerators.add(p));
parameterGenerators = newParameterGenerators;
}
Aggregations