[Seasar-user:19494] Seasar2.4.41 テストデータInsertでParseException

むろおかさおり [E-MAIL ADDRESS DELETED]
2010年 3月 16日 (火) 17:09:57 JST


こんにちは。室岡と申します。

seasar2.2.40から2.2.41にバージョンアップ後、
テストデータInsert時 ParseException が発生するようになりました。

excelのテストデータを S2TestCase.readXlsAllReplaceDbでDBへ挿入しており、
データexcelのDate型のカラムには "2008/08/14" のような yyyy/MM/dd をセットしています。
2.2.40使用時には問題なかったのですが、2.2.41にバージョンアップ後
org.seasar.extension.jdbc.types.TimestampType.toTimestamp を通る時に、
パラメータ value は String なので Pattern(yyyy/MM/dd HH:mm:ss) がセットされてしまい
その後の parse 処理で ParseException が発生するようです。

ver2.4.41 でも ver2.4.40 と同じ動作となるような修正をお願いできますでしょうか?
よろしくお願いします!

->s2extension2.4.40
    protected Timestamp toTimestamp(Object value) {
        return TimestampConversionUtil.toTimestamp(value);
    }

->s2extension2.4.41
    protected Timestamp toTimestamp(Object value) {
        if (value instanceof Date || value instanceof Calendar) {
            return TimestampConversionUtil.toTimestamp(value);
        }
        return TimestampConversionUtil.toTimestamp(value,
                TimestampConversionUtil.getPattern(Locale.getDefault()));
    }

以下スタックトレースです。
-----
org.seasar.framework.exception.ParseRuntimeException:
[ESSR0050]解析に失敗しました。理由はjava.text.ParseException: Unparseable date:
"2008/08/14"
	at org.seasar.framework.util.DateConversionUtil.toDate(DateConversionUtil.java:97)
	at org.seasar.framework.util.DateConversionUtil.toDate(DateConversionUtil.java:80)
	at org.seasar.framework.util.DateConversionUtil.toDate(DateConversionUtil.java:62)
	at org.seasar.framework.util.TimestampConversionUtil.toTimestamp(TimestampConversionUtil.java:57)
	at org.seasar.extension.jdbc.types.TimestampType.toTimestamp(TimestampType.java:94)
	at org.seasar.extension.jdbc.types.TimestampType.bindValue(TimestampType.java:70)
	at org.seasar.extension.jdbc.impl.BasicHandler.bindArgs(BasicHandler.java:193)
	at org.seasar.extension.jdbc.impl.BasicUpdateHandler.execute(BasicUpdateHandler.java:101)
	at org.seasar.extension.jdbc.impl.BasicUpdateHandler.execute(BasicUpdateHandler.java:80)
	at org.seasar.extension.dataset.states.AbstractRowState.execute(AbstractRowState.java:63)
	at org.seasar.extension.dataset.states.AbstractRowState.update(AbstractRowState.java:39)
	at org.seasar.extension.dataset.impl.SqlTableWriter.doWrite(SqlTableWriter.java:75)
	at org.seasar.extension.dataset.impl.SqlTableWriter.write(SqlTableWriter.java:62)
	at org.seasar.extension.dataset.impl.SqlWriter.write(SqlWriter.java:59)
	at org.seasar.extension.unit.S2TestCase.writeDb(S2TestCase.java:246)
	at org.seasar.extension.unit.S2TestCase.readXlsAllReplaceDb(S2TestCase.java:385)
	...テストメソッド
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at junit.framework.TestCase.runTest(TestCase.java:164)
	at org.seasar.framework.unit.S2FrameworkTestCase.doRunTest(S2FrameworkTestCase.java:519)
	at org.seasar.extension.unit.S2TestCase.doRunTest(S2TestCase.java:103)
	at org.seasar.framework.unit.S2FrameworkTestCase.runBare(S2FrameworkTestCase.java:308)
	at junit.framework.TestResult$1.protect(TestResult.java:106)
	at junit.framework.TestResult.runProtected(TestResult.java:124)
	at junit.framework.TestResult.run(TestResult.java:109)
	at junit.framework.TestCase.run(TestCase.java:120)
	at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: java.text.ParseException: Unparseable date: "2008/08/14"
	at java.text.DateFormat.parse(DateFormat.java:337)
	at org.seasar.framework.util.DateConversionUtil.toDate(DateConversionUtil.java:95)
	... 35 more
-----


Seasar-user メーリングリストの案内