===========================================================
version 3.1
===========================================================

1. アクションのパスにjspから始まるパスを指定するとセッションが毎回作成されてしまう
ような現象が出る。(調査中)
2. BeanToXmlDocument、BeanToJsonDocumentでPOJOを再帰的に解析する処理を追加
3. Logの日付ローテイト版クラスを追加
4. XMLHttpObjectでresXmlが取得できない
LayoutFilterにてXMLレスポンスのContentTypeが上書きされてしまう現象を修正

+------------------------------------------------------------------------------+
なお送信に関しても、XMLHttpRequestオブジェクトが理解できるのは、UTF-8に限られる。
そのため日本語が含まれているのであれば、UTF-8に変換する必要がある。
Content-Typeをtext/xmlに設定し忘れると、クライアント側のスクリプトでは、
responseXMLプロパティの戻り値としてDocumentオブジェクトを取得できないことも覚えておこう。
+------------------------------------------------------------------------------+

5. Validatio機能追加
リクエストパラメータの入力チェックをweber-config.xmlに指定可能。
固有の入力チェックは従来どおり、Action.doValidate()に実装

6. GETメソッド利用時の注意点
setCharacterEncodingメソッドの利用において1点注意すべき点は、フォームのデータ送信
にGETメソッドを用いたときの振る舞いがWebコンテナの実装依存であることだ。
例えば以下のようなJSPページを考えてみよう。

<%@ page language="java" contentType="text/html;
 charset=Windows-31J" %>

<html>
<head><title>テスト</title></head>
<body>

<form action="test.jsp" method="GET">
  <input type="textbox" name="msg">
  <input type="submit" value="Send">
</form>

<%
    request.setCharacterEncoding("Windows-31J");
    out.print(request.getParameter("msg"));
%>

</body>
</html> 

　このJSPページで注意していただきたい点は、フォームの送信メソッドとしてGETを
指定している点だ。
　よってフォームのパラメータは、HTTPリクエスト・ボディではなく、URI上のクエリ
文字列を通じてサーブレット・コンテナに送信される。

Tomcat 4.1.31の場合、上記コードは問題なく日本語を扱うことができる。
Tomcat 4.1.31では問題なく日本語が表示される 

一方、Tomcat 5.0.28では、これとまったく同じJSPページで、パラメータの文字化けが
発生してしまう。
実はTomcat 5.xではGETにより受信したパラメータに対して、setCharacterEncoding
メソッドの文字コードを「適用しない」という仕様変更がなされているのである。

Tomcat 5.xにおいてこの問題を解消するには、同コンテナの設定ファイル
server.xmlのConnector要素にて、useBodyEncodingForURI属性を
以下のように指定すればよい。

<Connector 
port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000" 
disableUploadTimeout="true" useBodyEncodingForURI="true"/>  

Webブラウザの多くは、Webページと同じ文字コードでクエリ文字列を作成し、
それに対してURLエンコーディング（%xx形式）を施してWebサーバに送信する。
しかし、そ

7.GETの文字化け対応2
Tomcat 5.xにおける仕様変更は、このルールを優先したものなのである
（ちなみに、今年4月にGoogleにおけるクエリ文字列のデフォルト文字コードが
UTF-8に変更され、いくつかのタブブラウザで文字化けが発生したのも、
これと同様の事情によるものだ）。

※Tomcat5.xより、FORMのGETメソッドでパラメータを送信した場合、
setCharacterEncodingメソッドを無視するようになりました。
POSTメソッドの場合は有効です。 
GETメソッドの場合、server.xmlファイルの<connector>タグのuseBodyEncodingForURI属性
をtrueに指定することで、setCharacterEncodingメソッドを有効にできます。  
 <Connector port="8080" maxThreads="150"
           minSpareThreads="25" maxSpareThreads="75"
           enableLookups="false" redirectPort="8443"
           acceptCount="100" debug="0" 
           connectionTimeout="20000" disableUploadTimeout="true"
           useBodyEncodingForURI="true" />
8. WeberTestCaseを継承した単体テストクラスを実行すると
MockGeneralFormクラスでHttpServletRequestクラスのClassNotFoundExceptionが
出てしまう現象を修正

9. WeberTestCaseを継承した単体テストクラスを実行すると
ActionBucketクラスでHttpServletRequestクラスのClassNotFoundExceptionが
出てしまう現象を修正
(1) ActionBucketクラスをインターフェースに変更
(2) 旧ActionBucketクラスをActionBucketImplクラスに変更

===========================================================
version 3.1.1
===========================================================
1. スタックとレースにて（Unknow Source)が出る現象を修正
>javacなら
>javac -g 云々
>
>antなら
>debug="on" optimize="off"

なるほど。。
どうも、Unknown Sourceになるな、と思っていたのですが、ANTは
デフォルトでdebug="off"になっていますね。

2. チェックボックスの複数チェック時のバグ(デグレ)修正
3. XHTMLタグのカスタムタグ定義が行えるようにした
（カレンダーを表示するサンプルを追加）

===========================================================
version 3.1.2
===========================================================
1. HtmlWriteTagConverter追加

===========================================================
version 3.1.3
===========================================================
1. 定義ファイルの定義情報を定義順にソートして保持するよう
修正

===========================================================
version 4.0 b1
===========================================================
1. フォワード名の変更
1-1. 認証エラー時はRoleExceptionをスローするよう変更
（global-exceptionで認証エラー時の遷移先URLを指定する方式
に変更)
1-2  認証成功時の戻り値を変更
（変更前)org.itscool.weber.action.ROLE_SUCCESS
（変更後)success
1-3 入力エラー時の戻り値を変更
（変更前)org.itscool.weber.action.INPUT_ERROR
（変更後)error

3. org.itscool.commons.connection.ConnectionMangerインターフェース
org.itscool.weber.user.RoleManagerインターフェースにisInitメソッド
を追加

4. org.itscool.weber.action.Action.doValidate()の戻り値を
voidからStringに変更

5. org.itscool.stylist.controller.HtmlServlet
xhtmlファイルのヘッダに<?xml version="1.0" encoding="Shift_JIS" ?>記述
が無い場合はデフォルトで<?xml version="1.0" encoding="Shift_JIS" ?>を付加
するように修正（エンコード名は定義ファイルから取得)

6. クラス名変更
org.itscool.weber.user.UserRoleDao->org.itscool.weber.user.RoleDao
org.itscool.commons.dao.DaoInfo->org.itscool.commons.dao.EntityInfo
org.itscool.commons.dao.DaoInfoMapping->org.itscool..commons.dao.EntityInfoMapping
org.itscool.weber.user.RoleManger->org.itscool.weber.user.UserManger
org.itscool.weber.user.RoleDbManger->org.itscool.weber.user.UserEntityManger
org.itscool.weber.user.UserRole->org.itscool.weber.user.Role

8. クラス移動
org.itscool.stylist.filter.*->org.itscool.stylist.controller.*
org.itscool.weber.action.FrontServlet->org.itscool.weber.controller.FrontServlet
org.itscool.weber.action.Globals->org.itscool.weber.controller.Globals
org.itscool.commons.bean.InitParamMap->org.itscool.commons.collection.InitParamMap

9. クラス廃止
org.itscool.weber.user.RoleFileManager
org.itscool.weber.user.CreateUser
org.itscool.weber.user.UserUtil
org.itscool.weber.user.CreateUser
org.itscool.weber.tagexパッケージ（weber-tag.tld及びweb.xmlからカスタムタグ定義を削除)

10. クラス追加
org.itscool.weber.controller.FrontServlet4x
org.itscool.weber.controller.RequestDispatcher
org.itscool.weber.controller.RequestDispatchException
org.itscool.weber.mapping.RequestMappings

11. ユーザクラス、権限クラスのマッピングテーブル名変更
WEBER_USER -> USERテーブル
WEBER_ROLE -> USER_ROLEテーブル
WEBER_AUTONUMBER -> AUTO_NUMBERテーブル

12. org.itscoo.commons.daoパッケージ
DATETIME,TIMESTAMP型対応

13. 楽観的ロック（LOCK_VERSION)、最終更新日（UPDATE_DT)自動セット機能追加
テーブルのフィールドにLOCK_VERSION(整数)を追加することで、楽観的ロックを行う
テーブルのフィールドにUPDATE_DT（DATETIME/TIMESTAMP)を追加することで、
最終更新日を自動でセットします

14. 最終更新日の自動セット追加
テーブルのフィールドにUPDATE_DTが存在する場合、INSERT/UPDATE時に
システム日付をセット(フィールドタイプはDATETIME/TIMESTAMP)

15. 論理削除機能
DELETE_FG(整数型)で論理削除を行う
DELETE_DT(DATETIME/TIMESTAMP)が存在する場合は論理削除時の日付をセット

99. バグ修正
(1) org.itscool.stylist.io.HtmlWriteTagConverter.convert()の
NullPointerExceptionを修正
(2) org.itscool.stylist.tag.LayoutRegex.parseObj()の
NullPointerExceptionを修正
(3) org.itscool.commons.connection.JdbcConnectionManager,DataSourceConnectionManager
のgetTransaction()、releaseTransaction()、init()、destroy()にsynchronizedブロックを
追加

===========================================================
version 4.0 b2 / b3 
===========================================================

99. バグ修正
(1) org.itscool.commons.dao.FieldMap
日付で時間24Hで出力するよう修正
(2) org.itscool.stylist.controller.HtmlLayoutServlet4_x追加
レイアウト情報を規約ベースで作成する機能を追加
(3) org.itscool.commons.util.URLDecodeUtilクラスのfilterメソッド
「"(ダブルクォーテーション)」の変換方法に誤りを修正
(4) FireFox上でファイル転送できない現象を修正


===========================================================
version 4.0 b4
===========================================================
1. EL関数対応及びカスタムEL関数機能追加
2. org.itscool.weber.user.UserEntityManagerクラスのユーザ登録系
のメソッドを非推奨に変更

99. バグ修正
(1) org.itscool.layout.controller.HtmlLayoutServlet4_x
既存のレイアウトと併用すると、FileNotExceptionが出る現象を修正
(2) 暗号化されたパスワードによるユーザ認証に失敗する現象を修正
(3) XHTMLのパースエラーをサーブレットに返すように修正
(4) lock_versionがNullのとき、更新できない現象を修正

===========================================================
version 4.0
===========================================================
(1) EL関数追加
(2) バイナリ型のフィールドを持つテーブルに対するSQL操作は現時点で不可
(3) org.itscool.commons.BeanUtilのsetProperty、getPropertyメソッドに
配列メンバ対応を追加
(4) org.itscool.weber.testcase.WeberTestCase修正

メモ Transactionインスタンスの処理をPreparedStatementに置き換える必要がある。
1: connection.setAutoCommit(false);
2:  
3: String sql="insert into product_photo values(?,?)";
4: PreparedStatement statement=connection.prepareStatement(sql);
5:   
6: statement.setInt(1,104);
7: File file=new File("/tmp/myphoto.jpg");
8: FileInputStream input=new FileInputStream(file);
9: statement.setBinaryStream(2,input,(int)file.length());
10:statement.executeUpdate();
11:connection.commit();

===========================================================
version 4.0.1
===========================================================
(1) InitParamの初期化（createInstance())をinitメソッド以外で呼び出している
箇所をgetInstanceに修正

org.itscool.stylist.controller.HtmlLayoutServlet
org.itscool.stylist.controller.HtmlLayoutServlet4_x
org.itscool.weber.controller.FrontServlet
org.itscool.weber.controller.FrontServlet4_x
org.itscool.weber.controller.ActionBucketImpl
org.itscool.stylist.io.HtmlAttributeConverter
org.itscool.stylist.io.HtmlTextConverter

(2) ActionのdoValidateにてRET_NOFORWARDを返した場合は、
エラー画面に遷移しないよう修正

(3) org.itscool.weber.controller.ActionBucket, ActionBucketImplに
以下のメソッドを追加
/**
 * パラメータで指定されたBeanToXMLドキュメントを出力します
 * @param document BeanToXMLドキュメント
 * @throws Exception
 */
public void printXml(BeanToXmlDocument document) throws Exception;

/**
 * パラメータで指定されたオブジェクトをXMLで出力します
 * @param bean オブジェクト
 * @param rootName オブジェクトのルート要素
 * @throws Exception
 */
public void printXml(Object bean, String rootName) throws Exception;

99 バグ修正
(1) org.itscool.commons.document.DocumentBeanParser
parseBeanメソッドの実行時のNullPointerExceptionが発生する現象を修正

===========================================================
version 4.0.2
===========================================================
99 バグ修正
(1) org.itscool.commons.bean.BeanFactory
    org.itscool.commons.document.XmlConfigReader
で日本語が文字化けする現象を修正
(2) org.itscool.weber.testcase.WeberDbTestCase
初期化処理でEnitityInfoMappingインスタンスを初期化する処理を追加
（MySQL版の単体テストに失敗する現象を修正)
(3) org.itscool.commons.dao.Criteria
mysql使用時のLIMIT句の不備を修正
(4) org.itscool.stylist.function.DateC
引数のNULLチェック追加
(5) org.itscool.stylist.io.HtmlTextConverterでXSS対応を除去
（ホントに除去しても問題が無いか今後検討要）
(6) org.itscool.commons.dao.Criteria
toUpdateString（更新時のSQL作成処理）の日付型（Date)データがString
で処理されてしまう現象を修正
===========================================================
version 4.0.3
===========================================================
(1) チェックボックス、オプションボックスのEL式の展開処理を追加
(2) ログインに失敗したときにorg.itscool.weber.user.RoleExceptionを
拡張したorg.itscool.weber.action.LoginFailedExceptionを返すようにした
(3) org.itscool.stylist.HtmlLayoutServlet4x.setIncludeContents()
レイアウトの規約に指定されたファイルが無い場合は、Exceptionを
スローせず、画面にメッセージを表示するよう修正

(99) バグ修正
・org.itscool.stylist.el.BaseElRegex.java
  replaceFunction(),replaceEl()にてNULLチェックを追加
・org.itscool.stylist.io.HtmlConfigReader.java
  parseControlAttribute()にてtitle属性に"w_kind"要素が無い場合は
  処理を抜けるよう修正

★ Weberタグの識別子にtitleを使うことによる問題
HTMLのtitle（ツールチップの表示に使う)と重複しているため、
Weberでtitle属性を指定するとツールチップの表示が行えない

例）
 <input title="w_kind=address:w_property=name" type="text" name="name"/>

対応方法として、w_kind、w_propertyをinputタグの要素として使用する

 <input title="ツールチップ" w_kind="address" w_property="name" type="text" name="name"/>

※ Weberタグの識別子"title"は将来的に廃止する予定

===========================================================
version 4.0.4
===========================================================
(99) バグ修正
SELECT OPTION（CHECKBOCX)タグの前回値保持の修正

★　既知のバグ
ExceptionMappings4xの例外定義がMapで保持されているため、
例外の優先順がばらばらになってしまう


