[ 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