好久沒寫博客了,主要是這一年技術沒啥長進都打雜了,還有就是生活瑣事越來越多,人也越來越懶了…… 之前項目中用到了Protobuf,然后測試發現這玩意不好測,總不能每次定個協議或者改下都要編譯Java代碼吧。於是我這邊寫了簡單的工具,動態的解析PB文件。效果如下:
“選擇請求協議”和“選擇響應協議”就是選擇定義的PB,比如下面這個文件:
package perf.pb;
option optimize_for = LITE_RUNTIME; message Entry { required string key = 1; optional bytes value = 2; repeated Entry extinfo = 3; } message Request { repeated Entry entry = 1; } message Response { repeated Entry entry = 1; }
另外工具支持一些簡單的功能,比如“保存”,“另存為”(將PB文件和數據打包在一起),生成PB二進制的數據等:
我們用的http,但核心代碼就是動態解析PB文件和將數據綁定到JTree上,有需要的朋友可以拿源碼改下,因為急着實現功能,所以代碼很亂。
關於PB文件格式有幾點:
1)支持import,工具會自動處理引用;
2)支持repeated
3)支持默認值,包括枚舉的默認值
4)必須要指定package
5)不支持message嵌套
還有如果運行有問題,看下你Java環境指向的jdk或jre的lib目錄下有沒有tools.jar,沒有的話從別的目錄拷過來就可以了。
GitHub地址:https://github.com/zhanjindong/protobuf-tool
其中動態解析用的是百度的jprotobuf,但是官方的版本不支持類似上面“Entry”嵌套“Entry”的格式,還有不支持repeated,我fork了一個版本:https://github.com/zhanjindong/jprotobuf