You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ibatis.apache.org by "Gilles Bayon (JIRA)" <ib...@incubator.apache.org> on 2005/05/05 20:53:06 UTC
[jira] Closed: (IBATISNET-51) If a has a "cacheModel" attribute set and cacheModelsEnabled="false" in SqlMap.config, an DataMapperException is thrown
[ http://issues.apache.org/jira/browse/IBATISNET-51?page=all ]
Gilles Bayon closed IBATISNET-51:
---------------------------------
Resolution: Fixed
Fix Version: DataMapper 1.2
In SVN
> If a <statement> has a "cacheModel" attribute set and cacheModelsEnabled="false" in SqlMap.config, an DataMapperException is thrown
> -----------------------------------------------------------------------------------------------------------------------------------
>
> Key: IBATISNET-51
> URL: http://issues.apache.org/jira/browse/IBATISNET-51
> Project: iBatis for .NET
> Type: Bug
> Versions: DataMapper 1.2
> Environment: [assembly: AssemblyVersion("1.1.458")]
> DataMapper from 5/5/2005 SVN
> Reporter: Ron Grabowski
> Assignee: Gilles Bayon
> Priority: Minor
> Fix For: DataMapper 1.2
>
> As of 5/5/2005, the version in SVN incorrectly throws an exception if a <statement> has a cacheModel attribute set to a valid <cacheModel>:
> <cacheModels>
> <cacheModel id="StateCache" type="LRU" implementation="MEMORY" >
> <flushInterval hours="12"/>
> </cacheModel>
> </cacheModels>
> <statements>
> <select id="GetOne" resultMap="StateResult" cacheModel="StateCache" parameterClass="int">
> and the cacheModelsEnabled attribute is set to false in SqlMap.config:
> <settings>
> <setting useStatementNamespaces="true"/>
> <setting cacheModelsEnabled="false"/>
> </settings>
> The following exception is thrown:
> "
> [DataMapperException: This SQL map does not contain an Cache named State.StateCache]
> IBatisNet.DataMapper.SqlMapper.GetCache(String name) in \IBatisNet.DataMapper\SqlMapper.cs:1229
> IBatisNet.DataMapper.Configuration.DomSqlMapBuilder.Initialize() in \IBatisNet.DataMapper\Configuration\DomSqlMapBuilder.cs:384
> IBatisNet.DataMapper.Configuration.DomSqlMapBuilder.Build(XmlDocument document, DataSource dataSource, Boolean useConfigFileWatcher, Boolean isCallFromDao) in \IBatisNet.DataMapper\Configuration\DomSqlMapBuilder.cs:149
> [ConfigurationException:
> - The error occurred while Set CacheModel to statement.
> - statement :State.GetOne
> - The error occurred in cacheModel : State.StateCache.
> - Check the .]
> "
> The exception is caused by this code starting on line 373 of DomSqlMapBuilder.cs:
> #region Attach CacheModel to statement
> foreach(DictionaryEntry entry in _configScope.SqlMapper.MappedStatements)
> One way to prevent the exception would be to not go into the foreach loop if caching is disabled:
> #region Attach CacheModel to statement
> if (_configScope.IsCacheModelsEnabled)
> {
> foreach(DictionaryEntry entry in _configScope.SqlMapper.MappedStatements)
> A few lines later in the file there is this code:
> _configScope.ErrorContext.MoreInfo = "statement :"+mappedStatement.Statement.Id;
> _configScope.ErrorContext.Resource = "cacheModel : " +mappedStatement.Statement.CacheModelName;
> There is a space missing after "statement :". It should be:
> _configScope.ErrorContext.MoreInfo = "statement : "+mappedStatement.Statement.Id;
> _configScope.ErrorContext.Resource = "cacheModel : " +mappedStatement.Statement.CacheModelName;
--
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
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira