Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 7FF40200BAC for ; Wed, 26 Oct 2016 14:15:36 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 7EA55160ACA; Wed, 26 Oct 2016 12:15:36 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id CC534160B05 for ; Wed, 26 Oct 2016 14:15:34 +0200 (CEST) Received: (qmail 34164 invoked by uid 500); 26 Oct 2016 12:15:29 -0000 Mailing-List: contact commits-help@celix.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@celix.apache.org Delivered-To: mailing list commits@celix.apache.org Received: (qmail 32910 invoked by uid 99); 26 Oct 2016 12:15:25 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 26 Oct 2016 12:15:25 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id A314DE7E00; Wed, 26 Oct 2016 12:15:25 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: pnoltes@apache.org To: commits@celix.apache.org Date: Wed, 26 Oct 2016 12:15:58 -0000 Message-Id: <8e2da5798702474d8836f376fbadade6@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [35/50] [abbrv] celix git commit: CELIX-376: Use of serviceId as hashMap index instead of registration pointer archived-at: Wed, 26 Oct 2016 12:15:36 -0000 CELIX-376: Use of serviceId as hashMap index instead of registration pointer Project: http://git-wip-us.apache.org/repos/asf/celix/repo Commit: http://git-wip-us.apache.org/repos/asf/celix/commit/652741c9 Tree: http://git-wip-us.apache.org/repos/asf/celix/tree/652741c9 Diff: http://git-wip-us.apache.org/repos/asf/celix/diff/652741c9 Branch: refs/heads/master Commit: 652741c911a7f47886da35b8be263e4cf217490f Parents: 73ffc04 Author: gricciardi Authored: Fri Oct 14 17:17:41 2016 +0200 Committer: gricciardi Committed: Fri Oct 14 17:17:41 2016 +0200 ---------------------------------------------------------------------- dependency_manager/private/include/dm_event.h | 2 +- dependency_manager/private/src/dm_event.c | 2 +- .../include/service_registration_private.h | 6 +- .../private/include/service_registry_private.h | 4 +- .../private/mock/service_registration_mock.c | 8 +-- framework/private/src/service_registration.c | 10 +-- framework/private/src/service_registry.c | 18 ++--- framework/private/src/utils.c | 2 +- .../private/test/service_registration_test.cpp | 9 +-- .../private/test/service_registry_test.cpp | 75 ++++++++++++++------ framework/public/include/utils.h | 2 +- .../private/src/endpoint_descriptor_reader.c | 2 +- .../private/src/endpoint_description.c | 10 +-- .../public/include/endpoint_description.h | 2 +- .../rsa/private/src/remote_service_admin_dfi.c | 4 +- .../private/src/remote_service_admin_impl.c | 2 +- 16 files changed, 94 insertions(+), 64 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/celix/blob/652741c9/dependency_manager/private/include/dm_event.h ---------------------------------------------------------------------- diff --git a/dependency_manager/private/include/dm_event.h b/dependency_manager/private/include/dm_event.h index 8ba1be7..1cccd47 100644 --- a/dependency_manager/private/include/dm_event.h +++ b/dependency_manager/private/include/dm_event.h @@ -46,7 +46,7 @@ typedef enum dm_event_type dm_event_type_e; struct dm_event { const void* service; - long serviceId; + unsigned long serviceId; long ranking; service_reference_pt reference; bundle_context_pt context; http://git-wip-us.apache.org/repos/asf/celix/blob/652741c9/dependency_manager/private/src/dm_event.c ---------------------------------------------------------------------- diff --git a/dependency_manager/private/src/dm_event.c b/dependency_manager/private/src/dm_event.c index e30720d..9341832 100644 --- a/dependency_manager/private/src/dm_event.c +++ b/dependency_manager/private/src/dm_event.c @@ -41,7 +41,7 @@ celix_status_t event_create(dm_event_type_e event_type, bundle_pt bundle, bundle const char* serviceIdStr = NULL; serviceReference_getProperty(reference, OSGI_FRAMEWORK_SERVICE_ID, &serviceIdStr); - long servId = atol(serviceIdStr); + unsigned long servId = strtoul(serviceIdStr,NULL,10); //FIXME service ranking can dynamicly change, but service reference can be removed at any time. const char* rankingStr = NULL; http://git-wip-us.apache.org/repos/asf/celix/blob/652741c9/framework/private/include/service_registration_private.h ---------------------------------------------------------------------- diff --git a/framework/private/include/service_registration_private.h b/framework/private/include/service_registration_private.h index d6967fb..ca0cb67 100644 --- a/framework/private/include/service_registration_private.h +++ b/framework/private/include/service_registration_private.h @@ -38,7 +38,7 @@ struct serviceRegistration { bundle_pt bundle; properties_pt properties; const void * svcObj; - long serviceId; + unsigned long serviceId; bool isUnregistering; @@ -53,8 +53,8 @@ struct serviceRegistration { celix_thread_rwlock_t lock; }; -service_registration_pt serviceRegistration_create(registry_callback_t callback, bundle_pt bundle, const char* serviceName, long serviceId, const void * serviceObject, properties_pt dictionary); -service_registration_pt serviceRegistration_createServiceFactory(registry_callback_t callback, bundle_pt bundle, const char* serviceName, long serviceId, const void * serviceObject, properties_pt dictionary); +service_registration_pt serviceRegistration_create(registry_callback_t callback, bundle_pt bundle, const char* serviceName, unsigned long serviceId, const void * serviceObject, properties_pt dictionary); +service_registration_pt serviceRegistration_createServiceFactory(registry_callback_t callback, bundle_pt bundle, const char* serviceName, unsigned long serviceId, const void * serviceObject, properties_pt dictionary); void serviceRegistration_retain(service_registration_pt registration); void serviceRegistration_release(service_registration_pt registration); http://git-wip-us.apache.org/repos/asf/celix/blob/652741c9/framework/private/include/service_registry_private.h ---------------------------------------------------------------------- diff --git a/framework/private/include/service_registry_private.h b/framework/private/include/service_registry_private.h index 8726ff7..d68fe11 100644 --- a/framework/private/include/service_registry_private.h +++ b/framework/private/include/service_registry_private.h @@ -36,13 +36,13 @@ struct serviceRegistry { registry_callback_t callback; hash_map_pt serviceRegistrations; //key = bundle (reg owner), value = list ( registration ) - hash_map_pt serviceReferences; //key = bundle, value = map (key = registration, value = reference) + hash_map_pt serviceReferences; //key = bundle, value = map (key = serviceId, value = reference) bool checkDeletedReferences; //If enabled. check if provided service references are still valid hash_map_pt deletedServiceReferences; //key = ref pointer, value = bool serviceChanged_function_pt serviceChanged; - long currentServiceId; + unsigned long currentServiceId; array_list_pt listenerHooks; http://git-wip-us.apache.org/repos/asf/celix/blob/652741c9/framework/private/mock/service_registration_mock.c ---------------------------------------------------------------------- diff --git a/framework/private/mock/service_registration_mock.c b/framework/private/mock/service_registration_mock.c index d4accbf..934e11b 100644 --- a/framework/private/mock/service_registration_mock.c +++ b/framework/private/mock/service_registration_mock.c @@ -28,23 +28,23 @@ #include "service_registration.h" #include "service_registration_private.h" -service_registration_pt serviceRegistration_create(registry_callback_t callback, bundle_pt bundle, const char* serviceName, long serviceId, const void* serviceObject, properties_pt dictionary) { +service_registration_pt serviceRegistration_create(registry_callback_t callback, bundle_pt bundle, const char* serviceName, unsigned long serviceId, const void* serviceObject, properties_pt dictionary) { mock_c()->actualCall("serviceRegistration_create") ->withParameterOfType("registry_callback_t", "callback", &callback) ->withPointerParameters("bundle", bundle) ->withStringParameters("serviceName", serviceName) - ->withIntParameters("serviceId", serviceId) + ->withUnsignedLongIntParameters("serviceId", serviceId) ->withPointerParameters("serviceObject", (void*)serviceObject) ->withPointerParameters("dictionary", dictionary); return mock_c()->returnValue().value.pointerValue; } -service_registration_pt serviceRegistration_createServiceFactory(registry_callback_t callback, bundle_pt bundle, const char* serviceName, long serviceId, const void* serviceObject, properties_pt dictionary) { +service_registration_pt serviceRegistration_createServiceFactory(registry_callback_t callback, bundle_pt bundle, const char* serviceName, unsigned long serviceId, const void* serviceObject, properties_pt dictionary) { mock_c()->actualCall("serviceRegistration_createServiceFactory") ->withParameterOfType("registry_callback_t", "callback", &callback) ->withPointerParameters("bundle", bundle) ->withStringParameters("serviceName", serviceName) - ->withIntParameters("serviceId", serviceId) + ->withUnsignedLongIntParameters("serviceId", serviceId) ->withPointerParameters("serviceObject", (void*) serviceObject) ->withPointerParameters("dictionary", dictionary); return mock_c()->returnValue().value.pointerValue; http://git-wip-us.apache.org/repos/asf/celix/blob/652741c9/framework/private/src/service_registration.c ---------------------------------------------------------------------- diff --git a/framework/private/src/service_registration.c b/framework/private/src/service_registration.c index f805860..e2932f9 100644 --- a/framework/private/src/service_registration.c +++ b/framework/private/src/service_registration.c @@ -32,23 +32,23 @@ #include "constants.h" static celix_status_t serviceRegistration_initializeProperties(service_registration_pt registration, properties_pt properties); -static celix_status_t serviceRegistration_createInternal(registry_callback_t callback, bundle_pt bundle, const char* serviceName, long serviceId, +static celix_status_t serviceRegistration_createInternal(registry_callback_t callback, bundle_pt bundle, const char* serviceName, unsigned long serviceId, const void * serviceObject, properties_pt dictionary, bool isFactory, service_registration_pt *registration); static celix_status_t serviceRegistration_destroy(service_registration_pt registration); -service_registration_pt serviceRegistration_create(registry_callback_t callback, bundle_pt bundle, const char* serviceName, long serviceId, const void * serviceObject, properties_pt dictionary) { +service_registration_pt serviceRegistration_create(registry_callback_t callback, bundle_pt bundle, const char* serviceName, unsigned long serviceId, const void * serviceObject, properties_pt dictionary) { service_registration_pt registration = NULL; serviceRegistration_createInternal(callback, bundle, serviceName, serviceId, serviceObject, dictionary, false, ®istration); return registration; } -service_registration_pt serviceRegistration_createServiceFactory(registry_callback_t callback, bundle_pt bundle, const char* serviceName, long serviceId, const void * serviceObject, properties_pt dictionary) { +service_registration_pt serviceRegistration_createServiceFactory(registry_callback_t callback, bundle_pt bundle, const char* serviceName, unsigned long serviceId, const void * serviceObject, properties_pt dictionary) { service_registration_pt registration = NULL; serviceRegistration_createInternal(callback, bundle, serviceName, serviceId, serviceObject, dictionary, true, ®istration); return registration; } -static celix_status_t serviceRegistration_createInternal(registry_callback_t callback, bundle_pt bundle, const char* serviceName, long serviceId, +static celix_status_t serviceRegistration_createInternal(registry_callback_t callback, bundle_pt bundle, const char* serviceName, unsigned long serviceId, const void * serviceObject, properties_pt dictionary, bool isFactory, service_registration_pt *out) { celix_status_t status = CELIX_SUCCESS; @@ -128,7 +128,7 @@ static celix_status_t serviceRegistration_initializeProperties(service_registrat } - snprintf(sId, 32, "%ld", registration->serviceId); + snprintf(sId, 32, "%lu", registration->serviceId); properties_set(dictionary, (char *) OSGI_FRAMEWORK_SERVICE_ID, sId); if (properties_get(dictionary, (char *) OSGI_FRAMEWORK_OBJECTCLASS) == NULL) { http://git-wip-us.apache.org/repos/asf/celix/blob/652741c9/framework/private/src/service_registry.c ---------------------------------------------------------------------- diff --git a/framework/private/src/service_registry.c b/framework/private/src/service_registry.c index 49f0638..139ee70 100644 --- a/framework/private/src/service_registry.c +++ b/framework/private/src/service_registry.c @@ -71,7 +71,7 @@ celix_status_t serviceRegistry_create(framework_pt framework, serviceChanged_fun reg->serviceChanged = serviceChanged; reg->serviceRegistrations = hashMap_create(NULL, NULL, NULL, NULL); reg->framework = framework; - reg->currentServiceId = 1l; + reg->currentServiceId = 1UL; reg->serviceReferences = hashMap_create(NULL, NULL, NULL, NULL); reg->checkDeletedReferences = CHECK_DELETED_REFERENCES; @@ -218,7 +218,7 @@ celix_status_t serviceRegistry_unregisterService(service_registry_pt registry, b while (hashMapIterator_hasNext(iter)) { hash_map_pt refsMap = hashMapIterator_nextValue(iter); service_reference_pt ref = refsMap != NULL ? - hashMap_get(refsMap, registration) : NULL; + hashMap_get(refsMap, (void*)registration->serviceId) : NULL; if (ref != NULL) { serviceReference_invalidate(ref); } @@ -302,7 +302,7 @@ static celix_status_t serviceRegistry_getServiceReference_internal(service_regis hashMap_put(registry->serviceReferences, owner, references); } - ref = hashMap_get(references, registration); + ref = hashMap_get(references, (void*)registration->serviceId); if (ref == NULL) { status = serviceRegistration_getBundle(registration, &bundle); @@ -310,7 +310,7 @@ static celix_status_t serviceRegistry_getServiceReference_internal(service_regis status = serviceReference_create(registry->callback, owner, registration, &ref); } if (status == CELIX_SUCCESS) { - hashMap_put(references, registration, ref); + hashMap_put(references, (void*)registration->serviceId, ref); hashMap_put(registry->deletedServiceReferences, ref, (void *)false); } } else { @@ -453,25 +453,25 @@ celix_status_t serviceRegistry_ungetServiceReference(service_registry_pt registr hash_map_pt refsMap = hashMap_get(registry->serviceReferences, bundle); - service_registration_pt reg = NULL; + unsigned long reg = 0UL; service_reference_pt ref = NULL; hash_map_iterator_pt iter = hashMapIterator_create(refsMap); while (hashMapIterator_hasNext(iter)) { hash_map_entry_pt entry = hashMapIterator_nextEntry(iter); - reg = hashMapEntry_getKey(entry); //note could be invalid e.g. freed + reg = (unsigned long)hashMapEntry_getKey(entry); //note could be invalid e.g. freed ref = hashMapEntry_getValue(entry); if (ref == reference) { break; } else { ref = NULL; - reg = NULL; + reg = 0UL; } } hashMapIterator_destroy(iter); if (ref != NULL) { - hashMap_remove(refsMap, reg); + hashMap_remove(refsMap, (void*)reg); int size = hashMap_size(refsMap); if (size == 0) { hashMap_destroy(refsMap, false, false); @@ -771,7 +771,7 @@ static celix_status_t serviceRegistry_getUsingBundles(service_registry_pt regist hash_map_entry_pt entry = hashMapIterator_nextEntry(iter); bundle_pt registrationUser = hashMapEntry_getKey(entry); hash_map_pt regMap = hashMapEntry_getValue(entry); - if (hashMap_containsKey(regMap, registration)) { + if (hashMap_containsKey(regMap, (void*)registration->serviceId)) { arrayList_add(bundles, registrationUser); } } http://git-wip-us.apache.org/repos/asf/celix/blob/652741c9/framework/private/src/utils.c ---------------------------------------------------------------------- diff --git a/framework/private/src/utils.c b/framework/private/src/utils.c index 1386046..9fc5335 100644 --- a/framework/private/src/utils.c +++ b/framework/private/src/utils.c @@ -127,7 +127,7 @@ celix_status_t utils_isNumeric(const char *number, bool *ret) { } -FRAMEWORK_EXPORT int utils_compareServiceIdsAndRanking(long servId, long servRank, long otherServId, long otherServRank) { +FRAMEWORK_EXPORT int utils_compareServiceIdsAndRanking(unsigned long servId, long servRank, unsigned long otherServId, long otherServRank) { int result; if (servId == otherServId) { http://git-wip-us.apache.org/repos/asf/celix/blob/652741c9/framework/private/test/service_registration_test.cpp ---------------------------------------------------------------------- diff --git a/framework/private/test/service_registration_test.cpp b/framework/private/test/service_registration_test.cpp index 9e670de..4f37c2f 100644 --- a/framework/private/test/service_registration_test.cpp +++ b/framework/private/test/service_registration_test.cpp @@ -100,7 +100,7 @@ TEST(service_registration, create) { callback.handle = registry; char * name = my_strdup("sevice_name"); bundle_pt bundle = (bundle_pt) 0x20; - long serviceId = 1l; + unsigned long serviceId = 1UL; void *service = (void *) 0x30; service_registration_pt registration = serviceRegistration_create(callback, bundle, name, serviceId, service, NULL); @@ -108,7 +108,8 @@ TEST(service_registration, create) { STRCMP_EQUAL(name, registration->className); POINTERS_EQUAL(bundle, registration->bundle); POINTERS_EQUAL(service, registration->svcObj); - LONGS_EQUAL(serviceId, registration->serviceId); + UNSIGNED_LONGS_EQUAL(serviceId, registration->serviceId); + LONGS_EQUAL(0, registration->isUnregistering); LONGS_EQUAL(0, registration->isServiceFactory); POINTERS_EQUAL(NULL, registration->serviceFactory); @@ -132,7 +133,7 @@ TEST(service_registration, createServiceFactory) { callback.handle = registry; char * name = my_strdup("sevice_name"); bundle_pt bundle = (bundle_pt) 0x20; - long serviceId = 1l; + unsigned long serviceId = 1UL; void *service = (void *) 0x30; service_registration_pt registration = serviceRegistration_createServiceFactory(callback, bundle, name, serviceId, service, NULL); @@ -140,7 +141,7 @@ TEST(service_registration, createServiceFactory) { STRCMP_EQUAL(name, registration->className); POINTERS_EQUAL(bundle, registration->bundle); POINTERS_EQUAL(service, registration->svcObj); - LONGS_EQUAL(serviceId, registration->serviceId); + UNSIGNED_LONGS_EQUAL(serviceId, registration->serviceId); LONGS_EQUAL(0, registration->isUnregistering); LONGS_EQUAL(1, registration->isServiceFactory); POINTERS_EQUAL(service, registration->serviceFactory); http://git-wip-us.apache.org/repos/asf/celix/blob/652741c9/framework/private/test/service_registry_test.cpp ---------------------------------------------------------------------- diff --git a/framework/private/test/service_registry_test.cpp b/framework/private/test/service_registry_test.cpp index 8bf8b0a..05229a9 100644 --- a/framework/private/test/service_registry_test.cpp +++ b/framework/private/test/service_registry_test.cpp @@ -38,6 +38,7 @@ extern "C" { #include "listener_hook_service.h" #include "service_registry.h" #include "service_registry_private.h" +#include "service_registration_private.h" #include "celix_log.h" framework_logger_pt logger = (framework_logger_pt) 0x42; @@ -112,7 +113,7 @@ TEST(service_registry, create) { POINTERS_EQUAL(framework, registry->framework); POINTERS_EQUAL(serviceRegistryTest_serviceChanged, registry->serviceChanged); - LONGS_EQUAL(1l, registry->currentServiceId); + UNSIGNED_LONGS_EQUAL(1UL, registry->currentServiceId); CHECK(registry->listenerHooks != NULL); CHECK(registry->serviceReferences != NULL); CHECK(registry->serviceRegistrations != NULL); @@ -126,14 +127,15 @@ TEST(service_registry, getRegisteredServices) { serviceRegistry_create(framework,serviceRegistryTest_serviceChanged, ®istry); array_list_pt registrations = NULL; arrayList_create(®istrations); - service_registration_pt reg = (service_registration_pt) 0x10; + service_registration_pt reg = (service_registration_pt) calloc(1,sizeof(struct serviceRegistration)); + reg->serviceId = 10UL; arrayList_add(registrations, reg); bundle_pt bundle = (bundle_pt) 0x20; hashMap_put(registry->serviceRegistrations, bundle, registrations); hash_map_pt usages = hashMap_create(NULL, NULL, NULL, NULL); service_reference_pt ref = (service_reference_pt) 0x30; - hashMap_put(usages, reg, ref); + hashMap_put(usages, (void*)reg->serviceId, ref); hashMap_put(registry->serviceReferences, bundle, usages); mock() @@ -153,6 +155,7 @@ TEST(service_registry, getRegisteredServices) { arrayList_destroy(registrations); hashMap_remove(registry->serviceRegistrations, bundle); serviceRegistry_destroy(registry); + free(reg); hashMap_destroy(usages, false, false); } @@ -297,7 +300,8 @@ TEST(service_registry, unregisterService) { framework_pt framework = (framework_pt) 0x01; serviceRegistry_create(framework,serviceRegistryTest_serviceChanged, ®istry); bundle_pt bundle = (bundle_pt) 0x10; - service_registration_pt registration = (service_registration_pt) 0x20; + service_registration_pt registration = (service_registration_pt) calloc(1,sizeof(struct serviceRegistration)); + registration->serviceId = 20UL; array_list_pt registrations = NULL; arrayList_create(®istrations); @@ -306,7 +310,7 @@ TEST(service_registry, unregisterService) { service_reference_pt reference = (service_reference_pt) 0x30; hash_map_pt references = hashMap_create(NULL, NULL, NULL, NULL); - hashMap_put(references, registration, reference); + hashMap_put(references, (void*)registration->serviceId, reference); hashMap_put(registry->serviceReferences, bundle, references); properties_pt properties = (properties_pt) 0x40; @@ -343,6 +347,7 @@ TEST(service_registry, unregisterService) { serviceRegistry_unregisterService(registry, bundle, registration); hashMap_destroy(references, false,false); + free(registration); serviceRegistry_destroy(registry); } @@ -408,11 +413,12 @@ TEST(service_registry, getServiceReference){ serviceRegistry_create(framework,serviceRegistryTest_serviceChanged, ®istry); bundle_pt bundle = (bundle_pt) 0x10; - service_registration_pt registration = (service_registration_pt) 0x20; + service_registration_pt registration = (service_registration_pt) calloc(1,sizeof(struct serviceRegistration)); + registration->serviceId = 20UL; service_reference_pt reference = (service_reference_pt) 0x50; hash_map_pt references = hashMap_create(NULL, NULL, NULL, NULL); - hashMap_put(references, registration, reference); + hashMap_put(references, (void*)registration->serviceId, reference); hashMap_put(registry->serviceReferences, bundle, references); mock().expectOneCall("serviceReference_retain") @@ -424,6 +430,7 @@ TEST(service_registry, getServiceReference){ POINTERS_EQUAL(reference, get_reference); hashMap_destroy(references, false, false); + free(registration); serviceRegistry_destroy(registry); } @@ -433,7 +440,8 @@ TEST(service_registry, getServiceReference_unknownRef){ serviceRegistry_create(framework,serviceRegistryTest_serviceChanged, ®istry); bundle_pt bundle = (bundle_pt) 0x10; - service_registration_pt registration = (service_registration_pt) 0x20; + service_registration_pt registration = (service_registration_pt) calloc(1,sizeof(struct serviceRegistration)); + registration->serviceId = 20UL; service_reference_pt reference = (service_reference_pt) 0x50; //test getting ref from bundle without refs @@ -456,6 +464,7 @@ TEST(service_registry, getServiceReference_unknownRef){ //cleanup hash_map_pt del = (hash_map_pt) hashMap_remove(registry->serviceReferences, bundle); hashMap_destroy(del, false, false); + free(registration); serviceRegistry_destroy(registry); } @@ -465,7 +474,9 @@ TEST(service_registry, getServiceReferences) { serviceRegistry_create(framework,serviceRegistryTest_serviceChanged, ®istry); bundle_pt bundle = (bundle_pt) 0x10; - service_registration_pt registration = (service_registration_pt) 0x20; + service_registration_pt registration = (service_registration_pt) calloc(1,sizeof(struct serviceRegistration)); + registration->serviceId = 20UL; + array_list_pt registrations = NULL; arrayList_create(®istrations); arrayList_add(registrations, registration); @@ -476,7 +487,7 @@ TEST(service_registry, getServiceReferences) { hash_map_pt references = hashMap_create(NULL, NULL, NULL, NULL); service_reference_pt reference = (service_reference_pt) 0x50; - hashMap_put(references, registration, reference); + hashMap_put(references, (void*)registration->serviceId, reference); hashMap_put(registry->serviceReferences, bundle, references); mock() @@ -522,6 +533,7 @@ TEST(service_registry, getServiceReferences) { arrayList_destroy(actual); arrayList_destroy(registrations); hashMap_remove(registry->serviceRegistrations, bundle); + free(registration); serviceRegistry_destroy(registry); } @@ -531,7 +543,9 @@ TEST(service_registry, getServiceReferences_noFilterOrName) { serviceRegistry_create(framework,serviceRegistryTest_serviceChanged, ®istry); bundle_pt bundle = (bundle_pt) 0x10; - service_registration_pt registration = (service_registration_pt) 0x20; + service_registration_pt registration = (service_registration_pt) calloc(1,sizeof(struct serviceRegistration)); + registration->serviceId = 20UL; + array_list_pt registrations = NULL; arrayList_create(®istrations); arrayList_add(registrations, registration); @@ -541,7 +555,7 @@ TEST(service_registry, getServiceReferences_noFilterOrName) { hash_map_pt references = hashMap_create(NULL, NULL, NULL, NULL); service_reference_pt reference = (service_reference_pt) 0x50; - hashMap_put(references, registration, reference); + hashMap_put(references, (void*)registration->serviceId, reference); hashMap_put(registry->serviceReferences, bundle, references); mock() @@ -576,6 +590,7 @@ TEST(service_registry, getServiceReferences_noFilterOrName) { arrayList_destroy(actual); arrayList_destroy(registrations); hashMap_remove(registry->serviceRegistrations, bundle); + free(registration); serviceRegistry_destroy(registry); } @@ -937,12 +952,13 @@ TEST(service_registry, getListenerHooks) { framework_pt framework = (framework_pt) 0x01; serviceRegistry_create(framework,serviceRegistryTest_serviceChanged, ®istry); bundle_pt bundle = (bundle_pt) 0x10; - service_registration_pt registration = (service_registration_pt) 0x20; + service_registration_pt registration = (service_registration_pt) calloc(1,sizeof(struct serviceRegistration)); + registration->serviceId = 20UL; arrayList_add(registry->listenerHooks, registration); hash_map_pt usages = hashMap_create(NULL, NULL, NULL, NULL); service_reference_pt reference = (service_reference_pt) 0x30; - hashMap_put(usages, registration, reference); + hashMap_put(usages, (void*)registration->serviceId, reference); hashMap_put(registry->serviceReferences, bundle, usages); mock() @@ -963,6 +979,7 @@ TEST(service_registry, getListenerHooks) { hashMap_destroy(usages, false, false); arrayList_destroy(hooks); arrayList_remove(registry->listenerHooks, 0); + free(registration); serviceRegistry_destroy(registry); } @@ -989,10 +1006,16 @@ TEST(service_registry, getUsingBundles) { framework_pt framework = (framework_pt) 0x01; serviceRegistry_create(framework,serviceRegistryTest_serviceChanged, ®istry); - service_registration_pt registration = (service_registration_pt) 0x10; - service_registration_pt registration2 = (service_registration_pt) 0x20; - service_registration_pt registration3 = (service_registration_pt) 0x30; - service_registration_pt registration4 = (service_registration_pt) 0x40; + service_registration_pt registration = (service_registration_pt) calloc(1,sizeof(struct serviceRegistration)); + service_registration_pt registration2 = (service_registration_pt) calloc(1,sizeof(struct serviceRegistration)); + service_registration_pt registration3 = (service_registration_pt) calloc(1,sizeof(struct serviceRegistration)); + service_registration_pt registration4 = (service_registration_pt) calloc(1,sizeof(struct serviceRegistration)); + + registration->serviceId = 10UL; + registration2->serviceId = 20UL; + registration3->serviceId = 30UL; + registration4->serviceId = 40UL; + service_reference_pt reference = (service_reference_pt) 0x50; service_reference_pt reference2 = (service_reference_pt) 0x60; service_reference_pt reference3 = (service_reference_pt) 0x70; @@ -1005,19 +1028,19 @@ TEST(service_registry, getUsingBundles) { //only contains registration1 hash_map_pt references = hashMap_create(NULL, NULL, NULL, NULL); - hashMap_put(references, registration, reference); + hashMap_put(references, (void*)registration->serviceId, reference); hashMap_put(registry->serviceReferences, bundle, references); //contains registration1 and one other hash_map_pt references2 = hashMap_create(NULL, NULL, NULL, NULL); - hashMap_put(references2, registration, reference2); - hashMap_put(references2, registration2, reference3); + hashMap_put(references2, (void*)registration->serviceId, reference2); + hashMap_put(references2, (void*)registration2->serviceId, reference3); hashMap_put(registry->serviceReferences, bundle2, references2); //contains 2 registrations, but not registration1 hash_map_pt references3 = hashMap_create(NULL, NULL, NULL, NULL); - hashMap_put(references3, registration3, reference4); - hashMap_put(references3, registration4, reference5); + hashMap_put(references3, (void*)registration3->serviceId, reference4); + hashMap_put(references3, (void*)registration4->serviceId, reference5); hashMap_put(registry->serviceReferences, bundle3, references3); //call to getUsingBundles @@ -1043,4 +1066,10 @@ TEST(service_registry, getUsingBundles) { hashMap_destroy(references2, false, false); hashMap_destroy(references3, false, false); serviceRegistry_destroy(registry); + + free(registration); + free(registration2); + free(registration3); + free(registration4); + } http://git-wip-us.apache.org/repos/asf/celix/blob/652741c9/framework/public/include/utils.h ---------------------------------------------------------------------- diff --git a/framework/public/include/utils.h b/framework/public/include/utils.h index bd04067..108bbdd 100644 --- a/framework/public/include/utils.h +++ b/framework/public/include/utils.h @@ -40,7 +40,7 @@ FRAMEWORK_EXPORT char * string_ndup(const char *s, size_t n); FRAMEWORK_EXPORT char * utils_stringTrim(char * string); FRAMEWORK_EXPORT bool utils_isStringEmptyOrNull(const char * const str); -FRAMEWORK_EXPORT int utils_compareServiceIdsAndRanking(long servId, long servRank, long otherServId, long otherServRank); +FRAMEWORK_EXPORT int utils_compareServiceIdsAndRanking(unsigned long servId, long servRank, unsigned long otherServId, long otherServRank); FRAMEWORK_EXPORT celix_status_t thread_equalsSelf(celix_thread_t thread, bool *equals); http://git-wip-us.apache.org/repos/asf/celix/blob/652741c9/remote_services/discovery/private/src/endpoint_descriptor_reader.c ---------------------------------------------------------------------- diff --git a/remote_services/discovery/private/src/endpoint_descriptor_reader.c b/remote_services/discovery/private/src/endpoint_descriptor_reader.c index cd13dc0..d8139bc 100644 --- a/remote_services/discovery/private/src/endpoint_descriptor_reader.c +++ b/remote_services/discovery/private/src/endpoint_descriptor_reader.c @@ -358,7 +358,7 @@ int main() { printf("\nEndpoint description #%d:\n", (i+1)); endpoint_description_pt edp = arrayList_get(list, i); printf("Id: %s\n", edp->id); - printf("Service Id: %ld\n", edp->serviceId); + printf("Service Id: %lu\n", edp->serviceId); printf("Framework UUID: %s\n", edp->frameworkUUID); printf("Service: %s\n", edp->service); http://git-wip-us.apache.org/repos/asf/celix/blob/652741c9/remote_services/remote_service_admin/private/src/endpoint_description.c ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin/private/src/endpoint_description.c b/remote_services/remote_service_admin/private/src/endpoint_description.c index c11eb0d..0d8b684 100644 --- a/remote_services/remote_service_admin/private/src/endpoint_description.c +++ b/remote_services/remote_service_admin/private/src/endpoint_description.c @@ -33,12 +33,12 @@ #include "remote_constants.h" #include "constants.h" -static celix_status_t endpointDescription_verifyLongProperty(properties_pt properties, char *propertyName, long *longProperty); +static celix_status_t endpointDescription_verifyLongProperty(properties_pt properties, char *propertyName, unsigned long *longProperty); celix_status_t endpointDescription_create(properties_pt properties, endpoint_description_pt *endpointDescription) { celix_status_t status = CELIX_SUCCESS; - long serviceId = 0L; + unsigned long serviceId = 0UL; status = endpointDescription_verifyLongProperty(properties, (char *) OSGI_RSA_ENDPOINT_SERVICE_ID, &serviceId); if (status != CELIX_SUCCESS) { return status; @@ -75,14 +75,14 @@ celix_status_t endpointDescription_destroy(endpoint_description_pt description) return CELIX_SUCCESS; } -static celix_status_t endpointDescription_verifyLongProperty(properties_pt properties, char *propertyName, long *longProperty) { +static celix_status_t endpointDescription_verifyLongProperty(properties_pt properties, char *propertyName, unsigned long *longProperty) { celix_status_t status = CELIX_SUCCESS; const char *value = properties_get(properties, propertyName); if (value == NULL) { - *longProperty = 0l; + *longProperty = 0UL; } else { - *longProperty = atol(value); + *longProperty = strtoul(value,NULL,10); } return status; http://git-wip-us.apache.org/repos/asf/celix/blob/652741c9/remote_services/remote_service_admin/public/include/endpoint_description.h ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin/public/include/endpoint_description.h b/remote_services/remote_service_admin/public/include/endpoint_description.h index a028776..de27d2e 100644 --- a/remote_services/remote_service_admin/public/include/endpoint_description.h +++ b/remote_services/remote_service_admin/public/include/endpoint_description.h @@ -37,7 +37,7 @@ struct endpoint_description { char *service; // HASH_MAP packageVersions; properties_pt properties; - long serviceId; + unsigned long serviceId; }; typedef struct endpoint_description endpoint_description_t; http://git-wip-us.apache.org/repos/asf/celix/blob/652741c9/remote_services/remote_service_admin_dfi/rsa/private/src/remote_service_admin_dfi.c ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin_dfi/rsa/private/src/remote_service_admin_dfi.c b/remote_services/remote_service_admin_dfi/rsa/private/src/remote_service_admin_dfi.c index 745aa2e..9feab9f 100644 --- a/remote_services/remote_service_admin_dfi/rsa/private/src/remote_service_admin_dfi.c +++ b/remote_services/remote_service_admin_dfi/rsa/private/src/remote_service_admin_dfi.c @@ -313,7 +313,7 @@ static int remoteServiceAdmin_callback(struct mg_connection *conn) { char service[pos+1]; strncpy(service, rest, pos); service[pos] = '\0'; - long serviceId = atol(service); + unsigned long serviceId = strtoul(service,NULL,10); celixThreadMutex_lock(&rsa->exportedServicesLock); @@ -366,7 +366,7 @@ static int remoteServiceAdmin_callback(struct mg_connection *conn) { free(data); } else { result = 0; - RSA_LOG_WARNING(rsa, "NO export registration found for service id %i", serviceId); + RSA_LOG_WARNING(rsa, "NO export registration found for service id %lu", serviceId); } celixThreadMutex_unlock(&rsa->exportedServicesLock); http://git-wip-us.apache.org/repos/asf/celix/blob/652741c9/remote_services/remote_service_admin_http/private/src/remote_service_admin_impl.c ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin_http/private/src/remote_service_admin_impl.c b/remote_services/remote_service_admin_http/private/src/remote_service_admin_impl.c index f73d094..0b05c1f 100644 --- a/remote_services/remote_service_admin_http/private/src/remote_service_admin_impl.c +++ b/remote_services/remote_service_admin_http/private/src/remote_service_admin_impl.c @@ -321,7 +321,7 @@ static int remoteServiceAdmin_callback(struct mg_connection *conn) { int expIt = 0; for (expIt = 0; expIt < arrayList_size(exports); expIt++) { export_registration_pt export = arrayList_get(exports, expIt); - long serviceId = atol(service); + unsigned long serviceId = strtoul(service,NULL,10); if (serviceId == export->endpointDescription->serviceId && export->endpoint != NULL) { uint64_t datalength = request_info->content_length; char* data = malloc(datalength + 1);