enum ServiceDataType
{
SERVICE_DATA_TYPE_OPERATION,
- SERVICE_DATA_TYPE_URI,
+ SERVICE_DATA_TYPE_URI_SCHEME,
SERVICE_DATA_TYPE_MIME,
SERVICE_DATA_TYPE_MIME_ELEMENT
};
{
if (SERVICE_DATA_TYPE_OPERATION == type) {
return origin == other;
- } else if (SERVICE_DATA_TYPE_URI == type
+ } else if (SERVICE_DATA_TYPE_URI_SCHEME == type
|| SERVICE_DATA_TYPE_MIME_ELEMENT == type)
{
if (SERVICE_DATA_WILD_CHAR == origin) {
const char* value = NULL;
value = appsvc_get_operation(bundle);
std::string operation = value ? value : "";
- value = appsvc_get_uri(bundle);
- std::string scheme = value ? value : "";
+
value = appsvc_get_mime(bundle);
std::string mime = value ? value : "";
+ value = appsvc_get_uri(bundle);
+ std::string uri = value ? value : "";
+ std::vector<std::string> schemeParts = parseScheme(uri);
+ std::string scheme = (schemeParts.empty()) ? "" : schemeParts[0];
+
LogDebug("operation : " << operation);
LogDebug("schemeType : " << scheme);
LogDebug("mimetype : " << mime);
if (compareServiceData(SERVICE_DATA_TYPE_OPERATION,
DPL::ToUTF8String(appServiceIt->operation),
operation) &&
- compareServiceData(SERVICE_DATA_TYPE_URI,
+ compareServiceData(SERVICE_DATA_TYPE_URI_SCHEME,
DPL::ToUTF8String(appServiceIt->scheme),
scheme) &&
compareServiceData(SERVICE_DATA_TYPE_MIME,
return DPL::ToUTF8String(appServiceIt->src);
}
}
- std::vector<std::string> schemeParts = parseScheme(scheme);
+
if (schemeParts.size() > 1) {
LogDebug("Scheme parts: " << schemeParts[0] << ", " << schemeParts[1]);
return getCustomHandlerProtocolUri(