8787import org .w3c .dom .Node ;
8888import org .w3c .dom .NodeList ;
8989
90-
9190/**
9291 * http https collect
9392 */
@@ -102,7 +101,7 @@ public class HttpCollectImpl extends AbstractCollect {
102101 private final Set <Integer > defaultSuccessStatusCodes = Stream .of (HttpStatus .SC_OK , HttpStatus .SC_CREATED ,
103102 HttpStatus .SC_ACCEPTED , HttpStatus .SC_MULTIPLE_CHOICES , HttpStatus .SC_MOVED_PERMANENTLY ,
104103 HttpStatus .SC_MOVED_TEMPORARILY ).collect (Collectors .toSet ());
105-
104+
106105 public HttpCollectImpl () {
107106 }
108107
@@ -140,7 +139,7 @@ public void collect(CollectRep.MetricsData.Builder builder,
140139 }
141140 // todo This code converts an InputStream directly to a String. For large data in Prometheus exporters,
142141 // this could create large objects, potentially impacting JVM memory space significantly.
143- // Option 1: Parse using InputStream, but this requires significant code changes;
142+ // Option 1: Parse using InputStream, but this requires significant code changes;
144143 // Option 2: Manually trigger garbage collection, similar to how it's done in Dubbo for large inputs.
145144 String resp = EntityUtils .toString (response .getEntity (), StandardCharsets .UTF_8 );
146145 if (StringUtils .hasText (resp )) {
@@ -149,22 +148,21 @@ public void collect(CollectRep.MetricsData.Builder builder,
149148 Long responseTime = System .currentTimeMillis () - startTime ;
150149 String parseType = metrics .getHttp ().getParseType ();
151150 try {
152- if (DispatchConstants .PARSE_DEFAULT .equals (parseType )) {
153- parseResponseByDefault (resp , metrics .getAliasFields (), metrics .getHttp (), builder , responseTime );
154- } else if (DispatchConstants .PARSE_JSON_PATH .equals (parseType )) {
155- parseResponseByJsonPath (resp , metrics .getAliasFields (), metrics .getHttp (), builder , responseTime );
156- } else if (DispatchConstants .PARSE_PROM_QL .equalsIgnoreCase (parseType )) {
157- parseResponseByPromQl (resp , metrics .getAliasFields (), metrics .getHttp (), builder );
158- } else if (DispatchConstants .PARSE_PROMETHEUS .equals (parseType )) {
159- parseResponseByPrometheusExporter (resp , metrics .getAliasFields (), builder );
160- } else if (DispatchConstants .PARSE_XML_PATH .equals (parseType )) {
161- parseResponseByXmlPath (resp , metrics .getAliasFields (), metrics .getHttp (), builder );
162- } else if (DispatchConstants .PARSE_WEBSITE .equals (parseType )) {
163- parseResponseByWebsite (resp , metrics .getAliasFields (), metrics .getHttp (), builder , responseTime );
164- } else if (DispatchConstants .PARSE_SITE_MAP .equals (parseType )) {
165- parseResponseBySiteMap (resp , metrics .getAliasFields (), builder );
166- } else {
167- parseResponseByDefault (resp , metrics .getAliasFields (), metrics .getHttp (), builder , responseTime );
151+ switch (parseType ) {
152+ case DispatchConstants .PARSE_JSON_PATH ->
153+ parseResponseByJsonPath (resp , metrics .getAliasFields (), metrics .getHttp (), builder , responseTime );
154+ case DispatchConstants .PARSE_PROM_QL ->
155+ parseResponseByPromQl (resp , metrics .getAliasFields (), metrics .getHttp (), builder );
156+ case DispatchConstants .PARSE_PROMETHEUS ->
157+ parseResponseByPrometheusExporter (resp , metrics .getAliasFields (), builder );
158+ case DispatchConstants .PARSE_XML_PATH ->
159+ parseResponseByXmlPath (resp , metrics .getAliasFields (), metrics .getHttp (), builder );
160+ case DispatchConstants .PARSE_WEBSITE ->
161+ parseResponseByWebsite (resp , metrics .getAliasFields (), metrics .getHttp (), builder , responseTime );
162+ case DispatchConstants .PARSE_SITE_MAP ->
163+ parseResponseBySiteMap (resp , metrics .getAliasFields (), builder );
164+ default ->
165+ parseResponseByDefault (resp , metrics .getAliasFields (), metrics .getHttp (), builder , responseTime );
168166 }
169167 } catch (Exception e ) {
170168 log .info ("parse error: {}." , e .getMessage (), e );
@@ -202,12 +200,12 @@ public void collect(CollectRep.MetricsData.Builder builder,
202200 }
203201 }
204202 }
205-
203+
206204 @ Override
207205 public String supportProtocol () {
208206 return DispatchConstants .PROTOCOL_HTTP ;
209207 }
210-
208+
211209 private void parseResponseByWebsite (String resp , List <String > aliasFields , HttpProtocol http ,
212210 CollectRep .MetricsData .Builder builder , Long responseTime ) {
213211 CollectRep .ValueRow .Builder valueRowBuilder = CollectRep .ValueRow .newBuilder ();
@@ -223,7 +221,7 @@ private void parseResponseByWebsite(String resp, List<String> aliasFields, HttpP
223221 }
224222 builder .addValues (valueRowBuilder .build ());
225223 }
226-
224+
227225 private void parseResponseBySiteMap (String resp , List <String > aliasFields ,
228226 CollectRep .MetricsData .Builder builder ) {
229227 List <String > siteUrls = new LinkedList <>();
@@ -306,11 +304,11 @@ private void parseResponseBySiteMap(String resp, List<String> aliasFields,
306304 builder .addValues (valueRowBuilder .build ());
307305 }
308306 }
309-
307+
310308 private void parseResponseByXmlPath (String resp , List <String > aliasFields , HttpProtocol http ,
311309 CollectRep .MetricsData .Builder builder ) {
312310 }
313-
311+
314312 private void parseResponseByJsonPath (String resp , List <String > aliasFields , HttpProtocol http ,
315313 CollectRep .MetricsData .Builder builder , Long responseTime ) {
316314 List <Object > results = JsonPathParser .parseContentWithJsonPath (resp , http .getParseScript ());
@@ -362,15 +360,15 @@ private void parseResponseByJsonPath(String resp, List<String> aliasFields, Http
362360 }
363361 }
364362 }
365-
363+
366364 private void parseResponseByPromQl (String resp , List <String > aliasFields , HttpProtocol http ,
367365 CollectRep .MetricsData .Builder builder ) {
368366 AbstractPrometheusParse prometheusParser = PrometheusParseCreater .getPrometheusParse ();
369367 prometheusParser .handle (resp , aliasFields , http , builder );
370368 }
371-
369+
372370 private static final Map <Long , ExporterParser > EXPORTER_PARSER_TABLE = new ConcurrentHashMap <>();
373-
371+
374372 private void parseResponseByPrometheusExporter (String resp , List <String > aliasFields ,
375373 CollectRep .MetricsData .Builder builder ) {
376374 if (!EXPORTER_PARSER_TABLE .containsKey (builder .getId ())) {
@@ -405,7 +403,7 @@ private void parseResponseByPrometheusExporter(String resp, List<String> aliasFi
405403 }
406404 }
407405 }
408-
406+
409407 private void parseResponseByDefault (String resp , List <String > aliasFields , HttpProtocol http ,
410408 CollectRep .MetricsData .Builder builder , Long responseTime ) {
411409 JsonElement element = JsonParser .parseString (resp );
@@ -419,7 +417,7 @@ private void parseResponseByDefault(String resp, List<String> aliasFields, HttpP
419417 getValueFromJson (aliasFields , builder , responseTime , element , keywordNum );
420418 }
421419 }
422-
420+
423421 private void getValueFromJson (List <String > aliasFields , CollectRep .MetricsData .Builder builder , Long responseTime , JsonElement element , int keywordNum ) {
424422 if (element .isJsonObject ()) {
425423 JsonObject object = element .getAsJsonObject ();
@@ -442,7 +440,7 @@ private void getValueFromJson(List<String> aliasFields, CollectRep.MetricsData.B
442440 builder .addValues (valueRowBuilder .build ());
443441 }
444442 }
445-
443+
446444 /**
447445 * create httpContext
448446 * @param httpProtocol http protocol
@@ -467,7 +465,7 @@ public HttpContext createHttpContext(HttpProtocol httpProtocol) {
467465 }
468466 return null ;
469467 }
470-
468+
471469 /**
472470 * create http request
473471 * @param httpProtocol http params
@@ -531,7 +529,7 @@ public HttpUriRequest createHttpRequest(HttpProtocol httpProtocol) {
531529 } else {
532530 requestBuilder .addHeader (HttpHeaders .ACCEPT , "*/*" );
533531 }
534-
532+
535533 if (httpProtocol .getAuthorization () != null ) {
536534 HttpProtocol .Authorization authorization = httpProtocol .getAuthorization ();
537535 if (DispatchConstants .BEARER_TOKEN .equalsIgnoreCase (authorization .getType ())) {
@@ -546,16 +544,16 @@ public HttpUriRequest createHttpRequest(HttpProtocol httpProtocol) {
546544 }
547545 }
548546 }
549-
547+
550548 // if it has payload, would override post params
551549 if (StringUtils .hasLength (httpProtocol .getPayload ())) {
552550 requestBuilder .setEntity (new StringEntity (httpProtocol .getPayload (), StandardCharsets .UTF_8 ));
553551 }
554-
552+
555553 // uri
556554 String uri = CollectUtil .replaceUriSpecialChar (httpProtocol .getUrl ());
557555 if (IpDomainUtil .isHasSchema (httpProtocol .getHost ())) {
558-
556+
559557 requestBuilder .setUri (httpProtocol .getHost () + ":" + httpProtocol .getPort () + uri );
560558 } else {
561559 String ipAddressType = IpDomainUtil .checkIpAddressType (httpProtocol .getHost ());
@@ -569,7 +567,7 @@ public HttpUriRequest createHttpRequest(HttpProtocol httpProtocol) {
569567 requestBuilder .setUri (CollectorConstants .HTTP_HEADER + baseUri );
570568 }
571569 }
572-
570+
573571 // custom timeout
574572 int timeout = CollectUtil .getTimeout (httpProtocol .getTimeout (), 0 );
575573 if (timeout > 0 ) {
@@ -582,7 +580,7 @@ public HttpUriRequest createHttpRequest(HttpProtocol httpProtocol) {
582580 }
583581 return requestBuilder .build ();
584582 }
585-
583+
586584 private boolean checkSuccessInvoke (Metrics metrics , int statusCode ) {
587585 List <String > successCodes = metrics .getHttp ().getSuccessCodes ();
588586 Set <Integer > successCodeSet = successCodes != null ? successCodes .stream ().map (code -> {
0 commit comments