2008-01-01から1年間の記事一覧

plistっぽいxml読み込み用digester-rules

(2008/5/24 追記: 本物のplist読み込みについては真・plist形式のxml読み込み用digester-rules(およびクラス) - terazzoの日記を参照)設定ファイルをXMLで書く事って多いんだけど、javaでXML使う時って型安全や妥当性に拘りすぎて仰々しいと時々思う。かとい…

Proxyを使ってメソッド呼び出しを記録/再生する実験

(前回からの続き)Proxyを使ってリモート呼び出しをおこなうという魂胆。ところでネットワークストリームを使ったoneway voidのリモート呼び出しは、ストリームをファイルに置き換えるだけで、メソッド呼び出しの記録/再生に使えるはず。ということでProxyを…

Proxyを使って強引にキャストする実験

というのが出来そうなので書いてみた ソースコード package sample.proxycast; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; @SuppressWarnings("unchecked") public final class ProxyC…

ProxyでMixin的な処理

が出来るんじゃないかと思ったけど、これは流石にかなり昔にやられてた。 ProxyでMixin - lambda {|diary| lambda { diary.succ! } }.call(hatena) 呼び出されたメソッドがどのクラス/インタフェースに載ってるのかをMethodのgetDeclaringClass()で取得出来…

メソッドの呼び出し結果をProxyを使用してキャッシュする実験

インタフェース経由でのメソッド呼び出しにおいて、間にProxyを挟んでキャッシュするサンプル。 DIコンテナは不要だけど、DIコンテナを使用して粗結合にしている場合に適用が簡単という例示の為に使ってます。 ソースコード CacheおよびCacheManagerクラスに…

メソッドの呼び出し結果をAOPでキャッシュする実験

DI+AOPにはSeasar2を使用。 このサンプルの問題点などは後ろで。 ソースコード まずキーに対して値をキャッシュするクラスを作る(今回は単純にHashMapで) package sample.cache.cache; import java.util.HashMap; import java.util.Map; public class Cache …