Skip to content

Commit e81d705

Browse files
committed
Atualizações gerais
1 parent 9a786fd commit e81d705

File tree

12 files changed

+83
-23
lines changed

12 files changed

+83
-23
lines changed

estruturais/01-adapter/captcha-adapters-v1/README.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,5 @@ aplicando o padrão de projetos Adapter. As bibliotecas adaptadas são:
1717

1818
- https://github.com/mewebstudio/java-captcha-generator[Java Captcha Generator]
1919
- https://github.com/logicsquad/nanocaptcha[Nano Captcha]
20+
21+
Você pode ver um vídeo sobre como foi feita esta implementação em https://youtu.be/ToG-RkqFmhI

estruturais/01-adapter/captcha-adapters-v1/pom.xml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>org.springframework.boot</groupId>
77
<artifactId>spring-boot-starter-parent</artifactId>
8-
<version>3.1.5</version>
8+
<version>3.5.4</version>
99
<relativePath/> <!-- lookup parent from repository -->
1010
</parent>
1111
<groupId>io.github.manoelcampos</groupId>
@@ -14,7 +14,7 @@
1414
<name>captcha-adapters</name>
1515
<description>Um projeto de exemplo de como adapter bibliotecas de geração offline de captcha</description>
1616
<properties>
17-
<java.version>17</java.version>
17+
<java.version>21</java.version>
1818
</properties>
1919
<dependencies>
2020
<dependency>
@@ -30,11 +30,15 @@
3030
<version>2.1</version>
3131
</dependency>
3232

33-
<dependency>
33+
<!--region Spring Dependencies-->
34+
<dependency>
3435
<groupId>org.springframework.boot</groupId>
3536
<artifactId>spring-boot-starter-web</artifactId>
3637
</dependency>
37-
38+
<dependency>
39+
<groupId>org.springframework.boot</groupId>
40+
<artifactId>spring-boot-starter-validation</artifactId>
41+
</dependency>
3842
<dependency>
3943
<groupId>org.springframework.boot</groupId>
4044
<artifactId>spring-boot-devtools</artifactId>
@@ -51,6 +55,7 @@
5155
<artifactId>spring-boot-starter-test</artifactId>
5256
<scope>test</scope>
5357
</dependency>
58+
<!--endregion-->
5459
</dependencies>
5560

5661
<build>
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.github.manoelcampos.captchaadapters.adapter;
22

3+
import java.util.Objects;
4+
35
/**
46
* @author Manoel Campos
57
*/
@@ -8,6 +10,6 @@ abstract class AbstractCaptchaAdapter implements CaptchaAdapter {
810

911
@Override
1012
public String getCodigo() {
11-
return codigo == null ? "" : codigo;
13+
return Objects.requireNonNullElse(codigo, "");
1214
}
1315
}

estruturais/01-adapter/captcha-adapters-v1/src/main/java/io/github/manoelcampos/captchaadapters/adapter/CaptchaAdapter.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414
public interface CaptchaAdapter {
1515
byte[] gerar();
1616

17-
default boolean isValido(final String codigo){
18-
// Faz comparação garantindo que não dará NullPointerException em caso algum dos parâmetros seja Null
19-
return Objects.equals(codigo, getCodigo());
17+
default boolean isValido(String codigo){
18+
codigo = Objects.requireNonNullElse(codigo, "");
19+
return codigo.equalsIgnoreCase(getCodigo());
2020
}
2121

2222
String getCodigo();

estruturais/01-adapter/captcha-adapters-v1/src/main/java/io/github/manoelcampos/captchaadapters/controllers/CaptchaController.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package io.github.manoelcampos.captchaadapters.controllers;
22

33
import io.github.manoelcampos.captchaadapters.adapter.CaptchaAdapter;
4+
import jakarta.validation.Valid;
5+
import jakarta.validation.constraints.NotNull;
46
import org.springframework.beans.factory.annotation.Autowired;
57
import org.springframework.http.MediaType;
68
import org.springframework.web.bind.annotation.GetMapping;
@@ -28,7 +30,7 @@ public byte[] gerar(){
2830
}
2931

3032
@GetMapping("/confirmar/{codigo}")
31-
public boolean confirmar(@PathVariable final String codigo){
33+
public boolean confirmar(@PathVariable @Valid @NotNull final String codigo){
3234
return captcha.isValido(codigo);
3335
}
3436
}

estruturais/01-adapter/captcha-adapters-v2-template-method/pom.xml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>org.springframework.boot</groupId>
77
<artifactId>spring-boot-starter-parent</artifactId>
8-
<version>3.1.5</version>
8+
<version>3.5.4</version>
99
<relativePath/> <!-- lookup parent from repository -->
1010
</parent>
1111
<groupId>io.github.manoelcampos</groupId>
@@ -14,7 +14,7 @@
1414
<name>captcha-adapters-template-method</name>
1515
<description>Um projeto de exemplo de como adapter bibliotecas de geração offline de captcha e ainda implementar o padrão template method para remover duplicação de código</description>
1616
<properties>
17-
<java.version>17</java.version>
17+
<java.version>21</java.version>
1818
</properties>
1919
<dependencies>
2020
<dependency>
@@ -30,11 +30,15 @@
3030
<version>1.5</version>
3131
</dependency>
3232

33-
<dependency>
33+
<!--region Spring Dependencies-->
34+
<dependency>
3435
<groupId>org.springframework.boot</groupId>
3536
<artifactId>spring-boot-starter-web</artifactId>
3637
</dependency>
37-
38+
<dependency>
39+
<groupId>org.springframework.boot</groupId>
40+
<artifactId>spring-boot-starter-validation</artifactId>
41+
</dependency>
3842
<dependency>
3943
<groupId>org.springframework.boot</groupId>
4044
<artifactId>spring-boot-devtools</artifactId>
@@ -51,6 +55,7 @@
5155
<artifactId>spring-boot-starter-test</artifactId>
5256
<scope>test</scope>
5357
</dependency>
58+
<!--endregion-->
5459
</dependencies>
5560

5661
<build>

estruturais/01-adapter/captcha-adapters-v2-template-method/src/main/java/io/github/manoelcampos/captchaadapters/adapter/CaptchaAdapter.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414
public interface CaptchaAdapter {
1515
byte[] gerar();
1616

17-
default boolean isValido(final String codigo){
18-
// Faz comparação garantindo que não dará NullPointerException em caso algum dos parâmetros seja Null
19-
return Objects.equals(codigo, getCodigo());
17+
default boolean isValido(String codigo){
18+
codigo = Objects.requireNonNullElse(codigo, "");
19+
return codigo.equalsIgnoreCase(getCodigo());
2020
}
2121

2222
String getCodigo();

estruturais/01-adapter/captcha-adapters-v2-template-method/src/main/java/io/github/manoelcampos/captchaadapters/controllers/CaptchaController.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package io.github.manoelcampos.captchaadapters.controllers;
22

33
import io.github.manoelcampos.captchaadapters.adapter.CaptchaAdapter;
4+
import jakarta.validation.Valid;
5+
import jakarta.validation.constraints.NotNull;
46
import lombok.AllArgsConstructor;
57
import org.springframework.http.MediaType;
68
import org.springframework.web.bind.annotation.*;
@@ -25,7 +27,7 @@ public byte[] gerar(){
2527
}
2628

2729
@GetMapping("/confirmar/{codigo}")
28-
public boolean confirmar(@PathVariable final String codigo){
30+
public boolean confirmar(@PathVariable @Valid @NotNull final String codigo){
2931
return captcha.isValido(codigo);
3032
}
3133
}

estruturais/01-adapter/captcha-v1-sem-adapter/pom.xml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>org.springframework.boot</groupId>
77
<artifactId>spring-boot-starter-parent</artifactId>
8-
<version>3.1.5</version>
8+
<version>3.5.4</version>
99
<relativePath/> <!-- lookup parent from repository -->
1010
</parent>
1111
<groupId>io.github.manoelcampos</groupId>
@@ -14,7 +14,7 @@
1414
<name>captcha-adapters</name>
1515
<description>Um projeto de exemplo de como adapter bibliotecas de geração offline de captcha</description>
1616
<properties>
17-
<java.version>17</java.version>
17+
<java.version>21</java.version>
1818
</properties>
1919
<dependencies>
2020
<dependency>
@@ -30,11 +30,15 @@
3030
<version>2.1</version>
3131
</dependency>
3232

33+
<!--region Spring Dependencies-->
34+
<dependency>
35+
<groupId>org.springframework.boot</groupId>
36+
<artifactId>spring-boot-starter-validation</artifactId>
37+
</dependency>
3338
<dependency>
3439
<groupId>org.springframework.boot</groupId>
3540
<artifactId>spring-boot-starter-web</artifactId>
3641
</dependency>
37-
3842
<dependency>
3943
<groupId>org.springframework.boot</groupId>
4044
<artifactId>spring-boot-devtools</artifactId>
@@ -51,6 +55,7 @@
5155
<artifactId>spring-boot-starter-test</artifactId>
5256
<scope>test</scope>
5357
</dependency>
58+
<!--endregion-->
5459
</dependencies>
5560

5661
<build>

estruturais/01-adapter/captcha-v1-sem-adapter/src/main/java/io/github/manoelcampos/captchaadapters/controllers/CaptchaController.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
package io.github.manoelcampos.captchaadapters.controllers;
22

33
import com.mewebstudio.captcha.Captcha;
4+
5+
import java.util.Objects;
6+
47
import com.mewebstudio.captcha.GeneratedCaptcha;
8+
import jakarta.validation.Valid;
9+
import jakarta.validation.constraints.NotNull;
510
import org.springframework.http.MediaType;
611
import org.springframework.web.bind.annotation.GetMapping;
712
import org.springframework.web.bind.annotation.PathVariable;
@@ -27,7 +32,7 @@ public byte[] gerar(){
2732
}
2833

2934
@GetMapping("/confirmar/{codigo}")
30-
public boolean confirmar(@PathVariable final String codigo){
31-
return generatedCaptcha != null && codigo.equals(generatedCaptcha.getCode());
35+
public boolean confirmar(@PathVariable @Valid @NotNull final String codigo){
36+
return generatedCaptcha != null && codigo.equalsIgnoreCase(generatedCaptcha.getCode());
3237
}
3338
}

0 commit comments

Comments
 (0)