Skip to content

Commit e99d25a

Browse files
feat: Set up project structure
0 parents  commit e99d25a

File tree

77 files changed

+4143
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+4143
-0
lines changed

.editorconfig

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# EditorConfig is awesome: https://EditorConfig.org
2+
3+
# top-most EditorConfig file
4+
root = true
5+
6+
[*]
7+
indent_style = space
8+
indent_size = 2
9+
end_of_line = lf
10+
charset = utf-8
11+
trim_trailing_whitespace = false
12+
insert_final_newline = false

.gitignore

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Ignore target directories
2+
**/target/
3+
4+
# Ignore Maven wrapper files
5+
**/.mvn/wrapper/maven-wrapper.jar
6+
7+
# Ignore IntelliJ IDEA project files
8+
**/.idea/
9+
**/*.iml
10+
11+
# Ignore Eclipse project files
12+
**/.project
13+
**/.classpath
14+
**/.settings/
15+
16+
# Ignore build directories
17+
**/build/
18+
19+
# Ignore log files
20+
**/*.log
21+
22+
# Ignore temporary files
23+
**/*.tmp
24+
**/*.swp
25+
**/*.swo
26+
27+
# Ignore OS generated files
28+
.DS_Store
29+
Thumbs.db

README.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# gRPC e GraphQL Setup
2+
3+
- Este repositório contém uma demonstração de como utilizar gRPC e GraphQL em aplicações Java. A seguir, estão os temas abordados:
4+
5+
## Demonstração de gRPC
6+
7+
- Exploramos o funcionamento do gRPC, um framework de comunicação de alto desempenho que utiliza HTTP/2 e Protobuf para serialização de dados.
8+
9+
## Aplicação com Spring Boot
10+
11+
- Criamos uma aplicação utilizando Spring Boot para implementar serviços gRPC. O Spring Boot facilita a configuração e a criação de aplicações Java.
12+
13+
## Aplicação com Quarkus
14+
15+
- Desenvolvemos uma aplicação utilizando Quarkus, um framework Java nativo para Kubernetes, que permite a criação de microserviços de alta performance com gRPC.
16+
17+
## Serviço Agregador com GraphQL
18+
19+
- Por fim, criamos um serviço agregador que se comunica com os serviços gRPC e serve os dados utilizando GraphQL. O GraphQL oferece uma maneira flexível e eficiente de consultar e manipular dados.
20+
21+
<br>
22+
23+
> Este repositório serve como um guia para entender e implementar gRPC e GraphQL em suas aplicações Java.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
target/
2+
!.mvn/wrapper/maven-wrapper.jar
3+
!**/src/main/**/target/
4+
!**/src/test/**/target/
5+
6+
### IntelliJ IDEA ###
7+
.idea/modules.xml
8+
.idea/jarRepositories.xml
9+
.idea/compiler.xml
10+
.idea/libraries/
11+
*.iws
12+
*.iml
13+
*.ipr
14+
15+
### Eclipse ###
16+
.apt_generated
17+
.classpath
18+
.factorypath
19+
.project
20+
.settings
21+
.springBeans
22+
.sts4-cache
23+
24+
### NetBeans ###
25+
/nbproject/private/
26+
/nbbuild/
27+
/dist/
28+
/nbdist/
29+
/.nb-gradle/
30+
build/
31+
!**/src/main/**/build/
32+
!**/src/test/**/build/
33+
34+
### VS Code ###
35+
.vscode/
36+
37+
### Mac OS ###
38+
.DS_Store
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<groupId>dev.ghlima</groupId>
8+
<artifactId>java-grpc-fiap-demo</artifactId>
9+
<version>1.0-SNAPSHOT</version>
10+
11+
<properties>
12+
<maven.compiler.source>21</maven.compiler.source>
13+
<maven.compiler.target>21</maven.compiler.target>
14+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
15+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
16+
<grpc.version>1.68.1</grpc.version>
17+
<protoc.version>3.25.1</protoc.version>
18+
<logback.version>1.5.6</logback.version>
19+
<jackson.version>2.17.2</jackson.version>
20+
<tomcat.annotations.version>6.0.53</tomcat.annotations.version>
21+
<os.maven.plugin.version>1.7.1</os.maven.plugin.version>
22+
<protobuf.maven.plugin.version>0.6.1</protobuf.maven.plugin.version>
23+
<junit.version>5.10.3</junit.version>
24+
<surefire.version>3.3.1</surefire.version>
25+
</properties>
26+
27+
<dependencies>
28+
<!-- grpc / proto related dependencies -->
29+
<dependency>
30+
<groupId>io.grpc</groupId>
31+
<artifactId>grpc-netty-shaded</artifactId>
32+
<version>${grpc.version}</version>
33+
</dependency>
34+
<dependency>
35+
<groupId>io.grpc</groupId>
36+
<artifactId>grpc-protobuf</artifactId>
37+
<version>${grpc.version}</version>
38+
</dependency>
39+
<dependency>
40+
<groupId>io.grpc</groupId>
41+
<artifactId>grpc-stub</artifactId>
42+
<version>${grpc.version}</version>
43+
</dependency>
44+
<!-- necessary for Java 9+ -->
45+
<dependency>
46+
<groupId>org.apache.tomcat</groupId>
47+
<artifactId>annotations-api</artifactId>
48+
<version>${tomcat.annotations.version}</version>
49+
<scope>provided</scope>
50+
</dependency>
51+
<!-- logback -->
52+
<dependency>
53+
<groupId>ch.qos.logback</groupId>
54+
<artifactId>logback-classic</artifactId>
55+
<version>${logback.version}</version>
56+
</dependency>
57+
<!-- Jackson lib for a performance test -->
58+
<dependency>
59+
<groupId>com.fasterxml.jackson.core</groupId>
60+
<artifactId>jackson-databind</artifactId>
61+
<version>${jackson.version}</version>
62+
</dependency>
63+
</dependencies>
64+
65+
66+
<build>
67+
<extensions>
68+
<extension>
69+
<groupId>kr.motd.maven</groupId>
70+
<artifactId>os-maven-plugin</artifactId>
71+
<version>${os.maven.plugin.version}</version>
72+
</extension>
73+
</extensions>
74+
<plugins>
75+
<plugin>
76+
<groupId>org.apache.maven.plugins</groupId>
77+
<artifactId>maven-compiler-plugin</artifactId>
78+
<configuration>
79+
<source>21</source>
80+
<target>21</target>
81+
</configuration>
82+
</plugin>
83+
<plugin>
84+
<groupId>org.apache.maven.plugins</groupId>
85+
<artifactId>maven-surefire-plugin</artifactId>
86+
<version>${surefire.version}</version>
87+
</plugin>
88+
<plugin>
89+
<groupId>org.xolstice.maven.plugins</groupId>
90+
<artifactId>protobuf-maven-plugin</artifactId>
91+
<version>${protobuf.maven.plugin.version}</version>
92+
<configuration>
93+
<protocArtifact>com.google.protobuf:protoc:${protoc.version}:exe:${os.detected.classifier}
94+
</protocArtifact>
95+
<pluginId>grpc-java</pluginId>
96+
<pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}
97+
</pluginArtifact>
98+
<protoSourceRoot>
99+
${basedir}/src/main/proto/
100+
</protoSourceRoot>
101+
</configuration>
102+
<executions>
103+
<execution>
104+
<goals>
105+
<goal>compile</goal>
106+
<goal>compile-custom</goal>
107+
</goals>
108+
</execution>
109+
</executions>
110+
</plugin>
111+
</plugins>
112+
</build>
113+
114+
</project>
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package dev.ghlima;
2+
3+
import dev.ghlima.veiculo.Veiculo;
4+
import org.slf4j.Logger;
5+
import org.slf4j.LoggerFactory;
6+
7+
public class Demo {
8+
9+
private static final Logger log = LoggerFactory.getLogger(Demo.class);
10+
11+
public static void main(String[] args) {
12+
13+
var veiculo = Veiculo.newBuilder()
14+
.setId(1)
15+
.setAno(2021)
16+
.setModelo("Fusca")
17+
.setMarca("Volkswagen")
18+
.build();
19+
20+
21+
log.info("Veiculo: {}", veiculo);
22+
23+
}
24+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package dev.ghlima;
2+
3+
import dev.ghlima.veiculo.Veiculo;
4+
import org.slf4j.Logger;
5+
import org.slf4j.LoggerFactory;
6+
7+
public class Demo2 {
8+
private static final Logger log = LoggerFactory.getLogger(Demo2.class);
9+
10+
public static void main(String[] args) {
11+
12+
13+
14+
//criar um veiculo
15+
var veiculo1 = criaVeiculo();
16+
17+
//criar outro veiculo com uma nova instancia porem mesmos valores
18+
var veivulo2 = criaVeiculo();
19+
20+
//comparar os veiculos
21+
log.info("equals {}", veiculo1.equals(veivulo2));
22+
log.info("== {}", (veiculo1 == veivulo2));
23+
24+
25+
var veiculo3 = veiculo1.toBuilder().setModelo("Gol").build();
26+
log.info("Veiculo 3: {}", veiculo3);
27+
28+
29+
//comparar os veiculos
30+
log.info("equals {}", veiculo1.equals(veiculo3));
31+
log.info("== {}", (veiculo1 == veiculo3));
32+
33+
//null?
34+
var veiculo4 = veiculo3.toBuilder().clearAno().build();
35+
log.info("Veiculo 4: {}", veiculo4);
36+
37+
}
38+
39+
public static Veiculo criaVeiculo() {
40+
return Veiculo.newBuilder()
41+
.setId(1)
42+
.setAno(2021)
43+
.setModelo("Fusca")
44+
.setMarca("Volkswagen")
45+
.build();
46+
}
47+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package dev.ghlima;
2+
3+
import dev.ghlima.demos.composition.Endereco;
4+
import dev.ghlima.demos.composition.Pessoa;
5+
import org.slf4j.Logger;
6+
import org.slf4j.LoggerFactory;
7+
8+
public class Demo3 {
9+
private static final Logger log = LoggerFactory.getLogger(Demo3.class);
10+
11+
public static void main(String[] args) {
12+
13+
var endereco = Endereco.newBuilder()
14+
.setRua("Rua das Flores")
15+
.setBairro("Centro")
16+
.setCidade("São Paulo")
17+
.setEstado("SP")
18+
.setCep("12345-678")
19+
.build();
20+
21+
var pessoa = Pessoa.newBuilder()
22+
.setNome("João")
23+
.setCpf("99999999999")
24+
.setRg("99999999999")
25+
.setEndereco(endereco)
26+
.build();
27+
28+
var pessoa2 = Pessoa.newBuilder()
29+
.setNome("Maria")
30+
.setCpf("88888888888")
31+
.setRg("888888888888")
32+
.setEndereco(endereco.toBuilder().setRua("Rua das Rosas").setCep("12313-1231").build())
33+
.build();
34+
35+
36+
log.info("Pessoa: {}", pessoa);
37+
log.info("Pessoa 2: {}", pessoa2);
38+
log.info("Endereco: {}", pessoa.getEndereco());
39+
log.info("Endereco 2: {}", pessoa2.getEndereco());
40+
41+
}
42+
}

0 commit comments

Comments
 (0)