2008-03-17

Fude を使って Service Document の仕様を確認してみる

Fude を使って AtomPub の接続性をテストする
まだ Fude を使いはじめたばかりなのと、他のテストツールを使ったことがないので、Fude どのように優れていて、どのような場面に有効なのかは、まだ評価できる段階にはありません。今後、Fude やその他のテストツールを使う中で、何か発見がありましたら随時お伝えしていきます。
引き続き、Fude を使って Service Document の振る舞いを掘り下げてみます。

題材として、次のような Service Document を用意しました。なお、Service Document の Content-Type は application/atomsvc+xml と定められています。
<?xml version="1.0" encoding="utf-8"?>

<!--Postal Search APIs & Solutions-->
<service
xmlns="http://www.w3.org/2007/app"
xmlns:atom="http://www.w3.org/2005/Atom"
>
<workspace>
<atom:title>住所録</atom:title>

<collection href="http://candy/postal/api/places">
<atom:title>みんなの住所録</atom:title>
<accept>image/gif</accept>
<categories href="http://candy/postal/api/categories/index.atomcat" />
</collection>

<collection href="http://candy/postal/api/users/nakajiman/places">
<atom:title>nakajiman の住所録</atom:title>
<accept>application/atom+xml;type=entry</accept>
<categories href="http://candy/postal/api/categories/index.atomcat" />
</collection>

<collection href="http://candy/postal/api/users/aquilegia/places">
<atom:title>aquilegia の住所録</atom:title>
<accept>application/atom+xml;type=entry</accept>
<categories href="http://candy/postal/api/categories/index.atomcat" />
</collection>

</workspace>
</service>
この Service Document を Fude で読み込むと、次のようなツリー構造になります。

Collection の accept が application/atom+xml;type=entry のときは New Entry ボタンが有効になります。また、image/gif などそれ以外を指定すると、New File ボタンが有効になります。accept の値によって、アイコンが変化します。



New File ボタンをクリックすると、次のようなダイアログが開きます。ローカル PC のファイルを選択し、そのファイルを Media Resources として Collection にアップロードして追加できます。



Service Document の Collection の accept を空にすると、何も追加しない Collection を意味することになり、
<collection href="http://candy/postal/api/places">
<atom:title>みんなの住所録</atom:title>
<accept />
<categories href="http://candy/postal/api/categories/index.atomcat" />
</collection>
次のように、Collection のアイコンが消え、New Entry ボタンも New File ボタンも無効になります。



題材として、次のような Category Document を用意しました。なお、Category Document の Content-Type は application/atomcat+xml と定められています。
<?xml version="1.0" encoding="utf-8"?>
<app:categories
xmlns:app="http://www.w3.org/2007/app"
xmlns:atom="http://www.w3.org/2005/Atom"
fixed="yes"
>
<atom:category term="animal" scheme="http://candy/postal/api" />
<atom:category term="vegetable" scheme="http://candy/postal/api" />
</app:categories>
この Category Document を Collection に定義すると、Collection の子が Category となるツリー構造になります。

Entry Resouce の Category を Category Document と同じにして、ツリーから Category を選択したみたのですが、Entry Resouce のリストが空となってしまいます。

選択した Category を持つ Entry Resouce に絞り込まれる振る舞いを期待していたのですが。私の理解不足からくるのか、Fude 自体の振る舞いなのか区別ができていません。



Entry Resouce のエディタで Category Document 中の Category がリストアップされ、チェックすることで、Category を選択できます。

ただし、Category Document の fixed 属性を yes にしても no しても、その差が現れないようでした。fixed 属性が no のときは、任意の(新しい) Category を指定できるはずなのですが、私の理解不足からくるのか、Fude 自体の振る舞いなのか区別ができていません。



AtomPub の仕様上、Category の名前空間は、次のように app:categories 要素で指定できるハズなのですが、期待どおり認識してくれませんでした。どうやら Fude では category ごとに指定した名前空間を使っているようです。
<?xml version="1.0" encoding="utf-8"?>
<app:categories
xmlns:app="http://www.w3.org/2007/app"
xmlns:atom="http://www.w3.org/2005/Atom"
fixed="yes"
scheme="http://candy/postal/api"
>
<atom:category term="animal" />
<atom:category term="vegetable" />
</app:categories>
この Category Document を Fude で読み込むと、Category の名前空間は、Service Document の categories の href の値になりました。

いくつか疑問点が残りましたが、もう少し理解を深めつつ、試しつつ、それでも解決できないときは、Fude の作者に質問してみようと思います。もしご存知でしたら、ぜひ!教えてください。

RESTful WebサービスRESTful Webサービス
Leonard Richardson Sam Ruby 山本 陽平

アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣 WEB+DB PRESS Vol.42 WEB+DB PRESS Vol.43 JBoss徹底活用ガイド ーJava・オープンソース・JBoss Seam・JBoss AS 初めてのFlash Video

by G-Tools

0 件のコメント: