tohokuaikiのチラシの裏

技術的ネタとか。

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

confluence

Confluenceのアドオンで別のアドオンのComponentを使う場合の注意

結論から言うと、その別のアドオンを事前にインストールしてないとインストールに失敗しますよということ。 お互いのComponentを循環参照するようなアドオンは作れないってことですね。 こんな簡単なことに気づかずにはまりました。 IDE上ではpom.xmlに <dependency> <groupId>jp.</groupid></dependency>…

ORMとしてActiveObjectsを使用する

Atlassianのデータを保存する場所といえば、BandanaでありContentPropertyManagerである。 tohokuaiki.hateblo.jp が、JIRA4.4からConfluence4.3からは特に意識しなくてもActiveObjectsが使えるようになった。こちらの方が早くて軽くて大容量でそのプラグイ…

pom.xmlで依存性jarをローカルに置く方法

pom.xmlに依存性のあるjarを設置する ${basedir}はpom.xmlのある位置なので、以下の記述をdependenciesに設置する <dependency> <groupId>jp.co.example.confluence.plugins</groupId> <artifactId>example</artifactId> <version>1.00.01</version> <scope>system</scope> <type>jar</type> <systemPath>${basedir}\example-1.00.01.jar</systemPath> </dependency>

ConfluenceのREST APIを作ってみる - POST編

GETメソッドの場合は引数を@QueryParamで受け取ればなんてことなかったのだけど、POSTの場合はちょっと違った。 なお、通信はXMLじゃなくてすべてJSONを使った場合。 AtlassianのDocumentでいうとこの辺りが参考になる。使わなかったけど。 Developing a RES…

Confluenceのマクロモジュールを作成するときのi18nについて

マクロパラメータとかの名称をi18nにしたいなーって思ったときに今までやったことが無いことに気が付いた。 元資料 Including Information in your Macro for the Macro Browser - Atlassian Developers の最後の方によると、自動的にi18nの定義を見てくれる…

Atlassian SDKを6.2.2にバージョンアップしたら、Confluence5.9.2のバージョン指定したのに5.8.8になってしまって困った件

SDK 6.2.2が出てた 年末に出てたらしい。 https://sdkrepo.atlassian.com/win-signed/ ということで、6.2.2にしてサンプルプロジェクトを作ってみた。気になるところはpom.xmlのここ <properties> <confluence.version>5.9.3</confluence.version> <confluence.data.version>5.7.4</confluence.data.version> <amps.version>6.2.1</amps.version> <plugin.testrunner.version>1.2…</plugin.testrunner.version></properties>

Atlassian ConnectのConnect cookbookをやってみる。

ということで。これ。 https://developer.atlassian.com/static/connect/docs/latest/guides/connect-cookbook.html all.jsを読み込む方法 Getting startでは、直接描いたall.jsのScriptタグ <script src="//localhost:1990/confluence/atlassian-connect/all.js" type="text/javascript"></script> を動的に読み込む方法。ただし、サーバサイドで何かするとかいう…

Atlassian Cloud SDKでHelloworldを作ってみる

チュートリアルの Getting startedを行う。今回作るのは、サーバ版アドオンで言う所のサーブレットモジュールである。 なお、Windows8ですべてローカルで賄うものとする。 local開発用Confluenceを起動を以前のエントリ通り行っているものとする。 HTTPDを用…

Atlassian SDKの5.1.11が微妙。。。

なんか5.3.1の実機にインストールしてみたところエラーでる。 2015-08-27 17:16:01,408 ERROR [http-8191-6] [plugin.descriptor.web.ConfluenceWebInterfaceManager] getHtml Failed to render web panel: com.atlassian.plugin.web.descriptors.DefaultWeb…

Atlassian Cloud用のプラグインを作成する

Atlassian CloudのアドオンはJavaアプリではないので作り方が全く違う。ということで、Getting start. https://developer.atlassian.com/static/connect/docs/latest/guides/getting-started.html とりあえず、デモの起動まで Getting startでは、プレーンな…

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

メモ書き ファイルパスを作成するクラスを使った概観 com.atlassian.confluence.pages.persistence.dao.HierarchicalFileSystemAttachmentDataDao のcreateDirectoryHierarchy()を追ってみると、IdMultiPartHashGeneratorクラスのgenerateで行ってる。 で、…

Atlassian Licenseの実装周辺について

Atlassianマーケットプレイスで有料出品するにはライセンス認証が必須になる。 Paid via Atlassianならライセンスのパッケージもあるし、集金周りもやってくれる*1。Confluenceの場合でやってみた。参考ドキュメント Tutorial: Adding licensing support to …

Confluenceの自分自身のPluginUninstallEventをキャッチする方法

EventLitenerの使い方自体はこちらに過去書きましたが。。。 Confluenceのプラグイン開発で、Eventを使う方法(Annotation Based) - tohokuaikiのチラシの裏tohokuaiki.hateblo.jp プラグインの自分自身のアンインストール(あるいは無効化)のEventはキャッ…

Atlassian Cloud用のプラグインを書くために・・・。

Atlassian Cloud Atlassianはオンプレミス型のサービス展開をしていたのだけど、数年前からCloud型のサインアップだけで使えるシステムを提供している。ハード的な資源は共有しながらも、JIRAやConfluenceなどは1つずつのインスタンスとして動作しているので…

開発するConfluenceのバージョンとJavaのバージョンとAtlassian SDKのバージョンとYシャツとわたし。

これがなんか微妙に動いた動かなかったりで、環境変数変えたりSDK変えたりしてるんです。SDKの過去バージョンはここから。 Atlassian Plugin SDK - Windows - Version history | Atlassian Marketplaceここには、最新と思われるSDKもある。 Index of /groups…

ConfluenceのVelocityテンプレートで使える変数とか

覚書 設定に従った日付表記 $dateFormatter.formatDateTime($sampleDate) プラグインの情報を取りたい時 XWorkのAction内だと Plugin plugin = this.pluginAccessor.getPlugin("プラグインキー"); plugin.getParameter("ここにatlassian-plugin.xml の plugi…

Confluenceで自動実行スケジュール化されたプラグインを作る

タスクを決められたタイミングで自動実行するプラグインを作ります。管理画面の「スケジュール ジョブ」から実行できたり無効化できたりするやつです。 以下のドキュメントを参考にしました。 Trigger Module - Atlassian Developers Job Module - Atlassian…

Confluenceのタスクスケジューリング設定における時刻の指定について

管理画面から行う自動バックアップとかのタスクのスケジューリング設定。 Scheduled Jobs - Confluence Latest - Atlassian Documentationcrontabによく似ているのですが、秒の指定ができたりとちょっと違う。 管理画面の編集でライブチェックができる 時刻…

Confluenceのbandanaに任意のObjectを保存する時は引数がゼロのコンストラクタが必要

なんか、bandanaManagerを通してConfluenceに登録してたObjectが何かのタイミングで消えてしまってた現象が発生。あれー?って思ってログ見たら 2015-06-18 16:59:45,738 WARN [http-1990-1] [confluence.setup.bandana.ConfluenceDaoBandanaPersister] getO…

ConfluenceのPlugin作成でバックグラウンドで走らせるようなタスクを作る

XMLエクスポートやインポートの時に出てくるプログラスバーがあるあれです。ソースコード見てたらTransactionTemplateを使ってあれこれやるらしいのだけど、まんまコピペ―したらエラーが出た。エラーの内容は、この人と一緒。Creating a LongRunningTask - A…

ConfluenceのPlugin作成でApache XMLRPCを使おうとしたらSAXParserでエラー出た件

プラグインでXMLRPCできるようにしたい ということで、pom.xmlにapache.xmlrpcを追加 <dependency> <groupId>org.apache.xmlrpc</groupId> <artifactId>xmlrpc-client</artifactId> <version>3.1.3</version> </dependency> あんまり久しぶりだったので、NetBeansから追加した際に<scope>jar</scope>が入っててそのままにしたらコンパイルは通るんだけど、実際に動作さ…

ConfluenceのREST APIを作ってみる - 実践編1(atlas-create-confluence-plugin-moduleコマンドを実行)

atlassian-plugin.xml 1か所だけになる。 あとは、Classのアノテーションを使っていくことで対応できる。サンプル。 <rest key="conf2dita-get-topictype" path="/conf2dita" version="1.0"> <description>get dita topictype assigned to this page</description> </rest> URLのマッピングについて ConfluenceのSDKの場合は、 [http://localhost:1990/confluence/res…

ConfluenceのREST APIを作ってみる - 序章

ConfluenceのAPIはいろいろあって、 XML-RPC JSON-RPC REST の順で整備されているみたい。JSON-RPCなんかは、ConfluenceのSDKではRESTブラウザが管理画面から使えるようになっている。 http://localhost:1990/confluence/plugins/servlet/restbrowser/ 今後…

Confluenceのプリキュアマクロをリリースします

4カ月ほど前にプリキュアハッカソン2という頭のおかしい殺伐としたサザンクロスWEB業界に癒しを与えるようなイベントに出席したのですが、その際に作ったプリキュアマクロをリリースします。Release first release · tohokuaiki/confluence-precuremacro · G…

Confluenceのプラグイン開発で、別のプラグインで作ったComponentをimportする方法

別のプラグインで作成したpublicなcomponentを使うことができます。ただし、インストールしてあるjarを使うのではなくjarのコンパイル時に組み込むので呼び出し先のjarファイルが必要です。こんな感じです。 2つプラグインを作っていくので、atlas-runし直さ…

Confluenceでリンクを再度編集しようとしてたら文字化けになってしまうバグの対応

Confluenceでリンクを設定してその後で編集しようとして 数値参照になってしまうのは昔から困ったバグなのですが、なかなか直りません*1。こんな感じで困ってらっしゃる方もいらっしゃいます。 リンク編集時の文字化け - GakuNinmAPpublic - meatwiki 根本的…

ConfluenceでBasic認証を掛ける

ログイン認証あるからいらないじゃーんっていうかもしれないけど、とりあえずそんな要望がどこからともなく聞こえたので試してみた。 UserDatabaseRealmだとダメっぽい? TOMCATで設定するBASIC認証の失敗する原因 - QA@IT を参考に、UserDatabaseRealmを使…

ConfluenceのMacroUtils.defaultVelocityContext()で得られるもの

Map<String, Object> defaultContext = MacroUtils.defaultVelocityContext(); で得られるもの一覧。 Map<String, Object> defaultContext = MacroUtils.defaultVelocityContext(); for (String key: defaultContext.keySet()){ map.put(key, defaultContext.get(key)); } とかしてVelocityテ</string,></string,>…

Confluenceプラグイン開発でRenderer Componentモジュールが既に無効らしい件

2日近くかかってしまったのだけど、どうやらできないってことでF.Aらしい。 何がしたかったかというと、Confluenceのページ内容をFilterしたかった。 PHPでいうところの、ob_start()のコールバック的な。そんなFilterくらいあるんじゃないかと思ったのだけど…

Confluenceのエディタ画面でのgetTextのキーとテキスト一覧

AJS.I18n.keysに入ってたものをリスト化 キー テキスト admin.keyboard.shortcut.add.comment.desc コメント admin.keyboard.shortcut.addlabel.desc ラベルの編集 admin.keyboard.shortcut.create.blog.desc ブログの追加 admin.keyboard.shortcut.create.c…