[Seasar-user:18134] Re: [Ymir][s2-pluggable] oc4j用の code-source プロトコルに対応していない
YOKOTA Takehiko
[E-MAIL ADDRESS DELETED]
2009年 7月 30日 (木) 22:38:14 JST
横田です。
ご報告ありがとうございます。対応させていただきたいと思います。
(ちょっと今本業が佳境のため、週末の対応となってしまうと思います。
すみません。)
対応終わりましたらご連絡します。
以上よろしくお願いします。
西山 はじめ さんは書きました:
> お世話になっております。
> 西山と申します。
>
> 環境:
> 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 {
>
> =================ここまで
>
> 以上よろしくお願いいたします。
>
--
YOKOTA Takehiko
[E-MAIL ADDRESS DELETED]
Seasar-user メーリングリストの案内