Groovy

GroovyのClosureでトランザクション

GroovyにはClosureを使ってJDBCを簡単に扱うためのクラス(groovy.sql.Sqlとgroovy.sql.DataSet)がありますが、トランザクションに関してはそれらしきものがなかったので考えてみました。Tx.java : 実はSeasar2のRequiredInterceptorをほんのちょっぴり変えた…

Groovyで定義したクラスのインスタンス化

なんだかとてもひさびさにgroovyを触ってみました。 クラスパスが通っていればGroovyから別のファイルに定義してあるGroovyのクラスがインスタンス化できるんですね。知りませんでした。Eclipseでgroovyファイルをclasspathが通るとこにおいて、GroovyShell…

XmlS2ContainerBuilderにGroovyClassLoaderを渡す

Seasarでコンポーネントにgroovyで定義したインスタンスを使いたい場合はS2GroovySeasarを使えばできますが、diconファイルを使ってもできそうです。S2ContainerBuilderのbuildメソッドにClassLoaderを引数にとるものがあるのでここにGroovyClassLoaderを渡…

GroovyDelegateInterceptor

なんか昨日の日記の追記と矛盾するけどgroovyスクリプトにインタフェースを実装させるのは面倒くさい。 interfaceをimplementsする場合、メソッドのシグネチャはインタフェースと厳密に一致しなければいけない。アクセス修飾子、戻り値、メソッド名、引数の…

GroovyだらけでSeasar

SeasarBuilderをちょびっと変更してgroovyスクリプトからつくったクラスをコンテナに登録しよう。 SeasarBuilderを変更したCustomizedSeasarBuilder groovyという属性が指定されたらgroovyファイルからClassを生成してコンテナに登録。 // このメソッド変更 …

Closureって

InvokerHelper.invokeClosure(Object, Object) Invoker.invokeMethod(Object,"doCall",Object) Sample$1(Closure).invokeMethod(String, Object) Closure.doInvokeMethod(String, Object, Closure) Sample$1(Closure).call(Object)

Groovy: A Dynamic OO Language for the Java Virtual Machine

http://www.openlogic.com/presentations このドキュメントのURLって変わった?この資料見たかったんだけど以前のリンクから辿れなくてしばらく困ってた。サンプルが多くて好き。

たとえばprintln ['a','b'].join('@')の出力部分を()で囲む囲まない

hoge = ['a','b'].join('@') println hoge // ok println (['a','b'].join('@')) // ok println ['a','b'].join('@') // error なんで最後のやつはうまく動かないのか?join()にかぎった挙動ではない。心の隅にとどめておく。

GroovyMarkupの仕組みとクロージャのdelegate

ちょっと工夫すればGroovyMarkupでclosureがつかえる。以前書いたもので確認。動きましたー。 ueharaさん、ありがとうございます。 import groovy.xml.MarkupBuilder map = [1:"one",2:"two",3:"three"] builder = new MarkupBuilder(out) builder.html() { …

Groovyラボ 隠れ/マイナー機能調査隊

おもしろそう。あとで読む。

Web層のモデル

Web層のモデルを何処でつくるかの指針をひがさんに答えてもらいました。答えてもらって気づいたけど自分の疑問はダイコン時代とは直接関係なかったかも…。 とある本では、StrutsのActionFormがドメインオブジェクトでないことを 批判してますが、間違ってい…

JavaのソースファイルをGroovyShellの引数でわたしてみる

mainメソッドをもっていれば問題なく実行できる?それほど驚くことでもないかもしれない。

GroovyをEclipseから実行

http://www.wikiroom.com/Groovy/?Eclipse%A4%AB%A4%E9%BC%C2%B9%D4 とても役に立ちそう。 ところで、Eclipseって簡単にソース上のkeywordに色つけられないのか?

プレゼンテーション層にGroovy

こんなことしてみました。 StrutsでいうところのAction(LookupDispatchAction)部分をGroovyで作成。 上記のGroovyでつくったClassにService層のクラスをdiconのouter&autoBindingでセッター・インジェクト。 Groovyなのでsetterメソッドを省略できるので楽チ…

presentation層はGroovy

Groovyはpresentation層で活躍させよう、と思う。 FrontControllerとしてGroovyServlet scriptがDicontainerに管理されるサービスを実行 scriptはTemplateServletにディスパッチ HTMLが生成される

TemplateServlet

GroovyにTemplateServletというものがあることを発見。JSPに似た構文を使えるらしい。 JSPみたいにやが使える。${}もつかえる。 暗黙変数もjspと同じ。Defaultのものを使うならinit-paramでtrueを指定する。暗黙変数はTemplateServletを継承すればカスタマイ…

setContentType

GroovyServletもTemplateServletもHttpServletRequest#getWriter()のあとでsetContentType()しちゃってる。setContentType()してからgetWriter()しないと。

groovy.servlet.GroovyServletの拡張

ソースはとても短いので継承するにしても別個に同等のものつくるにしても簡単。 GroovyServletでは「request」「response」「application」「session」「out」の変数がGroovletで暗黙的に使用できるように定義されている。outの変数を定義する前にServletRes…

GroovletとMarkupBuilder

Groovletを動かしてみる。なんとなく使ってみたくなった。Groovy - Java用スクリプト言語の例ではHTML自体が文字列でその中に変数埋め込んでいるけど、条件分岐やループを使ってページを生成するにはMarkupBuilderを使うことになると思う。生きてまをみてMar…

S2GroovyBuilderでClosureを使う

adviceにClosureを渡せるところがすてきだと思う。こんなことをしてみた。 Container全体でTraceInterceptorを使うかどうかのコントロール。 Container全体でDEBUG用のロジックを使うかどうかのコントロール。 上記二つの条件分岐により設定情報が見にくくな…

Quick and Easy Object Persistence: pBeans + Groovy Beans

TheServerSideのNews Forum。肯定的なコメントが少ないよう…。

Quick and Easy Object Persistence: pBeans + Groovy Beans

id:n-tさんのとこより。最初はタイトルのGroovyの単語にひかれて記事読んだのだけど実はpBeansがおもしろそう。 こっちはpBeansのサイト pBeans is a Java based persistence framework and an Object/Relational (O/R) database mapping layer. It is desig…

ファイルの中身の一括変換

置換する文字はなんでもいいのだけれど、ずいぶんすっきり。 import java.io.* //ディレクトリを引数に渡す new File(args[0]).eachFileRecurse { file | if (file.isFile() && file.name.endsWith(".java")) { result = (file.getText() =~ "ArrayList").re…

File#eachFileRecurse(groovy.lang.Closure closure)を使ってみる

Groovy JDKの一覧ってちょっと前に比べても随分増えたような…。ところでなんでJavaDocみたいな書き方じゃないのかな。どれがどのメソッドの説明かわかりにくいよ。2週間ほど前に書いた例題3を書き直してみる。これは便利。 import java.io.* // directory構…

Heads-up on File and Stream groovy methods

mtakahashiさんの日記で発見 memo

sort()の使い方

これもGroovy: A Dynamic OO Language for the JVMのコードを少し変更してみて動かしてみる。 じつはよくわからなかったりする。 class Fruit {name ; weight } list = [new Fruit(name:"orange", weight:100), new Fruit(name:"watermelon", weight:300), n…

JavaからGroovyスクリプトを呼び出す(interfaceを使って)

Groovy: A Dynamic OO Language for the JVMにあるコードなのだけど、自分でもちょこっと変えて動かしてみる。ちゃんと動くものをのっけとけばあとでコピペできて便利ということで。Interfaceを使わない呼び出しもできるようだけど、使ったほうが少しコード…

AntのScriptタスクとant-contribのタスクで条件分岐やループを試してみた

ちょっとつかってみて感想など Scriptにgroovyを使った場合: scriptからantのpropertyにアクセスできることは確認できた scriptからのtargetの実行のさせかたわからない(そもそも可能なのか?) scriptの中で「this」にアクセスできない。 ant-contribを使…

実行中のオブジェクトにメッセージを送る

misokaさんの日記より えーこんなことができちゃうの?これは意外も意外、おもしろいなぁ。

AntBuilderを使ってみる

ビルドには条件分岐をつかいたい。これに柔軟に対応するためにはbuild.xmlではなくGroovyのAntBuilderなのだ。(とはいっても作ったもののなかには条件分岐いれてない)きのうのbuild.xmlに似たものをつくってみた。 ぐぐってひっかかったところを参考。でも…