===========================================================
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で保持されているため、
例外の優先順がばらばらになってしまう

===========================================================
version 4.0.5
===========================================================
(1) PrepareStatement取得処理追加(getPrepareStatement())
尚、ConnectionManagerで生成されたConnectionインスタンスを使っている場合
PrepareStatementのクローズ処理はConnectionクローズ時に自動的に
行われる。

org.itscool.commons.connection.Transaction
org.itscool.commons.connection.TransactionUtil

(2) org.itscool.commons.connection.TransactionUtilに
getPreparedStatementメソッド、getPreparedStatementWrapperメソッドを追加

※ PreparedStatementメソッドはPremaredStatementを取得するメソッドで、
getPreparedStatementWrapperメソッドはPremaredStatementWrapperを取得するメソッド。
PremaredStatementWrapperは簡易O/Rマッピング（今後機能追加をしていく予定）を
実装している。

※ (1)、(2)の対応は、dao機能があまりにも貧弱すぎるために
暫定的に追加した

(3) Criteriaインスタンスの条件メソッドの引数をテーブルのカラム名から
JavaBeansのプロパティ名に変更
（JavaBeansのプロパティ名とカラム名のマッピングはCriteria内部で
行う）

(4) JavaBeansに指定するプロパティとカラムの関連を定義する定数（PK_COLUM_xxx、
COLUM_xxx）の指定が省略できるようになりました。
（ただし、外部参照を指定する場合はFK_COLUMの指定は必須）

(99) org.itscool.commons.dao.RecordMapFactory
・カラム名の大文字小文字を区別してしまう現象を修正
・例外発生時のページ遷移の不備を修正

★　既知の問題
(1) ORマッピングの関連は1対1のみ
(2) フィールドの定義がややこしい
(3) SQLの条件の指定方法が複雑・面倒
SQLを直接書いた方が直感的で分かりやすい？

===========================================================
version 4.0.6
===========================================================
(1) org.itscool.stylist.io.CompareTagConverter
・w_value2要素を追加
　(比較系のタグでw_valueとw_value2による比較が行えるようにした)

(99) バグ修正
・org.itscool.commons.utilServletTagUtil.findValue()メソッド
でNullPointerExceptionが発生する現象を修正
・org.itscool.commons.util.StringUtil 187行目
cnvUpperNameToUnderScoreName()
誤）if( i < len && Character.isUpperCase(chars[i+1])){
正）if( (i+1) < len && Character.isUpperCase(chars[i+1])){

例）フィールド名の最後が_X（アンダースコアの後ろの文字数が1文字)
の場合に、こける現象を修正

===========================================================
version 4.0.7
===========================================================
(1) ＪａｖａＢｅａｎｓの定義にNO_MAP_COLUM_プロパティ名を追加
この項目に定義されたプロパティはテーブルのカラムマッピングから
除外される

(2) org.itscool.commons.BeanUtil setProperty()
小数点データを整数型変数にセットできない現象を修正。
小数点つきのデータから整数型の変数にセットする場合、
整数型にダウンキャストしてからセットするよう修正

(3) org.itscool.stylist.function.DateC.format()
不正な日付データが指定された場合は、システム日付を出力するよう
修正

(99)バグ修正
・nullタグ、isnotnullタグが評価されない不備を修正
・value属性にEl式と文字列を組み合わせた場合、文字列部分が
出力されない（EL式の評価結果のみが出力される)現象を修正

===========================================================
version 4.0.8
===========================================================
(1) org.itscool.commons.dao,PreparedStatementWrapper.createBean()
sqlタイプをJavaタイプに変換する処理を追加
java.sql.Date -> java.util.Date
java.sql.Timestamp -> java.util.Date
java.sql.Blob -> java.io.InputStream/byte[]
java.sql.Clob -> java.io.Reader/String

(2) org.itscool.stylist.function.DateC.format()
不正な日付データが指定された場合は、空文字("")を出力するよう
修正

(3) Actionの戻り値に"モジュール名/結果名"を指定することにより
別モジュールの画面に遷移する機能を追加

(4)同一の名前を持つ複数のリクエストパラメータからオブジェクトのリスト/
配列にマッピングする機能を追加

①　フォームオブジェクトをリストで取得する場合
<input type="hidden" name="bean_maped_kind" value="list"/>

②　フォームオブジェクトを配列で取得する場合
<input type="hidden" name="bean_maped_kind" value="array"/>

(5) org.itscool.commons.logging.AbstractLogの
パッケージ、クラス単位のログ出力の指定の不備を修正
パッケージ、クラス単位にログの出力を指定したい場合は、di-config.xmlに
以下の記述を追加する

<!-- ロギングユーティリティ -->
<bean id="Log" type="org.itscool.commons.logging.SimpleLog" singleton="true">
    <property name="level" value="trace"/>
    <property name="mode" value="disp"/>
    <!-- traceログ出力の指定 -->
    <!-- tracesに指定されているクラスのログのみを出力する -->
    <property name="traces" collection="list">
        <bean id="pattern" value="org.itscool.weber.controller.FrontServletListener"/>
    </property>
    <!-- debugログ出力の指定 -->
    <!-- 空要素を指定すると、このレベルのログは出力されない -->
    <property name="debugs" collection="list"></property>
    <!-- info以上のログは出力するのでログ出力の指定は記述しない  -->
</bean>

===========================================================
version 4.0.9
===========================================================

(1)同一の名前を持つ複数のリクエストパラメータからオブジェクトのリスト/
配列にマッピングする機能(バグ修正)
・画面（WEB)で単一のデータの場合、リストにセットされない現象を修正

(2) org.itscool.stylist.function.StringC.insertLine()
バグ修正

(3) org.itscool.commons.util.URLDecodeUtil.decode()
バグ修正

(4) org.itscool.commons.dao.BaseDao
    org.itscool.commons.dao.PrepardStatementWrapper
ONE_TO_MANY対応追加


===========================================================
version 4.0.10
===========================================================
(1) org.itscool.commons.dao,PreparedStatementWrapper.select()
クエリーとクラスのマッピングパターンを3パターンに変更

(2) org.itscool.commons.util.InputCheckUtil
NullPointerExceptionを修正

(3) org.itscool.weber.controller.FrontServletEx.initConfig()
MessageMappingsの初期化漏れを追加

(4) org.itscool.stylist.io.HtmlErrorInfoTagConverter
・フォーム入力エラー時に、エラーコードを出力するよう修正
・div要素を出力しないように修正

(5) org.itscool.weber.controller.Action
入力チェックメソッドを追加

(6) 日付データの前回値保持ができない現象を修正
(7) org.itscool.weber.action.ActionBucketImpl.getRealPath()
NullPointerExceptionを修正
(8) org.itscool.stylist.el.BaseElRegex.convertArgument()
オブジェクト型の引数がString型（オブジェクトのtoString()）で
作成されてしまう不備を修正

(9) equal, nequal, lthan, mthan, lequal, mequalタグの
w_value及びw_value2属性にEL式、EL関数が使用できるようにした。

===========================================================
version 4.0.11
===========================================================
(1) org.itscool.commons.dao.Criteria.setOneToMany()の
タイミングをtoSelectString()時からnew Criteria()時に
移動

ユーザ側でsetOneToMany句をセットすることにより、
子テーブルの連結の有無を制御できるように変更しました。

(2) org.itscool.weber.action.Action.isUserCheck()
ロールチェックを行うたびにDBにアクセスしていた処理を削除

===========================================================
version 4.0.12
===========================================================
(1) org.itscool.weber.action.Actionクラスに
getGeneralFormメソッドを追加
getStringメソッドを追加
getIntメソッドを追加
getLongメソッドを追加
eetShortメソッドを追加
getByteメソッドを追加
getBooleanメソッドを追加
getDoubleメソッドを追加
getFloatメソッドを追加

(2) org.itscool.commons.util.DateFormatUtil.searchDateFormat()
・時間の指定をHH(0-24)に変更
・HH;MMの変換を追加

(3) org.itscool.commons.dao.select()
キー"テーブル名.カラム名"でデータをセットする際、
テーブル名が指定されていない場合（取得できなかった場合)は
キーを"カラム名"のみでセットするよう修正

(4) org.itscool.weber.action.ActionBucketImpl.setAttributeFromSession()
di-config.xmlのInitParam要素にセッションタイムアウトの設定が記述されて
いないときにNullPointerExceptionが発生する現象を修正

(99)既知のバグ
decimalC.formatなどのカスタムEL関数において
引数に文字列の'###,###,###'といった
カンマ(,)が含まれる関数を読み取れない

===========================================================
version 4.0.13
===========================================================

(1) org.itscool.weber.action.LoginAction, LogoutAction
doExecute()にthrows Exception句を追加

(2) org.itscool.commons.document.BeanToXmlDocument
・オブジェクトの階層構造及び配列クラスへのネスと変換機能対応
・クラス及びメンバー名とタグ名とのマッピング機能を追加

