Changeset 3458
- Timestamp:
- 07/17/08 12:45:02 (2 months ago)
- Files:
-
- trunk/opensync/engine/opensync_engine.c (modified) (7 diffs)
- trunk/opensync/engine/opensync_engine_internals.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/opensync/engine/opensync_engine.c
r3440 r3458 37 37 #include "opensync_engine_internals.h" 38 38 39 #ifdef OPENSYNC_UNITTESTS 40 #include "xmlformat/opensync-xmlformat_internals.h" 41 #endif 42 39 43 static void osync_engine_set_error(OSyncEngine *engine, OSyncError *error) 40 44 { … … 119 123 120 124 return ret; 125 } 126 127 gboolean foreach_schema(void *key, void *value, void *userdata) { 128 osync_xmlformat_schema_unref((OSyncXMLFormatSchema *)value); 129 return TRUE; 130 } 131 132 static void _osync_engine_finalize_internal_schemas(OSyncEngine *engine) 133 { 134 135 if ( engine->internalSchemas != NULL ) { 136 g_hash_table_foreach_remove(engine->internalSchemas, foreach_schema, NULL); 137 } 138 139 } 140 141 static void _osync_engine_set_internal_schema(OSyncEngine *engine, const char *objtype, OSyncError **error) 142 { 143 osync_trace(TRACE_INTERNAL, "Setting internal schema for objtype %s", objtype); 144 145 // init OSyncXMLFormatSchemas 146 OSyncXMLFormat *xmlformat = osync_xmlformat_new(objtype, NULL); 147 #ifdef OPENSYNC_UNITTESTS 148 OSyncXMLFormatSchema *schema = osync_xmlformat_schema_get_instance_with_path(xmlformat, engine->schema_dir, error); 149 #else 150 OSyncXMLFormatSchema *schema = osync_xmlformat_schema_get_instance(xmlformat, error); 151 #endif 152 osync_xmlformat_unref(xmlformat); 153 g_hash_table_insert(engine->internalSchemas, g_strdup(objtype), schema); 121 154 } 122 155 … … 367 400 368 401 engine->internalFormats = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); 402 engine->internalSchemas = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); 369 403 370 404 engine->context = g_main_context_new(); … … 501 535 if (engine->error) 502 536 osync_error_unref(&(engine->error)); 537 538 if (engine->internalSchemas) 539 g_hash_table_destroy(engine->internalSchemas); 503 540 504 541 g_free(engine); … … 1074 1111 _osync_engine_set_internal_format(engine, "todo", osync_format_env_find_objformat(engine->formatenv, "xmlformat-todo")); 1075 1112 _osync_engine_set_internal_format(engine, "note", osync_format_env_find_objformat(engine->formatenv, "xmlformat-note")); 1113 /* init schemas */ 1114 _osync_engine_set_internal_schema(engine, "contact", error); 1115 _osync_engine_set_internal_schema(engine, "event", error); 1116 _osync_engine_set_internal_schema(engine, "todo", error); 1117 _osync_engine_set_internal_schema(engine, "note", error); 1076 1118 1077 1119 osync_trace(TRACE_INTERNAL, "Running the main loop"); … … 1159 1201 engine->pluginenv = NULL; 1160 1202 } 1203 1204 /* free internal schemas */ 1205 _osync_engine_finalize_internal_schemas(engine); 1161 1206 1162 1207 if (!engine->error) … … 1817 1862 } 1818 1863 1864 #ifdef OPENSYNC_UNITTESTS 1865 /** @brief Set the schemadir for schema validation to a custom directory. 1866 * This is actually only inteded for UNITTESTS to run tests without 1867 * having OpenSync installed. 1868 * 1869 * @param engine Pointer to engine 1870 * @param schemadir Custom schemadir path 1871 * 1872 */ 1873 void osync_engine_set_schemadir(OSyncEngine *engine, const char *schema_dir) 1874 { 1875 osync_assert(engine); 1876 osync_assert(schema_dir); 1877 1878 if (engine->schema_dir) 1879 g_free(engine->schema_dir); 1880 1881 engine->schema_dir = g_strdup(schema_dir); 1882 } 1883 #endif /* OPENSYNC_UNITTESTS */ 1884 trunk/opensync/engine/opensync_engine_internals.h
r2559 r3458 46 46 char *plugin_dir; 47 47 char *format_dir; 48 48 #ifdef OPENSYNC_UNITTESTS 49 char *schema_dir; 50 #endif /* OPENSYNC_UNITTESTS */ 49 51 OSyncFormatEnv *formatenv; 50 52 OSyncPluginEnv *pluginenv; … … 112 114 113 115 GHashTable *internalFormats; 116 GHashTable *internalSchemas; 114 117 }; 115 118 119 #ifdef OPENSYNC_UNITTESTS 120 void osync_engine_set_schemadir(OSyncEngine *engine, const char *schema_dir); 121 #endif /* OPENSYNC_UNITTESTS */ 122 116 123 #endif /*OPENSYNC_ENGINE_INTERNALS_H_*/
