in registry/protocol/protocol.go [347:385]
func isMatched(providerUrl *common.URL, consumerUrl *common.URL) bool {
// Compatible with the 2.6.x
if len(providerUrl.GetParam(constant.CategoryKey, "")) == 0 &&
providerUrl.Protocol == constant.OverrideProtocol {
providerUrl.AddParam(constant.CategoryKey, constant.ConfiguratorsCategory)
}
consumerInterface := consumerUrl.GetParam(constant.InterfaceKey, consumerUrl.Path)
providerInterface := providerUrl.GetParam(constant.InterfaceKey, providerUrl.Path)
if !(constant.AnyValue == consumerInterface ||
constant.AnyValue == providerInterface ||
providerInterface == consumerInterface) {
return false
}
if !isMatchCategory(providerUrl.GetParam(constant.CategoryKey, constant.DefaultCategory),
consumerUrl.GetParam(constant.CategoryKey, constant.DefaultCategory)) {
return false
}
if !providerUrl.GetParamBool(constant.EnabledKey, true) &&
consumerUrl.GetParam(constant.EnabledKey, "") != constant.AnyValue {
return false
}
consumerGroup := consumerUrl.GetParam(constant.GroupKey, "")
consumerVersion := consumerUrl.GetParam(constant.VersionKey, "")
consumerClassifier := consumerUrl.GetParam(constant.ClassifierKey, "")
providerGroup := providerUrl.GetParam(constant.GroupKey, "")
providerVersion := providerUrl.GetParam(constant.VersionKey, "")
providerClassifier := providerUrl.GetParam(constant.ClassifierKey, "")
// todo: public static boolean isContains(String values, String value) {
// return isNotEmpty(values) && isContains(CommaSplitPattern.split(values), value);
// }
return (consumerGroup == constant.AnyValue || consumerGroup == providerGroup ||
strings.Contains(consumerGroup, providerGroup)) && (consumerVersion == constant.AnyValue ||
consumerVersion == providerVersion) && (len(consumerClassifier) == 0 ||
consumerClassifier == constant.AnyValue || consumerClassifier == providerClassifier)
}