倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

Groovy

果たしてそれが(どれが)委譲されるのか? :@Delegate アノテーション

@Delegate アノテーションをチョット使ってみて思ったことをメモ。普通の使い方 まずは普通の使い方。 Wrapper1 クラスに Inner1 型のプロパティ inner を定義して、それに処理を委譲したいときは以下のように書きます: class Wrapper1{ @Delegate Inner1 i…

「?.」演算子についての注意

Groovy の「?.」演算子*1について、ちょっと気になったことがあったのでメモ。まず、以下のようなクラスがあるとしましょう: class Foo{ def getNull(){ return null } } getNull() メソッドは常に null を返します。 このメソッドの戻り値に対して「?.」演…

org.dom4j.Document を構築するビルダー

前回のビルダーを拡張し、今回は org.dom4j.Element ではなく org.dom4j.Document を構築するビルダーにします(一覧)。サンプル・コード サンプル・コードはこんな感じ。 def builder = new SimpleDom4jBuilder() def doc = builder.table(customer:'c', i…

org.dom4j.Element を構築するビルダー

groovy.util.NodeBuilder の練習のため、dom4j の XML ドキュメントオブジェクトを構築するビルダーを作ってみます(一覧)。 簡単のため、以下の条件を課すことにします: 名前空間はサポートしない 構築後に返されるオブジェクトは org.dom4j.Element オブ…

グルグル POI (5) : Cell のプロパティ

今回は Cell に定義されているプロパティ。Cell に定義されているプロパティ HSSFCell と XSSFCell に共通のプロパティ。 分類は拙者の独断と偏見。 プロパティ名 プロパティ値の型 Read(Getter) Write(Setter) class java.lang.Class ☆ × sheetrowrowIndexc…

グルグル POI (4) : Row のプロパティ

今回は Row に定義されているプロパティです。Row に定義されているプロパティ HSSFRow と XSSFRow に共通のプロパティ。 分類は拙者の独断と偏見。 プロパティ名 プロパティ値の型 Read(Getter) Write(Setter) class java.lang.Class ☆ × sheet org.apache.…

グルグル POI (3) : Sheet のプロパティ

前回に続いて、今回は Sheet のプロパティを見ていきます。Sheet に定義されているプロパティ HSSFSheet と XSSFSheet に共通のプロパティ。 分類は拙者の独断と偏見。 プロパティ名 プロパティ値の型 Read(Getter) Write(Setter) class java.lang.Class ☆ ×…

グルグル POI (2) : Workbook のプロパティ

「Apache POI」に定義されているクラス群、プロパティがたくさんあってこんがらがってきたので、表にまとめてみます。 ここでの「プロパティ」とは、Groovy でのプロパティとします。Workbook のインスタンスには HSSFWorkbook と XSSFWorkbook がありますが…

グルグル POI (6) : CellStyle, Font のプロパティ

今回は CellStyle と Font に定義されているプロパティ。CellStyle, Font に定義されているプロパティ CellStyle プロパティ名 プロパティ値の型 Read(Getter) Write(Setter) class java.lang.Class ☆ × fontfontIndex Fontshort ×☆ ☆× alignmentverticalAli…

果たしてそれが(どれが)プロパティなのか? (5) :インデックスを介してプロパティ値にアクセスする場合

今回はインデックスを介してプロパティ値にアクセスするメソッドが宣言されている場合です。 まぁ、java.util.List みたいなものを想像していただければよいかと。 class Hoge{ Object getFoo(int i){...} void setFoo(int i, Object value){...} } みたいな…

果たしてそれが(どれが)プロパティなのか? (4) :アクセッサとミューテータで異なる型が宣言されている場合

今回はアクセッサ (getter) メソッドとミューテータ (setter) メソッドで異なる型が宣言されている場合を見ていきます。対象とするオブジェクトの定義 プロパティを取得するオブジェクトの定義。Java オブジェクト アクセッサとミューテータで型が異なるよう…

果たしてそれが(どれが)プロパティなのか? (3) :メソッドが定義されているオブジェクト

前回に続き、今回はメソッドが定義されている Java オブジェクト、Groovy オブジェクトに対してプロパティを取得して見ます。対象とするオブジェクトの定義 プロパティを取得するオブジェクトの定義。Java オブジェクト Java クラスのメソッドに定義できるス…

果たしてそれが(どれが)プロパティなのか? (2) :フィールドが定義されているオブジェクト

前回に見たプロパティの取得方法を用いて、今回から、いろいろな Java オブジェクト、Groovy オブジェクトに対してプロパティを取得して見ます。Java クラス、Groovy クラスではそれぞれ Java クラスでは「class」 Groovy クラスでは「class」、「metaClass…

果たしてそれが(どれが)プロパティなのか? (1) : プロパティの取得方法

Groovy を使ってると「プロパティ」って凄く便利ですが、最近、どれがプロパティとして認識されるのかが(拙者の中で)ゴッチャ煮なってきたなう。 自分でクラスを設計する分には、分かりづらい定義を避ければいいんでしょうけど、既にある(Java) ライブラリ…

MarkupBuilder で RELAX NG スキーマを書いてみた

『MarkupBuilder でスタイルシートを書いてみた』ついでに、MarkupBuidler で RELAX NG スキーマも書いてみました。RELAX NG には、XML 形式でない簡略化された記法『RELAX NG Compact Syntax』というのがあるのであえて MarkupBuilder を使う必要はないかも…

MarkupBuilder でスタイルシートを書いてみた

XSLT スタイルシートは(特にロジックなどを)書くのが結構大変。 以前から RELAX NG Compact Syntax のような簡略記法がないかなぁと思っていましたが、Groovy の Builder を使うとこの目的が達せられるかと思いチョット試してみました。変換対象の XML デ…

『Groovy in Action』 参照 URL & 書籍 : Chapter 1 & 付録

「『Groovy イン・アクション』 日本語サポートサイト」 「『Groovy in Action』 の Web ページ」 Chapter 1 : Groovy への道 「Groovy 公式サイト」 「Groovy 関連プロジェクト」 「Fibonacci Quarterly」 IDE サポート 「JetGroovy」 「Eclipse Plugin」 …

『Groovy in Action』 参照 URL & 書籍 : 第3部 Groovy の活用

「Groovy リスナーオブジェクト」 「Jeremy Rayner が書いた簡単な HTTP サーバー」 「Jakarta Commons CLI」 依存性解決パッケージ 「Maven」 「Ivy」 「Quartz スケジューラ」 「HtmlUnit」 「JavaMail チュートリアル」 Microsoft Office 「POI」 「JExce…

『Groovy in Action』 参照 URL & 書籍 : 第2部 Groovy ライブラリと関連技術

Ant 「Ant」 「Ant manual」 「Gant」 「Swing チュートリアル」 「ULC」 「DSL」 「Serializable 型」 「Servlet API」 Groovy の Web 関連技術 freshmeat 「GvTags」 「Groovy Tapestry」 「Biscuit: A Simply Groovy Wiki」 「HyperSQL」 Ted Neward 「OR…

『Groovy in Action』 参照 URL & 書籍 : 第1部 Groovy 言語

「宇宙船演算子」 「Value Object」 正規表現 「Java の正規表現」 「正規表現を対話的にテストするオンライン・アプリケーション」 「Quick Sort」 Paul Graham 「Revenge of the Nerds」 (言語がクロージャに提供するスコープについての規則の有用度) An…

イカす達人 (8) : テストにだけ Groovy を使うプロジェクト

以前に Maven2 プロジェクトで Groovy を使用する方法を見ました(一覧)。 ただし、Groovy は便利で、Java と Groovy がシームレスに連携できるとはいえ、いきなり Java プロジェクトを Groovy プロジェクトに変更できるとは限りません。そこで、メインコー…

GMaven プラグインを作ろう! (4) : GMaven プラグイン・プロジェクトを生成する Groovy スクリプト

GMaven プラグイン・プロジェクトの pom.xml は結構複雑なので(以前の記事)毎回書くのは大変です。 そこで Groovy の練習を兼ねて、テンプレートを生成するスクリプトを書いてみました(GMavenPluginArchetype.groovy)*1(一覧)。スクリプトの実行 上記…

GMaven プラグインを作ろう! (3) : GroovyMojo、プラグインのインストール&使用とか

今回はプラグインのインストール&使用とか(一覧)。GroovyMojo クラス GMaven プラグインで行う処理を実装するのは GroovyMojo のサブクラスです。 なので、GMaven プラグインには最低1つは以下のようなクラス(GroovyMojo クラス)を作成する必要がありま…

GMaven プラグインを作ろう! (2) : GMaven プラグイン・プロジェクトの pom.xml

今回は GMaven プラグイン・プロジェクト(Groovy による Maven2 プラグインを開発するプロジェクト)の pom.xml を見ていきます(一覧)。まずその前に、お詫びと訂正を。 別に拙者が悪いわけではないんですけど。 前回見た GMaven プラグイン・プロジェク…

GMaven プラグインを作ろう! (1) : GMaven プラグイン・プロジェクトの生成

今回から何回かにわたって、Groovy を使った Maven2 プラグイン(以下「GMaven プラグイン」)の開発方法を見ていきます(Implemeting Maven Plugins 参照)。 今回は GMaven プラグイン・プロジェクトの生成方法(一覧)。 GMaven プラグイン・プロジェクト…

イカす達人 (7) : その他、GMaven でできること

GMaven の全ての機能を紹介するのは面倒なので、GMaven できることを列挙してみました(一覧)。 大きく分けて次の2つ: Groovy コードを実行する GMaven のその他のゴール 詳しくは各表の「ドキュメント」に張っているリンクを参照。Groovy コードを実行す…

イカす達人 (6) : Groovy コード内で使用できる定義済み変数

前々回、前回に Maven2 で Groovy コードを実行する方法を見ましたが、このコード中で、自分で定義する必要なく使用できる「定義済み変数」がいくつかあります。 今回はそれらと、それらのプロパティを見ていく、というか参考のために列挙しておきます(一覧…

イカす達人 (5) : フェイズ実行時に Groovy コードを実行する

前回に引き続き、今回は「フェイズ実行時」に Groovy コードを実行する方法を見ていきます(一覧)。今回以降、特に必要がない限り Groovy 1.7 ではなく、Groovy 1.6 (GMaven 1.2) の環境を前提とします。pom.xml 実行したい Groovy コードは前回と同じく pr…

イカす達人 (4) : Groovy コードを実行する

今回は Maven2 で Groovy コードを実行する方法を紹介(一覧)。 「Executing Groovy Code」を参考にしてます。前々回と同じように、GMaven のサポートのせいで Groovy 1.7 以降を使うにはいろいろ設定が必要です。 とはいっても、ここで Groovy 1.6 を使っ…

イカす達人 (3) : GMaven プロジェクトのコンパイル、テスト、インストールとか

GMaven プロジェクトのコンパイル、テスト、インストールとか GMaven を使って作成した Groovy プロジェクトを「GMaven プロジェクト」と呼ぶことにします(一般的には使われてないと思いますが)。前回は GMaven プロジェクトの作成方法を見ました(一覧)…