Javaでmixin

rubyの好きな機能の中でMixinがある。結構多用することもあるんだけど、Javaでも同じことができればなって思うこともある。バイトコードを直接操作するようなライブラリを使えば実現できるんだけど、個人的にはもっと手軽に利用したい。というわけでJavaで手…

MySQLをインストール後にとりあえずやること

久しぶりにMySQLをインストールする機会があったんだけど、インストール後のいつもやっている作業をちょっとメモってみようと思います。というのもたまにしかやらないから覚えておくのも大変だし、記録を残しておけばそこ見ればいいかなってことで。まず、イ…

How to use maru-dog JavaBeansプロパティデータバインドライブラリ (9)

前回から少し経ちますが、今回こそはmaru-dogのDSLについて解説したいと思います。maru-dogのバージョンは0.5.16以降を前提とします。これまでの日記でmaru-dogの内部DSLについては何度か簡単に説明したと思います。簡単におさらいすると、JavaBeansのプロパ…

Hibernate Validator(Bean Validaton)ともう少し戯れてみる

前回簡単にHibernateValidator(Bean Validation)について説明しましたが、今回はもう少し突っ込んだ内容を解説しようと思います。HibernateValidatorのバリデータアノテーションのJavaDocを見ていると各アノテーションの中に@Listというインナーアノテーシ…

TransferQueueについて

Java7ではjava.util.concurrentパッケージに新たにTransferQueueが追加になりました。このキューを利用するとプロデューサがデータをTransferQueueに送信すると、コンシューマがそれを取り出すまでプロデューサは待たされることになるようです。簡単なプログ…

RubyでJavaで言うところの流れるようなインターフェースまがいクラスを実装してみる

Java界隈ではよく流れるようなインターフェースがどうとかいうけど、Rubyでも同じようなことができる。ということで、ずっとJavaのネタばかり書いてきたので今回はRubyネタで行きます。実装方法は簡単です。 class CalcClass def initialize(number = 0) @va…

maru-dogとmaru-common

maru-dogとmaru-commonは現在maruマルチプロジェクトとして開発していますが、マルチプロジェクトをやめてそれぞれ独自プロジェクトにするか、maru-commonをmaru-dogに統合するか検討中です。理由はいくつかあるのですが、バージョンが分かりづらいからです…

How to use maru-dog JavaBeansプロパティデータバインドライブラリ (8)

久しぶりにmaru-dogについて解説したいと思います。前回内部DSLについて概要を紹介し、今回は少し詳細に解説する予定でしたが少し寄り道をしようと思います。maru-dogで標準でサポートしているコンバータですが、version0.5.8以降でいつくか追加になったもの…

Bean Validation(HibernateValidator)とm4hv-extensionsについて

前回はBean Validationの基本的な使い方について記事を書きましたが、今回はBeanValidationとその追加バリデーションライブラリであるm4hv-extensionsについて解説します。 m4hv-extensionsはBeanValidationの実装であるHibernateValidatorで動作確認を取っ…

Hibernate Validatorについて

Hibernate Validator 4はJSR303 - Bean Validationの参照実装で、JavaBeansに対するバリデーションフレームワークです。かなり手軽に使えるので個人的に気に入ってます。Bean Validationのインターフェースを実装し、独自の追加バリデータを作成するのも比較…

maru-0.6.17リリース

maru-0.6.17をリリースしました。JavaBeansデータバインドライブラリmaru-dogのバインド定義をOverrideするための内部DSLで流れるようなインターフェースで定義することができるようにしました。前回の記事で説明したようなかんじでバインド定義のDSLを記述…

maru-dogの内部DSL

maru-0.6.16をリリースしたばかりですが、内部DSLを修正したバージョンを早めにリリースしようと考えています。理由は、maru-dogの内部DSLを流れるようなインターフェースで記述可能にするためです。これまでのバージョンではdeclareFor〜endで定義を囲って…

maru-0.6.16リリース

maru-0.6.16をリリースしました。JavaBeansデータバインドライブラリmaru-dogにバインド元のプリミティブ型のプロパティをString型に変換してバインドを行う以下の拡張型コンバータを追加しました。 @ByteToString(Byte型のプロパティをString型に変換) @S…

BeanValidatorとかm4hv-extensionsとかJava7とか・・・

これまでずっとmaru-dogの解説やJava7の解説なんかをメインでやってきたけど、そろそろmaru-dogについてはメイン機能の解説はなくなってきたので一通り解説し終わったらBeanValidator(HibernateValidator)とBeanValidatorの追加バリデーションを利用したm4…

次期maru-dogの追加機能

maru-dogの次期バージョンではコンバータをさらに追加しようと思っています。現行バージョンはString型を各プリミティブ型へ変換するコンバータを実装しましたが、次期バージョンではその逆でプリミティブ型からString型への変換を行えるようにしようかなと…

How to use maru-dog JavaBeansプロパティデータバインドライブラリ (7)

前回からかなり時間が空きましたが今回はバインド先とバインド元のJavaBeansに定義されたバインドアノテーションを上書きし、バインドの振舞いを変える方法を紹介します。maru-dogはアノテーションで付与されたバインド情報を上書きし、振舞いを変更するため…

maru-0.6.9リリース

maru-0.6.9をリリースしました。今回はJavaBeansデータバインドライブラリmaru-dogにバインド元のString型のプロパティを各数値型に変換してバインドを行う以下の拡張型コンバータを追加しました。@ToByte @ToShort @ToInteger @ToLong @ToFloat @ToDoubleこ…

m4hv-extensions-1.4.1リリース

m4hv-extensions-1.4.1をリリースしました。追加変更点は次の通りです。BeanValidatorに日本語関連のバリデータを追加したバリデーションライブラリ。1.時間関連のバリデータ名称をそれぞれ以下のように変更しました。 Hour→Hours Minute→Minutes Second→Sec…

m4hv-extensionsのHour,Minute,Secondアノテーション

結構前から気になってたけどm4hv-extensionsのHour,Minute,Secondアノテーションの名前を近いうちに変更しようと考えてます。Hour→Hours Minute→Minutes Second→Seconds後方互換性ががなくなるので次期バージョンでやるかどうかは分からないけどいずれ将来的…

How to use maru-dog Beanプロパティデータバインドライブラリ (6)

前回から少し時間が空きましたが、今回はMap型のインスタンスに格納されているデータをBeanの各プロパティにバインドする機能を紹介します。Map型のデータをバインドする場合にもアノテーションベースによるバインドと、フィールド名によるバインドの2種類を…

switch文と複数例外のcatch

Java7について今回は少し地味なので2つ紹介。 switch文について Java7のswitch文ではcase句でString型のクラスで条件判断ができるようになっています。 switch(val) { case "JPN": System.out.println("Japan"); break; case "US": System.out.println("Unit…

m4hv-extensions-1.3.1リリース

m4hv-extensions-1.3.1をリリースしました。m4hv-extensionsはBeanValidatorに日本語関連のバリデータを追加したバリデーションライブラリです。追加バリデーションは次の通りです。(1)不正文字判定バリデータを追加 (2)有効文字判定バリデータを追加詳細は…

try-with-resourcesによる自動でのリソース解放

Java7ではtry-with-resourcesでCloseableインターフェースを実装したオブジェクトを利用する際に、リソースを自動で開放することが可能となったみたいです。 つまりこれまでfinally句内で記述していたclose処理を記述する必要がないということです。どんな感…

Java7がリリースされました。

Java 7がいよいよリリースされました。結構いろいろな機能が追加になっているみたいです。NIO2やFork/Join、クラスローダの拡張、Unicode6.0への対応など。今いろいろ試してる最中だけどとりあえず、個人的に気に入った機能をメインにこれから少しずつ解説し…

How to use maru-dog Beanプロパティデータバインドライブラリ (5)

前回は拡張コンバータについて説明をしました。今回は、第1回の終りのほうで少し触れたフィールド実名によるバインドについて簡単に解説したいと思います。これまで基本的には@Bound、@Bindアノテーションが付与されたフィールドに対してバインドを行う方法…

How to use maru-dog Beanプロパティデータバインドライブラリ (4)

前回はmaru-dogで標準で提供しているコンバータについて説明しました。maru-dogで提供しているコンバータはすべて拡張コンバータと呼ばれる方式で提供されています。 今回はアルファベット文字列を大文字(もしくは小文字)に変換し、指定されたメッセージを…

How to use maru-dog Beanデータバインドライブラリ (3)

第2回ではシンプルコンバータについて説明しました。今回はmaru-dogが標準で提供しているコンバータについて解説します。maru-dogが提供しているコンバータは以下の4つです。 @StringToDate 指定されたパターンのString型の日付データをjava.util.Date型に変…

maru-0.6.2リリース

maru-0.6.2をリリースしました。 主な変更点は次の通りです。(1)Map型データをBeanインスタンスにバインド機能を追加しました。 (2)フィールドの実名によるバインドを行うgetInstanceByFieldNameBindメソッドを追加しました。 (3)内部を大幅にリファクタリン…

How to use maru-dogデータバインドライブラリ (2)

前回は最もシンプルな利用例を紹介しましたが、今回はシンプルコンバータについて前回の例をもとに紹介します。UserProfileクラスのgenderはbyte型で1が男性(man)、2が女性(woman)を表していますが、バインド先のUserBeanのgenderはString型でman、woman…

How to use maru-dogデータバインドライブラリ (1)

maru-dogデータバインドライブラリはインスタンス間でプロパティのデータのコピーを行うライブラリです。apache-commonsのBeanUtilsによく似ていますが、アノテーションによるバインド制御や、複数のJavaBeansインスタンスのプロパティの値を1つの結果オブジ…