[ https://issues.apache.org/jira/browse/CAY-2678?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Nikita Timofeev closed CAY-2678. -------------------------------- Assignee: Nikita Timofeev Resolution: Fixed *4.1*: https://github.com/apache/cayenne/commit/241d544b37514e654f4254feb60612f96afb740e *4.2*: https://github.com/apache/cayenne/commit/22327d3891a70a27f83a396691a89fbbc476a536 > Inheritance warnings caused by unnecessary MappingCache creations during > initialization > --------------------------------------------------------------------------------------- > > Key: CAY-2678 > URL: https://issues.apache.org/jira/browse/CAY-2678 > Project: Cayenne > Issue Type: Bug > Components: Core Library > Affects Versions: 4.1 > Reporter: Stefan S. > Assignee: Nikita Timofeev > Priority: Minor > Fix For: 4.1.1, 4.2.M3 > > > In my case, a lot of warnings labeled "No super entity mapping for > 'superOEName'" floods the log during Cayenne start-up. The project consists > of multiple DataMaps, where some object entities in early loaded DataMaps are > derived from object entities declared in DataMaps loaded later. Although the > MappingCache is refreshed after all DataMaps are loaded, a cache instance is > created / accessed while adding DataMaps (see call stack below). > > *In Detail:* > {code:java} > org.apache.cayenne.map.EntityResolver::addDataMap(...) > {code} > checks for duplicated names (checkForDuplicatedNames()), which queries the DB > entities via > {code:java} > EntityResolver::getDbEntity(...) > {code} > EntityResolver::getDbEntity(...) resolves the entity from the MappingCache > instance, which contains only DataMaps loaded so far. The cache tries to > fully resolve the object entities including their inheritance tree, which is > not yet available due to DataMaps loaded at a later point in time. > > *Resolution Proposal:* > Decoupling of entity resolution for duplicate name checks during DataMap > loading from building the cache with fully resolved object entities after all > DataMaps have been loaded. > > *Call-Stack:* > Thread [AWT-EventQueue-0] (Suspended (breakpoint at line 112 in > MappingCache)) Thread [AWT-EventQueue-0] (Suspended (breakpoint at line 112 > in MappingCache)) owns: EntityResolver$1 (id=1307) owns: EntityResolver > (id=68) MappingCache.index() line: 112 > MappingCache.<init>(Collection<DataMap>) line: 65 > EntityResolver$1.createDelegate() line: 417 EntityResolver$1.createDelegate() > line: 413 EntityResolver$1(ProxiedMappingNamespace).getDelegate() line: 38 > EntityResolver$1(ProxiedMappingNamespace).getDbEntity(String) line: 69 > EntityResolver.getDbEntity(String) line: 255 > EntityResolver.checkForDuplicatedNames(DataMap) line: 375 > EntityResolver.addDataMap(DataMap) line: 360 > ProjectController.updateEntityResolver() line: 313 > ProjectController.setProject(Project) line: 303 > CayenneModelerController.projectOpenedAction(Project) line: 207 > OpenProjectAction.openProjectResourse(Resource, CayenneModelerController) > line: 184 OpenProjectAction.openProject(File) line: 175 Main$1.run() line: 100 -- This message was sent by Atlassian Jira (v8.3.4#803005)