# パッケージ org.opengion.plugin

     このドキュメントは、プラグイン類を集めた『はやぶさplugin』の ＡＰＩ 仕様です。

     plugin には、【calendar】、【column】、【daemon】、【develop】、【io】、【query】、【table】、【view】
     があり、各カスタムタグの属性でキーワードを指定する事で、使用します。

     plugin の導入メカニズムは特殊(※)で、クラス名が、インターフェース_キーワード.java
     というクラスファイルを、plugIn というクラスパスから、起動時に読み込んで、
     システム設定ファイル（GE12)にロードします。
     本体は、システム設定ファイルのキーと正式クラス名(パッケージ付きクラス名)から、
     実際のクラスを起動します。

     よって、初期設定と同じキーワードでプラグインをオーバーロードする場合は、Tomcat等の
     アプリケーションサーバーのオーバーロードメカニズムを利用して、読み込み優先順位を
     あげる必要があります。
     Tomcatでいうと、WEB-INF の lib と classes では、classes の方がクラスロードの
     優先順位が高いので、標準plugin を lib に、カスタムplugin を classes に配置する
     ことで、プラグインをオーバーロードを実現してください。

     ただし、起動後、システム設定ファイル（GE12) を書き換える事で、任意のクラスを
     オーバーロードすることが可能ですので、先のクラスローダーでは解決できないケース
     では、こちらの方式を使用してください。

     ※ plugin の導入メカニズム
     plugin の導入メカニズムでは、Eclipseの採用している
     OSGi(Open Service Gataway Initiative)
     と、Tomcatの採用している

     JMX(Java Management Extensions)
     が有名です。

     現バージョンでは、それぞれのプラグインは独立したプログラムではなく、あくまで
     内部再利用を行う為の機構の為、簡易的な方法で、実装しています。

        org.opengion.plugin.calendar (classes)
           → org.opengion.fukurou.util                          classes
           → org.opengion.hayabusa.common                       classes
           → org.opengion.hayabusa.resource                     classes
        org.opengion.plugin.column (classes)
           → org.opengion.fukurou.db                            classes
           → org.opengion.fukurou.model                         classes
           → org.opengion.fukurou.security                      classes
           → org.opengion.fukurou.system                        classes
           → org.opengion.fukurou.util                          classes
           → org.opengion.hayabusa.common                       classes
           → org.opengion.hayabusa.db                           classes
           → org.opengion.hayabusa.resource                     classes
        org.opengion.plugin.daemon (classes)
           → org.opengion.fukurou.db                            classes
           → org.opengion.fukurou.mail                          classes
           → org.opengion.fukurou.system                        classes
           → org.opengion.fukurou.transfer                      classes
           → org.opengion.fukurou.util                          classes
           → org.opengion.hayabusa.common                       classes
           → org.opengion.hayabusa.mail                         classes
           → org.opengion.hayabusa.report                       classes
           → org.opengion.hayabusa.report2                      classes
        org.opengion.plugin.io (classes)
           → org.opengion.fukurou.model                         classes
           → org.opengion.fukurou.system                        classes
           → org.opengion.fukurou.util                          classes
           → org.opengion.hayabusa.common                       classes
           → org.opengion.hayabusa.db                           classes
           → org.opengion.hayabusa.io                           classes
        org.opengion.plugin.query (classes)
           → org.opengion.fukurou.model                         classes
           → org.opengion.fukurou.system                        classes
           → org.opengion.fukurou.util                          classes
           → org.opengion.hayabusa.common                       classes
           → org.opengion.hayabusa.db                           classes
        org.opengion.plugin.report (classes)
           → org.opengion.fukurou.system                        classes
           → org.opengion.fukurou.util                          classes
           → org.opengion.hayabusa.common                       classes
           → org.opengion.hayabusa.db                           classes
           → org.opengion.hayabusa.report                       classes
        org.opengion.plugin.table (classes)
           → org.opengion.fukurou.db                            classes
           → org.opengion.fukurou.model                         classes
           → org.opengion.fukurou.system                        classes
           → org.opengion.fukurou.util                          classes
           → org.opengion.hayabusa.common                       classes
           → org.opengion.hayabusa.db                           classes
           → org.opengion.hayabusa.report2                      classes
           → org.opengion.hayabusa.resource                     classes
        org.opengion.plugin.view (classes)
           → org.opengion.fukurou.model                         classes
           → org.opengion.fukurou.system                        classes
           → org.opengion.fukurou.util                          classes
           → org.opengion.hayabusa.common                       classes
           → org.opengion.hayabusa.db                           classes
           → org.opengion.hayabusa.html                         classes
           → org.opengion.hayabusa.resource                     classes