2012年11月27日火曜日

Spring3 MVCでJSONを返すRESTもどき2

今回は電車の中でやってます。
というわけで、HTTPステータスコードを返す&Junitでのテストです。

ステータスコードの設定

ステータスコードの設定は、コントローラーのメソッドに対して@ResponseStatusアノテーションでできる。
ステータスコード自体は、HttpStatus.*を使う。

POSTで201(Created)を返すコードを追加した。
試してみるのにrest-clientを使用した。これは便利。

作成したコードは以下でコミット。
https://bitbucket.org/twopack/jsonrest/changeset/c903d770a37754f04ddd0dccaa83971e

RESTをJUnitでテストする

restfuseを使用。
前回のpom.xmlでJUnitのバージョンを4.6としていたせいで、@Ruleアノテーションが使えずはまった。。
他はrestfuseのトップにあるとおりでできた。
JSONについては、JacksonのObjectMapperを使ってMapにしてから比較するようにした。

作成したコードは以下でコミット。
https://bitbucket.org/twopack/jsonrest/changeset/1e233fb47e482b80fc3bf69156c04e76

2012年11月26日月曜日

Spring3 MVCでJSONを返すRESTもどき

Eclipseでプロジェクトを作るところから開始。
環境は、Mac OS X 10.7.5 + Eclipse Juno + Spring Tool Suite。

プロジェクトの作成

  1. File -> New -> Other -> Spring Template Project -> Spring MVC Project
    の順で選択していく。Importの確認メッセージがでたらYesで継続する。
  2. Project NameとPackage Nameを入力してFinish。
  3. junitのdependencyでエラーになったため、pom.xmlでバージョンを4.6に変更。
  4. Debug As -> Debug on Server でできたプロジェクトを実行する。
    今回はTomcat6で実行した。
  5. ここまでで、Hello Worldが表示される。

JSONを返す処理

Spring MVC Tip: Returning JSON from a Spring Controller
Spring MVCでJSONデータを返すための手順
を参考にして処理を作成した。
  1. pom.xmlにjackson-mapper-aslの依存関係を追加。
  2. servlet-context.xmlでMappingJacksonJsonViewを使うように内容を修正。
  3. コントローラーにGETに対する処理を追加。
    @RequestBody, @RequestMapping, @PathVariableのアノテーションを利用。
    Personクラスを返した結果として、JSONに変換が行われる。

とりあえず、ここまで。
ソースは以下にアップ。
https://bitbucket.org/twopack/jsonrest/changeset/5c0ddd8400ba24e9fbdd976dad288567cc653f94

2012年11月20日火曜日

Spring 3.0 + Thymeleafを試してみる(1)

まずはSpring 3.0のチュートリアルを探してきて写経しました。
Spring 3 Hello World Example

このチュートリアルでViewはJSPです。ここにThymeleafでのViewを追加します。
Thymeleafのチュートリアルを見ながら、テキストを置き換えるだけの簡単なコードを書きました。
TUTORIAL: THYMELEAF + SPRING 3
また、チュートリアルのサンプルソースがGithubで公開されています。

はまったところは以下。

  • resourcesの配置先をsrcの下に置く必要があった。
  • servletのxmlをJSPのものと分けたが、コントローラーも分けてあげる必要があった。

あとはチュートリアル通りでできました。
今のところはただのテキスト置き換えのみなので、他の構文も試してみたいと思います。

写経からThymeleaf用の追加までのソースは以下です。
https://bitbucket.org/twopack/helloworldspring3

2012年10月15日月曜日

Play! Framework 2.0とApacheの設定でのパス

ちょっと試したことのメモ。以下のサイトを参考にさせてもらいました。


試したことは、上記のサイトのようにApacheを設定したときにPlay!アプリ上でのリンクがどう動くかです。以下のようなリンクをapp1indexに埋めておきます。
  1. <a href="dynamic">app1 dynamic</a>
  2. <a href="public/static.html">app1 static</a>
  3. <a href="/app2/">app2</a>
  4. <a href="/app2/dynamic">app2 dynamic</a>
  5. <a href="/app2/public/static.html">app2 static</a>

dynamicはコントローラーへ、staticは静的HTMLへのリンクです。http://127.0.0.1/app1/へアクセスしてapp1のindexが表示され、意図したとおりにリンクが表示できました。
Play! Framework 2.0は、今のところサブコンテキストが使えないので、Apacheを使うようですが、相対でリンクを張ってあげれば、
 play run
としたときも、デプロイしたときも想定の動きになりそうです。
って、当たり前か。

2012年7月29日日曜日

Android BindingのチュートリアルでHello World

Android Bindingのチュートリアルを作者のAndyさんが書いています。
ひな形を生成するAntのスクリプトができたとのことで更新されたため、やってみました。
準備としては、以下です。
  1. EclipseとAndroid SDKを用意。
  2. Android-Binding (v0.5+)をダウンロード
  3. Antのビルドスクリプトをダウンロード
準備ができたらHello Worldしてみます。
  1. 新規でプロジェクトを作ります。
  2. libsフォルダにダウンロードしたAndroid-Binding(android-binding-v30.バージョン.jar)をコピーします。
  3. ダウンロードしたAntのビルドスクリプト(antbuild.zip)を展開して、プロジェクトのルートにコピーします。コピーしたらF5でリフレッシュしてください。
  4. ビルドスクリプトを使ってApplicationクラスを作ります。build.xmlで右クリック->Run As -> Ant Build... を選択します。
  5. create_application_classをチェックしてRunします。クラス名を入力するダイアログがでますので入力します。F5でリフレッシュするとApplicationクラスができています。
  6. ビルドスクリプトを使ってActivityクラスを作ります。build.xmlで右クリック->Run As -> Ant Build... を選択します。
  7. new-activityをチェックしてRunします。クラス名を入力するダイアログがでますので入力します。F5でリフレッシュするとApplicationクラスができています。

これでHello Worldのできあがりです。
実行すると、チュートリアルのページにあるような画面が表示されます。

今の段階ではそれほどひな形を作る機能がそれほど便利というわけではないですが、まだ始まったばかりなので今後に期待です。


2012年7月22日日曜日

dotCloudを使ってみる

dotCloudというサービスを使ってみました。
製品ではなくテストや開発では無料で使えます。

サインアップするしてから表示されるページに従うだけで、設定とクイックスタートはできました。
ページの順番は以下の通り。



コマンドラインで簡単にデプロイできますね。
Javaについての説明はここにありました。
PaaS初めて使ってみましたが、他もこんな感じなのかな?

2012年7月5日木曜日

Androidアプリのリリース版がインストールされた端末での開発

Androidのアプリは署名が行われています。
初期設定でこの署名は、デバッグ、リリースで異なるものが使われています。

Playストアに登録するときは当然リリース版になります。
このため、Playストアに登録したものをダウンロードしてある端末を使用してデバッグしようとすると、apkインストール時に以下のメッセージが出て失敗します。
#Eclipseでの結果です。
[2012-07-05 05:57:23 - ConnectLibraries] Re-installation failed due to different application signatures.
[2012-07-05 05:57:23 - ConnectLibraries] You must perform a full uninstall of the application. WARNING: This will remove the application data!
[2012-07-05 05:57:23 - ConnectLibraries] Please execute 'adb uninstall jp.gr.java_conf.twopack.connect_libraries' in a shell.
[2012-07-05 05:57:23 - ConnectLibraries] Launch canceled!

メッセージに従って一度アンインストールすればうまく行きますが、アプリのデータも消えてしまうので不便この上ないです。
このため、リリース用の署名をデバッグ用の署名にする方法があります。
以下のサイトで方法が載っていました。

  1. 以下のコマンドを実行します。<>の部分は置き換えてください。
    $ keytool -importkeystore -v -srckeystore <リリース署名のファイル> -destkeystore <出力先ファイル> -srcstorepass <リリース署名のStoreパスワード> -deststorepass android -srcalias <リリース署名のエイリアス> -destalias androiddebugkey -srckeypass <リリース署名のKeyパスワード> -destkeypass android
  2. Windows -> Preferences -> Android - > Build で Custom debug keystoreに作成した署名を指定する。
  3. リビルドする。


これで、Playストアでインストールしたアプリがある状態でも、アンインストールなしでデバッグできます。

RedmineプラグインをGitHub Actionsでテストする

Redmine Advent Calendar 2019 の Qiita で書きました。追っかけで もう一つ 。 Travis-CIで行っていたRedmineプラグインのCIを、GitHub Actionsに変更したものです。 GitHub Actionsをやってみようという...