読者です 読者をやめる 読者になる 読者になる

tohokuaikiのチラシの裏

技術的ネタとか。

Confluenceのプラグイン開発を承ります。ご連絡はこちらのホームページからお願いいたします。

Confluenceの添付ファイルがどうやって保存されるかわからなかったので調べた件

confluence

メモ書き

ファイルパスを作成するクラスを使った概観

com.atlassian.confluence.pages.persistence.dao.HierarchicalFileSystemAttachmentDataDao
のcreateDirectoryHierarchy()を追ってみると、IdMultiPartHashGeneratorクラスのgenerateで行ってる。
で、最後に添付ファイルのIDを付けてる。結局

File spaceルート = createDirectoryHierarchy(添付ルートディレクトリ, spaceId);
File ページルート = createDirectoryHierarchy(spaceルート, pageId);
File 添付ファイルディレクトリ = new File(ページルート, attachmentId);

みたいな感じ。

で、createDirectoryHierarchy()を自前でやるには

IdMultiPartHashGeneratorクラスのgenerateを使えるようにする。
このクラスは
confluence-project/confluence-core/confluence/src/etc/java/attachmentSubsystemContext.xml
を見るとbeanで作れる。

ん~~~~。Confluence5.5でのクラスの移動。

5.5以降では
com.atlassian.confluence.pages.persistence.dao.IdMultiPartHashGenerator
が非推奨になり、
com.atlassian.confluence.pages.persistence.dao.filesystem.IdMultiPartHashGenerator
を使ってくれという事になっている。

ただ、5.6.1のソースを見ると
confluence-project/confluence-core/confluence/src/etc/java/attachmentSubsystemContext.xml

    <bean id="idHashGenerator" class="com.atlassian.confluence.pages.persistence.dao.IdMultiPartHashGenerator">

となっているので、とりあえず非推奨の方を使っておく。

この辺りは、実は
5.4までは
com.atlassian.confluence.pages.persistence.dao.HierarchicalFileSystemAttachmentDataDao
5.5からは
com.atlassian.confluence.pages.persistence.dao.filesystem.FileSystemAttachmentDataDao
と、使うFileSystemAttachmentDataDaoが違ってくるところに依ってるのだけど、どうもidHashGeneratorまでは統合されてないっぽいので。。。