*Curl ORB for Java version 0.6 がリリースされました。リリースノートはこちら。
CurlORBに付属する「コード生成ツール」の利用方法を記載します。コード生成ツールは、JavaクラスからCurlクラスを生成することができます。また、生成時に名称等々変更することや、テスト用のコードも生成することができます。
サービスクラスとデータクラス
生成できるコードについては大きく分けて2種類あります。
- サービスクラス
- データクラス
サービスクラスは、クライアントから呼び出すクラスで、データクラスは、クライアント-サーバ間のデータ通信で利用するDTOです。例えば、以下のような場合、クライアント(Curl)からFooというクラスのdoSomethingメソッドをPersonクラスを引数に渡して実行する場合、Fooをサービスクラス、Personをデータクラスと呼びます。
// Foo public class Foo { public Foo() { public void doSomething(Person p) { // Person public String getName() {return name;} |
また、サービスクラスの中にも以下のように2種類あります。
- サービスクラス(DI)
- サービスクラス(HttpSession)
DIのほうは、DIコンテナ(Spring framework, Seasar2など)やServletContextで管理されるオブジェクトのクラスで、HttpSessionは、サーブレットのHttpSession内で管理されるオブジェクトのクラスのことです。サービスクラスのコードを生成する際、どちらかを選択します。
起動
コード生成ツールを起動するため、code-generator.dcurlを実行します。(ダブルクリック)
起動しましたら、コード生成ツールのクラスタイプ選択画面が以下のように立ち上がります。まず最初に4つのクラスタイプから1つ選択します。
- Service Class (DI) … サービスクラス(DI)
- Service Class (HttpSession) … サービスクラス(HttpSession)
- Data Class … データクラス
- Exception Class … 例外クラス
サービスクラス(DI)の生成
Service Class(DI)を選択しますと以下の画面が表示されます。DIコンテナで管理されているIDの一覧がリストとして表示されますので、コード生成するIDを1つ選択し、Nextボタンを押下します。
対象のクラスがインターフェースをimplementsしている場合、インターフェースの一覧選択画面が表示されます。ない場合は、スキップされて、クラス詳細画面が表示されます。
上記インターフェース選択画面でインターフェースを選択しますと、そのインターフェースと同一名称及びインターフェースのもつメソッドのみが自動生成されます。(インターフェースとして作成したくない場合は、選択しないことも可能です。)
クラス詳細画面では、クラス情報の紹介と編集ができます。
編集可能な項目は、
- クラス名
- フィールド名とそのmodifier、必要不要(need?)
- コンストラクタとそのmodifier、必要不要(不要の場合blankを指定)
- メソッド名とそのmodifier、必要不要(need?)、非同期通信(async?)
- コードの出力先(Class File)
- load.scurl(クラスファイルと同一ディレクトリに生成。既に存在する場合は追記されます)
※Styleボタン : CurlコーディングスタイルとJavaの名称そのままかを選択できます。Curlコーディングスタイルは、パッケージ名なら大文字、メソッド名・フィールド名なら大文字をハイフン+小文字に変換します。(例:com.test -> COM.TEST, loadFileList -> load-file-list)
*メソッドの引数・戻り値の表示 : テキストフィールドにマウスカーソルをあわせるとツールチップとして引数が表示されます。
最後にGenerateボタンを押下しますと指定した場所にCurlコードが生成されます。(基本的に生成されたコードを編集することはないはずです。)
サービスクラス(HttpSession)の生成
サービスクラスを生成する場合、下の画面で対象のクラス名を入力します。(パッケージ名.クラス名)
Nextボタンを押下しますと以下のクラス詳細画面が表示されます。(Service Class(DI)同様、インターフェースを実装している場合は、インターフェース選択画面が表示されます。)
画面の利用方法はサービスクラス(DI)と同様です。
データクラスの生成
データクラスを選択した場合、以下の画面が表示されます。ここで対象のクラス名を入力します。(パッケージ名.クラス名)
Nextボタンを押下しますと、以下のクラス詳細画面が表示されます。
サービスクラスとは違い、”get”や”is”で始まる名称のメソッド名は、getterとして, ”set”で始まる場合は、setterとしてチェックされます。もし、通常のメソッドとして生成したい場合は、チェックされているgetter/setterのチェックをはずしてください。
注意点として、もしgetterやsetterとフィールド名が重複する場合は、フィールド名がアンダーバー+フィールド名に変更されます。(例:nameフィールドとnameセッター・ゲッターを持つ場合、フィールド名は、_nameとなります。)
最後にGenerateボタンを押下しますと指定した場所にCurlコードが生成されます。(基本的に生成されたコードを編集することはないはずです。)
例外クラスの生成
例外クラスを選択しますと以下の画面が表示されます。ここで対象のクラス名を入力します。(パッケージ名.クラス名)
Nextボタンを押下しますと以下のようなクラス詳細画面が表示されます。
上記画面の基本的な利用方法はデータクラスと同様です。生成されるクラスには、Exceptionを継承されます。
テストクラスのコード生成
サービスクラスはサーバ通信を行わない空のテスト用クラスとして生成することができます。このクラスの中にテストコードを記載し、サーバを必要とすることなくクライアント単体で実装・テストが実施できます。これはサーバとクライアントを分離して開発を行いための機能です。
生成するためには、クラス詳細画面の一番下のチェックボックス”As test’s template”にチェックを入れます。そうしますと、_template_クラス名.scurlという名称で作成されます。通常開発時はこれを利用し、サーバと連携する場合は、生成したサービスクラスと切り替えます。例えば、Fooクラスの場合、_template_Foo.scurl(テスト)とFoo.scurlをload.scurlのinclude文を書き換えることできりかえれます。
{curl 6.0 package} {package COM.TEST} || {include “_template_Foo.scurl”} {include “Foo.scurl”} |