以前書いたDropbox Java API で遊ぶ(移転前URL)にリンクを張っていただいている記事があった。
getFileStreamメソッド付近でパラメータの「rev」で検索すると、上図にもわかるようにヒットしない(青色マークされない)=実装されてない!ずこーー 試行錯誤ログ: DropboxのJava版APIで過去リビジョンのファイルを取得できない現象について
なんと…その通り DropboxAPI#getFile(), DropboxAPI#getFileStream() の引数 rev は内部で使用されておらず、
リビジョンを指定して過去のファイルをダウンロードできないようだ。
どうにしかして今の SDK でもリビジョンを指定してダウンロードできるようワークアラウンドコードを書けないものか。
Dropbox - REST API Reference /files (GET) を見てみたところ、rev パラメータに渡してやれば良いようだ。
リフレクションで何やかんや強引にやればできなくもないかな…と DropboxAPI クラスを眺めていたところ、
getFileStream() メソッドは public だし、中で使われているメソッドや変数も public か protected なので
わりと素直に実装できるかも。
ということで、getFileStream() だけオーバーライドさせた DropboxAPI クラスのサブクラスを作り実現してみた。
DropboxAPI の代わりに上記クラスを使用して過去のファイルをダウンロード出来ることを確認。
しかし、やってみて思ったけど、DropboxAPI クラスはサブクラスに継承させることを前提に作られているような気がするなあ。

Copyright© 2011-2021 Shunsuke Otani All Right Reserved .