[Uml-devel] branches/KDE/3.5/kdesdk/umbrello

Oliver Kellogg okellogg at users.sourceforge.net
Tue May 22 04:11:57 UTC 2007


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




More information about the umbrello-devel mailing list