Skip to content

Instantly share code, notes, and snippets.

View ericomonteiro's full-sized avatar

Érico Cintra Monteiro ericomonteiro

View GitHub Profile
package ericomonteiro.com.github.catalog.enums
object CustomTags {
const val AUTHENTICATED_USER_ID = "authenticated-user-id"
}
package ericomonteiro.com.github.catalog.config
import ericomonteiro.com.github.catalog.config.interceptors.TagsTracingGeneratorInterceptor
import org.springframework.context.annotation.Configuration
import org.springframework.web.servlet.config.annotation.InterceptorRegistry
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer
@Configuration
class InterceptorConfig(
private val tagsTracingGeneratorInterceptor: TagsTracingGeneratorInterceptor
package ericomonteiro.com.github.catalog.config.interceptors
import ericomonteiro.com.github.catalog.enums.CustomTags
import io.opentracing.util.GlobalTracer
import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse
import org.jose4j.jwt.consumer.JwtConsumerBuilder
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.springframework.http.HttpHeaders
@Aspect
class TracingAspect {
@Around("execution (* feign.Client.*(..)) && !within(is(FinalType))")
public Object feignClientWasCalled(final ProceedingJoinPoint pjp) throws Throwable {
Object bean = pjp.getTarget();
if (!(bean instanceof TracingClient)) {
Object[] args = pjp.getArgs();
return new TracingClientBuilder((Client) bean, tracer)
.withFeignSpanDecorators(spanDecorators)
package ericomonteiro.com.github.sales.controller
import ericomonteiro.com.github.sales.httpclients.CatalogClient
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
@RestController
package ericomonteiro.com.github.sales.httpclients
import org.springframework.cloud.openfeign.FeignClient
import org.springframework.http.HttpHeaders
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestHeader
@FeignClient(value = "catalogClient", url = "\${catalog.httpclient.host}")
interface CatalogClient {
package ericomonteiro.com.github.catalog
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import org.springframework.cloud.openfeign.EnableFeignClients
@SpringBootApplication
@EnableFeignClients
class CatalogApplication
package ericomonteiro.com.github.catalog.controller
import ericomonteiro.com.github.catalog.httpclients.ViaCepClient
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
package ericomonteiro.com.github.catalog.httpclients
import org.springframework.cloud.openfeign.FeignClient
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
@FeignClient(value = "viaCepClient", url = "https://viacep.com.br")
interface ViaCepClient {
@GetMapping("/ws/{zipCode}/json/")
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>io.opentracing.contrib</groupId>
<artifactId>opentracing-spring-jaeger-cloud-starter</artifactId>
<version>3.3.1</version>
</dependency>