From: miker Date: Mon, 25 Sep 2006 14:31:26 +0000 (+0000) Subject: making cstore "controller" aware X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=1206914a92c77ca7f93cddbd1d4c28ed7479d14a;p=Evergreen.git making cstore "controller" aware git-svn-id: svn://svn.open-ils.org/ILS/trunk@6210 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/c-apps/oils_cstore.c b/Open-ILS/src/c-apps/oils_cstore.c index 3773cc2239..83b1d7672d 100644 --- a/Open-ILS/src/c-apps/oils_cstore.c +++ b/Open-ILS/src/c-apps/oils_cstore.c @@ -13,8 +13,10 @@ #include #include -#define OILS_AUTH_CACHE_PRFX "oils_cstore_" -#define MODULENAME "open-ils.cstore" +#ifndef MODULENAME +# define MODULENAME "open-ils.cstore" +#endif + #define PERSIST_NS "http://open-ils.org/spec/opensrf/IDL/persistance/v1" #define OBJECT_NS "http://open-ils.org/spec/opensrf/IDL/objects/v1" #define BASE_NS "http://opensrf.org/spec/IDL/base/v1" @@ -63,21 +65,12 @@ jsonObject* jsonNULL = NULL; // osrfHash* idl; int osrfAppInitialize() { - - // first we register all the transaction and savepoint methods - osrfAppRegisterMethod( MODULENAME, "open-ils.cstore.transaction.begin", "beginTransaction", "", 0, 0 ); - osrfAppRegisterMethod( MODULENAME, "open-ils.cstore.transaction.commit", "commitTransaction", "", 0, 0 ); - osrfAppRegisterMethod( MODULENAME, "open-ils.cstore.transaction.rollback", "rollbackTransaction", "", 0, 0 ); - - osrfAppRegisterMethod( MODULENAME, "open-ils.cstore.savepoint.set", "setSavepoint", "", 1, 0 ); - osrfAppRegisterMethod( MODULENAME, "open-ils.cstore.savepoint.release", "releaseSavepoint", "", 1, 0 ); - osrfAppRegisterMethod( MODULENAME, "open-ils.cstore.savepoint.rollback", "rollbackSavepoint", "", 1, 0 ); - + growing_buffer* method_name; osrfLogInfo(OSRF_LOG_MARK, "Initializing the CStore Server..."); osrfLogInfo(OSRF_LOG_MARK, "Finding XML file..."); - char * idl_filename = osrf_settings_host_value("/apps/%s/app_settings/IDL", MODULENAME); + char* idl_filename = osrf_settings_host_value("/apps/%s/app_settings/IDL", MODULENAME); osrfLogInfo(OSRF_LOG_MARK, "Found file:"); osrfLogInfo(OSRF_LOG_MARK, idl_filename); @@ -88,6 +81,32 @@ int osrfAppInitialize() { exit(1); } + // first we register all the transaction and savepoint methods + method_name = buffer_init(64); + buffer_fadd(method_name, "%s.transaction.begin", MODULENAME); + osrfAppRegisterMethod( MODULENAME, buffer_data(method_name), "beginTransaction", "", 0, 0 ); + + buffer_reset(method_name) + buffer_fadd(method_name, "%s.transaction.commit", MODULENAME); + osrfAppRegisterMethod( MODULENAME, buffer_data(method_name), "commitTransaction", "", 0, 0 ); + + buffer_reset(method_name) + buffer_fadd(method_name, "%s.transaction.rollback", MODULENAME); + osrfAppRegisterMethod( MODULENAME, buffer_data(method_name), "rollbackTransaction", "", 0, 0 ); + + + buffer_reset(method_name) + buffer_fadd(method_name, "%s.savepoint.set", MODULENAME); + osrfAppRegisterMethod( MODULENAME, buffer_data(method_name), "setSavepoint", "", 1, 0 ); + + buffer_reset(method_name) + buffer_fadd(method_name, "%s.savepoint.release", MODULENAME); + osrfAppRegisterMethod( MODULENAME, buffer_data(method_name), "releaseSavepoint", "", 1, 0 ); + + buffer_reset(method_name) + buffer_fadd(method_name, "%s.savepoint.rollback", MODULENAME); + osrfAppRegisterMethod( MODULENAME, buffer_data(method_name), "rollbackSavepoint", "", 1, 0 ); + osrfStringArray* global_methods = osrfNewStringArray(6); osrfStringArrayAdd( global_methods, "create" ); @@ -108,6 +127,11 @@ int osrfAppInitialize() { osrfHash* idlClass = osrfHashGet(idl, classname); + if (!osrfStringArrayContains( osrfHashGet(idlClass, "controller"), MODULENAME )) { + osrfLogInfo(OSRF_LOG_MARK, "%s is not listed as a controller for %s, moving on", MODULENAME, classname); + continue; + } + char* virt = osrfHashGet(idlClass, "virtual"); if (virt && !strcmp( virt, "true")) { osrfLogDebug(OSRF_LOG_MARK, "Class %s is virtual, skipping", classname ); diff --git a/Open-ILS/src/c-apps/oils_idl-core.c b/Open-ILS/src/c-apps/oils_idl-core.c index 67996964d3..68837ff597 100644 --- a/Open-ILS/src/c-apps/oils_idl-core.c +++ b/Open-ILS/src/c-apps/oils_idl-core.c @@ -67,6 +67,25 @@ osrfHash* oilsIDLInit( char* idl_filename ) { ); } + osrfStringArray* controller = osrfNewStringArray(0); + string_tmp = NULL; + if( (string_tmp = (char*)xmlGetProp(kid, "controller") )) { + char* controller_list = strdup( string_tmp ); + osrfLogInfo(OSRF_LOG_MARK, "Controller list is %s", string_tmp ); + + if (strlen( controller_list ) > 0) { + char* st_tmp; + char* _controller_class = strtok_r(controller_list, " ", &st_tmp); + osrfStringArrayAdd(controller, strdup(_controller_class)); + + while ((_controller_class = strtok_r(NULL, " ", &st_tmp))) { + osrfStringArrayAdd(controller, strdup(_controller_class)); + } + } + } + osrfHashSet( usrData, controller, "controller"); + + osrfHash* _tmp; osrfHash* links = osrfNewHash(); osrfHash* fields = osrfNewHash();