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