// 
// Decompiled by Procyon v0.6.0
// 

package io.sentry.util;

import java.util.concurrent.ConcurrentHashMap;
import org.jetbrains.annotations.ApiStatus;
import java.util.Iterator;
import org.jetbrains.annotations.Nullable;
import io.sentry.FilterString;
import java.util.ArrayList;
import java.util.List;
import org.jetbrains.annotations.NotNull;
import io.sentry.SentryOpenTelemetryMode;
import java.util.Map;

public final class SpanUtils
{
    private static final Map<String, Boolean> ignoredSpanDecisionsCache;
    
    @NotNull
    public static List<String> ignoredSpanOriginsForOpenTelemetry(@NotNull final SentryOpenTelemetryMode mode) {
        final List<String> origins = new ArrayList<String>();
        if (SentryOpenTelemetryMode.AGENT == mode || SentryOpenTelemetryMode.AGENTLESS_SPRING == mode) {
            origins.add("auto.http.spring_jakarta.webmvc");
            origins.add("auto.http.spring.webmvc");
            origins.add("auto.http.spring7.webmvc");
            origins.add("auto.spring_jakarta.webflux");
            origins.add("auto.spring.webflux");
            origins.add("auto.spring7.webflux");
            origins.add("auto.db.jdbc");
            origins.add("auto.http.spring_jakarta.webclient");
            origins.add("auto.http.spring.webclient");
            origins.add("auto.http.spring7.webclient");
            origins.add("auto.http.spring_jakarta.restclient");
            origins.add("auto.http.spring.restclient");
            origins.add("auto.http.spring7.restclient");
            origins.add("auto.http.spring_jakarta.resttemplate");
            origins.add("auto.http.spring.resttemplate");
            origins.add("auto.http.spring7.resttemplate");
            origins.add("auto.http.openfeign");
            origins.add("auto.http.ktor-client");
        }
        if (SentryOpenTelemetryMode.AGENT == mode) {
            origins.add("auto.graphql.graphql");
            origins.add("auto.graphql.graphql22");
        }
        return origins;
    }
    
    @ApiStatus.Internal
    public static boolean isIgnored(@Nullable final List<FilterString> ignoredOrigins, @Nullable final String origin) {
        if (origin == null || ignoredOrigins == null || ignoredOrigins.isEmpty()) {
            return false;
        }
        if (SpanUtils.ignoredSpanDecisionsCache.containsKey(origin)) {
            return SpanUtils.ignoredSpanDecisionsCache.get(origin);
        }
        for (final FilterString ignoredOrigin : ignoredOrigins) {
            if (ignoredOrigin.getFilterString().equalsIgnoreCase(origin)) {
                SpanUtils.ignoredSpanDecisionsCache.put(origin, true);
                return true;
            }
        }
        for (final FilterString ignoredOrigin : ignoredOrigins) {
            try {
                if (ignoredOrigin.matches(origin)) {
                    SpanUtils.ignoredSpanDecisionsCache.put(origin, true);
                    return true;
                }
                continue;
            }
            catch (final Throwable t) {}
        }
        SpanUtils.ignoredSpanDecisionsCache.put(origin, false);
        return false;
    }
    
    static {
        ignoredSpanDecisionsCache = new ConcurrentHashMap<String, Boolean>();
    }
}
