[Seasar-user:18147] Re: [Ymir][s2-pluggable] oc4j用の code-source プロトコルに対応していない
YOKOTA Takehiko
[E-MAIL ADDRESS DELETED]
2009年 8月 1日 (土) 13:37:53 JST
横田です。
西山さんからいただいたパッチを適用したものをMaven2のSNAPSHOTリポジトリ
にデプロイしました。試してみていただけますでしょうか?
よろしくお願いします。
YOKOTA Takehiko さんは書きました:
> 横田です。
>
> ご報告ありがとうございます。対応させていただきたいと思います。
>
> (ちょっと今本業が佳境のため、週末の対応となってしまうと思います。
> すみません。)
>
> 対応終わりましたらご連絡します。
>
> 以上よろしくお願いします。
>
>
> 西山 はじめ さんは書きました:
>> お世話になっております。
>> 西山と申します。
>>
>> 環境:
>> Ymir 1.0.4
>>
>>
>> 現在、YmirをOC4Jで動かすテストを行っております。
>> しかし、s2-pluggableがOC4Jに対応しておりません。
>>
>> S2Container自体はOC4Jに対応しておりますので、対応を検討して
>> いただけないでしょうか。
>>
>> s2-frameworkの
>> org.seasar.framework.container.cooldeploy.CoolComponentAutoRegister$CodeSourceFileStrategy
>> と同じ処理を
>> org.seasar.cms.pluggable.ClassTraverser
>> に追加することで、今のところ動作しております。
>>
>> こちらで作成したソースは以下の通りです。
>>
>> Index:
>> src/main/java/org/seasar/cms/pluggable/ClassTraverser.java
>> ===================================================================
>> ---
>> src/main/java/org/seasar/cms/pluggable/ClassTraverser.java
>> (revision 994)
>> +++
>> src/main/java/org/seasar/cms/pluggable/ClassTraverser.java
>> (working copy)
>> @@ -13,6 +13,7 @@
>> import org.seasar.framework.util.ClassTraversal;
>> import org.seasar.framework.util.JarFileUtil;
>> import org.seasar.framework.util.ResourceUtil;
>> +import org.seasar.framework.util.URLUtil;
>> import org.seasar.framework.util.ClassTraversal.ClassHandler;
>>
>> public class ClassTraverser {
>> @@ -31,6 +32,7 @@
>> strategies.put("file", new FileSystemStrategy());
>> strategies.put("jar", new JarFileStrategy());
>> strategies.put("zip", new ZipFileStrategy());
>> + strategies.put("code-source", new
>> CodeSourceFileStrategy());
>> }
>>
>> public int getClassPatternSize() {
>> @@ -197,6 +199,22 @@
>> return JarFileUtil.create(new File(jarFileName));
>> }
>> }
>> + /**
>> + * OC4J固有の<code>code-source:</code>プロトコルで表現
>> されるURLをサポートするストラテジです。
>> + */
>> + protected class CodeSourceFileStrategy implements
>> Strategy {
>> +
>> + public void process(Class<?> referenceClass, URL url) {
>> + final JarFile jarFile = createJarFile(url);
>> + ClassTraversal.forEach(jarFile, classHandler);
>> + }
>> +
>> + protected JarFile createJarFile(final URL url) {
>> + final URL jarUrl = URLUtil.create("jar:file:" +
>> url.getPath());
>> + return JarFileUtil.toJarFile(jarUrl);
>> + }
>> +
>> + }
>>
>> class FilteredClassHandler implements ClassHandler {
>>
>> =================ここまで
>>
>> 以上よろしくお願いいたします。
>>
>
>
Seasar-user メーリングリストの案内