SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Javaで軽快に使える「軽量フレームワーク」特集

Javaで軽快に使える「軽量フレームワーク」特集
~アプレットベースのRIAフレームワーク「Apache Pivot」(4)

第16回

Queryクラスによるサーバーアクセス

 Pivotでサーバーにアクセスするには、org.apache.pivot.webパッケージに用意されている「Query」というクラスを利用します。これはWebサーバーへのアクセスに関する機能を提供するものです。このQueryは抽象クラスになっており、使用するHTTPメソッドごとに「GetQuery」「PostQuery」「PutQuery」「DeleteQuery」といったサブクラスが用意されています。

 今回は、GETでアクセスしますので「GetQuery」クラスを利用しています。Queryの利用の仕方は、どのサブクラスでもほぼ共通しています。以下に簡単に整理しておきましょう。

1.インスタンスの作成

変数 = new GetQuery( サーバーの指定 , パスの指定 );

 まず最初に、インスタンスを作成します。アクセスするサーバーとパスをそれぞれ引数に指定してnewします。

2.シリアライザの設定

《GetQuery》.setSerializer(《Serializer》);

 続いて行ってるのは「シリアライザ」の設定です。シリアライザとは、データをシリアライズするためのオブジェクトです。これはPivotでは、Serializerというクラス(およびそのサブクラス)として用意されています。

 GetQueryではアクセスした先からデータを取得しますが、そのデータがどのようなものかはGetQuery自身には分かりません。そこで、取得したデータを解析しJavaで扱いやすいオブジェクト化するためにシリアライザが用意されています。GetQueryにsetSerializerでシリアライザを設定すると、取得したデータをそのシリアライザでオブジェクト化し取り出せるようになります。

3.アクセスの実行

《GetQuery》.execute(《TaskAdapter》);

 準備が整ったら、「execute」メソッドを呼び出し、アクセスを開始します。このメソッドでは、「TaskAdapter」というインスタンスを引数に渡します。これは実行するタスクを管理するためのもので、タスクが終了したり実行に失敗したりした時、イベントが発生し、必要な処理を行えるようになっています。アクセスが完了した後の処理は、GetQuery本体ではなく、このTaskAdapter側で行うようになります。

JSONSerializerによるデータの取得

 このように、「Queryの用意」「シリアライザの設定」「TaskAdapterを準備して実行」といった流れでアクセスが行えるようになります。ということは、シリアライザとTaskAdapterについても、併せて理解しておく必要があるわけです。

 まずシリアライザについて。今回は、Serializerのサブクラスである「JSONSerializer」というクラスを利用しています。これは、名前の通りJSONデータをシリアライズするためのものです。これはいくつかの引数がオーバーロードされています。今回は、引数にテキストのエンコーディングを指定してnewしています。

 続いて、TaskAdapterについて。これは、引数に「TaskListener」を渡してnewします。TaskListenerというのは、文字通りタスク完了時などに発生するイベントの処理を行うためのリスナーです。これは2つのメソッドを持っています。今回のサンプルを見ると、次のような形でTaskListenerを用意していることが分かります。

new TaskListener<Object>() {
    @Override
    public void taskExecuted(Task<Object> task) {
        ……タスク完了時の処理……
    }
        
    @Override
    public void executeFailed(Task<Object> task) {
        ……実行に失敗したりした時の処理……
    }
}

 いずれも、引数にはTaskクラスのインスタンスが渡されます。これは実行したタスクに関する情報を管理するものです。正常にタスクが終了したときには、「getResult」メソッドにより、取得したデータを取り出すことができます。このgetResultで得られるデータは、設定されたシリアライザによって内容が異なります。

 今回、JSONSerializerを使ってアクセスをしましたが、この場合、データはListとして渡されることになります。List内には、各データがMapインスタンスとしてまとめられています。取得したListインスタンスを、そのままTableViewの「setTableData」メソッドでtableDataとして設定すれば、テーブルにデータがそのまま表示されます。また、Listから各データをMapとして取り出し、そこから必要な情報を取得して処理することもできます。

次のページ
サーバーからのテキストデータ取得

この記事は参考になりましたか?

Javaで軽快に使える「軽量フレームワーク」特集連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5114 2010/06/02 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー