You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
(56) |
Apr
(109) |
May
(15) |
Jun
(3) |
Jul
(37) |
Aug
(96) |
Sep
(40) |
Oct
(4) |
Nov
(54) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(47) |
Feb
(30) |
Mar
(102) |
Apr
(120) |
May
(68) |
Jun
(54) |
Jul
(53) |
Aug
(122) |
Sep
(190) |
Oct
(71) |
Nov
(85) |
Dec
(108) |
2007 |
Jan
(72) |
Feb
(190) |
Mar
(53) |
Apr
(101) |
May
(145) |
Jun
(148) |
Jul
(167) |
Aug
(143) |
Sep
(23) |
Oct
(198) |
Nov
(223) |
Dec
(195) |
2008 |
Jan
(100) |
Feb
(129) |
Mar
(79) |
Apr
(77) |
May
(34) |
Jun
(95) |
Jul
(112) |
Aug
(160) |
Sep
(82) |
Oct
(124) |
Nov
(199) |
Dec
(355) |
2009 |
Jan
(436) |
Feb
(89) |
Mar
(298) |
Apr
(189) |
May
(33) |
Jun
(88) |
Jul
(105) |
Aug
(44) |
Sep
(181) |
Oct
(87) |
Nov
(75) |
Dec
(1) |
2010 |
Jan
(63) |
Feb
(21) |
Mar
(3) |
Apr
(1) |
May
(1) |
Jun
(3) |
Jul
(26) |
Aug
(37) |
Sep
(26) |
Oct
(15) |
Nov
(13) |
Dec
|
From: <dg...@su...> - 2009-01-03 16:55:58
|
Author: dgollub Date: Sat Jan 3 17:55:41 2009 New Revision: 4967 URL: http://www.opensync.org/changeset/4967 Log: Fix compiler warning about wrong pointer refernce in osync_objformat_merge(), mixup of format and objformat variable. Modified: trunk/opensync/engine/opensync_engine.c Modified: trunk/opensync/engine/opensync_engine.c ============================================================================== --- trunk/opensync/engine/opensync_engine.c Sat Jan 3 17:41:37 2009 (r4966) +++ trunk/opensync/engine/opensync_engine.c Sat Jan 3 17:55:41 2009 (r4967) @@ -320,7 +320,7 @@ osync_data_get_data(osync_change_get_data(change), &buffer, &size); - ret = osync_objformat_merge(format, buffer, size, &outbuf, &outsize, entirebuf, entsize, caps, &error); + ret = osync_objformat_merge(objformat, buffer, size, &outbuf, &outsize, entirebuf, entsize, caps, &error); osync_free(entirebuf); if (ret != TRUE) |
From: <dg...@su...> - 2009-01-03 16:41:56
|
Author: bricks Date: Sat Jan 3 17:41:37 2009 New Revision: 4966 URL: http://www.opensync.org/changeset/4966 Log: Fixed some compiler Warnings Modified: trunk/opensync/engine/opensync_engine.c trunk/opensync/engine/opensync_obj_engine.c trunk/opensync/format/opensync_objformat.c trunk/opensync/merger/opensync_capabilities_private.h trunk/opensync/merger/opensync_capability.c trunk/opensync/merger/opensync_merger.c Modified: trunk/opensync/engine/opensync_engine.c ============================================================================== --- trunk/opensync/engine/opensync_engine.c Sat Jan 3 07:13:36 2009 (r4965) +++ trunk/opensync/engine/opensync_engine.c Sat Jan 3 17:41:37 2009 (r4966) @@ -37,6 +37,7 @@ #include "merger/opensync_merger_internals.h" #include "group/opensync_group_internals.h" #include "group/opensync_member_internals.h" +#include "format/opensync_objformat_internals.h" #include "opensync_status_internals.h" #include "opensync_obj_engine_internals.h" @@ -319,7 +320,7 @@ osync_data_get_data(osync_change_get_data(change), &buffer, &size); - ret = osync_objformat_merge(format, buffer, size, &outbuf, &outsize, entirebuf, entsize, caps, error); + ret = osync_objformat_merge(format, buffer, size, &outbuf, &outsize, entirebuf, entsize, caps, &error); osync_free(entirebuf); if (ret != TRUE) Modified: trunk/opensync/engine/opensync_obj_engine.c ============================================================================== --- trunk/opensync/engine/opensync_obj_engine.c Sat Jan 3 07:13:36 2009 (r4965) +++ trunk/opensync/engine/opensync_obj_engine.c Sat Jan 3 17:41:37 2009 (r4966) @@ -48,6 +48,7 @@ #include "client/opensync_client_proxy_internals.h" #include "merger/opensync_merger_internals.h" #include "group/opensync_member_internals.h" +#include "format/opensync_objformat_internals.h" OSyncMappingEngine *_osync_obj_engine_create_mapping_engine(OSyncObjEngine *engine, OSyncError **error) { @@ -1143,8 +1144,8 @@ osync_error_set(error, OSYNC_ERROR_MISCONFIGURATION, "No capabilities defined for Member %lli.", memberid); goto error; } - - if (!osync_objformat_demerge(objformat, buffer, size, &outbuf, &outsize, error)) + /* FIXME: pass capabilities */ + if (!osync_objformat_demerge(objformat, buffer, size, &outbuf, &outsize, NULL, error)) goto error; osync_free(buffer); Modified: trunk/opensync/format/opensync_objformat.c ============================================================================== --- trunk/opensync/format/opensync_objformat.c Sat Jan 3 07:13:36 2009 (r4965) +++ trunk/opensync/format/opensync_objformat.c Sat Jan 3 17:41:37 2009 (r4966) @@ -299,7 +299,7 @@ } -osync_objformat_has_merger(OSyncObjFormat *format) +osync_bool osync_objformat_has_merger(OSyncObjFormat *format) { osync_return_val_if_fail(format, FALSE); return (format->demerge_func && format->merge_func) ? TRUE : FALSE; Modified: trunk/opensync/merger/opensync_capabilities_private.h ============================================================================== --- trunk/opensync/merger/opensync_capabilities_private.h Sat Jan 3 07:13:36 2009 (r4965) +++ trunk/opensync/merger/opensync_capabilities_private.h Sat Jan 3 17:41:37 2009 (r4966) @@ -44,7 +44,7 @@ /** The pointer to the last capability */ OSyncCapability *last_child; /** Counter which holds the number of capabilities for one objtype*/ - int child_count; + unsigned int child_count; /** The wrapped xml node */ xmlNodePtr node; }; Modified: trunk/opensync/merger/opensync_capability.c ============================================================================== --- trunk/opensync/merger/opensync_capability.c Sat Jan 3 07:13:36 2009 (r4965) +++ trunk/opensync/merger/opensync_capability.c Sat Jan 3 17:41:37 2009 (r4966) @@ -54,7 +54,7 @@ OSyncCapability *osync_capability_new_capability(OSyncCapability *parent, xmlNodePtr node, OSyncError **error) { - OSyncCapability *temp, *capability = NULL; + OSyncCapability *capability = NULL; osync_assert(node); capability = osync_try_malloc0(sizeof(OSyncCapability), error); Modified: trunk/opensync/merger/opensync_merger.c ============================================================================== --- trunk/opensync/merger/opensync_merger.c Sat Jan 3 07:13:36 2009 (r4965) +++ trunk/opensync/merger/opensync_merger.c Sat Jan 3 17:41:37 2009 (r4966) @@ -24,10 +24,13 @@ #include "opensync_internals.h" #include "opensync-xmlformat.h" - #include "opensync-merger.h" + #include "opensync_capabilities_internals.h" #include "opensync_merger_internals.h" + +#include "xmlformat/opensync_xmlfield_internals.h" + #include "opensync_merger_private.h" |
From: <dg...@su...> - 2009-01-03 06:13:52
|
Author: dgollub Date: Sat Jan 3 07:13:36 2009 New Revision: 4965 URL: http://www.opensync.org/changeset/4965 Log: Introduce merging/demerging for all format plugins which have merger/demerger function registered. Modified: trunk/opensync/engine/opensync_engine.c trunk/opensync/engine/opensync_obj_engine.c Modified: trunk/opensync/engine/opensync_engine.c ============================================================================== --- trunk/opensync/engine/opensync_engine.c Sat Jan 3 06:40:51 2009 (r4964) +++ trunk/opensync/engine/opensync_engine.c Sat Jan 3 07:13:36 2009 (r4965) @@ -289,38 +289,41 @@ if( osync_group_get_merger_enabled(engine->group) && osync_group_get_converter_enabled(engine->group) && (osync_change_get_changetype(change) != OSYNC_CHANGE_TYPE_DELETED) && - /* only use the merger if the objformat name starts with "xmlformat-" (10 chars) */ - ( !strncmp(osync_objformat_get_name(osync_change_get_objformat(change)), "xmlformat-", 10))) + /* only use the merger if the objformat has merger registered. */ + osync_objformat_has_merger(osync_change_get_objformat(change)) ) { - char *buffer = NULL; - unsigned int xmlformat_size = 0, size = 0; - OSyncXMLFormat *xmlformat = NULL; - OSyncXMLFormat *xmlformat_entire = NULL; + OSyncCapabilities *caps; + OSyncObjFormat *objformat = osync_change_get_objformat(change); + char *entirebuf, *buffer, *outbuf; + unsigned int entsize, size = 0, outsize; OSyncMerger *merger = NULL; - osync_trace(TRACE_INTERNAL, "Merge the XMLFormat."); + osync_trace(TRACE_INTERNAL, "Merge."); member = osync_client_proxy_get_member(proxy); merger = osync_member_get_merger(member); + if(merger) { + + caps = osync_member_get_capabilities(member); + osync_assert_msg(caps, "Merger active, but not capabilities!"); + /* TODO: Merger save the archive data with the member so we have to load it only for one time*/ // osync_archive_load_data() is fetching the mappingid by uid in the db - int ret = osync_archive_load_data(engine->archive, uid, osync_change_get_objtype(change), &buffer, &size, &error); + int ret = osync_archive_load_data(engine->archive, uid, osync_change_get_objtype(change), &entirebuf, &entsize, &error); if (ret < 0) { goto error; } if (ret > 0) { - xmlformat_entire = osync_xmlformat_parse(buffer, size, &error); - free(buffer); - if(!xmlformat_entire) - goto error; - osync_data_get_data(osync_change_get_data(change), (char **) &xmlformat, &xmlformat_size); - osync_assert(xmlformat_size == osync_xmlformat_size()); + osync_data_get_data(osync_change_get_data(change), &buffer, &size); - osync_merger_merge(merger, xmlformat, xmlformat_entire); - osync_xmlformat_unref(xmlformat_entire); + ret = osync_objformat_merge(format, buffer, size, &outbuf, &outsize, entirebuf, entsize, caps, error); + osync_free(entirebuf); + + if (ret != TRUE) + goto error; } } } Modified: trunk/opensync/engine/opensync_obj_engine.c ============================================================================== --- trunk/opensync/engine/opensync_obj_engine.c Sat Jan 3 06:40:51 2009 (r4964) +++ trunk/opensync/engine/opensync_obj_engine.c Sat Jan 3 07:13:36 2009 (r4965) @@ -1105,44 +1105,51 @@ OSyncMappingEntryEngine *entry_engine = o->data; osync_assert(entry_engine); - /* Merger - Save the entire xml and demerge */ - /* TODO: is here the right place to save the xml???? */ + /* Merger - Save the entire data and demerge */ if (osync_group_get_merger_enabled(osync_engine_get_group(engine->parent)) && osync_group_get_converter_enabled(osync_engine_get_group(engine->parent)) && entry_engine->change && (osync_change_get_changetype(entry_engine->change) != OSYNC_CHANGE_TYPE_DELETED) && - !strncmp(osync_objformat_get_name(osync_change_get_objformat(entry_engine->change)), "xmlformat-", 10) ) + osync_objformat_has_merger(osync_change_get_objformat(entry_engine->change)) ) + + { - char *buffer = NULL; - unsigned int xmlformat_size = 0, size = 0; - OSyncXMLFormat *xmlformat = NULL; + char *buffer = NULL, *outbuf; + unsigned int outsize = 0, size = 0; const char *objtype = NULL; OSyncMapping *mapping = NULL; OSyncMerger *merger = NULL; + OSyncCapabilities *caps; + OSyncMember *member = osync_client_proxy_get_member(sinkengine->proxy); + OSyncObjFormat *objformat = osync_change_get_objformat(entry_engine->change); osync_trace(TRACE_INTERNAL, "Entry %s for member %lli: Dirty: %i", osync_change_get_uid(entry_engine->change), memberid, osync_entry_engine_is_dirty(entry_engine)); - osync_trace(TRACE_INTERNAL, "Save the entire XMLFormat and demerge."); + osync_trace(TRACE_INTERNAL, "Save the entire data and demerge."); objtype = osync_change_get_objtype(entry_engine->change); mapping = entry_engine->mapping_engine->mapping; - osync_data_get_data(osync_change_get_data(entry_engine->change), (char **) &xmlformat, &xmlformat_size); - osync_assert(xmlformat_size == osync_xmlformat_size()); - - if(!osync_xmlformat_assemble(xmlformat, &buffer, &size)) { - osync_error_set(error, OSYNC_ERROR_GENERIC, "Could not assamble the xmlformat"); - goto error; - } + osync_data_get_data(osync_change_get_data(entry_engine->change), &buffer, &size); if(!osync_archive_save_data(engine->archive, osync_mapping_get_id(mapping), objtype, buffer, size, error)) { - g_free(buffer); + osync_free(buffer); goto error; } - g_free(buffer); - merger = osync_member_get_merger(osync_client_proxy_get_member(sinkengine->proxy)); - if(merger) - osync_merger_demerge(merger, xmlformat); + + merger = osync_member_get_merger(member); + caps = osync_member_get_capabilities(member); + if (!caps) { + osync_error_set(error, OSYNC_ERROR_MISCONFIGURATION, "No capabilities defined for Member %lli.", memberid); + goto error; + } + + if (!osync_objformat_demerge(objformat, buffer, size, &outbuf, &outsize, error)) + goto error; + + osync_free(buffer); + + osync_data_set_data(osync_change_get_data(entry_engine->change), outbuf, outsize); } |
From: <dg...@su...> - 2009-01-03 05:41:06
|
Author: dgollub Date: Sat Jan 3 06:40:51 2009 New Revision: 4964 URL: http://www.opensync.org/changeset/4964 Log: Introduce interanl function to determine if an objformat supports merging and demerging: osync_objformat_has_merger() Modified: trunk/opensync/format/opensync_objformat.c trunk/opensync/format/opensync_objformat_internals.h Modified: trunk/opensync/format/opensync_objformat.c ============================================================================== --- trunk/opensync/format/opensync_objformat.c Sat Jan 3 06:34:21 2009 (r4963) +++ trunk/opensync/format/opensync_objformat.c Sat Jan 3 06:40:51 2009 (r4964) @@ -298,3 +298,10 @@ return format->demerge_func(input, inpsize, output, outpsize, caps, error); } + +osync_objformat_has_merger(OSyncObjFormat *format) +{ + osync_return_val_if_fail(format, FALSE); + return (format->demerge_func && format->merge_func) ? TRUE : FALSE; +} + Modified: trunk/opensync/format/opensync_objformat_internals.h ============================================================================== --- trunk/opensync/format/opensync_objformat_internals.h Sat Jan 3 06:34:21 2009 (r4963) +++ trunk/opensync/format/opensync_objformat_internals.h Sat Jan 3 06:40:51 2009 (r4964) @@ -191,6 +191,18 @@ char **output, unsigned int *outpsize, OSyncCapabilities *caps, OSyncError **error); +/** + * @brief Check if specific format is able to merge/demerge + * + * If merge and demerge function are set for the specific format then merger + * and demerger get invoked. Merger/Demerge still can be disabled in group + * configuration, by disabling the merger, or not providing capabilities for + * the member. + * + * @param format Pointer to the object format + * @returns TRUE if merge and demerge is support for this format, otherwise FALSE + */ +osync_bool osync_objformat_has_merger(OSyncObjFormat *format); /*@}*/ |
From: <dg...@su...> - 2009-01-03 05:34:38
|
Author: dgollub Date: Sat Jan 3 06:34:21 2009 New Revision: 4963 URL: http://www.opensync.org/changeset/4963 Log: Register merge/demerge functions of xmlformat-plugin. Modified: format-plugins/xmlformat/trunk/src/xmlformat.c format-plugins/xmlformat/trunk/src/xmlformat.h format-plugins/xmlformat/trunk/src/xmlformat_merge.c Modified: format-plugins/xmlformat/trunk/src/xmlformat.c ============================================================================== --- format-plugins/xmlformat/trunk/src/xmlformat.c Sat Jan 3 06:10:29 2009 (r4962) +++ format-plugins/xmlformat/trunk/src/xmlformat.c Sat Jan 3 06:34:21 2009 (r4963) @@ -353,6 +353,9 @@ osync_objformat_set_marshal_func(format, marshal_xmlformat); osync_objformat_set_demarshal_func(format, demarshal_xmlformat); + osync_objformat_set_merge_func(format, merge_xmlformat); + osync_objformat_set_demerge_func(format, demerge_xmlformat); + osync_format_env_register_objformat(env, format); osync_objformat_unref(format); @@ -378,6 +381,9 @@ osync_objformat_set_marshal_func(format, marshal_xmlformat); osync_objformat_set_demarshal_func(format, demarshal_xmlformat); + osync_objformat_set_merge_func(format, merge_xmlformat); + osync_objformat_set_demerge_func(format, demerge_xmlformat); + osync_format_env_register_objformat(env, format); osync_objformat_unref(format); @@ -403,6 +409,9 @@ osync_objformat_set_marshal_func(format, marshal_xmlformat); osync_objformat_set_demarshal_func(format, demarshal_xmlformat); + osync_objformat_set_merge_func(format, merge_xmlformat); + osync_objformat_set_demerge_func(format, demerge_xmlformat); + osync_format_env_register_objformat(env, format); osync_objformat_unref(format); @@ -428,6 +437,9 @@ osync_objformat_set_marshal_func(format, marshal_xmlformat); osync_objformat_set_demarshal_func(format, demarshal_xmlformat); + osync_objformat_set_merge_func(format, merge_xmlformat); + osync_objformat_set_demerge_func(format, demerge_xmlformat); + osync_format_env_register_objformat(env, format); osync_objformat_unref(format); Modified: format-plugins/xmlformat/trunk/src/xmlformat.h ============================================================================== --- format-plugins/xmlformat/trunk/src/xmlformat.h Sat Jan 3 06:10:29 2009 (r4962) +++ format-plugins/xmlformat/trunk/src/xmlformat.h Sat Jan 3 06:34:21 2009 (r4963) @@ -63,5 +63,8 @@ OSyncConvCmpResult xmlformat_compare(OSyncXMLFormat *xmlformat1, OSyncXMLFormat *xmlformat2, OSyncXMLPoints points[], int basic_points, int treshold); +osync_bool merge_xmlformat(const char *buf, unsigned int size, char **destbuf, unsigned int *destsize, const char *entirebuf, unsigned int entiresize, OSyncCapabilities *caps, OSyncError **error); +osync_bool demerge_xmlformat(const char *buf, unsigned int size, char **destbuf, unsigned int *destsize, OSyncCapabilities *caps, OSyncError **error); + #endif /* XMLFORMAT_H_ */ Modified: format-plugins/xmlformat/trunk/src/xmlformat_merge.c ============================================================================== --- format-plugins/xmlformat/trunk/src/xmlformat_merge.c Sat Jan 3 06:10:29 2009 (r4962) +++ format-plugins/xmlformat/trunk/src/xmlformat_merge.c Sat Jan 3 06:34:21 2009 (r4963) @@ -24,7 +24,7 @@ #include <opensync/opensync-merger.h> -osync_bool xmlformat_merge(const char *buf, unsigned int size, char **destbuf, unsigned int *destsize, const char *entirebuf, unsigned int entiresize, OSyncCapabilities *caps, OSyncError **error) +osync_bool merge_xmlformat(const char *buf, unsigned int size, char **destbuf, unsigned int *destsize, const char *entirebuf, unsigned int entiresize, OSyncCapabilities *caps, OSyncError **error) { OSyncXMLField *old_cur, *new_cur, *tmp; OSyncCapability *cap_cur; @@ -181,7 +181,7 @@ return FALSE; } -osync_bool xmlformat_demerge(const char *buf, unsigned int size, char **destbuf, unsigned int *destsize, OSyncCapabilities *caps, OSyncError **error) +osync_bool demerge_xmlformat(const char *buf, unsigned int size, char **destbuf, unsigned int *destsize, OSyncCapabilities *caps, OSyncError **error) { OSyncXMLFormat *xmlformat; OSyncXMLField *cur_xmlfield, *tmp; |
From: <dg...@su...> - 2009-01-03 05:10:47
|
Author: dgollub Date: Sat Jan 3 06:10:29 2009 New Revision: 4962 URL: http://www.opensync.org/changeset/4962 Log: Initial objformat-merge/demerge function implementation. Introduced osync_objformat_set_demerge_func and osync_objformat_set_merge_func to register merge/demerge functions in a plugin. Merge and demerge format plugin functinos are optional. This functions don't called by default, yet. Modified: trunk/opensync.sym trunk/opensync/format/opensync_objformat.c trunk/opensync/format/opensync_objformat.h trunk/opensync/format/opensync_objformat_internals.h trunk/opensync/format/opensync_objformat_private.h Modified: trunk/opensync.sym ============================================================================== --- trunk/opensync.sym Sat Jan 3 05:40:29 2009 (r4961) +++ trunk/opensync.sym Sat Jan 3 06:10:29 2009 (r4962) @@ -385,9 +385,11 @@ osync_objformat_set_copy_func osync_objformat_set_create_func osync_objformat_set_demarshal_func +osync_objformat_set_demerge_func osync_objformat_set_destroy_func osync_objformat_set_duplicate_func osync_objformat_set_marshal_func +osync_objformat_set_merge_func osync_objformat_set_print_func osync_objformat_set_revision_func osync_objformat_set_validate_func Modified: trunk/opensync/format/opensync_objformat.c ============================================================================== --- trunk/opensync/format/opensync_objformat.c Sat Jan 3 05:40:29 2009 (r4961) +++ trunk/opensync/format/opensync_objformat.c Sat Jan 3 06:10:29 2009 (r4962) @@ -248,7 +248,7 @@ void osync_objformat_set_validate_func(OSyncObjFormat *format, OSyncFormatValidateFunc validate_func) { - osync_assert(format); + osync_return_if_fail(format); format->validate_func = validate_func; } @@ -265,4 +265,36 @@ return format->validate_func ? TRUE : FALSE; } -/*@}*/ +void osync_objformat_set_merge_func(OSyncObjFormat *format, OSyncFormatMergeFunc merge_func) +{ + osync_return_if_fail(format); + format->merge_func = merge_func; +} + +osync_bool osync_objformat_merge(OSyncObjFormat *format, + const char *input, unsigned int inpsize, + char **output, unsigned int *outpsize, + const char *entire, unsigned int entsize, + OSyncCapabilities *caps, OSyncError **error) +{ + osync_assert(format); + osync_assert(format->merge_func); + return format->merge_func(input, inpsize, output, outpsize, entire, entsize, caps, error); +} + +void osync_objformat_set_demerge_func(OSyncObjFormat *format, OSyncFormatDemergeFunc demerge_func) +{ + osync_return_if_fail(format); + format->demerge_func = demerge_func; +} + +osync_bool osync_objformat_demerge(OSyncObjFormat *format, + const char *input, unsigned int inpsize, + char **output, unsigned int *outpsize, + OSyncCapabilities *caps, OSyncError **error) +{ + osync_assert(format); + osync_assert(format->demerge_func); + return format->demerge_func(input, inpsize, output, outpsize, caps, error); +} + Modified: trunk/opensync/format/opensync_objformat.h ============================================================================== --- trunk/opensync/format/opensync_objformat.h Sat Jan 3 05:40:29 2009 (r4961) +++ trunk/opensync/format/opensync_objformat.h Sat Jan 3 06:10:29 2009 (r4962) @@ -41,6 +41,9 @@ typedef osync_bool (* OSyncFormatDemarshalFunc) (OSyncMessage *message, char **output, unsigned int *outpsize, OSyncError **error); typedef osync_bool (* OSyncFormatValidateFunc) (const char *data, unsigned int size, OSyncError **error); +typedef osync_bool (* OSyncFormatMergeFunc) (const char *input, unsigned int inpsize, char **output, unsigned int *outpsize, const char *entire, unsigned int entsize, OSyncCapabilities *caps, OSyncError **error); +typedef osync_bool (* OSyncFormatDemergeFunc) (const char *input, unsigned int inpsize, char **output, unsigned int *outpsize, OSyncCapabilities *caps, OSyncError **error); + /** * @brief Creates a new object format * @param name the name of the object format @@ -191,6 +194,28 @@ OSYNC_EXPORT void osync_objformat_set_validate_func(OSyncObjFormat *format, OSyncFormatValidateFunc validate_func); /** + * @brief Sets the optional merge function for an object format + * + * The merge function can be used to merge data for the specific + * format. This is optional. + * + * @param format Pointer to the object format + * @param merge_func The merge function to use + */ +OSYNC_EXPORT void osync_objformat_set_merge_func(OSyncObjFormat *format, OSyncFormatMergeFunc merge_func); + +/** + * @brief Sets the optional demerge function for an object format + * + * The demerge function can be used to demerge data for the specific + * format. This is optional. + * + * @param format Pointer to the object format + * @param demerge_func The demerge function to use + */ +OSYNC_EXPORT void osync_objformat_set_demerge_func(OSyncObjFormat *format, OSyncFormatDemergeFunc demerge_func); + +/** * @brief Prints the specified object * * Uses the object format's print function if set, otherwise the object's Modified: trunk/opensync/format/opensync_objformat_internals.h ============================================================================== --- trunk/opensync/format/opensync_objformat_internals.h Sat Jan 3 05:40:29 2009 (r4961) +++ trunk/opensync/format/opensync_objformat_internals.h Sat Jan 3 06:10:29 2009 (r4962) @@ -131,7 +131,7 @@ OSYNC_TEST_EXPORT osync_bool osync_objformat_demarshal(OSyncObjFormat *format, OSyncMessage *message, char **output, unsigned int *outpsize, OSyncError **error); /** - * @brief Validate supplied ata in format specific way + * @brief Validate supplied data in format specific way * * @param format Pointer to the object format * @param data Pointer to the object to validate @@ -154,6 +154,44 @@ */ osync_bool osync_objformat_must_validate(OSyncObjFormat *format); +/** + * @brief Merge supplied data in format specific way + * + * @param format Pointer to the object format + * @param input Pointer to a buffer to merge + * @param inpsize Size in bytes of the buffer specified by the input parameter + * @param output Pointer to the output buffer for the result of the merge + * @param outpsize Size in bytes of the output buffer specified by the output parameter + * @param entire Pointer to the base data ("entire"-data) to merge with the buffer of parameter input + * @param entsize Size in bytes of the base data buffer specified by the entire parameter + * @param caps The capabilities list which describes what must get merged: entire -> input + * @param error Pointer to an error struct + * @returns TRUE if data got merged successfully, otherwise FALSE + */ +OSYNC_TEST_EXPORT osync_bool osync_objformat_merge(OSyncObjFormat *format, + const char *input, unsigned int inpsize, + char **output, unsigned int *outpsize, + const char *entire, unsigned int entsize, + OSyncCapabilities *caps, OSyncError **error); + +/** + * @brief Demrge supplied data in format specific way + * + * @param format Pointer to the object format + * @param input Pointer to a buffer to demerge + * @param inpsize Size in bytes of the buffer specified by the input parameter + * @param output Pointer to the output buffer for the result of the demerge + * @param outpsize Size in bytes of the output buffer specified by the output parameter + * @param caps The capabilities list which describes what must get demerged + * @param error Pointer to an error struct + * @returns TRUE if data got demerged successfully, otherwise FALSE + */ +OSYNC_TEST_EXPORT osync_bool osync_objformat_demerge(OSyncObjFormat *format, + const char *input, unsigned int inpsize, + char **output, unsigned int *outpsize, + OSyncCapabilities *caps, OSyncError **error); + + /*@}*/ #endif /* _OPENSYNC_OBJFORMAT_INTERNALS_H_ */ Modified: trunk/opensync/format/opensync_objformat_private.h ============================================================================== --- trunk/opensync/format/opensync_objformat_private.h Sat Jan 3 05:40:29 2009 (r4961) +++ trunk/opensync/format/opensync_objformat_private.h Sat Jan 3 06:10:29 2009 (r4962) @@ -53,6 +53,8 @@ OSyncFormatMarshalFunc marshal_func; OSyncFormatDemarshalFunc demarshal_func; OSyncFormatValidateFunc validate_func; + OSyncFormatMergeFunc merge_func; + OSyncFormatDemergeFunc demerge_func; }; /*@}*/ |
From: <dg...@su...> - 2009-01-03 04:40:50
|
Author: dgollub Date: Sat Jan 3 05:40:29 2009 New Revision: 4961 URL: http://www.opensync.org/changeset/4961 Log: Exported osync_capabilities_get_first(). Required to get access to a OSyncCapability object. This could be used inside format-plugin merger functions. Modified: trunk/opensync.sym trunk/opensync/merger/opensync_capabilities.h trunk/opensync/merger/opensync_capabilities_internals.h Modified: trunk/opensync.sym ============================================================================== --- trunk/opensync.sym Sat Jan 3 05:33:23 2009 (r4960) +++ trunk/opensync.sym Sat Jan 3 05:40:29 2009 (r4961) @@ -6,6 +6,7 @@ osync_archive_ref osync_archive_unref osync_capabilities_assemble +osync_capabilities_get_first osync_capabilities_new osync_capabilities_parse osync_capabilities_ref Modified: trunk/opensync/merger/opensync_capabilities.h ============================================================================== --- trunk/opensync/merger/opensync_capabilities.h Sat Jan 3 05:33:23 2009 (r4960) +++ trunk/opensync/merger/opensync_capabilities.h Sat Jan 3 05:40:29 2009 (r4961) @@ -63,6 +63,14 @@ /** + * @brief Get the first capability for a given objtype from the capabilities + * @param capabilities The pointer to a capabilities object + * @param objtype The name of the objtype (e.g.: contact) + * @return The first capability for a given objtype from the capabilities + */ +OSYNC_EXPORT OSyncCapability *osync_capabilities_get_first(OSyncCapabilities *capabilities, const char *objtype); + +/** * @brief Dump the capabilities into memory. * @param capabilities The pointer to a capabilities object * @param buffer The pointer to the buffer which will hold the xml document Modified: trunk/opensync/merger/opensync_capabilities_internals.h ============================================================================== --- trunk/opensync/merger/opensync_capabilities_internals.h Sat Jan 3 05:33:23 2009 (r4960) +++ trunk/opensync/merger/opensync_capabilities_internals.h Sat Jan 3 05:40:29 2009 (r4961) @@ -34,15 +34,6 @@ /*@{*/ /** - * @brief Get the first capability for a given objtype from the capabilities - * @param capabilities The pointer to a capabilities object - * @param objtype The name of the objtype (e.g.: contact) - * @return The first capability for a given objtype from the capabilities - */ -OSyncCapability *osync_capabilities_get_first(OSyncCapabilities *capabilities, const char *objtype); - - -/** * @brief Sort all the capabilities of every objtype of the capabilities object. This function has to * be called after a capability was added to the capabilities. * @param capabilities The pointer to a capabilities object |
From: <dg...@su...> - 2009-01-03 04:33:43
|
Author: dgollub Date: Sat Jan 3 05:33:23 2009 New Revision: 4960 URL: http://www.opensync.org/changeset/4960 Log: Initial modification for xmlformat-plugin specific merge/demerge code. Modified: format-plugins/xmlformat/trunk/src/CMakeLists.txt format-plugins/xmlformat/trunk/src/xmlformat_merge.c Modified: format-plugins/xmlformat/trunk/src/CMakeLists.txt ============================================================================== --- format-plugins/xmlformat/trunk/src/CMakeLists.txt Sat Jan 3 05:07:37 2009 (r4959) +++ format-plugins/xmlformat/trunk/src/CMakeLists.txt Sat Jan 3 05:33:23 2009 (r4960) @@ -1,7 +1,7 @@ LINK_DIRECTORIES( ${OPENSYNC_LIBRARY_DIRS} ${GLIB2_LIBRARY_DIRS} ) INCLUDE_DIRECTORIES( ${CMAKE_BINARY_DIR} ${OPENSYNC_INCLUDE_DIRS} ${GLIB2_INCLUDE_DIRS} ) -OPENSYNC_FORMAT_ADD( xmlformat xmlformat.c xmlformat_compare.c ) +OPENSYNC_FORMAT_ADD( xmlformat xmlformat.c xmlformat_compare.c xmlformat_merge.c ) # Required for UNITTESTING only ADD_LIBRARY( xmlformat-compare STATIC xmlformat_compare.c ) Modified: format-plugins/xmlformat/trunk/src/xmlformat_merge.c ============================================================================== --- format-plugins/xmlformat/trunk/src/xmlformat_merge.c Sat Jan 3 05:07:37 2009 (r4959) +++ format-plugins/xmlformat/trunk/src/xmlformat_merge.c Sat Jan 3 05:33:23 2009 (r4960) @@ -20,70 +20,33 @@ * */ -#include "opensync.h" -#include "opensync_internals.h" +#include "xmlformat.h" -#include "opensync-xmlformat.h" +#include <opensync/opensync-merger.h> -#include "opensync-merger.h" -#include "opensync_capabilities_internals.h" -#include "opensync_merger_internals.h" -#include "opensync_merger_private.h" - - -OSyncMerger *osync_merger_new(OSyncCapabilities *capabilities, OSyncError **error) -{ - OSyncMerger *merger = NULL; - osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, capabilities, error); - osync_assert(capabilities); - - merger = osync_try_malloc0(sizeof(OSyncMerger), error); - if(!merger) { - osync_trace(TRACE_EXIT_ERROR, "%s: %s" , __func__, osync_error_print(error)); - return NULL; - } - - merger->ref_count = 1; - osync_capabilities_ref(capabilities); - merger->capabilities = capabilities; - - osync_trace(TRACE_EXIT, "%s: %p", __func__, merger); - return merger; -} - -OSyncMerger *osync_merger_ref(OSyncMerger *merger) -{ - osync_assert(merger); - - g_atomic_int_inc(&(merger->ref_count)); - - return merger; -} - -void osync_merger_unref(OSyncMerger *merger) -{ - osync_assert(merger); - - if (g_atomic_int_dec_and_test(&(merger->ref_count))) { - osync_capabilities_unref(merger->capabilities); - g_free(merger); - } -} - -void osync_merger_merge(OSyncMerger *merger, OSyncXMLFormat *xmlformat, OSyncXMLFormat *entire) +osync_bool xmlformat_merge(const char *buf, unsigned int size, char **destbuf, unsigned int *destsize, const char *entirebuf, unsigned int entiresize, OSyncCapabilities *caps, OSyncError **error) { OSyncXMLField *old_cur, *new_cur, *tmp; OSyncCapability *cap_cur; + OSyncXMLFormat *xmlformat, *entire; int ret; + const char *objtype; - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, merger, xmlformat, entire); - osync_assert(merger); - osync_assert(xmlformat); - osync_assert(entire); + osync_trace(TRACE_ENTRY, "%s(%p, %u, %p, %p, %p, %p, %u, %p, %p)", __func__, buf, size, destbuf, destsize, entirebuf, entiresize, caps, error); + + xmlformat = osync_xmlformat_parse(buf, size, error); + if (!xmlformat) + goto error; + + entire = osync_xmlformat_parse(entirebuf, entiresize, error); + if (!entire) + goto error; + + objtype = osync_xmlformat_get_objtype(xmlformat); - cap_cur = osync_capabilities_get_first(merger->capabilities, osync_xmlformat_get_objtype(xmlformat)); + cap_cur = osync_capabilities_get_first(caps, objtype); if(!cap_cur) - return; + goto error; new_cur = osync_xmlformat_get_first_field(xmlformat); old_cur = osync_xmlformat_get_first_field(entire); @@ -205,34 +168,33 @@ After merging xmlformat is not sorted. Sorting is very expensive! Avoid it! Ticket: #754 */ osync_assert(osync_xmlformat_is_sorted(xmlformat)); - { -#ifndef NDEBUG - /* XXX Debugging only. Fix Merger and remove osync_xmlformat_assemble() */ - unsigned int size; - char *buffer = NULL; - osync_xmlformat_assemble(xmlformat, &buffer, &size); - - osync_trace(TRACE_EXIT, "%s:\nXML:\n%s ", __func__, buffer); - - g_free(buffer); -#else - osync_trace(TRACE_EXIT, "%s", __func__); -#endif /* NDEBUG */ - } + if (!osync_xmlformat_assemble(xmlformat, destbuf, destsize)) + goto error; + + osync_trace(TRACE_SENSITIVE, "XMLFormat Merged:\n%s ", *destbuf); + + osync_trace(TRACE_EXIT, "%s", __func__); + return TRUE; + +error: + return FALSE; } -void osync_merger_demerge(OSyncMerger *merger, OSyncXMLFormat *xmlformat) +osync_bool xmlformat_demerge(const char *buf, unsigned int size, char **destbuf, unsigned int *destsize, OSyncCapabilities *caps, OSyncError **error) { + OSyncXMLFormat *xmlformat; OSyncXMLField *cur_xmlfield, *tmp; OSyncCapability *cur_capability; int rc; - osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, merger, xmlformat); - osync_assert(merger); - osync_assert(xmlformat); + osync_trace(TRACE_ENTRY, "%s(%p, %u, %p, %p, %p, %p)", __func__, buf, size, destbuf, destsize, caps, error); + + xmlformat = osync_xmlformat_parse(buf, size, error); + if (!xmlformat) + goto error; - cur_capability = osync_capabilities_get_first(merger->capabilities, osync_xmlformat_get_objtype(xmlformat)); + cur_capability = osync_capabilities_get_first(caps, osync_xmlformat_get_objtype(xmlformat)); cur_xmlfield = osync_xmlformat_get_first_field(xmlformat); if(!cur_capability) /* if there is no capability - it means that the device can handle all xmlfields */ @@ -305,8 +267,19 @@ g_assert_not_reached(); } + + end: + if (!osync_xmlformat_assemble(xmlformat, destbuf, destsize)) + goto error; + + osync_trace(TRACE_SENSITIVE, "XMLFormat Demerged:\n%s ", *destbuf); + osync_trace(TRACE_EXIT, "%s: ", __func__); - return; + return TRUE; + +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; } |
From: <dg...@su...> - 2009-01-03 04:07:50
|
Author: dgollub Date: Sat Jan 3 05:07:37 2009 New Revision: 4959 URL: http://www.opensync.org/changeset/4959 Log: Create a copy of the xmlformat-merging code to work on in the xmlformat-plugin. Added: format-plugins/xmlformat/trunk/src/xmlformat_merge.c - copied unchanged from r4958, trunk/opensync/merger/opensync_merger.c Copied: format-plugins/xmlformat/trunk/src/xmlformat_merge.c (from r4958, trunk/opensync/merger/opensync_merger.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ format-plugins/xmlformat/trunk/src/xmlformat_merge.c Sat Jan 3 05:07:37 2009 (r4959, copy of r4958, trunk/opensync/merger/opensync_merger.c) @@ -0,0 +1,312 @@ +/* + * libopensync - A synchronization framework + * Copyright (C) 2006 NetNix Finland Ltd <ne...@ne...> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Daniel Friedrich <dan...@op...> + * + */ + +#include "opensync.h" +#include "opensync_internals.h" + +#include "opensync-xmlformat.h" + +#include "opensync-merger.h" +#include "opensync_capabilities_internals.h" +#include "opensync_merger_internals.h" +#include "opensync_merger_private.h" + + +OSyncMerger *osync_merger_new(OSyncCapabilities *capabilities, OSyncError **error) +{ + OSyncMerger *merger = NULL; + osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, capabilities, error); + osync_assert(capabilities); + + merger = osync_try_malloc0(sizeof(OSyncMerger), error); + if(!merger) { + osync_trace(TRACE_EXIT_ERROR, "%s: %s" , __func__, osync_error_print(error)); + return NULL; + } + + merger->ref_count = 1; + osync_capabilities_ref(capabilities); + merger->capabilities = capabilities; + + osync_trace(TRACE_EXIT, "%s: %p", __func__, merger); + return merger; +} + +OSyncMerger *osync_merger_ref(OSyncMerger *merger) +{ + osync_assert(merger); + + g_atomic_int_inc(&(merger->ref_count)); + + return merger; +} + +void osync_merger_unref(OSyncMerger *merger) +{ + osync_assert(merger); + + if (g_atomic_int_dec_and_test(&(merger->ref_count))) { + osync_capabilities_unref(merger->capabilities); + g_free(merger); + } +} + +void osync_merger_merge(OSyncMerger *merger, OSyncXMLFormat *xmlformat, OSyncXMLFormat *entire) +{ + OSyncXMLField *old_cur, *new_cur, *tmp; + OSyncCapability *cap_cur; + int ret; + + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, merger, xmlformat, entire); + osync_assert(merger); + osync_assert(xmlformat); + osync_assert(entire); + + cap_cur = osync_capabilities_get_first(merger->capabilities, osync_xmlformat_get_objtype(xmlformat)); + if(!cap_cur) + return; + + new_cur = osync_xmlformat_get_first_field(xmlformat); + old_cur = osync_xmlformat_get_first_field(entire); + while(old_cur != NULL) + { + ret = strcmp(osync_xmlfield_get_name(new_cur), osync_xmlfield_get_name(old_cur)); + if(ret < 0) { + if(osync_xmlfield_get_next(new_cur) != NULL) { + new_cur = osync_xmlfield_get_next(new_cur); + continue; + } + } + + /* This should be always NULL reg. #820 */ + osync_assert(cap_cur); + + ret = strcmp(osync_capability_get_name(cap_cur), osync_xmlfield_get_name(old_cur)); + if(ret == 0) + { + /* + * now we have to merge the key/value pairs (second level) + * we see the second level as sorted and with the same fields (exception the last key) + * KEY(new) Capabilities KEY(old) + * KEY1 KEY1 KEY1 + * KEY2(empty) KEY3 KEY2 + * KEY2(empty) KEY2 + * KEY3 KEY3 + * KEY4 + * KEY4 + */ + if( osync_capability_has_key(cap_cur) && + !strcmp(osync_capability_get_name(cap_cur), osync_xmlfield_get_name(new_cur))) + { + OSyncCapability *cap_tmp; + OSyncXMLField *new_tmp; + OSyncCapability *cap_node = osync_capability_get_child(cap_cur); + OSyncXMLField *new_node = osync_xmlfield_get_child(new_cur); + OSyncXMLField *old_node = osync_xmlfield_get_child(old_cur); + + while(old_node) { + GSList *list, *tmp; + int i, size; + const char *curkeyname; + + size=0; + curkeyname = osync_xmlfield_get_name(old_node); + list = NULL; + do { + list = g_slist_prepend(list, old_node); + size++; + old_node = osync_xmlfield_get_next(old_node); + if(old_node == NULL) + break; + i = strcmp(osync_xmlfield_get_name(old_node), curkeyname); + } while(i == 0); + + /* search for the curkeyname in the capabilities */ + for(cap_tmp = cap_node; cap_tmp != NULL; cap_tmp = osync_capability_get_next(cap_tmp)) { + if(!strcmp(osync_capability_get_name(cap_tmp), curkeyname)) { + cap_node = cap_tmp; + break; + } + } + + if(cap_tmp) { + /* curkeyname was found in the capibilities */ + /* we have to set the new_node ptr to the right position */ + for(; new_node && size > 0; size--) { + new_node = osync_xmlfield_get_next(new_node); + } + }else{ + /* curkeyname was _not_ found in the capabilities */ + /* link all key/value pairs with the key curkeyname to the the new_node */ + + list = g_slist_reverse(list); + + if(new_node == NULL) { + for(tmp=list; tmp != NULL; tmp = g_slist_next(tmp)) { + osync_xmlfield_unlink(tmp->data); + } + }else{ + for(tmp=list; tmp != NULL; tmp = g_slist_next(tmp)) { + osync_xmlfield_unlink(tmp->data); + + osync_xmlfield_adopt_xmlfield_before_field(new_node, tmp->data); + } + + do{ + new_tmp = new_node; + new_node = osync_xmlfield_get_next(new_node); + osync_xmlfield_delete(new_tmp); + size--; + }while(size > 0 && new_node); + + } + } + g_slist_free(list); + } + } + old_cur = osync_xmlfield_get_next(old_cur); + continue; + } + else if(ret < 0) + { + cap_cur = osync_capability_get_next(cap_cur); + continue; + } + else if(ret > 0) + { + tmp = old_cur; + old_cur = osync_xmlfield_get_next(old_cur); + osync_xmlfield_adopt_xmlfield_before_field(new_cur, tmp); + continue; + } + g_assert_not_reached(); + } + + /* FIXME: Merger is broken! + After merging xmlformat is not sorted. Sorting is very expensive! + Avoid it! Ticket: #754 */ + osync_assert(osync_xmlformat_is_sorted(xmlformat)); + { +#ifndef NDEBUG + /* XXX Debugging only. Fix Merger and remove osync_xmlformat_assemble() */ + unsigned int size; + char *buffer = NULL; + osync_xmlformat_assemble(xmlformat, &buffer, &size); + + osync_trace(TRACE_EXIT, "%s:\nXML:\n%s ", __func__, buffer); + + g_free(buffer); +#else + osync_trace(TRACE_EXIT, "%s", __func__); +#endif /* NDEBUG */ + } + +} + +void osync_merger_demerge(OSyncMerger *merger, OSyncXMLFormat *xmlformat) +{ + OSyncXMLField *cur_xmlfield, *tmp; + OSyncCapability *cur_capability; + int rc; + + osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, merger, xmlformat); + osync_assert(merger); + osync_assert(xmlformat); + + cur_capability = osync_capabilities_get_first(merger->capabilities, osync_xmlformat_get_objtype(xmlformat)); + cur_xmlfield = osync_xmlformat_get_first_field(xmlformat); + + if(!cur_capability) /* if there is no capability - it means that the device can handle all xmlfields */ + goto end; + + while(cur_xmlfield != NULL) + { + if(cur_capability == NULL) { + /* delete all xmlfields */ + while(cur_xmlfield) { + osync_trace(TRACE_INTERNAL, "Demerge XMLField: %s", osync_xmlfield_get_name(cur_xmlfield)); + tmp = osync_xmlfield_get_next(cur_xmlfield); + osync_xmlfield_delete(cur_xmlfield); + cur_xmlfield = tmp; + } + break; + } + + rc = strcmp(osync_xmlfield_get_name(cur_xmlfield), osync_capability_get_name(cur_capability)); + if(rc == 0) { + /* check the secound level here */ + if(osync_capability_has_key(cur_capability)) /* if there is no key - it means that the xmlfield can handle all keys */ + { + int i, j=0; + int capability_keys = osync_capability_get_key_count(cur_capability); + int xmlfield_keys = osync_xmlfield_get_key_count(cur_xmlfield); + + for(i=0; i < xmlfield_keys; i++) + { + int krc = 0; + if(j == capability_keys) { + for(; i < xmlfield_keys; i++) { + osync_trace(TRACE_INTERNAL, "Demerge XMLField Key: %s->%s", osync_xmlfield_get_name(cur_xmlfield), osync_xmlfield_get_nth_key_name(cur_xmlfield, i)); + osync_xmlfield_set_nth_key_value(cur_xmlfield, i, ""); + } + break; + } + + krc = strcmp(osync_xmlfield_get_nth_key_name(cur_xmlfield, i), osync_capability_get_nth_key(cur_capability, j)); + if(krc == 0) { + continue; + } + if(krc > 0) { + j++; + continue; + } + if(krc < 0) { + osync_trace(TRACE_INTERNAL, "Demerge XMLField Key: %s->%s", osync_xmlfield_get_name(cur_xmlfield), osync_xmlfield_get_nth_key_name(cur_xmlfield, i)); + osync_xmlfield_set_nth_key_value(cur_xmlfield, i, ""); + continue; + } + g_assert_not_reached(); + } + } + cur_xmlfield = osync_xmlfield_get_next(cur_xmlfield); + continue; + } + if(rc > 0) { + cur_capability = osync_capability_get_next(cur_capability); + continue; + } + if(rc < 0) { + /* delete xmlfield */ + osync_trace(TRACE_INTERNAL, "Demerge XMLField: %s", osync_xmlfield_get_name(cur_xmlfield)); + tmp = osync_xmlfield_get_next(cur_xmlfield); + osync_xmlfield_delete(cur_xmlfield); + cur_xmlfield = tmp; + continue; + } + g_assert_not_reached(); + } + + end: + osync_trace(TRACE_EXIT, "%s: ", __func__); + return; +} + |
From: <dg...@su...> - 2009-01-03 04:05:11
|
Author: dgollub Date: Sat Jan 3 05:04:57 2009 New Revision: 4958 URL: http://www.opensync.org/changeset/4958 Log: Dropped include of opensync_capabilities_private.h as well. Code got fixed and doesn't access private structs anylonger. Modified: trunk/opensync/merger/opensync_merger.c Modified: trunk/opensync/merger/opensync_merger.c ============================================================================== --- trunk/opensync/merger/opensync_merger.c Sat Jan 3 05:03:18 2009 (r4957) +++ trunk/opensync/merger/opensync_merger.c Sat Jan 3 05:04:57 2009 (r4958) @@ -25,8 +25,6 @@ #include "opensync-xmlformat.h" -#include "opensync_capability_private.h" /* FIXME: directly access to private header */ - #include "opensync-merger.h" #include "opensync_capabilities_internals.h" #include "opensync_merger_internals.h" |
From: <dg...@su...> - 2009-01-03 04:03:36
|
Author: dgollub Date: Sat Jan 3 05:03:18 2009 New Revision: 4957 URL: http://www.opensync.org/changeset/4957 Log: Ported xmlformat-merge code to public OSyncXMLField API. This was done to move this code at some later point out of the core tree. Modified: trunk/opensync/merger/opensync_merger.c Modified: trunk/opensync/merger/opensync_merger.c ============================================================================== --- trunk/opensync/merger/opensync_merger.c Sat Jan 3 04:02:16 2009 (r4956) +++ trunk/opensync/merger/opensync_merger.c Sat Jan 3 05:03:18 2009 (r4957) @@ -24,11 +24,6 @@ #include "opensync_internals.h" #include "opensync-xmlformat.h" -/* FIXME: osync_merge_merge() requires direct xmlNode access -> dirty! */ -#include "xmlformat/opensync-xmlformat_internals.h" - - -#include "xmlformat/opensync_xmlfield_private.h" /* FIXME: directly access to private header */ #include "opensync_capability_private.h" /* FIXME: directly access to private header */ @@ -124,32 +119,32 @@ if( osync_capability_has_key(cap_cur) && !strcmp(osync_capability_get_name(cap_cur), osync_xmlfield_get_name(new_cur))) { - xmlNodePtr cap_tmp, new_tmp; - xmlNodePtr cap_node = cap_cur->node->children; - xmlNodePtr new_node = new_cur->node->children; - xmlNodePtr old_node = old_cur->node->children; - xmlNodePtr new_par_node = new_cur->node; + OSyncCapability *cap_tmp; + OSyncXMLField *new_tmp; + OSyncCapability *cap_node = osync_capability_get_child(cap_cur); + OSyncXMLField *new_node = osync_xmlfield_get_child(new_cur); + OSyncXMLField *old_node = osync_xmlfield_get_child(old_cur); while(old_node) { GSList *list, *tmp; int i, size; - const xmlChar *curkeyname; + const char *curkeyname; size=0; - curkeyname = old_node->name; + curkeyname = osync_xmlfield_get_name(old_node); list = NULL; do { list = g_slist_prepend(list, old_node); size++; - old_node = old_node->next; + old_node = osync_xmlfield_get_next(old_node); if(old_node == NULL) break; - i = xmlStrcmp(old_node->name, curkeyname); + i = strcmp(osync_xmlfield_get_name(old_node), curkeyname); } while(i == 0); /* search for the curkeyname in the capabilities */ - for(cap_tmp = cap_node; cap_tmp != NULL; cap_tmp = cap_tmp->next) { - if(!xmlStrcmp(cap_tmp->name, curkeyname)) { + for(cap_tmp = cap_node; cap_tmp != NULL; cap_tmp = osync_capability_get_next(cap_tmp)) { + if(!strcmp(osync_capability_get_name(cap_tmp), curkeyname)) { cap_node = cap_tmp; break; } @@ -159,7 +154,7 @@ /* curkeyname was found in the capibilities */ /* we have to set the new_node ptr to the right position */ for(; new_node && size > 0; size--) { - new_node = new_node->next; + new_node = osync_xmlfield_get_next(new_node); } }else{ /* curkeyname was _not_ found in the capabilities */ @@ -169,20 +164,19 @@ if(new_node == NULL) { for(tmp=list; tmp != NULL; tmp = g_slist_next(tmp)) { - xmlUnlinkNode(tmp->data); + osync_xmlfield_unlink(tmp->data); } }else{ for(tmp=list; tmp != NULL; tmp = g_slist_next(tmp)) { - xmlUnlinkNode(tmp->data); - xmlDOMWrapAdoptNode(NULL, ((xmlNodePtr)tmp->data)->doc, tmp->data, new_node->doc, new_par_node, 0); - xmlAddPrevSibling(new_node, tmp->data); + osync_xmlfield_unlink(tmp->data); + + osync_xmlfield_adopt_xmlfield_before_field(new_node, tmp->data); } do{ new_tmp = new_node; - new_node = new_node->next; - xmlUnlinkNode(new_tmp); - xmlFreeNode(new_tmp); + new_node = osync_xmlfield_get_next(new_node); + osync_xmlfield_delete(new_tmp); size--; }while(size > 0 && new_node); |
From: <dg...@su...> - 2009-01-03 03:02:33
|
Author: dgollub Date: Sat Jan 3 04:02:16 2009 New Revision: 4956 URL: http://www.opensync.org/changeset/4956 Log: Introduce osync_capability_get_child, osync_capability_get_parent, osync_capability_get_prev to access all levels of capability nodes. Modified: trunk/opensync.sym trunk/opensync/merger/opensync_capability.c trunk/opensync/merger/opensync_capability.h Modified: trunk/opensync.sym ============================================================================== --- trunk/opensync.sym Sat Jan 3 03:56:42 2009 (r4955) +++ trunk/opensync.sym Sat Jan 3 04:02:16 2009 (r4956) @@ -11,10 +11,13 @@ osync_capabilities_ref osync_capabilities_unref osync_capability_add_key +osync_capability_get_child osync_capability_get_key_count osync_capability_get_name osync_capability_get_next osync_capability_get_nth_key +osync_capability_get_parent +osync_capability_get_prev osync_capability_has_key osync_capability_new osync_change_compare Modified: trunk/opensync/merger/opensync_capability.c ============================================================================== --- trunk/opensync/merger/opensync_capability.c Sat Jan 3 03:56:42 2009 (r4955) +++ trunk/opensync/merger/opensync_capability.c Sat Jan 3 04:02:16 2009 (r4956) @@ -192,11 +192,32 @@ OSyncCapability *osync_capability_get_next(OSyncCapability *capability) { - osync_assert(capability); + osync_return_val_if_fail(capability, NULL); return capability->next; } +OSyncCapability *osync_capability_get_prev(OSyncCapability *capability) +{ + osync_return_val_if_fail(capability, NULL); + + return capability->prev; +} + +OSyncCapability *osync_capability_get_child(OSyncCapability *capability) +{ + osync_return_val_if_fail(capability, NULL); + + return capability->child; +} + +OSyncCapability *osync_capability_get_parent(OSyncCapability *capability) +{ + osync_return_val_if_fail(capability, NULL); + + return capability->parent; +} + osync_bool osync_capability_has_key(OSyncCapability *capability) { osync_assert(capability); Modified: trunk/opensync/merger/opensync_capability.h ============================================================================== --- trunk/opensync/merger/opensync_capability.h Sat Jan 3 03:56:42 2009 (r4955) +++ trunk/opensync/merger/opensync_capability.h Sat Jan 3 04:02:16 2009 (r4956) @@ -57,6 +57,26 @@ */ OSYNC_EXPORT OSyncCapability *osync_capability_get_next(OSyncCapability *capability); +/** + * @brief Get the previous capability + * @param capability The pointer to a capability object + * @return The pointer to the previous capability or NULL if there is no more capability + */ +OSYNC_EXPORT OSyncCapability *osync_capability_get_prev(OSyncCapability *capability); + +/** + * @brief Get the child capability + * @param capability The pointer to a capability object + * @return The pointer to the child capability or NULL if there is no more capability + */ +OSYNC_EXPORT OSyncCapability *osync_capability_get_child(OSyncCapability *capability); + +/** + * @brief Get the parent capability + * @param capability The pointer to a capability object + * @return The pointer to the parent capability or NULL if there is no more capability + */ +OSYNC_EXPORT OSyncCapability *osync_capability_get_parent(OSyncCapability *capability); /** * @brief Check if the capability has a key |
From: <dg...@su...> - 2009-01-03 02:57:01
|
Author: dgollub Date: Sat Jan 3 03:56:42 2009 New Revision: 4955 URL: http://www.opensync.org/changeset/4955 Log: Introduce multi-level capabilities support. Original purpose is to get for each xmlNode a OSyncXMLField object to allow xmlformat-demerge/merge out of tree. Modified: trunk/opensync/merger/opensync_capabilities.c trunk/opensync/merger/opensync_capabilities_private.h trunk/opensync/merger/opensync_capability.c trunk/opensync/merger/opensync_capability_internals.h trunk/opensync/merger/opensync_capability_private.h Modified: trunk/opensync/merger/opensync_capabilities.c ============================================================================== --- trunk/opensync/merger/opensync_capabilities.c Fri Jan 2 23:45:18 2009 (r4954) +++ trunk/opensync/merger/opensync_capabilities.c Sat Jan 3 03:56:42 2009 (r4955) @@ -99,6 +99,7 @@ OSyncCapabilities *osync_capabilities_parse(const char *buffer, unsigned int size, OSyncError **error) { + OSyncCapability *capability = NULL; OSyncCapabilities *capabilities = NULL; xmlNodePtr cur = NULL; osync_trace(TRACE_ENTRY, "%s(%p, %u, %p)", __func__, buffer, size, error); @@ -115,43 +116,39 @@ capabilities->last_objtype = NULL; capabilities->doc = xmlReadMemory(buffer, size, NULL, NULL, XML_PARSE_NOBLANKS); if(capabilities->doc == NULL) { - g_free(capabilities); + osync_free(capabilities); osync_error_set(error, OSYNC_ERROR_GENERIC, "Could not parse XML."); - osync_trace(TRACE_EXIT_ERROR, "%s: %s" , __func__, osync_error_print(error)); - return NULL; + goto error; } capabilities->doc->_private = capabilities; cur = xmlDocGetRootElement(capabilities->doc); + cur = cur->children; for(; cur != NULL; cur = cur->next) { OSyncCapabilitiesObjType *capabilitiesobjtype = osync_capabilitiesobjtype_new(capabilities, cur, error); - xmlNodePtr tmp =NULL; if(!capabilitiesobjtype) { osync_capabilities_unref(capabilities); - osync_trace(TRACE_EXIT_ERROR, "%s: %s" , __func__, osync_error_print(error)); - return NULL; + goto error; } + + if (!(capability = osync_capability_new_node(capabilitiesobjtype, cur, error))) + goto error; - tmp = cur->children; - for(; tmp != NULL; tmp = tmp->next) { - OSyncCapability *capability = NULL; - /* TODO: its to slow to check the name */ - /* Skip nodes which are comments to keep the capabilities sorted. */ - if (!strcmp((const char *) tmp->name, "comment")) - continue; - - capability = osync_capability_new_node(capabilitiesobjtype, tmp, error); - if(!capability) { - osync_capabilities_unref(capabilities); - osync_trace(TRACE_EXIT_ERROR, "%s: %s" , __func__, osync_error_print(error)); - return NULL; - } - } + if (!osync_capability_parse(capability, cur->children, &capabilitiesobjtype->first_child, &capabilitiesobjtype->last_child, &capabilitiesobjtype->child_count, error)) + goto error_and_free; + } osync_trace(TRACE_EXIT, "%s: %p", __func__, capabilities); return capabilities; + +error_and_free: + if (capability) + osync_capability_free(capability); +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s" , __func__, osync_error_print(error)); + return NULL; } OSyncCapabilities *osync_capabilities_ref(OSyncCapabilities *capabilities) @@ -172,21 +169,14 @@ objtype = capabilities->first_objtype; while(objtype) { - OSyncCapability *capability, *tmp2; - capability = objtype->first_child; - while(capability) - { - tmp2 = osync_capability_get_next(capability); - osync_capability_free(capability); - capability = tmp2; - } - + osync_capability_free(objtype->capability); + tmp = objtype->next; - g_free(objtype); + osync_free(objtype); objtype = tmp; } osync_xml_free_doc(capabilities->doc); - g_free(capabilities); + osync_free(capabilities); } } Modified: trunk/opensync/merger/opensync_capabilities_private.h ============================================================================== --- trunk/opensync/merger/opensync_capabilities_private.h Fri Jan 2 23:45:18 2009 (r4954) +++ trunk/opensync/merger/opensync_capabilities_private.h Sat Jan 3 03:56:42 2009 (r4955) @@ -37,6 +37,8 @@ struct OSyncCapabilitiesObjType { /** The pointer to the next objtype */ OSyncCapabilitiesObjType *next; + /** The pointer to the root capability */ + OSyncCapability *capability; /** The pointer to the first capability */ OSyncCapability *first_child; /** The pointer to the last capability */ Modified: trunk/opensync/merger/opensync_capability.c ============================================================================== --- trunk/opensync/merger/opensync_capability.c Fri Jan 2 23:45:18 2009 (r4954) +++ trunk/opensync/merger/opensync_capability.c Sat Jan 3 03:56:42 2009 (r4955) @@ -47,19 +47,98 @@ capability->prev = capabilitiesobjtype->last_child; node->_private = capability; - if(!capabilitiesobjtype->first_child) - capabilitiesobjtype->first_child = capability; - if(capabilitiesobjtype->last_child) - capabilitiesobjtype->last_child->next = capability; - capabilitiesobjtype->last_child = capability; - capabilitiesobjtype->child_count++; + capabilitiesobjtype->capability = capability; return capability; } +OSyncCapability *osync_capability_new_capability(OSyncCapability *parent, xmlNodePtr node, OSyncError **error) +{ + OSyncCapability *temp, *capability = NULL; + osync_assert(node); + + capability = osync_try_malloc0(sizeof(OSyncCapability), error); + + if (!capability) { + osync_trace(TRACE_ERROR, "%s: %s" , __func__, osync_error_print(error)); + return NULL; + } + + capability->next = NULL; + capability->node = node; + capability->parent = parent; + node->_private = capability; + + if (parent) { + capability->prev = parent->child; + if (capability->prev) + capability->prev->next = capability; + parent->child = capability; + } + + return capability; +} + +osync_bool osync_capability_parse(OSyncCapability *parent, xmlNodePtr node, OSyncCapability **first_child, OSyncCapability **last_child, unsigned int *child_count, OSyncError **error) +{ + OSyncCapability *capability = NULL; + unsigned int count = 0; + + if (first_child) + *first_child = NULL; + + while (node != NULL) { + + capability = osync_capability_new_capability(parent, node, error); + if (!capability) + goto error; + + if (first_child && !(*first_child)) { + *first_child = capability; + } + + count++; + + if (node->children && node->children->type == XML_ELEMENT_NODE) + if (!osync_capability_parse(capability, node->children, NULL, NULL, NULL, error)) + goto error_and_free; + + node = node->next; + } + + if (last_child) + *last_child = capability; + + if (child_count) + *child_count = count; + + return TRUE; + +error_and_free: + osync_capability_free(capability); +error: + + if (last_child) + *last_child = NULL; + + if (first_child) + *first_child = NULL; + + osync_trace(TRACE_EXIT_ERROR, "%s: %s" , __func__, osync_error_print(error)); + return FALSE; + +} + void osync_capability_free(OSyncCapability *capability) { + OSyncCapability *tmp; osync_assert(capability); + + while (capability->child) { + tmp = osync_capability_get_next(capability->child); + osync_capability_free(capability->child); + capability->child = tmp; + } g_free(capability); } Modified: trunk/opensync/merger/opensync_capability_internals.h ============================================================================== --- trunk/opensync/merger/opensync_capability_internals.h Fri Jan 2 23:45:18 2009 (r4954) +++ trunk/opensync/merger/opensync_capability_internals.h Sat Jan 3 03:56:42 2009 (r4955) @@ -42,6 +42,22 @@ OSyncCapability *osync_capability_new_node(OSyncCapabilitiesObjType *objtype, xmlNodePtr node, OSyncError **error); /** + * @brief Multi-level parsing of OSyncCapability based on a given XML Node. + * + * This function create a Capability-tree out of the given xmlNode pointer. This function + * is calling it self in a recursion and parses all siblings and child of the given xmlNode pointer. + * + * @param parent The parent OSyncCapability + * @param node The node to start parsing the capabilities. + * @param first_child Reference to a pointer to store the first parsed OSyncCapability child + * @param last_child Reference to a pointer to store the last parsed OSyncCapability child + * @param child_count Reference to unsinged int to count the childs of the capability node + * @param error The error which will hold the info in case of an error + * @returns TRUE on success, FALSE on error + */ +osync_bool osync_capability_parse(OSyncCapability *parent, xmlNodePtr node, OSyncCapability **first_child, OSyncCapability **last_child, unsigned int *child_count, OSyncError **error); + +/** * @brief Frees a capability object * @param capability The pointer to a capability object */ Modified: trunk/opensync/merger/opensync_capability_private.h ============================================================================== --- trunk/opensync/merger/opensync_capability_private.h Fri Jan 2 23:45:18 2009 (r4954) +++ trunk/opensync/merger/opensync_capability_private.h Sat Jan 3 03:56:42 2009 (r4955) @@ -35,6 +35,10 @@ * @brief Represents a Capability object */ struct OSyncCapability { + /** The pointer to the parent capability */ + OSyncCapability *parent; + /** The pointer to the child capability */ + OSyncCapability *child; /** The pointer to the next capability */ OSyncCapability *next; /** The pointer to the previous capability */ |
From: <dg...@su...> - 2009-01-02 22:45:34
|
Author: dgollub Date: Fri Jan 2 23:45:18 2009 New Revision: 4954 URL: http://www.opensync.org/changeset/4954 Log: Add a comment to the capabilities file to make the capabilitis parsing tests more advanced. Modified: trunk/tests/data/merger/capabilities.xml Modified: trunk/tests/data/merger/capabilities.xml ============================================================================== --- trunk/tests/data/merger/capabilities.xml Fri Jan 2 23:21:10 2009 (r4953) +++ trunk/tests/data/merger/capabilities.xml Fri Jan 2 23:45:18 2009 (r4954) @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <capabilities> + <!-- Contacts for the brand new Foo 2000 --> <contact> <Name> <LastName /> |
From: <dg...@su...> - 2009-01-02 22:21:27
|
Author: dgollub Date: Fri Jan 2 23:21:10 2009 New Revision: 4953 URL: http://www.opensync.org/changeset/4953 Log: Instrumented same random failing testcases to get more informatino from continous build hosts. dual_connect_{error,timeout} very likely just need num_engine_error values. Two timeouts should actually end-up in two seperatd engine-error, and somehow reliable. Modified: trunk/tests/engine-tests/check_engine_error.c Modified: trunk/tests/engine-tests/check_engine_error.c ============================================================================== --- trunk/tests/engine-tests/check_engine_error.c Fri Jan 2 22:58:26 2009 (r4952) +++ trunk/tests/engine-tests/check_engine_error.c Fri Jan 2 23:21:10 2009 (r4953) @@ -1207,7 +1207,7 @@ fail_unless(num_client_connected == 0, NULL); fail_unless(num_client_disconnected == 0, NULL); fail_unless(num_client_written == 0, NULL); - fail_unless(num_engine_errors == 1, NULL); + fail_unless(num_engine_errors == 1, "Number of Engine Errors: %u Expected: 1", num_engine_errors); fail_unless(num_engine_successful == 0, NULL); fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" != \"x\""), NULL); @@ -2703,7 +2703,7 @@ fail_unless(num_change_error == 0, NULL); fail_unless(num_mapping_errors == 0, NULL); fail_unless(num_mapping_conflicts == 0, NULL); - fail_unless(num_engine_errors == 1, NULL); + fail_unless(num_engine_errors == 1, "Number of Engine Errors: %u Expected: 1", num_engine_errors); fail_unless(num_engine_successful == 0, NULL); fail_unless(osync_testing_diff("data1", "data2")); @@ -3060,7 +3060,7 @@ fail_unless(osync_engine_initialize(engine, &error), NULL); fail_unless(error == NULL, NULL); - fail_unless(synchronize_once(engine, &error), NULL); + fail_unless(synchronize_once(engine, &error), "Unexpected error: %s", osync_error_print(&error)); fail_unless(!osync_error_is_set(&error), NULL); osync_error_unref(&error); |
From: <dg...@su...> - 2009-01-02 22:15:50
|
Author: dgollub Date: Fri Jan 2 22:58:26 2009 New Revision: 4952 URL: http://www.opensync.org/changeset/4952 Log: Disable internal schema valdiation, to fix various unittests. Moving the xmlformat schema out of the core tree cause this issue. Instead of having one hardcoded central validation, the idea is to do the validation directly with the help of the format plugins. So there is no need to hardcode internal schema validation. Modified: trunk/opensync/engine/opensync_engine.c Modified: trunk/opensync/engine/opensync_engine.c ============================================================================== --- trunk/opensync/engine/opensync_engine.c Fri Jan 2 22:29:23 2009 (r4951) +++ trunk/opensync/engine/opensync_engine.c Fri Jan 2 22:58:26 2009 (r4952) @@ -1371,10 +1371,14 @@ _osync_engine_set_internal_format(engine, "todo", osync_format_env_find_objformat(engine->formatenv, "xmlformat-todo")); _osync_engine_set_internal_format(engine, "note", osync_format_env_find_objformat(engine->formatenv, "xmlformat-note")); /* init schemas */ + + /* TODO: DROP engine-central valdation. + * This should be done after MULTPLIY and WRITE engine command. _osync_engine_set_internal_schema(engine, "contact", error); _osync_engine_set_internal_schema(engine, "event", error); _osync_engine_set_internal_schema(engine, "todo", error); _osync_engine_set_internal_schema(engine, "note", error); + */ return TRUE; |
From: <dg...@su...> - 2009-01-02 21:29:39
|
Author: dgollub Date: Fri Jan 2 22:29:23 2009 New Revision: 4951 URL: http://www.opensync.org/changeset/4951 Log: Don't fail if hardcoded-"internal Formats" are installed. Modified: trunk/opensync/engine/opensync_engine.c Modified: trunk/opensync/engine/opensync_engine.c ============================================================================== --- trunk/opensync/engine/opensync_engine.c Fri Jan 2 22:06:36 2009 (r4950) +++ trunk/opensync/engine/opensync_engine.c Fri Jan 2 22:29:23 2009 (r4951) @@ -162,7 +162,6 @@ { OSyncXMLFormat *xmlformat = NULL; OSyncXMLFormatSchema *schema = NULL; - osync_trace(TRACE_INTERNAL, "Setting internal schema for objtype %s", objtype); // init OSyncXMLFormatSchemas xmlformat = osync_xmlformat_new(objtype, NULL); @@ -172,14 +171,21 @@ schema = osync_xmlformat_schema_get_instance(xmlformat, error); #endif osync_xmlformat_unref(xmlformat); + + if (!schema) + return; + + osync_trace(TRACE_INTERNAL, "Setting internal schema for objtype %s", objtype); + g_hash_table_insert(engine->internalSchemas, g_strdup(objtype), schema); } static void _osync_engine_set_internal_format(OSyncEngine *engine, const char *objtype, OSyncObjFormat *format) { - osync_trace(TRACE_INTERNAL, "Setting internal format of %s to %p:%s", objtype, format, osync_objformat_get_name(format)); if (!format) return; + + osync_trace(TRACE_INTERNAL, "Setting internal format of %s to %p:%s", objtype, format, osync_objformat_get_name(format)); g_hash_table_insert(engine->internalFormats, g_strdup(objtype), g_strdup(osync_objformat_get_name(format))); } |
From: <dg...@su...> - 2009-01-02 21:06:51
|
Author: dgollub Date: Fri Jan 2 22:06:36 2009 New Revision: 4950 URL: http://www.opensync.org/changeset/4950 Log: Export osync_xmlformat_get_obtype(). Will be later required when moving xmlformat merger into the xmlformat-plugin. Modified: trunk/opensync.sym trunk/opensync/xmlformat/opensync_xmlformat.h trunk/opensync/xmlformat/opensync_xmlformat_internals.h Modified: trunk/opensync.sym ============================================================================== --- trunk/opensync.sym Fri Jan 2 21:58:36 2009 (r4949) +++ trunk/opensync.sym Fri Jan 2 22:06:36 2009 (r4950) @@ -734,6 +734,7 @@ osync_xmlformat_assemble osync_xmlformat_copy osync_xmlformat_get_first_field +osync_xmlformat_get_objtype osync_xmlformat_is_sorted osync_xmlformat_new osync_xmlformat_parse Modified: trunk/opensync/xmlformat/opensync_xmlformat.h ============================================================================== --- trunk/opensync/xmlformat/opensync_xmlformat.h Fri Jan 2 21:58:36 2009 (r4949) +++ trunk/opensync/xmlformat/opensync_xmlformat.h Fri Jan 2 22:06:36 2009 (r4950) @@ -63,6 +63,13 @@ OSYNC_EXPORT void osync_xmlformat_unref(OSyncXMLFormat *xmlformat); /** + * @brief Get the objtype of a xmlformat + * @param xmlformat The pointer to a xmlformat object + * @return The objtype of the xmlformat + */ +OSYNC_EXPORT const char *osync_xmlformat_get_objtype(OSyncXMLFormat *xmlformat); + +/** * @brief Get the first field of a xmlformat * @param xmlformat The pointer to the xmlformat object * @return The first field of the xmlformat Modified: trunk/opensync/xmlformat/opensync_xmlformat_internals.h ============================================================================== --- trunk/opensync/xmlformat/opensync_xmlformat_internals.h Fri Jan 2 21:58:36 2009 (r4949) +++ trunk/opensync/xmlformat/opensync_xmlformat_internals.h Fri Jan 2 22:06:36 2009 (r4950) @@ -39,14 +39,6 @@ const char *osync_xmlformat_root_name(OSyncXMLFormat *xmlformat); /** - * @brief Get the objtype of a xmlformat - * @param xmlformat The pointer to a xmlformat object - * @return The objtype of the xmlformat - */ -const char *osync_xmlformat_get_objtype(OSyncXMLFormat *xmlformat); - - -/** * @brief Mark/Taint the xmlformat as unsorted * @param xmlformat The pointer to a xmlformat object */ |
From: <dg...@su...> - 2009-01-02 20:58:52
|
Author: henrik Date: Fri Jan 2 21:58:36 2009 New Revision: 4949 URL: http://www.opensync.org/changeset/4949 Log: Do not install CMake files (this is a leftover from before mozilla-sync SVN was hosted by OOpenSync Modified: plugins/mozilla-sync/trunk/src/CMakeLists.txt Modified: plugins/mozilla-sync/trunk/src/CMakeLists.txt ============================================================================== --- plugins/mozilla-sync/trunk/src/CMakeLists.txt Fri Jan 2 21:28:51 2009 (r4948) +++ plugins/mozilla-sync/trunk/src/CMakeLists.txt Fri Jan 2 21:58:36 2009 (r4949) @@ -78,13 +78,6 @@ OPENSYNC_PLUGIN_INSTALL( mozilla-sync ) -###### CMAKE FILES INSTALL ################### -INSTALL( FILES "${CMAKE_SOURCE_DIR}/cmake/modules/FindPkgConfig.cmake" DESTINATION "share/libopensync-plugin-mozilla/cmake/modules") -INSTALL( FILES "${CMAKE_SOURCE_DIR}/cmake/modules/FindGLIB2.cmake" DESTINATION "share/libopensync-plugin-mozilla/cmake/modules") -INSTALL( FILES "${CMAKE_SOURCE_DIR}/cmake/modules/FindThunderbirdXpcom.cmake" DESTINATION "share/libopensync-plugin-mozilla/cmake/modules") -INSTALL( FILES "${CMAKE_SOURCE_DIR}/cmake/modules/FindOpenSync.cmake" DESTINATION "share/libopensync-plugin-mozilla/cmake/modules") -INSTALL( FILES "${CMAKE_SOURCE_DIR}/cmake/modules/MacroEnsureOutOfSourceBuild.cmake" DESTINATION "share/libopensync-plugin-mozilla/cmake/modules") - ###### CONNECTION TEST ################### # ### TODO ### |
From: <dg...@su...> - 2009-01-02 20:29:05
|
Author: henrik Date: Fri Jan 2 21:28:51 2009 New Revision: 4948 URL: http://www.opensync.org/changeset/4948 Log: Corrected project name to mozilla-sync Modified: plugins/mozilla-sync/trunk/CMakeLists.txt Modified: plugins/mozilla-sync/trunk/CMakeLists.txt ============================================================================== --- plugins/mozilla-sync/trunk/CMakeLists.txt Fri Jan 2 21:28:24 2009 (r4947) +++ plugins/mozilla-sync/trunk/CMakeLists.txt Fri Jan 2 21:28:51 2009 (r4948) @@ -28,7 +28,7 @@ CMAKE_POLICY(SET CMP0005 OLD) ENDIF(COMMAND cmake_policy) -SET( PROJECT_NAME libopensync-plugin-mozilla ) +SET( PROJECT_NAME mozilla-sync ) PROJECT( ${PROJECT_NAME} CXX ) SET( CPACK_PACKAGE_VERSION_MAJOR "0") |
From: <dg...@su...> - 2009-01-02 20:28:39
|
Author: dgollub Date: Fri Jan 2 21:28:24 2009 New Revision: 4947 URL: http://www.opensync.org/changeset/4947 Log: Fix xmlformats unittest. Make the test independent of the xmlformat PIM types. Added: trunk/tests/data/xmlformats/mockobjtype.xml trunk/tests/data/xmlformats/xmlformat-mockobjtype.xsd Deleted: trunk/tests/data/xmlformats/event.xml Modified: trunk/tests/merger-tests/check_xmlformat.c Added: trunk/tests/data/xmlformats/mockobjtype.xml ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/tests/data/xmlformats/mockobjtype.xml Fri Jan 2 21:28:24 2009 (r4947) @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mockobjtype> + <Status> + <Content>CONFIRMED</Content> + </Status> + <Summary> + <Content>Pure evil test</Content> + </Summary> + <Uid> + <Content>23kj4lkj8fdu</Content> + </Uid> + <Url> + <Content>http://www.opensync.org</Content> + </Url> +</mockobjtype> Added: trunk/tests/data/xmlformats/xmlformat-mockobjtype.xsd ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/tests/data/xmlformats/xmlformat-mockobjtype.xsd Fri Jan 2 21:28:24 2009 (r4947) @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="1.0"> + + <xsd:complexType name="StringContent"> + <xsd:sequence> + <xsd:element minOccurs="1" name="Content" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + + <!-- XMLFormat-mockobjtype --> + + <xsd:element name="mockobjtype"> + <xsd:complexType> + <xsd:sequence> + <xsd:element maxOccurs="1" minOccurs="0" name="Status" type="StringContent"/> + <xsd:element maxOccurs="1" minOccurs="0" name="Summary" type="StringContent"/> + <xsd:element maxOccurs="1" minOccurs="0" name="Uid" type="StringContent"/> + <xsd:element maxOccurs="1" minOccurs="0" name="Url" type="StringContent"/> + </xsd:sequence> + <xsd:attribute name="version" type="xsd:integer"/> + </xsd:complexType> + </xsd:element> + + +</xsd:schema> Modified: trunk/tests/merger-tests/check_xmlformat.c ============================================================================== --- trunk/tests/merger-tests/check_xmlformat.c Fri Jan 2 21:17:24 2009 (r4946) +++ trunk/tests/merger-tests/check_xmlformat.c Fri Jan 2 21:28:24 2009 (r4947) @@ -208,7 +208,7 @@ fail_unless(failschema == NULL); osync_xmlformat_unref(xmlformat); - xmlformat = osync_xmlformat_new("contact", &error); + xmlformat = osync_xmlformat_new("mockobjtype", &error); fail_if(xmlformat == NULL, NULL); fail_if(error == NULL, NULL); @@ -227,7 +227,7 @@ } END_TEST -START_TEST (xmlformat_event_schema) +START_TEST (xmlformat_schema_validate) { char *testbed = setup_testbed("xmlformats"); char *buffer; @@ -235,7 +235,7 @@ OSyncError *error = NULL; OSyncXMLFormatSchema *schema = NULL; - fail_unless(osync_file_read("event.xml", &buffer, &size, &error), NULL); + fail_unless(osync_file_read("mockobjtype.xml", &buffer, &size, &error), NULL); fail_unless(error == NULL, NULL); OSyncXMLFormat *xmlformat = osync_xmlformat_parse(buffer, size, &error); @@ -268,7 +268,7 @@ // xmlformat schema create_case(s, "xmlformat_schema_get_instance", xmlformat_schema_get_instance); - create_case(s, "xmlformat_event_schema", xmlformat_event_schema); + create_case(s, "xmlformat_schema_validate", xmlformat_schema_validate); // xmlfield create_case(s, "xmlfield_new", xmlfield_new); |
From: <dg...@su...> - 2009-01-02 20:17:39
|
Author: dgollub Date: Fri Jan 2 21:17:24 2009 New Revision: 4946 URL: http://www.opensync.org/changeset/4946 Log: Remove Merger from the public API. This get's only used interally. Added: trunk/opensync/merger/opensync_merger_internals.h (contents, props changed) - copied, changed from r4944, trunk/opensync/merger/opensync_merger.h Deleted: trunk/opensync/merger/opensync_merger.h Modified: trunk/opensync.sym trunk/opensync/engine/opensync_engine.c trunk/opensync/engine/opensync_obj_engine.c trunk/opensync/group/opensync_member.c trunk/opensync/group/opensync_member.h trunk/opensync/group/opensync_member_internals.h trunk/opensync/merger/opensync-merger_internals.h trunk/opensync/merger/opensync_merger.c trunk/opensync/merger/opensync_merger_private.h trunk/opensync/opensync-merger.h trunk/opensync/opensync.h trunk/wrapper/opensync-group.i trunk/wrapper/opensync-merger.i trunk/wrapper/opensync.i Modified: trunk/opensync.sym ============================================================================== --- trunk/opensync.sym Fri Jan 2 20:57:47 2009 (r4945) +++ trunk/opensync.sym Fri Jan 2 21:17:24 2009 (r4946) @@ -301,7 +301,6 @@ osync_member_get_configdir osync_member_get_id osync_member_get_main_sink -osync_member_get_merger osync_member_get_name osync_member_get_objformats osync_member_get_pluginname @@ -321,11 +320,6 @@ osync_member_set_objtype_enabled osync_member_set_pluginname osync_member_unref -osync_merger_demerge -osync_merger_merge -osync_merger_new -osync_merger_ref -osync_merger_unref osync_message_get_buffer osync_message_get_cmd osync_message_get_command Modified: trunk/opensync/engine/opensync_engine.c ============================================================================== --- trunk/opensync/engine/opensync_engine.c Fri Jan 2 20:57:47 2009 (r4945) +++ trunk/opensync/engine/opensync_engine.c Fri Jan 2 21:17:24 2009 (r4946) @@ -34,7 +34,9 @@ #include "archive/opensync_archive_internals.h" #include "client/opensync_client_proxy_internals.h" +#include "merger/opensync_merger_internals.h" #include "group/opensync_group_internals.h" +#include "group/opensync_member_internals.h" #include "opensync_status_internals.h" #include "opensync_obj_engine_internals.h" Modified: trunk/opensync/engine/opensync_obj_engine.c ============================================================================== --- trunk/opensync/engine/opensync_obj_engine.c Fri Jan 2 20:57:47 2009 (r4945) +++ trunk/opensync/engine/opensync_obj_engine.c Fri Jan 2 21:17:24 2009 (r4946) @@ -46,6 +46,8 @@ #include "archive/opensync_archive_internals.h" #include "data/opensync_change_internals.h" #include "client/opensync_client_proxy_internals.h" +#include "merger/opensync_merger_internals.h" +#include "group/opensync_member_internals.h" OSyncMappingEngine *_osync_obj_engine_create_mapping_engine(OSyncObjEngine *engine, OSyncError **error) { Modified: trunk/opensync/group/opensync_member.c ============================================================================== --- trunk/opensync/group/opensync_member.c Fri Jan 2 20:57:47 2009 (r4945) +++ trunk/opensync/group/opensync_member.c Fri Jan 2 21:17:24 2009 (r4946) @@ -26,11 +26,12 @@ #include "opensync-group.h" #include "opensync-format.h" -#include "opensync-merger.h" #include "opensync_member_internals.h" #include "opensync_member_private.h" +#include "opensync-merger.h" #include "merger/opensync_capabilities_internals.h" +#include "merger/opensync_merger_internals.h" #include "common/opensync_xml_internals.h" Modified: trunk/opensync/group/opensync_member.h ============================================================================== --- trunk/opensync/group/opensync_member.h Fri Jan 2 20:57:47 2009 (r4945) +++ trunk/opensync/group/opensync_member.h Fri Jan 2 21:17:24 2009 (r4946) @@ -303,15 +303,6 @@ */ OSYNC_EXPORT osync_bool osync_member_set_capabilities(OSyncMember *member, OSyncCapabilities *capabilities, OSyncError **error); - -/** @brief Get pointer of the Merger - * - * @param member The member - * @returns The pointer of the Merger, NULL if merger is disabled - */ -OSYNC_EXPORT OSyncMerger *osync_member_get_merger(OSyncMember *member); - - /** @brief Remove all object types from member. * * @param member The member Modified: trunk/opensync/group/opensync_member_internals.h ============================================================================== --- trunk/opensync/group/opensync_member_internals.h Fri Jan 2 20:57:47 2009 (r4945) +++ trunk/opensync/group/opensync_member_internals.h Fri Jan 2 21:17:24 2009 (r4946) @@ -21,6 +21,8 @@ #ifndef _OPENSYNC_MEMBER_INTERNALS_H_ #define _OPENSYNC_MEMBER_INTERNALS_H_ +#include "merger/opensync_merger_internals.h" + /** * @defgroup OSyncMemberInternalsAPI OpenSync Member Internals * @ingroup OSyncGroupPrivate @@ -56,6 +58,13 @@ #endif /* OPENSYNC_UNITTESTS */ }; +/** @brief Get pointer of the Merger + * + * @param member The member + * @returns The pointer of the Merger, NULL if merger is disabled + */ +OSYNC_TEST_EXPORT OSyncMerger *osync_member_get_merger(OSyncMember *member); + #ifdef OPENSYNC_UNITTESTS /** @brief Set the schemadir for configuration validation to a custom directory. * This is actually only inteded for UNITTESTS to run tests without Modified: trunk/opensync/merger/opensync-merger_internals.h ============================================================================== --- trunk/opensync/merger/opensync-merger_internals.h Fri Jan 2 20:57:47 2009 (r4945) +++ trunk/opensync/merger/opensync-merger_internals.h Fri Jan 2 21:17:24 2009 (r4946) @@ -25,5 +25,6 @@ #include "opensync_capabilities_internals.h" #include "opensync_capability_internals.h" +#include "opensync_merger_internals.h" #endif /*OPENSYNCMERGER_INTERNALS_H_*/ Modified: trunk/opensync/merger/opensync_merger.c ============================================================================== --- trunk/opensync/merger/opensync_merger.c Fri Jan 2 20:57:47 2009 (r4945) +++ trunk/opensync/merger/opensync_merger.c Fri Jan 2 21:17:24 2009 (r4946) @@ -34,6 +34,7 @@ #include "opensync-merger.h" #include "opensync_capabilities_internals.h" +#include "opensync_merger_internals.h" #include "opensync_merger_private.h" Copied and modified: trunk/opensync/merger/opensync_merger_internals.h (from r4944, trunk/opensync/merger/opensync_merger.h) ============================================================================== --- trunk/opensync/merger/opensync_merger.h Fri Jan 2 18:32:33 2009 (r4944, copy source) +++ trunk/opensync/merger/opensync_merger_internals.h Fri Jan 2 21:17:24 2009 (r4946) @@ -20,8 +20,9 @@ * */ -#ifndef OPENSYNC_MERGER_H_ -#define OPENSYNC_MERGER_H_ +#ifndef OPENSYNC_MERGER_INTERNALS_H_ +#define OPENSYNC_MERGER_INTERNALS_H_ + /** * @defgroup OSyncMerger OpenSync Merger Module @@ -33,27 +34,28 @@ */ /*@{*/ +typedef struct OSyncMerger OSyncMerger; + /** * @brief Creates a new merger object * @param capabilities Pointer to capabilities which should be taken in account by the Merger * @param error The error which will hold the info in case of an error * @return The pointer to the newly allocated merger object or NULL in case of error */ -OSYNC_EXPORT OSyncMerger *osync_merger_new(OSyncCapabilities *capabilities, OSyncError **error); +OSYNC_TEST_EXPORT OSyncMerger *osync_merger_new(OSyncCapabilities *capabilities, OSyncError **error); /** * @brief Increments the reference counter * @param merger The pointer to a merger object */ -OSYNC_EXPORT OSyncMerger *osync_merger_ref(OSyncMerger *merger); +OSYNC_TEST_EXPORT OSyncMerger *osync_merger_ref(OSyncMerger *merger); /** * @brief Decrement the reference counter. The merger object will * be freed if there is no more reference to it. * @param merger The pointer to a merger object */ -OSYNC_EXPORT void osync_merger_unref(OSyncMerger *merger); - +OSYNC_TEST_EXPORT void osync_merger_unref(OSyncMerger *merger); /** * @brief Merge all xmlfields from the entire xmlformat into the @@ -62,7 +64,7 @@ * @param xmlformat The pointer to a xmlformat object * @param entire The pointer to a entire xmlformat object */ -OSYNC_EXPORT void osync_merger_merge(OSyncMerger *merger, OSyncXMLFormat *xmlformat, OSyncXMLFormat *entire); +OSYNC_TEST_EXPORT void osync_merger_merge(OSyncMerger *merger, OSyncXMLFormat *xmlformat, OSyncXMLFormat *entire); /** * @brief Remove all xmlfields from the xmlformat if they are @@ -70,8 +72,8 @@ * @param merger The pointer to a merger object * @param xmlformat The pointer to a xmlformat object */ -OSYNC_EXPORT void osync_merger_demerge(OSyncMerger *merger, OSyncXMLFormat *xmlformat); +OSYNC_TEST_EXPORT void osync_merger_demerge(OSyncMerger *merger, OSyncXMLFormat *xmlformat); /*@}*/ -#endif /*OPENSYNC_MERGER_H_*/ +#endif /*OPENSYNC_MERGER_INTERNALS_H_*/ Modified: trunk/opensync/merger/opensync_merger_private.h ============================================================================== --- trunk/opensync/merger/opensync_merger_private.h Fri Jan 2 20:57:47 2009 (r4945) +++ trunk/opensync/merger/opensync_merger_private.h Fri Jan 2 21:17:24 2009 (r4946) @@ -20,8 +20,8 @@ * */ -#ifndef OPENSYNC_MERGER_INTERNALS_H_ -#define OPENSYNC_MERGER_INTERNALS_H_ +#ifndef OPENSYNC_MERGER_PRIVATE_H_ +#define OPENSYNC_MERGER_PRIVATE_H_ /** * @defgroup OSyncMergerPrivate OpenSync Merger Module Private @@ -44,4 +44,4 @@ /*@}*/ -#endif /*OPENSYNC_MERGER_INTERNALS_H_*/ +#endif /*OPENSYNC_MERGER_PRIVATE_H_*/ Modified: trunk/opensync/opensync-merger.h ============================================================================== --- trunk/opensync/opensync-merger.h Fri Jan 2 20:57:47 2009 (r4945) +++ trunk/opensync/opensync-merger.h Fri Jan 2 21:17:24 2009 (r4946) @@ -25,7 +25,6 @@ #include "merger/opensync_capabilities.h" #include "merger/opensync_capability.h" -#include "merger/opensync_merger.h" OPENSYNC_END_DECLS Modified: trunk/opensync/opensync.h ============================================================================== --- trunk/opensync/opensync.h Fri Jan 2 20:57:47 2009 (r4945) +++ trunk/opensync/opensync.h Fri Jan 2 21:17:24 2009 (r4946) @@ -155,7 +155,10 @@ /************************************************************** * Structs *************************************************************/ - + +/* Archive component */ +typedef struct OSyncArchive OSyncArchive; + /* Data component */ typedef struct OSyncData OSyncData; typedef struct OSyncChange OSyncChange; @@ -217,10 +220,8 @@ typedef struct OSyncMember OSyncMember; /* Merger component */ -typedef struct OSyncArchive OSyncArchive; typedef struct OSyncCapabilities OSyncCapabilities; typedef struct OSyncCapability OSyncCapability; -typedef struct OSyncMerger OSyncMerger; /* XMLFormat component */ typedef struct OSyncXMLFormat OSyncXMLFormat; Modified: trunk/wrapper/opensync-group.i ============================================================================== --- trunk/wrapper/opensync-group.i Fri Jan 2 20:57:47 2009 (r4945) +++ trunk/wrapper/opensync-group.i Fri Jan 2 21:17:24 2009 (r4946) @@ -396,13 +396,6 @@ wrapper_exception("osync_member_set_capabilities failed but did not set error code"); } - Merger *get_merger() { - Merger *merger = osync_member_get_merger(self); - if (merger) - osync_merger_ref(merger); - return merger; - } - void flush_objtypes() { osync_member_flush_objtypes(self); } @@ -414,7 +407,6 @@ config = property(get_config, set_config) id = property(get_id) capabilities = property(get_capabilities, set_capabilities) - merger = property(get_merger) # extend the SWIG-generated constructor, so that we can setup our list-wrapper classes __oldinit = __init__ Modified: trunk/wrapper/opensync-merger.i ============================================================================== --- trunk/wrapper/opensync-merger.i Fri Jan 2 20:57:47 2009 (r4945) +++ trunk/wrapper/opensync-merger.i Fri Jan 2 21:17:24 2009 (r4946) @@ -328,27 +328,3 @@ %} } - -typedef struct {} Merger; -%extend Merger { - Merger(Capabilities *capabilities) { - Error *err = NULL; - Merger *merger = osync_merger_new(capabilities, &err); - if (raise_exception_on_error(err)) - return NULL; - else - return merger; - } - - ~Merger() { - osync_merger_unref(self); - } - - void merge(XMLFormat *xmlformat, XMLFormat *entire) { - osync_merger_merge(self, xmlformat, entire); - } - - void demerge(XMLFormat *xmlformat) { - osync_merger_demerge(self, xmlformat); - } -} Modified: trunk/wrapper/opensync.i ============================================================================== --- trunk/wrapper/opensync.i Fri Jan 2 20:57:47 2009 (r4945) +++ trunk/wrapper/opensync.i Fri Jan 2 21:17:24 2009 (r4946) @@ -45,7 +45,6 @@ typedef OSyncHashTable HashTable; typedef OSyncLockState LockState; typedef OSyncMember Member; -typedef OSyncMerger Merger; typedef OSyncObjFormat ObjFormat; typedef OSyncObjFormatSink ObjFormatSink; typedef OSyncObjTypeSinkFunctions ObjTypeSinkFunctions; |
From: <dg...@su...> - 2009-01-02 19:58:08
|
Author: dgollub Date: Fri Jan 2 20:57:47 2009 New Revision: 4945 URL: http://www.opensync.org/changeset/4945 Log: Moved opensync_merger_internals.h to opensync_merger_private.h since this is just the struct declartion. Added: trunk/opensync/merger/opensync_merger_private.h (props changed) - copied unchanged from r4944, trunk/opensync/merger/opensync_merger_internals.h Deleted: trunk/opensync/merger/opensync_merger_internals.h Modified: trunk/opensync/merger/opensync-merger_internals.h trunk/opensync/merger/opensync_merger.c Modified: trunk/opensync/merger/opensync-merger_internals.h ============================================================================== --- trunk/opensync/merger/opensync-merger_internals.h Fri Jan 2 18:32:33 2009 (r4944) +++ trunk/opensync/merger/opensync-merger_internals.h Fri Jan 2 20:57:47 2009 (r4945) @@ -25,6 +25,5 @@ #include "opensync_capabilities_internals.h" #include "opensync_capability_internals.h" -#include "opensync_merger_internals.h" #endif /*OPENSYNCMERGER_INTERNALS_H_*/ Modified: trunk/opensync/merger/opensync_merger.c ============================================================================== --- trunk/opensync/merger/opensync_merger.c Fri Jan 2 18:32:33 2009 (r4944) +++ trunk/opensync/merger/opensync_merger.c Fri Jan 2 20:57:47 2009 (r4945) @@ -33,7 +33,8 @@ #include "opensync_capability_private.h" /* FIXME: directly access to private header */ #include "opensync-merger.h" -#include "opensync-merger_internals.h" +#include "opensync_capabilities_internals.h" +#include "opensync_merger_private.h" OSyncMerger *osync_merger_new(OSyncCapabilities *capabilities, OSyncError **error) Copied: trunk/opensync/merger/opensync_merger_private.h (from r4944, trunk/opensync/merger/opensync_merger_internals.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/opensync/merger/opensync_merger_private.h Fri Jan 2 20:57:47 2009 (r4945, copy of r4944, trunk/opensync/merger/opensync_merger_internals.h) @@ -0,0 +1,47 @@ +/* + * libopensync - A synchronization framework + * Copyright (C) 2006 NetNix Finland Ltd <ne...@ne...> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Daniel Friedrich <dan...@op...> + * + */ + +#ifndef OPENSYNC_MERGER_INTERNALS_H_ +#define OPENSYNC_MERGER_INTERNALS_H_ + +/** + * @defgroup OSyncMergerPrivate OpenSync Merger Module Private + * @ingroup OSyncPrivate + * @defgroup OSyncMergerInternalAPI OpenSync Merger Internals + * @ingroup OSyncMergerPrivate + */ + +/*@{*/ + +/** + * @brief Represents a Merger object + */ +struct OSyncMerger { + /** The reference counter for this object */ + int ref_count; + /** The pointer to the capabilities object */ + OSyncCapabilities *capabilities; +}; + +/*@}*/ + +#endif /*OPENSYNC_MERGER_INTERNALS_H_*/ |
From: <dg...@su...> - 2009-01-02 17:32:48
|
Author: dgollub Date: Fri Jan 2 18:32:33 2009 New Revision: 4944 URL: http://www.opensync.org/changeset/4944 Log: Drop xmlformat-plugin from OpenSync core. xmlformat-plugin is now maintained in ./formats-plugins/xmlformat/trunk/ Deleted: trunk/formats/xmlformat-calendar.h trunk/formats/xmlformat-common.h trunk/formats/xmlformat-contact.h trunk/formats/xmlformat-event.h trunk/formats/xmlformat-note.h trunk/formats/xmlformat-todo.h trunk/formats/xmlformat.c trunk/formats/xmlformat.h trunk/formats/xmlformat_compare.c Modified: trunk/formats/CMakeLists.txt Modified: trunk/formats/CMakeLists.txt ============================================================================== --- trunk/formats/CMakeLists.txt Fri Jan 2 18:31:34 2009 (r4943) +++ trunk/formats/CMakeLists.txt Fri Jan 2 18:32:33 2009 (r4944) @@ -5,21 +5,16 @@ OPENSYNC_FORMAT_ADD( file file.c ) OPENSYNC_FORMAT_ADD( plain plain.c ) -OPENSYNC_FORMAT_ADD( xmlformat xmlformat.c xmlformat_compare.c ) OPENSYNC_FORMAT_ADD( xmlformat-doc xmlformat-doc.c ) -ADD_LIBRARY( xmlformat-compare STATIC xmlformat_compare.c ) - TARGET_LINK_LIBRARIES( file opensync ${GLIB2_LIBRARIES} ) TARGET_LINK_LIBRARIES( plain opensync ${GLIB2_LIBRARIES} ) -TARGET_LINK_LIBRARIES( xmlformat opensync ${GLIB2_LIBRARIES} ${LIBXML2_LIBRARIES} ) TARGET_LINK_LIBRARIES( xmlformat-doc opensync ${GLIB2_LIBRARIES} ) ###### INSTALL ############## OPENSYNC_FORMAT_INSTALL( file ) OPENSYNC_FORMAT_INSTALL( plain ) -OPENSYNC_FORMAT_INSTALL( xmlformat ) OPENSYNC_FORMAT_INSTALL( xmlformat-doc ) |
From: <dg...@su...> - 2009-01-02 17:31:56
|
Author: dgollub Date: Fri Jan 2 18:31:34 2009 New Revision: 4943 URL: http://www.opensync.org/changeset/4943 Log: XMLFormat-plugin specific tests got moved into out-of-tree xmlformat-plugin. Modified: trunk/tests/CMakeLists.txt trunk/tests/merger-tests/check_xmlformat.c Modified: trunk/tests/CMakeLists.txt ============================================================================== --- trunk/tests/CMakeLists.txt Fri Jan 2 18:30:58 2009 (r4942) +++ trunk/tests/CMakeLists.txt Fri Jan 2 18:31:34 2009 (r4943) @@ -43,5 +43,5 @@ ADD_CHECK_TEST( time format-tests/check_time.c ${TEST_TARGET_LIBRARIES} ) ADD_CHECK_TEST( version version-tests/check_version.c ${TEST_TARGET_LIBRARIES} ) ADD_CHECK_TEST( updater group-tests/check_updater.c ${TEST_TARGET_LIBRARIES} ) -ADD_CHECK_TEST( xmlformat merger-tests/check_xmlformat.c xmlformat-compare ${TEST_TARGET_LIBRARIES} ) +ADD_CHECK_TEST( xmlformat merger-tests/check_xmlformat.c ${TEST_TARGET_LIBRARIES} ) Modified: trunk/tests/merger-tests/check_xmlformat.c ============================================================================== --- trunk/tests/merger-tests/check_xmlformat.c Fri Jan 2 18:30:58 2009 (r4942) +++ trunk/tests/merger-tests/check_xmlformat.c Fri Jan 2 18:31:34 2009 (r4943) @@ -1,7 +1,6 @@ #include "support.h" #include <opensync/opensync-xmlformat.h> -#include "formats/xmlformat.h" #include "opensync/xmlformat/opensync-xmlformat_internals.h" #include "opensync/xmlformat/opensync_xmlformat_schema_private.h" /* FIXME: dierct access of private header */ @@ -124,208 +123,6 @@ } END_TEST -START_TEST (xmlformat_compare_test) -{ - char *testbed = setup_testbed("xmlformats"); - - OSyncConvCmpResult result1, result2; - - char *buffer; - unsigned int size; - OSyncError *error = NULL; - - - fail_unless(osync_file_read( "contact.xml", &buffer, &size, &error), NULL); - - OSyncXMLFormat *xmlformat = osync_xmlformat_parse(buffer, size, &error); - fail_unless(xmlformat != NULL, NULL); - fail_unless(error == NULL, NULL); - - OSyncXMLFormat *xmlformat2 = osync_xmlformat_parse(buffer, size, &error); - fail_unless(xmlformat2 != NULL, NULL); - fail_unless(error == NULL, NULL); - - g_free(buffer); - - char* keys_content[] = {"Content", NULL}; - char* keys_name[] = {"FirstName", "LastName", NULL}; - OSyncXMLPoints points[] = { - {"EMail", 10, keys_content}, - {"Name", 90, keys_name}, - {"Telephone", 10, keys_content}, - {NULL} - }; - - - result1 = xmlformat_compare((OSyncXMLFormat*)xmlformat, (OSyncXMLFormat*)xmlformat2, points, 0, 100); - - // Check for left-right / right-left compare issues - result2 = xmlformat_compare((OSyncXMLFormat*)xmlformat2, (OSyncXMLFormat*)xmlformat, points, 0, 100); - fail_unless(result1 == result2); - - osync_xmlformat_unref((OSyncXMLFormat*)xmlformat); - osync_xmlformat_unref((OSyncXMLFormat*)xmlformat2); - - - destroy_testbed(testbed); -} -END_TEST - -START_TEST (xmlformat_compare_field2null) -{ - char *testbed = setup_testbed("xmlformats"); - - char *buffer1; - char *buffer2; - unsigned int size1; - unsigned int size2; - OSyncError *error = NULL; - - - fail_unless(osync_file_read( "contact1.xml", &buffer1, &size1, &error), NULL); - - OSyncXMLFormat *xmlformat1 = osync_xmlformat_parse(buffer1, size1, &error); - fail_unless(xmlformat1 != NULL, NULL); - fail_unless(error == NULL, NULL); - - fail_unless(osync_file_read( "contact2.xml", &buffer2, &size2, &error), NULL); - - OSyncXMLFormat *xmlformat2 = osync_xmlformat_parse(buffer2, size2, &error); - fail_unless(xmlformat2 != NULL, NULL); - fail_unless(error == NULL, NULL); - - g_free(buffer1); - g_free(buffer2); - - char* keys_content[] = {"Content", NULL}; - char* keys_name[] = {"FirstName", "LastName", NULL}; - OSyncXMLPoints points[] = { - {"EMail", 10, keys_content}, - {"Name", 90, keys_name}, - {"Telephone", 10, keys_content}, - {NULL} - }; - - xmlformat_compare((OSyncXMLFormat*)xmlformat1, (OSyncXMLFormat*)xmlformat2, points, 0, 100); - - - osync_xmlformat_unref((OSyncXMLFormat*)xmlformat1); - osync_xmlformat_unref((OSyncXMLFormat*)xmlformat2); - - - destroy_testbed(testbed); -} -END_TEST - - -START_TEST (xmlformat_compare_ignore_fields) -{ - char *testbed = setup_testbed("xmlformats"); - - char *buffer1; - char *buffer2; - unsigned int size1; - unsigned int size2; - OSyncError *error = NULL; - OSyncConvCmpResult result; - - - fail_unless(osync_file_read( "contact3_unique.xml", &buffer1, &size1, &error), NULL); - - OSyncXMLFormat *xmlformat1 = osync_xmlformat_parse(buffer1, size1, &error); - fail_unless(xmlformat1 != NULL, NULL); - fail_unless(error == NULL, NULL); - - fail_unless(osync_file_read( "contact3.xml", &buffer2, &size2, &error), NULL); - - OSyncXMLFormat *xmlformat2 = osync_xmlformat_parse(buffer2, size2, &error); - fail_unless(xmlformat2 != NULL, NULL); - fail_unless(error == NULL, NULL); - - g_free(buffer1); - g_free(buffer2); - - char* keys_content[] = {"Content", NULL}; - char* keys_name[] = {"FirstName", "LastName", NULL}; - OSyncXMLPoints points[] = { - {"EMail", 10, keys_content}, - {"Name", 90, keys_name}, - {"Revision", -1, keys_content}, - {"Telephone", 10, keys_content}, - {"Uid", -1, keys_content}, - {NULL} - }; - - result = xmlformat_compare((OSyncXMLFormat*)xmlformat1, (OSyncXMLFormat*)xmlformat2, points, 0, 100); - fail_unless(result == OSYNC_CONV_DATA_SAME, NULL); - - result = xmlformat_compare((OSyncXMLFormat*)xmlformat2, (OSyncXMLFormat*)xmlformat1, points, 0, 100); - fail_unless(result == OSYNC_CONV_DATA_SAME, NULL); - - - osync_xmlformat_unref((OSyncXMLFormat*)xmlformat1); - osync_xmlformat_unref((OSyncXMLFormat*)xmlformat2); - - /* Testcase: ignored fields on both side shouldn't change the compare result. */ - - fail_unless(osync_file_read( "contact4_unique.xml", &buffer1, &size1, &error), NULL); - - xmlformat1 = osync_xmlformat_parse(buffer1, size1, &error); - fail_unless(xmlformat1 != NULL, NULL); - fail_unless(error == NULL, NULL); - - fail_unless(osync_file_read( "contact4.xml", &buffer2, &size2, &error), NULL); - - xmlformat2 = osync_xmlformat_parse(buffer2, size2, &error); - fail_unless(xmlformat2 != NULL, NULL); - fail_unless(error == NULL, NULL); - - g_free(buffer1); - g_free(buffer2); - - result = xmlformat_compare((OSyncXMLFormat*)xmlformat1, (OSyncXMLFormat*)xmlformat2, points, 0, 100); - fail_unless(result == OSYNC_CONV_DATA_SAME, NULL); - - result = xmlformat_compare((OSyncXMLFormat*)xmlformat2, (OSyncXMLFormat*)xmlformat1, points, 0, 100); - fail_unless(result == OSYNC_CONV_DATA_SAME, NULL); - - - osync_xmlformat_unref((OSyncXMLFormat*)xmlformat1); - osync_xmlformat_unref((OSyncXMLFormat*)xmlformat2); - - - destroy_testbed(testbed); -} -END_TEST - - -START_TEST (xmlformat_event_schema) -{ - char *testbed = setup_testbed("xmlformats"); - char *buffer; - unsigned int size; - OSyncError *error = NULL; - OSyncXMLFormatSchema *schema = NULL; - - fail_unless(osync_file_read("event.xml", &buffer, &size, &error), NULL); - fail_unless(error == NULL, NULL); - - OSyncXMLFormat *xmlformat = osync_xmlformat_parse(buffer, size, &error); - fail_unless(error == NULL, NULL); - - g_free(buffer); - schema = osync_xmlformat_schema_new(xmlformat, testbed, &error); - fail_if( schema == NULL ); - fail_unless( osync_xmlformat_schema_validate(schema, xmlformat, &error) ); - - osync_xmlformat_schema_unref(schema); - - osync_xmlformat_unref(xmlformat); - - destroy_testbed(testbed); -} -END_TEST - START_TEST (xmlfield_new) { char *testbed = setup_testbed("merger"); @@ -430,6 +227,33 @@ } END_TEST +START_TEST (xmlformat_event_schema) +{ + char *testbed = setup_testbed("xmlformats"); + char *buffer; + unsigned int size; + OSyncError *error = NULL; + OSyncXMLFormatSchema *schema = NULL; + + fail_unless(osync_file_read("event.xml", &buffer, &size, &error), NULL); + fail_unless(error == NULL, NULL); + + OSyncXMLFormat *xmlformat = osync_xmlformat_parse(buffer, size, &error); + fail_unless(error == NULL, NULL); + + g_free(buffer); + schema = osync_xmlformat_schema_new(xmlformat, testbed, &error); + fail_if( schema == NULL ); + fail_unless( osync_xmlformat_schema_validate(schema, xmlformat, &error) ); + + osync_xmlformat_schema_unref(schema); + + osync_xmlformat_unref(xmlformat); + + destroy_testbed(testbed); +} +END_TEST + Suite *xmlformat_suite(void) { Suite *s = suite_create("XMLFormat"); @@ -441,13 +265,10 @@ create_case(s, "xmlformat_sort", xmlformat_sort); create_case(s, "xmlformat_is_sorted", xmlformat_is_sorted); create_case(s, "xmlformat_search_field", xmlformat_search_field); - create_case(s, "xmlformat_compare_test", xmlformat_compare_test); - create_case(s, "xmlformat_compare_field2null", xmlformat_compare_field2null); - create_case(s, "xmlformat_compare_ignore_fields", xmlformat_compare_ignore_fields); - create_case(s, "xmlformat_event_schema", xmlformat_event_schema); // xmlformat schema create_case(s, "xmlformat_schema_get_instance", xmlformat_schema_get_instance); + create_case(s, "xmlformat_event_schema", xmlformat_event_schema); // xmlfield create_case(s, "xmlfield_new", xmlfield_new); |