Example #1
0
	static void testProxyRemoval(void) {
		celix_status_t status;
		bundle_pt bundle = NULL;
		array_list_pt bundleNames = NULL;
		array_list_pt proxyBundle = NULL;
		service_reference_pt ref = NULL;

		arrayList_create(&bundleNames);
		arrayList_create(&proxyBundle);

		arrayList_add(bundleNames, (void*) CALCULATOR_PROXY);
		status = getSpecifiedBundles(clientContext, bundleNames, proxyBundle);
		CHECK_EQUAL(CELIX_SUCCESS, status);
		CHECK_EQUAL(arrayList_size(proxyBundle), arrayList_size(bundleNames));

		status = bundleContext_getBundleById(clientContext, (long) arrayList_get(proxyBundle, 0), &bundle);
		CHECK_EQUAL(CELIX_SUCCESS, status);

		status = bundle_stop(bundle);
		CHECK_EQUAL(CELIX_SUCCESS, status);

		status = bundleContext_getServiceReference(clientContext, (char *) CALCULATOR_SERVICE, &ref);
		CHECK_EQUAL(CELIX_SUCCESS, status);
		CHECK(ref == NULL);

		arrayList_destroy(bundleNames);
		arrayList_destroy(proxyBundle);
	}
Example #2
0
int main(void) {
	apr_status_t rv = APR_SUCCESS;
	apr_status_t s = APR_SUCCESS;
	properties_pt config = NULL;
	char *autoStart = NULL;
    apr_pool_t *pool = NULL;
    bundle_pt fwBundle = NULL;

	rv = apr_initialize();
    if (rv != APR_SUCCESS) {
        return CELIX_START_ERROR;
    }
    apr_pool_t *memoryPool;
    s = apr_pool_create(&memoryPool, NULL);
    if (s != APR_SUCCESS) {
        return CELIX_START_ERROR;
    }

    struct framework * framework = NULL;
    celix_status_t status = CELIX_SUCCESS;
    status = framework_create(&framework, memoryPool, config);
    if (status == CELIX_SUCCESS) {
		status = fw_init(framework);
		if (status == CELIX_SUCCESS) {
            // Start the system bundle
            framework_getFrameworkBundle(framework, &fwBundle);
            bundle_start(fwBundle);
            bundle_context_pt context = NULL;
            bundle_getContext(fwBundle, &context);

            // do some stuff
            bundle_pt bundle = NULL;
            status = CELIX_DO_IF(status, bundleContext_installBundle(context, "../test_bundle1/test_bundle1.zip", &bundle));
            status = CELIX_DO_IF(status, bundle_start(bundle));

            // Stop the system bundle, sleep a bit to let stuff settle down
            sleep(5);
            bundle_stop(fwBundle);

            framework_destroy(framework);
		}
    }

    if (status != CELIX_SUCCESS) {
        printf("Problem creating framework\n");
    }

	apr_pool_destroy(memoryPool);
	apr_terminate();

	printf("LAUNCHER: Exit\n");

    return 0;
}
Example #3
0
celix_status_t importRegistrationFactory_close(import_registration_factory_pt registration_factory)
{
	celix_status_t status = CELIX_SUCCESS;

	if (registration_factory->bundle != NULL) {
		bundle_stop(registration_factory->bundle);
		bundle_uninstall(registration_factory->bundle);
	}

	return status;
}
Example #4
0
celix_status_t deploymentAdmin_stopDeploymentPackageBundles(deployment_admin_pt admin, deployment_package_pt target) {
	celix_status_t status = CELIX_SUCCESS;

	if (target != NULL) {
		array_list_pt infos = NULL;
		deploymentPackage_getBundleInfos(target, &infos);
		int i;
		for (i = 0; i < arrayList_size(infos); i++) {
			bundle_pt bundle = NULL;
			bundle_info_pt info = arrayList_get(infos, i);
			deploymentPackage_getBundle(target, info->symbolicName, &bundle);
			if (bundle != NULL) {
				bundle_stop(bundle);
			} else {
				printf("DEPLOYMENT_ADMIN: Bundle %s not found\n", info->symbolicName);
			}
		}
	}

	return status;
}
Example #5
0
	static celix_status_t stopStartPermutation(bundle_context_pt context, long* permutation, int size) {
		celix_status_t status = CELIX_SUCCESS;
		int y = 0;

		printf("Test stop/start permutation: ");

		for (y = 0; (y < size) && (status == CELIX_SUCCESS); y++) {
			bundle_pt bundle = NULL;

			status = bundleContext_getBundleById(context, permutation[y], &bundle);

			if (status == CELIX_SUCCESS) {
				module_pt module = NULL;
				const char *name = NULL;

				status = bundle_getCurrentModule(bundle, &module);

				if (status == CELIX_SUCCESS) {
					status = module_getSymbolicName(module, &name);
					printf("%s (%ld) ", name, permutation[y]);
				}
			}
		}
		printf("\n");

		// stop all bundles
		if (status == CELIX_SUCCESS) {
			for (y = 0; (y < size) && (status == CELIX_SUCCESS); y++) {
				bundle_pt bundle = NULL;

				status = bundleContext_getBundleById(context, permutation[y], &bundle);

				if (status == CELIX_SUCCESS) {
					printf("stop bundle: %ld\n", permutation[y]);
					status = bundle_stop(bundle);
				}
			}
		}

		// verify stop state
		if (status == CELIX_SUCCESS) {
			for (y = 0; (y < size) && (status == CELIX_SUCCESS); y++) {
				bundle_pt bundle = NULL;

				status = bundleContext_getBundleById(context, permutation[y], &bundle);

				if (status == CELIX_SUCCESS) {
					bundle_state_e state;
					status = bundle_getState(bundle, &state);

					if (state != OSGI_FRAMEWORK_BUNDLE_RESOLVED) {
						printf("bundle %ld has state %d (should be %d) \n", permutation[y], state, OSGI_FRAMEWORK_BUNDLE_RESOLVED);
						status = CELIX_ILLEGAL_STATE;
					}
				}
			}
		}

		// start all bundles
		if (status == CELIX_SUCCESS) {

			for (y = 0; (y < size) && (status == CELIX_SUCCESS); y++) {
				bundle_pt bundle = NULL;

				status = bundleContext_getBundleById(context, permutation[y], &bundle);

				if (status == CELIX_SUCCESS) {
					printf("start bundle: %ld\n", permutation[y]);
					status = bundle_start(bundle);
				}
			}
		}

		// verify started state
		if (status == CELIX_SUCCESS) {
			for (y = 0; (y < size) && (status == CELIX_SUCCESS); y++) {
				bundle_pt bundle = NULL;

				status = bundleContext_getBundleById(context, permutation[y], &bundle);

				if (status == CELIX_SUCCESS) {
					bundle_state_e state;
					status = bundle_getState(bundle, &state);

					if (state != OSGI_FRAMEWORK_BUNDLE_ACTIVE) {
						printf("bundle %ld has state %d (should be %d) \n", permutation[y], state, OSGI_FRAMEWORK_BUNDLE_ACTIVE);
						status = CELIX_ILLEGAL_STATE;
					}
				}
			}
		}

		return status;
	}