All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.sentry.spring.boot.InAppIncludesResolver Maven / Gradle / Ivy

There is a newer version: 8.0.0-rc.3
Show newest version
package io.sentry.spring.boot;

import com.jakewharton.nopen.annotation.Open;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.BeansException;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

/**
 * Resolves {@link SentryProperties} inAppIncludes by getting a package name from a class annotated
 * with {@link SpringBootConfiguration} or another annotation meta-annotated with {@link
 * SpringBootConfiguration} like {@link SpringBootApplication}.
 */
@Open
public class InAppIncludesResolver implements ApplicationContextAware {
  private @Nullable ApplicationContext applicationContext;

  @NotNull
  public List resolveInAppIncludes() {
    if (applicationContext != null) {
      Map beansWithAnnotation =
          applicationContext.getBeansWithAnnotation(SpringBootConfiguration.class);
      return beansWithAnnotation.values().stream()
          .map(bean -> bean.getClass().getPackage().getName())
          .collect(Collectors.toList());
    } else {
      return Collections.emptyList();
    }
  }

  @Override
  public void setApplicationContext(@NotNull ApplicationContext applicationContext)
      throws BeansException {
    this.applicationContext = applicationContext;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy