Summary: | Unstable saves and loads. Classes name becomes dirty and large parts of graphs disappear. | ||
---|---|---|---|
Product: | [Applications] umbrello | Reporter: | Guillaume CLEMENT <flik> |
Component: | general | Assignee: | Oliver Kellogg <okellogg> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | pa, pholonow, qpadla |
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Ubuntu | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: | |||
Attachments: | First file that became to be bugged |
Description
Guillaume CLEMENT
2007-05-20 14:58:54 UTC
Created attachment 20639 [details]
First file that became to be bugged
This file is the one which gives me a lot of problems. When working on it you
can see the behaviour I'm describing.
Analysis: Classes were removed that were still referenced by some other model elements. For example, the bogus class "27" has xmi.id="4kANtf55Jden" which is referenced by the fileName parameter type of the nouvelleOperation of the DrawManager interface. On encountering an object reference that cannot be resolved, Umbrello creates a surrogate class with an artificial name (such as "27" or worse) in order to at least resolve the dangling reference. SVN commit 667185 by okellogg: resolveRef(): When m_SecondaryId cannot be resolved and m_SecondaryFallback is empty then set m_pSecondary to the artificial datatype "undef". This is somewhat less friendly on loading older Umbrello files but avoids the creation of bogus objects. The better way to solve this bug would be to warn the user when he attempts to delete model objects that are still referenced somewhere in the model but I'm afraid I cannot implement that right now. CCBUG:141279 BUG:145709 M +1 -0 ChangeLog M +12 -7 umbrello/umlobject.cpp --- branches/KDE/3.5/kdesdk/umbrello/ChangeLog #667184:667185 @@ -1,6 +1,7 @@ Version 1.5.71 * Bugs/wishes from http://bugs.kde.org: +* Unstable saves and loads, class names become dirty (145709) * Crash on deleting class in list view (145762) Version 1.5.7 --- branches/KDE/3.5/kdesdk/umbrello/umbrello/umlobject.cpp #667184:667185 @@ -414,16 +414,21 @@ maybeSignalObjectCreated(); return true; } - } - if (m_SecondaryFallback.isEmpty()) { - if (m_SecondaryId.isEmpty()) { - kError() << "UMLObject::resolveRef(" << m_Name - << "): both m_SecondaryId and m_SecondaryFallback are empty" - << endl; - return false; + if (m_SecondaryFallback.isEmpty()) { + kDebug() << "UMLObject::resolveRef: object with xmi.id=" << m_SecondaryId + << " not found, setting to undef" << endl; + UMLFolder *datatypes = pDoc->getDatatypeFolder(); + m_pSecondary = Object_Factory::createUMLObject(Uml::ot_Datatype, "undef", datatypes, false); + return true; } m_SecondaryFallback = m_SecondaryId; } + if (m_SecondaryFallback.isEmpty()) { + kError() << "UMLObject::resolveRef(" << m_Name + << "): cannot find type with id " + << m_SecondaryId << endl; + return false; + } #ifdef VERBOSE_DEBUGGING kDebug() << "UMLObject::resolveRef(" << m_Name << "): could not resolve secondary ID " << m_SecondaryId *** Bug 145042 has been marked as a duplicate of this bug. *** *** Bug 147179 has been marked as a duplicate of this bug. *** *** Bug 147848 has been marked as a duplicate of this bug. *** |