openGionopenGion
5.8.8.0

org.opengion.fukurou.xml
クラス JspIncludeReader

java.lang.Object
  上位を拡張 org.opengion.fukurou.xml.JspIncludeReader

public class JspIncludeReader
extends Object

このクラスは、jspファイルのXSLT変換に特化した、Readerオブジェクトを作成するクラスです。 jspファイル に記述される、jsp:directive.include を見つけて、そのファイル属性に 記述されているファイルを、インクルードします。 Tomcat の特性上、インクルード時のファイルは、&等のエスケープを処理しておく 必要があります。 エスケープの前処理は、jsp:root タグのあるなしで判定します。 現時点では、 &amp; , < , <= , > , >= を前処理します。 JSP では、og:head タグで、<html> を出力したり、htmlend.jsp インクルードで </body></html> を出力していますが、フレームや、フォワードなど、整合性が 取れないケースがありますので、XML処理用として、<html> を出力していません。 変換結果を、正式な HTML ファイルとして再利用される場合は、ご注意ください。 なお、このクラスは、マルチスレッド対応されていません。

変更履歴:
4.0.0.2 (2007/12/10) 新規追加
バージョン
4.0
作成者
Kazuhiko Hasegawa
導入されたバージョン:
JDK5.0,

コンストラクタの概要
JspIncludeReader()
           
 
メソッドの概要
static void cacheClear()
          インクルードしたファイルのキャッシュをクリアします。
 String getIncludeFiles()
          インクルードしたファイル名(相対パス)のリスト文字列を返します。
 String getString(File file, String encode)
          JSP のインクルードを考慮した、JSPファイルを、String で返します。
static void main(String[] args)
          テスト用の main メソッド Usage: org.opengion.fukurou.xml.JspIncludeReader inFile [outFile]
 void setRealPath(String path)
          jspInclude=true 時に、/jsp/common/** 等の include ファイルが存在しない場合の共有取得場所を指定します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

JspIncludeReader

public JspIncludeReader()
メソッドの詳細

getString

public String getString(File file,
                        String encode)
JSP のインクルードを考慮した、JSPファイルを、String で返します。 このメソッドは、内部で再帰定義されています。つまり、jsp:directive.include 文字列が見つかった場合は、その代わりに、ファイル名を取出して、もう一度 このメソッドを呼び出します。インクルードファイルとの関連をチェックする為に ダミーのspanタグを入れておきます。 <span type="jsp:directive" include="ファイル名"><!-- --></span> ただし、ソースチェック時に、 Ver4 以降で、インクルードファイルに、XML宣言と、jsp:root を付与するケースがあります。 擬似的に取り込むときには、XML宣言は削除します。

パラメータ:
file - JSPファイル
encode - ファイルのエンコード
戻り値:
インクルードを考慮した、JSPファイル
変更履歴:
5.2.1.0 (2010/10/01) directive.include で、XMLタグとroot タグは取り込まない。
5.2.1.0 (2010/10/01) エスケープ処理の引数を廃止します。
5.6.5.2 (2013/06/21) 小細工内容の変更。replaceAll にするのと、スペースまたはタブを使用します。
5.6.7.1 (2013/08/09) コメントの処理のバグ修正。includeファイル名保存。
5.6.7.1 (2013/08/09) includeファイルが存在しない場合は、gf共有から取得する。
5.6.7.2 (2013/08/16) includeファイルを取り込む場合、代わりのspanタグを出力しておきます。
5.6.7.4 (2013/08/30) includeファイルの先頭のpageEncoding指定のチェック用 span タグの出力
5.7.6.2 (2014/05/16) realPath で、/jsp/common/以下に、実ファイルが存在しない場合の代替取得先を指定します。

setRealPath

public void setRealPath(String path)
jspInclude=true 時に、/jsp/common/** 等の include ファイルが存在しない場合の共有取得場所を指定します。 引数の処理対象ファイル(transformの引数ファイル)が、『.jsp』で、かつ、jspInclude=true の場合、 そのファイルを INCLUDE するのですが、/jsp/common/** 等の include ファイルは、 エンジン共通として、jspCommon6.x.x.x.jar で提供しています。 従来は、処理対象jspの相対パスで、../../../gf/jsp/commom/** を取り込んでいましたが、 Tomcat起動フォルダ以外のシステムのJSPチェックなどを行う場合は、gf フォルダが存在しない ケースがあります。 そこで、確実にgf が存在する、処理をキックしている環境の gf を使用するように変更します。 その環境とは、つまり、エンジン内部変数の REAL_PATH ですが、jsp などが実行していないと取得できません。

パラメータ:
path - /jsp/common/** 等の include ファイルの共有取得場所

getIncludeFiles

public String getIncludeFiles()
インクルードしたファイル名(相対パス)のリスト文字列を返します。 通常は、XSLT変換処理でエラーが発生した場合は、includeファイルの整合性が おかしい場合が多いので、デバッグ情報として利用します。 ただし、エラー発生時の位置特定まではできません。 この内部変数は、インスタンス変数ですので、includeファイルのキャッシュとは寿命が異なります。

戻り値:
includeファイル名のリスト文字列
変更履歴:
5.6.7.1 (2013/08/09) 新規追加

cacheClear

public static void cacheClear()
インクルードしたファイルのキャッシュをクリアします。 キャッシュは、インスタンスではなく、スタティック変数で管理しています。 よって、一連の処理の初めと最後にクリアしておいてください。

変更履歴:
5.6.7.1 (2013/08/09) 新規追加

main

public static void main(String[] args)
テスト用の main メソッド Usage: org.opengion.fukurou.xml.JspIncludeReader inFile [outFile]

パラメータ:
args - コマンド引数配列

openGion 5.8.8.0

Webアプリケーションフレームワーク openGion
SourceForge.JPCopyright (c) 2009 The openGion Project.