1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

新闻 thrift-generator 0.1 发布,通过 Java 接口生成 Thrift 文件工具 下载

本帖由 漂亮的石头2017-12-11 发布。版面名称:软件资讯

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

    注册:
    2012-02-10
    帖子:
    488,074
    赞:
    47
    这是一个通过java的接口生成thrift文件的工具, 这个代码库的时间悠久, 已经有5年历史了, 当时写这个工具主要两个目的:


    • 没接触thrift,但是希望使用thrift的用户,可以便于新用户的理解


    • 之前用的是rmi,之后想转成thrift的用户

    具体使用可以参考https://github.com/hongliuliao/thrift-generator

    本次发布主要更新了以下几个功能


    1. 支持接口中的注释


    2. 支持自定义异常


    3. 保证生成的thrift方法和java文件中定义的方法顺序一致(不使用反射)

    修复bug:


    1. 修复list<enum> bug


    2. 修复double类型 bug

    感谢: imxuelei 反馈的问题及建议

    例子:

    public interface ICommonUserService {

    public User login(int id, String name);

    public User getUserById(long id);

    public boolean saveUser(User user);

    public List getUserIds(long id);

    public Map getUserByIds(List ids);

    public Map> getUsersByName(List names);

    public Map> getGroupUsers(List names, List userList, List lns, long ll);

    public List testCase1(Map num1, List num2, List num3, long num4, String num5);
    }
    public class ThriftFileBuilderTest {

    private ThriftFileBuilder fileBuilder = new ThriftFileBuilder();

    @test
    public void toOutputstream() throws Exception {
    this.fileBuilder.buildToOutputStream(ICommonUserService.class, System.out);
    }

    }

    执行代码:

    mvn test -Dtest=com.sohu.thrift.generator.builder.ThriftFileBuilderTest

    之后控制台输出如下:

    namespace java com.sohu.thrift.generator.test.thrift

    enum Status {
    NORMAL = 0,
    BLOCKED = 1
    }

    struct Account {
    1:i32 id,
    2:string name
    }
    struct User {
    1:i32 id,
    2:string name,
    3:bool sex,
    4:Status status,
    5:list ids,
    6:Account account
    }

    service ICommonUserService {
    User login(1:i32 arg0,2:string arg1),
    map> getUsersByName(1:list arg0),
    bool saveUser(1:User arg0),
    map getUserByIds(1:list arg0),
    list getUserIds(1:i64 arg0),
    map> getGroupUsers(1:list arg0,2:list arg1,3:list arg2,4:i64 arg3),
    User getUserById(1:i64 arg0),
    list testCase1(1:map arg0,2:list arg1,3:list arg2,4:i64 arg3,5:string arg4)
    }
    thrift-generator 0.1 发布,通过 Java 接口生成 Thrift 文件工具下载地址
     
正在加载...