You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by pn...@apache.org on 2016/10/26 12:15:58 UTC
[35/50] [abbrv] celix git commit: CELIX-376: Use of serviceId as
hashMap index instead of registration pointer
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 <gr...@apache.org>
Authored: Fri Oct 14 17:17:41 2016 +0200
Committer: gricciardi <gr...@apache.org>
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);