From dcadbe4efe84bd14cdaf5718859832d3a7a48e65 Mon Sep 17 00:00:00 2001 From: bhashinee Date: Wed, 16 Oct 2024 13:13:14 +0530 Subject: [PATCH] Fix the 404 error when dispatching --- .../metric/handler/MetricHandler.java | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/components/mediation/data-publishers/org.wso2.micro.integrator.observability/src/main/java/org/wso2/micro/integrator/observability/metric/handler/MetricHandler.java b/components/mediation/data-publishers/org.wso2.micro.integrator.observability/src/main/java/org/wso2/micro/integrator/observability/metric/handler/MetricHandler.java index 540d80081f..093a5a157a 100644 --- a/components/mediation/data-publishers/org.wso2.micro.integrator.observability/src/main/java/org/wso2/micro/integrator/observability/metric/handler/MetricHandler.java +++ b/components/mediation/data-publishers/org.wso2.micro.integrator.observability/src/main/java/org/wso2/micro/integrator/observability/metric/handler/MetricHandler.java @@ -17,6 +17,8 @@ */ package org.wso2.micro.integrator.observability.metric.handler; +import java.util.ArrayList; +import java.util.Collection; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -309,8 +311,22 @@ private void incrementInboundEndpointErrorCount(String name) { * @return String The api name */ private String getApiName(String contextPath, MessageContext synCtx) { + Collection apiList = synCtx.getEnvironment().getSynapseConfiguration().getAPIs(); + Collection withVersionsApiList = getVersionsApiList(apiList); + Collection defaultApiList = getDefaultApiList(apiList); + if (!withVersionsApiList.isEmpty()) { + String apiName = getResolvedApiName(contextPath, synCtx, withVersionsApiList); + if (apiName != null) { + return apiName; + } + } + return getResolvedApiName(contextPath, synCtx, defaultApiList); + } + + private static String getResolvedApiName(String contextPath, MessageContext synCtx, + Collection apiList) { String apiName = null; - for (API api : synCtx.getEnvironment().getSynapseConfiguration().getAPIs()) { + for (API api : apiList) { String apiContextPath = api.getContext(); if (StringUtils.isNotBlank(api.getVersionStrategy().getVersion())) { apiContextPath = apiContextPath + "/" + api.getVersionStrategy().getVersion(); @@ -327,6 +343,26 @@ private String getApiName(String contextPath, MessageContext synCtx) { return apiName; } + private Collection getVersionsApiList(Collection apiList) { + Collection withVersionsApiList = new ArrayList<>(); + for (API api : apiList) { + if (StringUtils.isNotBlank(api.getVersionStrategy().getVersion())) { + withVersionsApiList.add(api); + } + } + return withVersionsApiList; + } + + private Collection getDefaultApiList(Collection apiList) { + Collection defaultApiList = new ArrayList<>(); + for (API api : apiList) { + if (!StringUtils.isNotBlank(api.getVersionStrategy().getVersion())) { + defaultApiList.add(api); + } + } + return defaultApiList; + } + /** * Return the port the service was invoked. *