Changeset 3458

Show
Ignore:
Timestamp:
07/17/08 12:45:02 (2 months ago)
Author:
bricks
Message:

Initialise schema list in osync engine.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/opensync/engine/opensync_engine.c

    r3440 r3458  
    3737#include "opensync_engine_internals.h" 
    3838 
     39#ifdef OPENSYNC_UNITTESTS 
     40#include "xmlformat/opensync-xmlformat_internals.h" 
     41#endif 
     42 
    3943static void osync_engine_set_error(OSyncEngine *engine, OSyncError *error) 
    4044{ 
     
    119123 
    120124        return ret; 
     125} 
     126 
     127gboolean foreach_schema(void *key, void *value, void *userdata) { 
     128        osync_xmlformat_schema_unref((OSyncXMLFormatSchema *)value); 
     129        return TRUE; 
     130} 
     131 
     132static 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 
     141static 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); 
    121154} 
    122155 
     
    367400         
    368401        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); 
    369403         
    370404        engine->context = g_main_context_new(); 
     
    501535                if (engine->error) 
    502536                        osync_error_unref(&(engine->error)); 
     537 
     538                if (engine->internalSchemas) 
     539                        g_hash_table_destroy(engine->internalSchemas); 
    503540                 
    504541                g_free(engine); 
     
    10741111        _osync_engine_set_internal_format(engine, "todo", osync_format_env_find_objformat(engine->formatenv, "xmlformat-todo")); 
    10751112        _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); 
    10761118         
    10771119        osync_trace(TRACE_INTERNAL, "Running the main loop"); 
     
    11591201                engine->pluginenv = NULL; 
    11601202        } 
     1203         
     1204        /* free internal schemas */ 
     1205        _osync_engine_finalize_internal_schemas(engine); 
    11611206 
    11621207        if (!engine->error) 
     
    18171862} 
    18181863 
     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 */ 
     1873void 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  
    4646        char *plugin_dir; 
    4747        char *format_dir; 
    48          
     48#ifdef OPENSYNC_UNITTESTS 
     49        char *schema_dir; 
     50#endif /* OPENSYNC_UNITTESTS */  
    4951        OSyncFormatEnv *formatenv; 
    5052        OSyncPluginEnv *pluginenv; 
     
    112114         
    113115        GHashTable *internalFormats; 
     116        GHashTable *internalSchemas; 
    114117}; 
    115118 
     119#ifdef OPENSYNC_UNITTESTS 
     120void osync_engine_set_schemadir(OSyncEngine *engine, const char *schema_dir); 
     121#endif /* OPENSYNC_UNITTESTS */ 
     122 
    116123#endif /*OPENSYNC_ENGINE_INTERNALS_H_*/