Quarkus Bookmarks

Published: 2020-05-05, Updated: 2021-10-24

Links

Iniciando um projeto

Gerando projeto para gradle

mvn io.quarkus:quarkus-maven-plugin:2.3.1.Final:create \
  -DprojectGroupId=my-groupId \
  -DprojectArtifactId=my-artifactId \
  -DprojectVersion=my-version \
  -DclassName="org.my.group.MyResource" \
  -Dextensions="resteasy-jsonb" \
  -DbuildTool=gradle

Beans

Eager initialization do Bean / Rodar codigo ao subir a app

Option 1

@Singletion
public class SomeBean {
  void onStart(@Observes StartupEvent ev) { 
  }
}

Option 2

@Startup
@Singletion
public class SomeBean {
  @PostConstruct
  void onStart() { 
  }
}

Ouvir deslagamento da app

public void close(@Observes ShutdownEvent event) throws Exception {
  this.consumerFactory.close();
}

Pegar um bean de forma estática

CDI.current().select(clazz).get()

Padrão de logs

quarkus.log.level=INFO
quarkus.log.category."io.agroal".level=TRACE
quarkus.log.category."org.apache.http.client.protocol.ResponseProcessCookies".level=ERROR
quarkus.log.console.format=%d{HH:mm:ss.SSS} [%15.-15t] %-3.3p %i %0.-35C m=%M:%L %m%n
%prod.quarkus.log.console.format=%d{yyyy-MM-dd HH:mm:ss.SSS} [%15.-15t] %-3.3p %i %0.-35C m=%M:%L %m%n

Gerar artefato no próprio site

Info sobre postagem/consumo kafka

Profiles

Comportamento dos profiles

Para forçar um profile

Variável de ambiente QUARKUS_PROFILE ou system property quarkus.profile

Pegar o profile atual

ProfileManager.getActiveProfile();

Testando e fazendo mocks de beans

Mocando um Bean (Forma 1)

@Inject
SteamAPI steamAPI;

@BeforeAll
static void beforeAll(){
  final var mock = mock(SteamAPI.class);
  doReturn("").when(mock).someCall(); // os mocks tem que ser feitos aqui nessa abordagem
  QuarkusMock.installMockForType(, SteamAPI.class);
}
@InjectMock
SteamAPI steamAPI;


@Test
void test(){
  doReturn("").when(mock).someCall(); 
  ....
}

Autenticação com Quarkus

Via anotação: Checar a role do usuário

@GET
@RolesAllowed("user")
@Path("/me")
@Produces(MediaType.TEXT_PLAIN)
public String me() {

Programaticamente: Checar a role do usuário

@GET
public boolean me(@Context SecurityContext securityContext) {
  return securityContext.isInRole("admin");
}

ou

import io.quarkus.security.identity.SecurityIdentity;


@Path("/api/users")
public class UserResource {
  @Inject
  SecurityIdentity securityIdentity;
  @GET
  public String me() {
    return securityIdentity.getPrincipal().getName();
  }
.....

Injetar HttpRequest

@Path("/api/public")
public class PublicResource {

  @GET
  @Produces(MediaType.TEXT_PLAIN)
  public String publicResource(@Context HttpRequest r) {

quarkus commands, quarkus examples


Isolamento Acústico de Parede / Orçamento Speed Run Resident Evil 4

Comments