use of org.apache.servicecomb.swagger.invocation.arguments.ArgumentsMapper in project java-chassis by ServiceComb.
the class TestSpringmvcV2V2 method addBody_addWrapper.
@Test
public void addBody_addWrapper() {
SwaggerEnvironment environment = new SwaggerEnvironment();
Swagger swagger = SwaggerGenerator.generate(SpringmvcAddWrapperV2.class);
SwaggerConsumer swaggerConsumer = environment.createConsumer(ConsumerAddBodyV2.class, swagger);
ArgumentsMapper mapper = swaggerConsumer.findOperation("add").getArgumentsMapper();
Map<String, Object> arguments = new HashMap<>();
arguments.put("addBody", new AddWrapperV2(1, 2, 3));
SwaggerInvocation invocation = new SwaggerInvocation();
Map<String, Object> result = mapper.invocationArgumentToSwaggerArguments(invocation, arguments);
Assert.assertEquals(3, result.size());
Assert.assertEquals(1, (int) result.get("x"));
Assert.assertEquals(2, (int) result.get("y"));
Assert.assertEquals(3, (int) result.get("x-z"));
}
use of org.apache.servicecomb.swagger.invocation.arguments.ArgumentsMapper in project java-chassis by ServiceComb.
the class SwaggerEnvironment method createConsumer.
public SwaggerConsumer createConsumer(Class<?> consumerIntf, Swagger swagger) {
Map<Class<?>, ContextArgumentMapperFactory> contextFactorys = SPIServiceUtils.getOrLoadSortedService(ConsumerContextArgumentMapperFactory.class).stream().collect(Collectors.toMap(ConsumerContextArgumentMapperFactory::getContextClass, Function.identity()));
ResponseMapperFactorys<ConsumerResponseMapper> consumerResponseMapperFactorys = new ResponseMapperFactorys<>(ConsumerResponseMapperFactory.class);
SwaggerOperations swaggerOperations = new SwaggerOperations(swagger);
SwaggerConsumer consumer = new SwaggerConsumer();
consumer.setConsumerIntf(consumerIntf);
for (Method consumerMethod : MethodUtils.findSwaggerMethods(consumerIntf)) {
String operationId = findOperationId(consumerMethod);
SwaggerOperation swaggerOperation = swaggerOperations.findOperation(operationId);
if (swaggerOperation == null) {
// consumer method set is bigger than contract, it's invalid
// but we need to support consumer upgrade before producer, so only log and ignore it.
LOGGER.warn("consumer method {}:{} not exist in contract.", consumerIntf.getName(), consumerMethod.getName());
continue;
}
ConsumerArgumentsMapperCreator creator = new ConsumerArgumentsMapperCreator(Json.mapper().getSerializationConfig(), contextFactorys, consumerIntf, consumerMethod, swaggerOperation);
ArgumentsMapper argsMapper = creator.createArgumentsMapper();
ConsumerResponseMapper responseMapper = consumerResponseMapperFactorys.createResponseMapper(consumerMethod.getGenericReturnType());
SwaggerConsumerOperation op = new SwaggerConsumerOperation();
op.setConsumerClass(consumerIntf);
op.setConsumerMethod(consumerMethod);
op.setSwaggerOperation(swaggerOperation);
op.setArgumentsMapper(argsMapper);
op.setResponseMapper(responseMapper);
consumer.addOperation(op);
}
return consumer;
}
use of org.apache.servicecomb.swagger.invocation.arguments.ArgumentsMapper in project java-chassis by ServiceComb.
the class TestJaxrsV1V1 method should_mapper_consumer_body_to_swagger_body.
@Test
public void should_mapper_consumer_body_to_swagger_body() {
SwaggerEnvironment environment = new SwaggerEnvironment();
Swagger swagger = SwaggerGenerator.generate(JaxrsAddBodyV1.class);
SwaggerConsumer swaggerConsumer = environment.createConsumer(ConsumerAddBodyV1.class, swagger);
ArgumentsMapper mapper = swaggerConsumer.findOperation("add").getArgumentsMapper();
Map<String, Object> arguments = new HashMap<>();
arguments.put("addBody", new AddWrapperV1(1, 2));
SwaggerInvocation invocation = new SwaggerInvocation();
Map<String, Object> result = mapper.invocationArgumentToSwaggerArguments(invocation, arguments);
Assert.assertSame(result.get("addBody"), arguments.get("addBody"));
}
use of org.apache.servicecomb.swagger.invocation.arguments.ArgumentsMapper in project java-chassis by ServiceComb.
the class TestJaxrsV1V1 method should_mapper_consumer_multi_args_to_swagger_multi_args_with_diff_order.
@Test
public void should_mapper_consumer_multi_args_to_swagger_multi_args_with_diff_order() {
SwaggerEnvironment environment = new SwaggerEnvironment();
Swagger swagger = SwaggerGenerator.generate(JaxrsAddV1.class);
SwaggerConsumer swaggerConsumer = environment.createConsumer(ConsumerAddV1_diff_order.class, swagger);
ArgumentsMapper mapper = swaggerConsumer.findOperation("add").getArgumentsMapper();
Map<String, Object> arguments = new HashMap<>();
arguments.put("x", 1);
arguments.put("y", 2);
SwaggerInvocation invocation = new SwaggerInvocation();
Map<String, Object> result = mapper.invocationArgumentToSwaggerArguments(invocation, arguments);
Assert.assertEquals(2, result.size());
Assert.assertEquals(1, (int) result.get("x"));
Assert.assertEquals(2, (int) result.get("y"));
}
use of org.apache.servicecomb.swagger.invocation.arguments.ArgumentsMapper in project java-chassis by ServiceComb.
the class TestJaxrsV1V1 method should_mapper_consumer_wrapped_body_to_swagger_multi_args_gen_by_BeanParam.
@Test
public void should_mapper_consumer_wrapped_body_to_swagger_multi_args_gen_by_BeanParam() {
SwaggerEnvironment environment = new SwaggerEnvironment();
Swagger swagger = SwaggerGenerator.generate(JaxrsAddBeanParamV1.class);
SwaggerConsumer swaggerConsumer = environment.createConsumer(ConsumerAddBodyV1.class, swagger);
ArgumentsMapper mapper = swaggerConsumer.findOperation("add").getArgumentsMapper();
Map<String, Object> arguments = new HashMap<>();
arguments.put("addBody", new AddWrapperV1(1, 2));
SwaggerInvocation invocation = new SwaggerInvocation();
Map<String, Object> result = mapper.invocationArgumentToSwaggerArguments(invocation, arguments);
Assert.assertEquals(2, result.size());
Assert.assertEquals(1, (int) result.get("x"));
Assert.assertEquals(2, (int) result.get("y"));
}
Aggregations