ServletやXWorkのActionからConfluenceのページ情報やスペース情報などを取得したい場合には、各種Managerを使う。
このあたりの方法が、Accessing Confluence Components from Plugin Modules - Confluence Development - Atlassian Developer Documentationにまとめられている。上記のページにはどのようなManagerがあるかも一覧になっている。
XWorkのActionクラスや、ServletクラスにそれらのManagerをinjectionするには2つ方法があるらしい。
setterによる方法(プラグインVersion1の頃使われた)
使いたいManagerのsetterを定義しておく。LabelManagerが使いたい場合は、
private LabelManager labelManager; public void setLabelManager(LabelManager labelManager) { this.labelManager = labelManager; }
というフィールドとsetternを用意しておく。
コンストラクタによる方法(プラグインVersion2以降)
実際に調べたところ、XWorkのActionクラスや、Servletクラスは可変コンストラクタを取っているらしい。
ということで、コンストラクタに欲しいManagerを引数として追加してやればいい。
public MypostServlet(SpaceManager spaceManager, PageManager pageManager, ContentPropertyManager contentPropertyManager, UserManager userManager, LoginUriProvider loginUriProvider, BandanaManager bandanaManager, TemplateRenderer renderer) { this.spaceManager = spaceManager; this.pageManager = pageManager; this.contentPropertyManager = contentPropertyManager; this.userManager = userManager; this.loginUriProvider = loginUriProvider; this.bandanaManager = bandanaManager; this.renderer = renderer; }
とかてんこ盛りにできている。