visitFieldType()

in lib/generator.js [776:826]


  visitFieldType(value, node, modelName) {
    if (value.fieldType === 'array') {
      // basic type
      this.emit(`java.util.List<`);
      if (value.fieldItemType.tag === 8) {
        this.emit(`${collectionType(_type(value.fieldItemType.lexeme))}`);
      } else if (value.fieldItemType.type === 'map') {
        this.visitType(value.fieldItemType);
      } else if (value.fieldItemType.fieldType === 'array') {
        this.visitFieldType(value.fieldItemType, node, modelName);
      } else {
        if (node.fieldValue.itemType) {
          this.emit(_subModelName(node.fieldValue.itemType, this.conflictModelNameMap, this.allModleNameMap, this.enableMinimizeModelName));
        } else if (value.fieldItemType) {
          this.emit(`${_name(value.fieldItemType)}`);
        } else {
          this.emit(`${_name(node.fieldValue.fieldItemType)}`);
        }
      }
      this.emit(`>`);
    } else if (value.fieldType === 'map') {
      this.emit(`java.util.Map<${collectionType(_type(value.keyType.lexeme))}, `);
      if (value.valueType.type) {
        this.visitType(value.valueType);
      } else {
        this.emit(`${collectionType(_type(value.valueType.lexeme))}`);
      }
      this.emit('>');
    } else if (typeof value.fieldType === 'string') {
      this.emit(`${_type(value.fieldType)}`);
    } else if (value.fieldType) {
      if (value.fieldType.idType && value.fieldType.idType === 'module') {
        var className = this.imports[`${_type(value.fieldType.lexeme)}`].className || 'Client';
        this.emit(this.imports[`${_type(value.fieldType.lexeme)}`].package);
        this.emit(`.${className}`);
      } else if (value.fieldType.idType && value.fieldType.idType === 'typedef') {
        this.emit(this.typeRelover(value.fieldType));
      } else if (value.fieldType.type && value.fieldType.type === 'moduleModel') {
        this.emit(this.imports[_name(value.fieldType.path[0])].package);
        this.emit(`.models.${_name(value.fieldType.path[1])}`);
      } else if (value.fieldType.type && value.fieldType.type === 'moduleTypedef') {
        for (let i = 1; i < value.fieldType.path.length; i++) {
          this.emit(this.typeRelover(value.fieldType.path[i], value.fieldType.path[0]));
        }
      } else {
        this.emit(`${_type(value.fieldType.lexeme)}`);
      }
    } else {
      this.emit(_subModelName([modelName, _name(node.fieldName)].join('.'), this.conflictModelNameMap, this.allModleNameMap, this.enableMinimizeModelName));
    }
  }