[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/3.5/kdesdk/umbrello
From:       Oliver Kellogg <okellogg () users ! sourceforge ! net>
Date:       2007-05-22 4:11:57
Message-ID: 1179807117.726881.4003.nullmailer () svn ! kde ! org
[Download RAW message or body]

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
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic