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

List:       kde-commits
Subject:    [kdepimlibs] kimap: Skip NIL values as they simply indicate no value.
From:       Christian Mollekopf <chrigi_1 () fastmail ! fm>
Date:       2013-11-16 9:37:05
Message-ID: E1VhcJN-0008Cv-QL () scm ! kde ! org
[Download RAW message or body]

Git commit 0a0cde867d115feff66871a0c248224541022510 by Christian Mollekopf.
Committed on 16/11/2013 at 09:32.
Pushed by cmollekopf into branch 'master'.

Skip NIL values as they simply indicate no value.

M  +6    -2    kimap/getmetadatajob.cpp
M  +11   -0    kimap/tests/getmetadatajobtest.cpp

http://commits.kde.org/kdepimlibs/0a0cde867d115feff66871a0c248224541022510

diff --git a/kimap/getmetadatajob.cpp b/kimap/getmetadatajob.cpp
index 905a676..8c13fbb 100644
--- a/kimap/getmetadatajob.cpp
+++ b/kimap/getmetadatajob.cpp
@@ -146,10 +146,14 @@ void GetMetaDataJob::handleResponse( const Message &response )
       } else if ( d->serverCapability == Metadata && response.content[1].toString() \
                == "METADATA" ) {
         QString mailBox = QString::fromUtf8( KIMAP::decodeImapFolderName( \
response.content[2].toString() ) );  
-        QList<QByteArray> entries = response.content[3].toList();
+        const QList<QByteArray> &entries = response.content[3].toList();
         int i = 0;
         while ( i < entries.size() - 1 ) {
-          d->metadata[mailBox][entries[i]][""] = entries[i + 1];
+          const QByteArray &value = entries[i + 1];
+          QByteArray &targetValue = d->metadata[mailBox][entries[i]][""];
+          if ( value != "NIL" ) { //This just indicates no value
+            targetValue = value;
+          }
           i += 2;
         }
       }
diff --git a/kimap/tests/getmetadatajobtest.cpp b/kimap/tests/getmetadatajobtest.cpp
index 395c83c..760aab3 100644
--- a/kimap/tests/getmetadatajobtest.cpp
+++ b/kimap/tests/getmetadatajobtest.cpp
@@ -64,6 +64,17 @@ void metadata_data()
     expected.insert("/private/comment", "My own comment");
     QTest::newRow( "combined response" ) << scenario << "Folder1" << expected;
   }
+  {
+    QList<QByteArray> scenario;
+    scenario << FakeServer::preauth()
+            << "C: A000001 GETMETADATA \"Folder1\" (DEPTH infinity) (/shared)"
+            << "S: * METADATA \"Folder1\" (/shared/comment \"NIL\" /private/comment \
\"NIL\")" +            << "S: A000001 OK GETMETADATA complete";
+    QMap<QByteArray, QByteArray> expected;
+    expected.insert("/shared/comment", "");
+    expected.insert("/private/comment", "");
+    QTest::newRow( "NIL response" ) << scenario << "Folder1" << expected;
+  }
 }
 
 void metadata()


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

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