DoCoMoProfile-1.0

今日ふと見つけたのですが、DoCoMoProfile-1.0のcom.nttdocomo.io.HttpConnectionインターフェースに定義上の誤りがあります。今まで何で私も気づかなかったのかと思うのですが、下の表のように定義されています。(「iモード対応Javaコンテンツ開発ガイド ~ APIリファレンス編 ~ 第1.0版」の116ページに該当する記述があります。)

問題のフィールド定義
フィールド名
HTTP_SERVER_ERROR 500
HTTP_INTERNAL_ERROR 501

しかし、HTTPの規格を定める「RFC 2616: Hypertext Transfer Protocol — HTTP/1.1」を参照してみると

10.5.1 500 Internal Server Error

The server encountered an unexpected condition which prevented it
from fulfilling the request.

10.5.2 501 Not Implemented

The server does not support the functionality required to fulfill the
request. This is the appropriate response when the server does not
recognize the request method and is not capable of supporting it for
any resource.

と記述されています。つまり上記の定義内容は本来、下の表のようになるべきなのです。

正しい定義内容
フィールド名
HTTP_SERVER_ERROR 削除
HTTP_INTERNAL_ERROR 500
HTTP_NOT_IMPLEMENTED 501

実際の公式SDK「Java 2 Platform, Micro Edition, Wireless SDK for the DoJa APIs」に含まれるライブラリファイルdojaapi.jarの定義を確認したところ、実際に誤った定数が定義されていることが確認できました。

そんなによく使う定数ではないのですが、知らずにこの定数を使うとハマるので記憶にはとどめておいた方がよさそうです。この点を考慮してUnofficial “DoCoMoProfile-1.0” API Reference.に「推奨されていないAPI」として追加することにしました。(あと、これに関係する現在存在しないものの、今後定義されるであろう定数を未定義と但し書きをつけた上で追加しました。)

ちなみにこれと同じミスがかつてのJ2SDKにも存在していたようで、やはり現在は「推奨されていないAPI」に分類されています。同じ携帯向け(正確にはモバイル情報機器向け)プロファイルであるMIDPには同様の問題はありませんでした。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です