void test_arrayList_addAll(void) { char * entry = "entry"; char * entry2 = "entry2"; char * entry3 = "entry3"; char * get; array_list_pt toAdd; bool changed; arrayList_clear(list); arrayList_create(&toAdd); arrayList_add(toAdd, entry); arrayList_add(toAdd, entry2); arrayList_add(list, entry3); get = arrayList_get(list, 0); CU_ASSERT_EQUAL(entry3, get); changed = arrayList_addAll(list, toAdd); CU_ASSERT_TRUE(changed); CU_ASSERT_EQUAL(arrayList_size(list), 3); get = arrayList_get(list, 1); CU_ASSERT_EQUAL(entry, get); get = arrayList_get(list, 2); CU_ASSERT_EQUAL(entry2, get); }
celix_status_t driverLoader_loadDriverForLocator(driver_loader_pt loader, driver_locator_service_pt locator, char *driverId, array_list_pt *references) { celix_status_t status = CELIX_SUCCESS; //The list is created in the bundle_getRegisteredServices chain //arrayList_create(references); char *filename = NULL; status = locator->loadDriver(locator->locator, driverId, &filename); if (status == CELIX_SUCCESS) { bundle_pt bundle = NULL; int length = strlen(DRIVER_LOCATION_PREFIX) + strlen(driverId); char location[length]; snprintf(location, length, "%s%s", DRIVER_LOCATION_PREFIX, driverId); status = bundleContext_installBundle2(loader->context, location, filename, &bundle); if (status == CELIX_SUCCESS) { status = bundle_start(bundle); if (status == CELIX_SUCCESS) { status = bundle_getRegisteredServices(bundle, references); if (status == CELIX_SUCCESS) { arrayList_addAll(loader->loadedDrivers, *references); } } } } return status; }
celix_status_t wiringTopologyManager_getWAs(wiring_topology_manager_pt manager, array_list_pt *waList) { celix_status_t status = CELIX_SUCCESS; status = arrayList_create(waList); if (status != CELIX_SUCCESS) { return CELIX_ENOMEM; } status = celixThreadMutex_lock(&manager->waListLock); arrayList_addAll(*waList, manager->waList); status = celixThreadMutex_unlock(&manager->waListLock); return status; }
celix_status_t driverLoader_findDrivers(driver_loader_pt loader, array_list_pt locators, properties_pt properties, array_list_pt *driversIds) { celix_status_t status = CELIX_SUCCESS; arrayList_create(driversIds); int i; for (i = 0; i < arrayList_size(locators); i++) { array_list_pt drivers; driver_locator_service_pt locator = arrayList_get(locators, i); status = driverLoader_findDriversForLocator(loader, locator, properties, &drivers); if (status == CELIX_SUCCESS) { arrayList_addAll(*driversIds, drivers); } arrayList_destroy(drivers); } return status; }
celix_status_t driverLoader_loadDrivers(driver_loader_pt loader, array_list_pt locators, array_list_pt driverIds, array_list_pt *references) { celix_status_t status = CELIX_SUCCESS; status = arrayList_create(references); if (status == CELIX_SUCCESS) { int i; for (i = 0; i < arrayList_size(driverIds); i++) { array_list_pt refs = NULL; char *id = arrayList_get(driverIds, i); status = driverLoader_loadDriver(loader, locators, id, &refs); if (status == CELIX_SUCCESS) { arrayList_addAll(*references, refs); } if (refs != NULL) { arrayList_destroy(refs); } } } return status; }