WebAPI 経由で config.xml を反映させる際の設定削除のやり方

110 views
Skip to first unread message

KOJIMA Takanori

unread,
Feb 23, 2012, 11:08:06 AM2/23/12
to jenkin...@googlegroups.com
@max747 です。
jobConfigHistory plguin の機能拡張をしていて、Jenkins本体の挙動で少し
気になるところを見つけたので質問します。

Jenkins の機能で、プロジェクトの設定を画面で保存する代わりに、
設定ファイルの内容を特定のURL に対して POST することで、
設定を反映させる機能があるかとおもいます。

------------------------------------------------
例:
http://localhost:8080/job/TestJob/config.xml
に対して以下の内容を POST で送信

<?xml version='1.0' encoding='UTF-8'?>
<project>
<actions/>
<keepDependencies>false</keepDependencies>
<properties/>
<scm class="hudson.scm.NullSCM"/>
<canRoam>false</canRoam>
<disabled>false</disabled>
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
<triggers class="vector"/>
<concurrentBuild>false</concurrentBuild>
<builders/>
<publishers/>
<buildWrappers/>
</project>
------------------------------------------------

この機能で設定を反映しようとするとき、設定を追加または変更する場合はうまくいくのですが
設定の削除 ( = XML上でタグごとなくなる) が反映されません。
少し調べてみたところ、この機能に対応するのは

hudsol.model.AbstractItem#doConfigDotXml(StaplerRequest req,
StaplerResponse rsp)

のようです。
この中で、POSTされてきたXMLデータを XStream の unmarshal で
現在のプロジェクトインスタンスに反映する処理がありますが、この unmarshal は
XMLに書かれていないインスタンスフィールドはノータッチのため、
設定を削除したくとも、それを反映する方法がありません。

こういった場合のワークアラウンドはあるのでしょうか?

--
KOJIMA Takanori <takanor...@gmail.com>

Kohsuke Kawaguchi

unread,
Feb 23, 2012, 6:29:35 PM2/23/12
to jenkin...@googlegroups.com
確かに仰るとおりですね。

コアでunmarshalを呼ぶ前に初期値をセットする以外の方法はないと思います。凄くerror proneですが。

新しいオブジェクトを作ってフィールドの値をコピーするようにすればいいかな...。

2012年2月24日1:08 KOJIMA Takanori <takanor...@gmail.com>:

--
Kohsuke Kawaguchi

KOJIMA Takanori

unread,
Feb 24, 2012, 9:12:06 AM2/24/12
to jenkin...@googlegroups.com
@max747です。

> コアでunmarshalを呼ぶ前に初期値をセットする以外の方法はないと思います。凄くerror proneですが。
> 新しいオブジェクトを作ってフィールドの値をコピーするようにすればいいかな...。

ご意見ありがとうございます。
やはりそうした方法になりますか。

ついでなので、もうひとつ聞きたいことがあります。
dotConfigDotXml メソッドを使用した場合、SavableListener#fireOnChange が
呼ばれないため、SavableListener にぶら下がっているイベント検知機構は
動作しません。これは何か設計上の意図があってそうしているのでしょうか?


2012年2月24日8:29 Kohsuke Kawaguchi <k...@kohsuke.org>:

--
--
KOJIMA Takanori <takanor...@gmail.com>

Reply all
Reply to author
Forward
0 new messages