3 commits - src/kolabconversions.h src/kolabformat.cpp src/kolabformat.h src/utils.cpp src/utils.h src/xcalconversions.h src/xcardconversions.h

Christian Mollekopf mollekopf at kolabsys.com
Wed Apr 25 16:59:11 CEST 2012


 src/kolabconversions.h |    2 +-
 src/kolabformat.cpp    |   26 +++++++++++++-------------
 src/kolabformat.h      |   23 ++++++++++++++++-------
 src/utils.cpp          |   14 ++++++++++++++
 src/utils.h            |    7 ++++++-
 src/xcalconversions.h  |    2 +-
 src/xcardconversions.h |    2 +-
 7 files changed, 52 insertions(+), 24 deletions(-)

New commits:
commit 3d971e3d828669c314f71dbb6674f919738874c8
Merge: 230dcca 2431cf8
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date:   Wed Apr 25 16:58:42 2012 +0200

    Merge branch 'master' of ssh://git.kolab.org/git/libkolabxml



commit 230dccad58b9fc04d2712fa6165be0bc9218ea47
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date:   Wed Apr 25 16:00:20 2012 +0200

    log warnings too

diff --git a/src/utils.cpp b/src/utils.cpp
index 4b4f60b..4991d14 100644
--- a/src/utils.cpp
+++ b/src/utils.cpp
@@ -156,6 +156,10 @@ void logMessage(const std::string &m, ErrorSeverity s)
             break;
         case Warning:
             std::cerr << "Warning: " << m << std::endl;
+            if (ThreadLocal::inst().errorBit < Warning) {
+                ThreadLocal::inst().errorBit = Warning;
+                ThreadLocal::inst().errorMessage = m;
+            }
             break;
         case Error:
             std::cerr << "Error: " << m << std::endl;


commit 19e7d9e3326dc97823aabfbefd63555e1d680eaf
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date:   Tue Apr 24 09:28:46 2012 +0200

    Use passed in product id.

diff --git a/src/kolabconversions.h b/src/kolabconversions.h
index a48c2ae..08f0ee0 100644
--- a/src/kolabconversions.h
+++ b/src/kolabconversions.h
@@ -55,7 +55,7 @@ std::string serializeObject(const Kolab::Note &note, const std::string prod = st
             created = fromDateTime(timestamp());
         }
 
-        KolabXSD::Note n(getUID(note.uid()), prod+KOLAB_LIB_VERSION_STRING, created, fromDateTime(timestamp()));
+        KolabXSD::Note n(getUID(note.uid()), getProductId(prod), created, fromDateTime(timestamp()));
 
         if (!note.categories().empty()) {
             KolabXSD::Note::categories_sequence categories;
diff --git a/src/kolabformat.cpp b/src/kolabformat.cpp
index 466d4be..192b48d 100644
--- a/src/kolabformat.cpp
+++ b/src/kolabformat.cpp
@@ -70,9 +70,9 @@ Kolab::Event readEvent(const std::string& s, bool isUrl)
     return *ptr;
 }
 
-std::string writeEvent(const Kolab::Event &event)
+std::string writeEvent(const Kolab::Event &event, const std::string& productId)
 {
-    return XCAL::serializeIncidence< XCAL::IncidenceTrait<Kolab::Event> >(event);
+    return XCAL::serializeIncidence< XCAL::IncidenceTrait<Kolab::Event> >(event, productId);
 }
 
 Kolab::Todo readTodo(const std::string& s, bool isUrl)
@@ -84,9 +84,9 @@ Kolab::Todo readTodo(const std::string& s, bool isUrl)
     return *ptr;
 }
 
-std::string writeTodo(const Kolab::Todo &event)
+std::string writeTodo(const Kolab::Todo &event, const std::string& productId)
 {
-    return XCAL::serializeIncidence< XCAL::IncidenceTrait<Kolab::Todo> >(event);
+    return XCAL::serializeIncidence< XCAL::IncidenceTrait<Kolab::Todo> >(event, productId);
 }
 
 Journal readJournal(const std::string& s, bool isUrl)
@@ -98,9 +98,9 @@ Journal readJournal(const std::string& s, bool isUrl)
     return *ptr;
 }
 
-std::string writeJournal(const Kolab::Journal &j)
+std::string writeJournal(const Kolab::Journal &j, const std::string& productId)
 {
-    return XCAL::serializeIncidence<XCAL::IncidenceTrait<Kolab::Journal> >(j);
+    return XCAL::serializeIncidence<XCAL::IncidenceTrait<Kolab::Journal> >(j, productId);
 }
 
 
@@ -113,9 +113,9 @@ Kolab::Contact readContact(const std::string& s, bool isUrl)
     return *ptr;
 }
 
-std::string writeContact(const Contact &contact)
+std::string writeContact(const Contact &contact, const std::string& productId)
 {
-    return XCARD::serializeCard(contact);
+    return XCARD::serializeCard(contact, productId);
 }
 
 DistList readDistlist(const std::string& s, bool isUrl)
@@ -127,9 +127,9 @@ DistList readDistlist(const std::string& s, bool isUrl)
     return *ptr;
 }
 
-std::string writeDistlist(const DistList &list)
+std::string writeDistlist(const DistList &list, const std::string& productId)
 {
-    return XCARD::serializeCard(list);
+    return XCARD::serializeCard(list, productId);
 }
 
 Note readNote(const std::string& s, bool isUrl)
@@ -142,9 +142,9 @@ Note readNote(const std::string& s, bool isUrl)
     return Note();
 }
 
-std::string writeNote(const Note &note)
+std::string writeNote(const Note &note, const std::string& productId)
 {
-    return Kolab::KolabObjects::serializeObject<Kolab::Note>(note);
+    return Kolab::KolabObjects::serializeObject<Kolab::Note>(note, productId);
 }
 
 Configuration readConfiguration(const std::string& /*s*/, bool /*isUrl*/)
@@ -157,7 +157,7 @@ Configuration readConfiguration(const std::string& /*s*/, bool /*isUrl*/)
     return Configuration();
 }
 
-std::string writeConfiguration(const Configuration &/*config*/)
+std::string writeConfiguration(const Configuration &/*config*/, const std::string& /*productId*/)
 {
 //     return serializeConfiguration(config);
 return std::string();
diff --git a/src/kolabformat.h b/src/kolabformat.h
index 991bea3..6b016b2 100644
--- a/src/kolabformat.h
+++ b/src/kolabformat.h
@@ -69,26 +69,35 @@ std::string getSerializedUID();
  */
 void overrideTimestamp(const Kolab::cDateTime &dt);
 
+/**
+ * Serializing functions for kolab objects.
+ * 
+ * Check error() to see if the operation was successful.
+ * 
+ * @param isUrl if true, the file with the url @param s is opened and read.
+ * @param productId Sets the productid on serialization. Note that the versionstring of libkolabxml will be appended to the productId.
+ */
+
 Kolab::Event readEvent(const std::string& s, bool isUrl);
-std::string writeEvent(const Kolab::Event &);
+std::string writeEvent(const Kolab::Event &, const std::string& productId = std::string());
 
 Kolab::Todo readTodo(const std::string& s, bool isUrl);
-std::string writeTodo(const Kolab::Todo &);
+std::string writeTodo(const Kolab::Todo &, const std::string& productId = std::string());
 
 Kolab::Journal readJournal(const std::string& s, bool isUrl);
-std::string writeJournal(const Kolab::Journal &);
+std::string writeJournal(const Kolab::Journal &, const std::string& productId = std::string());
 
 Kolab::Contact readContact(const std::string& s, bool isUrl);
-std::string writeContact(const Kolab::Contact &);
+std::string writeContact(const Kolab::Contact &, const std::string& productId = std::string());
 
 Kolab::DistList readDistlist(const std::string& s, bool isUrl);
-std::string writeDistlist(const Kolab::DistList &);
+std::string writeDistlist(const Kolab::DistList &, const std::string& productId = std::string());
 
 Kolab::Note readNote(const std::string& s, bool isUrl);
-std::string writeNote(const Kolab::Note &);
+std::string writeNote(const Kolab::Note &, const std::string& productId = std::string());
 
 Kolab::Configuration readConfiguration(const std::string& s, bool isUrl);
-std::string writeConfiguration(const Kolab::Configuration &);
+std::string writeConfiguration(const Kolab::Configuration &, const std::string& productId = std::string());
 
 }
 
diff --git a/src/utils.cpp b/src/utils.cpp
index ffbbea0..4b4f60b 100644
--- a/src/utils.cpp
+++ b/src/utils.cpp
@@ -33,6 +33,7 @@
 #include <time.h>
 #include "base64.h"
 #include "uricode.h"
+#include "libkolabxml-version.h"
 
 namespace Kolab {
     
@@ -265,6 +266,15 @@ std::string fromMailto(const std::string &mailtoUri)
     return fromMailto(mailtoUri, n);
 }
 
+std::string getProductId(const std::string& clientProdid)
+{
+    if (clientProdid.empty()) {
+        return KOLAB_LIB_VERSION_STRING;
+    }
+    return clientProdid + " " + KOLAB_LIB_VERSION_STRING;
+}
+
+
 } //Namespace
 
 } //Namespace
diff --git a/src/utils.h b/src/utils.h
index fe84d1e..7ed26b9 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -42,7 +42,7 @@ void logMessage(const std::string &, ErrorSeverity s = Warning);
 
 
 /**
- * The following values must be updated by the serialization/deserialization functinos
+ * The following values must be updated by the serialization/deserialization functions
  */
 
 
@@ -121,6 +121,11 @@ std::string toMailto(const std::string &email, const std::string &name = std::st
 std::string fromMailto(const std::string &mailtoUri, std::string &name);
 std::string fromMailto(const std::string &mailtoUri);
 
+/**
+ * Appends the libkolabxml productid and returns the string
+ */
+std::string getProductId(const std::string &clientProdid);
+
     } //Namespace
 
 } //Namespace
diff --git a/src/xcalconversions.h b/src/xcalconversions.h
index 759893a..5daf9f9 100644
--- a/src/xcalconversions.h
+++ b/src/xcalconversions.h
@@ -1618,7 +1618,7 @@ std::string serializeIncidence(const typename T::IncidenceType &incidence, const
         VcalendarType::components_type components;
         T::addIncidence(components, inc);
         
-        VcalendarType::properties_type::prodid_type prodid(productid+KOLAB_LIB_VERSION_STRING); //FIXME own version field for lib version
+        VcalendarType::properties_type::prodid_type prodid(getProductId(productid));
         VcalendarType::properties_type::version_type version(XCAL_VERSION);
         VcalendarType::properties_type::x_kolab_version_type x_kolab_version(KOLAB_FORMAT_VERSION);
         
diff --git a/src/xcardconversions.h b/src/xcardconversions.h
index 39d6db1..ae6a2f5 100644
--- a/src/xcardconversions.h
+++ b/src/xcardconversions.h
@@ -762,7 +762,7 @@ std::string serializeCard(const T &card, const std::string prod = std::string())
         vcard_4_0::vcard::uid_type uid(Shared::toURN(getUID(card.uid())));
         setCreatedUid(Shared::fromURN(uid.uri()));
         vcard_4_0::vcard::x_kolab_version_type kolab_version(KOLAB_FORMAT_VERSION);
-        vcard_4_0::vcard::prodid_type prodid(prod+KOLAB_LIB_VERSION_STRING);
+        vcard_4_0::vcard::prodid_type prodid(getProductId(prod));
         vcard_4_0::vcard::rev_type rev(fromDateTime(timestamp()));
         vcard_4_0::vcard::kind_type kind(getType<T>());
         vcard_4_0::vcard::fn_type fn(card.name());





More information about the commits mailing list