visitReturn()

in lib/common_generator.js [524:587]


  visitReturn(ast, isAsync, level) {
    assert.equal(ast.type, 'return');
    let property = '';
    if (ast.expr && ast.expr.left && ast.expr.left.propertyPath) {
      property = ast.expr.left.propertyPath.pop();
    }
    if (ast.needCast &&
      (_name(property) === '_do' || _name(property) === 'doAsyncRequestBody'
        || _name(property) === 'doRequestBody' || _name(property) === 'doResponseHandler')) {
      const args = ast.expr.args;
      this.emit(`TeaRequest teaRequest = REQUEST.copy()`, level);
      this.emit('.setStyle(RequestStyle.');
      this.emit(`${_string(args[0].value).toUpperCase()}`);
      this.emit(').setAction("');
      this.emit(`${_string(args[1].value)}`);
      this.emit('").setMethod(HttpMethod.');
      this.emit(`${_string(args[2].value).toUpperCase()}`);
      this.emit(').setPathRegex("');
      this.emit(`${_string(args[3].value)}`);
      this.emit('").setBodyType(BodyType.');
      this.emit(`${_string(args[4].value).toUpperCase()}`);
      this.emit(').setBodyIsForm(');
      this.emit(`${args[5].value}`);
      if (typeof args[6].value.string !== 'undefined' && args[6].value.string !== '') {
        this.emit(').setReqBodyType(BodyType.');
        this.emit(`${_string(args[6].value).toUpperCase()}`);
      }
      this.emitln(`).formModel(${_name(args[7].id)});`);
      if (args[8] && _name(args[8].id) === 'requestBody') {
        this.emit(`ClientExecutionParams params = new ClientExecutionParams().withInput(${_name(args[7].id)}).withRequest(teaRequest).withRequestBody(${_name(args[8].id)}).withOutput(`, level);
      } else if (args[8] && _name(args[8].id) === 'responseHandler') {
        this.emit(`ClientExecutionParams params = new ClientExecutionParams().withInput(${_name(args[7].id)}).withRequest(teaRequest).withResponseHandler(${_name(args[8].id)}).withOutput(`, level);
      } else {
        this.emit(`ClientExecutionParams params = new ClientExecutionParams().withInput(${_name(args[7].id)}).withRequest(teaRequest).withOutput(`, level);
      }
      this.visitType(ast.expectedType);
      this.emitln('.create());');
      this.emit('return ', level);
      var id = _name(ast.expr.left.id);
      if (id.indexOf('@') > -1) {
        id = `this.${id.substr(1)}`;
      }
      if (_name(property) === 'doResponseHandler') {
        this.emitln(`${id}.execute(params)`);
        this.emit('        .thenCompose((output) -> CompletableFuture.completedFuture(responseHandler.transform((', level);
        this.visitType(ast.expectedType);
        this.emit(')output)))');
      } else {
        this.emit(`${id}.execute(params)`);
      }
      if (!isAsync) {
        this.emit(`.join()`);
      }
      this.emit(`;\n`);
      return;
    }
    this.emit('return ', level);
    if (!ast.expr) {
      this.emit(';\n');
      return;
    }
    this.visitExpr(ast.expr, level);
    this.emit(';\n');
  }