[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 メーリングリストの案内