Esempio n. 1
0
celix_status_t versionRange_parse(char * rangeStr, version_range_pt *range) {
    celix_status_t status;
    if (strchr(rangeStr, ',') != NULL) {
        int vlowL = strcspn(rangeStr+1, ",");
        char * vlow = (char *) malloc(sizeof(char) * (vlowL + 1));
        if (!vlow) {
            status = CELIX_ENOMEM;
        } else {
            int vhighL;
            char * vhigh;
            vlow = strncpy(vlow, rangeStr+1, vlowL);
            vlow[vlowL] = '\0';
            vhighL = strlen(rangeStr+1) - vlowL - 2;
            vhigh = (char *) malloc(sizeof(char) * (vhighL+1));
            if (!vhigh) {
                status = CELIX_ENOMEM;
            } else {
                version_pt versionLow = NULL;
                int rangeL = strlen(rangeStr);
                char start = rangeStr[0];
                char end = rangeStr[rangeL-1];

                vhigh = strncpy(vhigh, rangeStr+vlowL+2, vhighL);
                vhigh[vhighL] = '\0';
                status = version_createVersionFromString(vlow, &versionLow);
                if (status == CELIX_SUCCESS) {
                    version_pt versionHigh = NULL;
                    status = version_createVersionFromString(vhigh, &versionHigh);
                    if (status == CELIX_SUCCESS) {
                        status = versionRange_createVersionRange(
                                     versionLow,
                                     start == '[',
                                     versionHigh,
                                     end ==']',
                                     range
                                 );
                    }
                }
                free(vhigh);
            }
            free(vlow);

        }
    } else {
        version_pt version = NULL;
        status = version_createVersionFromString(rangeStr, &version);
        if (status == CELIX_SUCCESS) {
            status = versionRange_createVersionRange(version, true, NULL, false, range);
        }
    }

    return status;
}
Esempio n. 2
0
    static void checkInterfaceVersion(dyn_interface_type* dynIntf, const char* v) {
        int status;

        char *version = NULL;
        status = dynInterface_getVersionString(dynIntf, &version);
        CHECK_EQUAL(0, status);
        STRCMP_EQUAL(v, version);
        version_pt msgVersion = NULL, localMsgVersion = NULL;
        int cmpVersion = -1;
        version_createVersionFromString(version, &localMsgVersion);
        status = dynInterface_getVersion(dynIntf, &msgVersion);
        CHECK_EQUAL(0, status);
        version_compareTo(msgVersion, localMsgVersion, &cmpVersion);
        CHECK_EQUAL(cmpVersion, 0);
        version_destroy(localMsgVersion);
    }
Esempio n. 3
0
celix_status_t deploymentPackage_processEntries(deployment_package_pt package) {
	celix_status_t status = CELIX_SUCCESS;

	hash_map_pt entries = NULL;
	manifest_getEntries(package->manifest, &entries);
	hash_map_iterator_pt iter = hashMapIterator_create(entries);
	while (hashMapIterator_hasNext(iter)) {
		hash_map_entry_pt entry = hashMapIterator_nextEntry(iter);
		char *name = hashMapEntry_getKey(entry);
		properties_pt values = hashMapEntry_getValue(entry);

		bool isBundleResource;
		deploymentPackage_isBundleResource(values, &isBundleResource);
		if (isBundleResource) {
			bundle_info_pt info = apr_palloc(package->pool, sizeof(*info));
			info->path = name;
			info->attributes = values;
			info->symbolicName = properties_get(values, (char *) OSGI_FRAMEWORK_BUNDLE_SYMBOLICNAME);
			char *version = properties_get(values, (char *) OSGI_FRAMEWORK_BUNDLE_VERSION);
			info->version = NULL;
			status = version_createVersionFromString(version, &info->version);
			char *customizer = properties_get(values, (char *) DEPLOYMENTPACKAGE_CUSTOMIZER);
			deploymentPackage_parseBooleanHeader(customizer, &info->customizer);

			arrayList_add(package->bundleInfos, info);
		} else {
			resource_info_pt info = apr_palloc(package->pool, sizeof(*info));
			info->path = name;
			info->attributes = values;
			info->resourceProcessor = properties_get(values, (char *) RESOURCE_PROCESSOR);

			arrayList_add(package->resourceInfos, info);
		}
	}
	hashMapIterator_destroy(iter);

	return status;
}
Esempio n. 4
0
celix_status_t deploymentPackage_getVersion(deployment_package_pt package, version_pt *version) {
	char *versionStr = manifest_getValue(package->manifest, "DeploymentPackage-Version");
	return version_createVersionFromString(versionStr, version);
}