[ 
http://issues.apache.org/jira/browse/IBATISNET-21?page=comments#action_58127 ]
     
Ron Grabowski commented on IBATISNET-21:
----------------------------------------

I saw this code in the ParseDynamicTags method of the DomSqlMapBuilder class:

 //data = ParsePropertyTokens(data);

Looking at more of the commented out code:

 //             private String ParsePropertyTokens(string str) 
 //             {
 //             const string  OPEN = "${";
 //             const string CLOSE = "}";

It looks like that function does what I need it to do. Perhaps that was the old 
function that should have been replaced by ParsePropertyTokens(string, 
NameValueCollection)? I replaced the commented code with a call to 
ParsePropertyTokens(string, NameValueCollection). I also changed 
ParseDynamicTags to accept a NameValueCollection containing global properities. 
That seemed to solve the global property substition for top level statements 
like <select>, <update>, and <insert> but <selectKey> still contained the 
original ${xxxxx} text.

> Property substitutions do not occur inside <selectKey> statement
> ----------------------------------------------------------------
>
>          Key: IBATISNET-21
>          URL: http://issues.apache.org/jira/browse/IBATISNET-21
>      Project: iBatis for .NET
>         Type: Bug
>     Versions: DataMapper 1.1
>  Environment: Windows 2003 Server, IBatis DataMapper v1.0.1.321
>     Reporter: Ron Grabowski

>
> When using a properties file:
> <?xml version="1.0" encoding="utf-8" ?> 
> <settings>
>       <add key="userid" value="xxxxx" />
>       <add key="password" value="xxxxx" />
>       <add key="database" value="xxxxx" />
>       <add key="datasource" value="xxxxx" />
>       <add key="selectKey" value="SELECT CAST(@@IDENTITY as int) as value" />
>       <add key="now" value="GETDATE()" />
>       <add key="true" value="1" />
>       <add key="false" value="0" />
> </settings>
> Substitutions work as expected except for the <selectKey> statement:
> <!-- OK -->
> <database>
>       <provider name="sqlServer1.1"/>
>       <dataSource name="xxxxx" connectionString="data 
> source=${datasource};database=${database}..."/>
> </database>
> <!-- OK -->
> <insert id="AddressInsert" parameterClass="Address">
>       INSERT INTO Address
>       (
>               Street, 
>               City, 
>               Zip,
>               DateAdded
>       )
>       VALUES
>       (
>               #Street#,
>               #City#,
>               #Zip#,
>               ${now}
>       )
> </insert>
> <!-- WRONG -->
> <insert id="AddressInsert" parameterClass="Address">
>       INSERT INTO Address
>       (
>               Street, 
>               City, 
>               Zip,
>               DateAdded
>       )
>       VALUES
>       (
>               #Street#,
>               #City#,
>               #Zip#,
>               ${now}
>       )
>       <selectKey property="AddressId" type="post" resultClass="int">
>               ${selectKey}
>       </selectKey>
> </insert>
> In the last example, ${selectKey} is not replaced by the value defined in the 
> properties file. The log file incorrectly list this:
> 'AddressInsert': INSERT INTO Address (Street, City, Zip, DateAdded) VALUES 
> (@Street, @City, @zip, GETDATE())
> 'AddressInsert.SelectKey' :${selectKey}
> It should be:
> 'AddressInsert': INSERT INTO Address (Street, City, Zip, DateAdded) VALUES 
> (@Street, @City, @zip, GETDATE())
> 'AddressInsert.SelectKey' : SELECT CAST(@@IDENTITY as int) as value

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira

Reply via email to