From 2024071476d32f7ea184368a343bc0f298b21ed2 Mon Sep 17 00:00:00 2001
From: gortazar <203272+gortazar@users.noreply.github.com>
Date: Sat, 4 Apr 2026 16:43:42 +0000
Subject: [PATCH 01/12] upgrade: Spring Boot to 4.0.5 and Java to 21
---
parte_2/tema_2.2_web/web_ejem1/pom.xml | 4 ++--
parte_2/tema_2.2_web/web_ejem2/pom.xml | 4 ++--
parte_2/tema_2.2_web/web_ejem3/pom.xml | 4 ++--
parte_2/tema_2.2_web/web_ejem4/pom.xml | 4 ++--
parte_2/tema_2.2_web/web_ejem5/pom.xml | 4 ++--
parte_2/tema_2.2_web/web_ejem6/pom.xml | 4 ++--
parte_2/tema_2.2_web/web_ejem7/pom.xml | 4 ++--
parte_2/tema_2.2_web/web_ejem8/pom.xml | 4 ++--
parte_2/tema_2.2_web/web_ejem8b/pom.xml | 4 ++--
parte_2/tema_2.2_web/web_ejer1/pom.xml | 4 ++--
parte_2/tema_2.2_web/web_ejer1b/pom.xml | 4 ++--
parte_2/tema_2.2_web/web_ejer2/pom.xml | 4 ++--
parte_2/tema_2.2_web/web_ejer3/pom.xml | 4 ++--
parte_2/tema_2.2_web/web_ejer3_devtools/pom.xml | 4 ++--
parte_2/tema_2.2_web/web_ejer4/pom.xml | 4 ++--
parte_2/tema_2.2_web/web_ejer5/pom.xml | 4 ++--
parte_2/tema_2.2_web/web_ejer6/pom.xml | 4 ++--
parte_2/tema_2.2_web/web_ejer7/pom.xml | 4 ++--
parte_2/tema_2.3_rest/rest_ejem1/pom.xml | 4 ++--
parte_2/tema_2.3_rest/rest_ejem10/pom.xml | 4 ++--
parte_2/tema_2.3_rest/rest_ejem11/pom.xml | 4 ++--
parte_2/tema_2.3_rest/rest_ejem2/pom.xml | 4 ++--
parte_2/tema_2.3_rest/rest_ejem3/pom.xml | 4 ++--
parte_2/tema_2.3_rest/rest_ejem4/pom.xml | 4 ++--
parte_2/tema_2.3_rest/rest_ejem5/pom.xml | 4 ++--
parte_2/tema_2.3_rest/rest_ejem6/pom.xml | 4 ++--
parte_2/tema_2.3_rest/rest_ejem7/pom.xml | 4 ++--
parte_2/tema_2.3_rest/rest_ejem8/pom.xml | 4 ++--
parte_2/tema_2.3_rest/rest_ejem9/pom.xml | 4 ++--
parte_2/tema_2.3_rest/rest_ejer1/pom.xml | 4 ++--
parte_2/tema_2.5_db/bd_ejem1/pom.xml | 4 ++--
parte_2/tema_2.5_db/bd_ejem10/pom.xml | 4 ++--
parte_2/tema_2.5_db/bd_ejem11/pom.xml | 4 ++--
parte_2/tema_2.5_db/bd_ejem12/pom.xml | 4 ++--
parte_2/tema_2.5_db/bd_ejem13/pom.xml | 4 ++--
parte_2/tema_2.5_db/bd_ejem14/pom.xml | 4 ++--
parte_2/tema_2.5_db/bd_ejem15/pom.xml | 4 ++--
parte_2/tema_2.5_db/bd_ejem16/pom.xml | 4 ++--
parte_2/tema_2.5_db/bd_ejem17/pom.xml | 4 ++--
parte_2/tema_2.5_db/bd_ejem18/pom.xml | 4 ++--
parte_2/tema_2.5_db/bd_ejem19/pom.xml | 4 ++--
parte_2/tema_2.5_db/bd_ejem2/pom.xml | 4 ++--
parte_2/tema_2.5_db/bd_ejem20/pom.xml | 4 ++--
parte_2/tema_2.5_db/bd_ejem21/pom.xml | 4 ++--
parte_2/tema_2.5_db/bd_ejem22/pom.xml | 4 ++--
parte_2/tema_2.5_db/bd_ejem3/pom.xml | 4 ++--
parte_2/tema_2.5_db/bd_ejem4/pom.xml | 4 ++--
parte_2/tema_2.5_db/bd_ejem5/pom.xml | 4 ++--
parte_2/tema_2.5_db/bd_ejem6/pom.xml | 4 ++--
parte_2/tema_2.5_db/bd_ejem7/pom.xml | 4 ++--
parte_2/tema_2.5_db/bd_ejem8/pom.xml | 4 ++--
parte_2/tema_2.5_db/bd_ejem9/pom.xml | 4 ++--
parte_2/tema_2.5_db/bd_ejer1/pom.xml | 4 ++--
parte_2/tema_2.5_db/bd_ejer2/pom.xml | 4 ++--
parte_2/tema_2.6_despliegue/despliegue_ejem1/pom.xml | 4 ++--
parte_2/tema_2.6_despliegue/despliegue_ejem2/pom.xml | 4 ++--
.../comunicacion-rabbitmq-ejem1-consumer/pom.xml | 4 ++--
.../comunicacion-rabbitmq-ejem1-producer/pom.xml | 4 ++--
.../comunicacion-rabbitmq-ejem2-consumer/pom.xml | 4 ++--
.../comunicacion-rabbitmq-ejem2-producer/pom.xml | 4 ++--
.../comunicacion-rabbitmq-ejem3-client/pom.xml | 4 ++--
.../comunicacion-rabbitmq-ejem3-service/pom.xml | 4 ++--
parte_3/tema_3.2_websockets/comunicacion-ws-ejem1/pom.xml | 4 ++--
parte_3/tema_3.2_websockets/comunicacion-ws-ejem2/pom.xml | 4 ++--
parte_4/tema_4.2/aplicacion-java-enunciado/pom.xml | 4 ++--
parte_4/tema_4.2/ejemplo-1/pom.xml | 2 +-
parte_4/tema_4.2/ejemplo-2/pom.xml | 6 +++---
parte_4/tema_4.2/ejer4/aplicacion-java-enunciado/pom.xml | 4 ++--
parte_4/tema_4.2/ejer5/aplicacion-java-enunciado/pom.xml | 4 ++--
parte_4/tema_4.2/ejer6/pom.xml | 4 ++--
parte_4/tema_4.2/ejer7/pom.xml | 4 ++--
parte_4/tema_4.2/ejer8/pom.xml | 4 ++--
.../ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/pom.xml | 4 ++--
.../ejemplo-1/comunicacion-rabbitmq-ejem3-producer/pom.xml | 4 ++--
parte_4/tema_4.3/ejemplo-2/pom.xml | 4 ++--
parte_4/tema_4.3/ejemplo-3/pom.xml | 4 ++--
parte_4/tema_4.3/ejercicio-1-enunciado/pom.xml | 4 ++--
parte_4/tema_4.3/ejercicio-1/pom.xml | 4 ++--
parte_5/ejem0-jmeter/pom.xml | 2 +-
parte_5/ejem1-mysql/pom.xml | 2 +-
parte_5/ejem2-cache/pom.xml | 2 +-
parte_5/ejem3-cache-distribuida/pom.xml | 4 ++--
parte_5/ejem3-cache-distribuida2/pom.xml | 2 +-
parte_5/ejem4-haproxy/pom.xml | 2 +-
parte_5/ejem4b-haproxy-ssl-passthrough/pom.xml | 4 ++--
85 files changed, 165 insertions(+), 165 deletions(-)
diff --git a/parte_2/tema_2.2_web/web_ejem1/pom.xml b/parte_2/tema_2.2_web/web_ejem1/pom.xml
index 48f5e96..9d4c7cd 100644
--- a/parte_2/tema_2.2_web/web_ejem1/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejem1/pom.xml
@@ -12,13 +12,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.5.8
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.2_web/web_ejem2/pom.xml b/parte_2/tema_2.2_web/web_ejem2/pom.xml
index b8a5dda..0c11abe 100644
--- a/parte_2/tema_2.2_web/web_ejem2/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejem2/pom.xml
@@ -12,13 +12,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.5.8
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.2_web/web_ejem3/pom.xml b/parte_2/tema_2.2_web/web_ejem3/pom.xml
index 0f78b5e..7945a59 100644
--- a/parte_2/tema_2.2_web/web_ejem3/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejem3/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.5.8
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.2_web/web_ejem4/pom.xml b/parte_2/tema_2.2_web/web_ejem4/pom.xml
index 027b22f..ce54dd3 100644
--- a/parte_2/tema_2.2_web/web_ejem4/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejem4/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.5.8
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.2_web/web_ejem5/pom.xml b/parte_2/tema_2.2_web/web_ejem5/pom.xml
index b4327a1..ca12035 100644
--- a/parte_2/tema_2.2_web/web_ejem5/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejem5/pom.xml
@@ -12,13 +12,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.5.8
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.2_web/web_ejem6/pom.xml b/parte_2/tema_2.2_web/web_ejem6/pom.xml
index dcd6b21..2041b18 100644
--- a/parte_2/tema_2.2_web/web_ejem6/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejem6/pom.xml
@@ -12,13 +12,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.5.8
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.2_web/web_ejem7/pom.xml b/parte_2/tema_2.2_web/web_ejem7/pom.xml
index 1077085..f9237fa 100644
--- a/parte_2/tema_2.2_web/web_ejem7/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejem7/pom.xml
@@ -12,13 +12,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.5.8
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.2_web/web_ejem8/pom.xml b/parte_2/tema_2.2_web/web_ejem8/pom.xml
index 5853d58..7a0a291 100644
--- a/parte_2/tema_2.2_web/web_ejem8/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejem8/pom.xml
@@ -12,13 +12,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.5.8
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.2_web/web_ejem8b/pom.xml b/parte_2/tema_2.2_web/web_ejem8b/pom.xml
index 3e8d5a1..64996b7 100644
--- a/parte_2/tema_2.2_web/web_ejem8b/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejem8b/pom.xml
@@ -12,13 +12,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.2_web/web_ejer1/pom.xml b/parte_2/tema_2.2_web/web_ejer1/pom.xml
index 9198f67..1ba63e2 100644
--- a/parte_2/tema_2.2_web/web_ejer1/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejer1/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.2_web/web_ejer1b/pom.xml b/parte_2/tema_2.2_web/web_ejer1b/pom.xml
index f75cb86..c2f5693 100644
--- a/parte_2/tema_2.2_web/web_ejer1b/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejer1b/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.2_web/web_ejer2/pom.xml b/parte_2/tema_2.2_web/web_ejer2/pom.xml
index 2e938de..0d5aaf5 100644
--- a/parte_2/tema_2.2_web/web_ejer2/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejer2/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.2_web/web_ejer3/pom.xml b/parte_2/tema_2.2_web/web_ejer3/pom.xml
index ce69487..72bd1e5 100644
--- a/parte_2/tema_2.2_web/web_ejer3/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejer3/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.2_web/web_ejer3_devtools/pom.xml b/parte_2/tema_2.2_web/web_ejer3_devtools/pom.xml
index 8b0c99d..49ba101 100644
--- a/parte_2/tema_2.2_web/web_ejer3_devtools/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejer3_devtools/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.2_web/web_ejer4/pom.xml b/parte_2/tema_2.2_web/web_ejer4/pom.xml
index 018fdff..1c6a538 100644
--- a/parte_2/tema_2.2_web/web_ejer4/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejer4/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.2_web/web_ejer5/pom.xml b/parte_2/tema_2.2_web/web_ejer5/pom.xml
index 701932f..bb46b89 100644
--- a/parte_2/tema_2.2_web/web_ejer5/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejer5/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.2_web/web_ejer6/pom.xml b/parte_2/tema_2.2_web/web_ejer6/pom.xml
index e53bee6..9f514ba 100644
--- a/parte_2/tema_2.2_web/web_ejer6/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejer6/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.2_web/web_ejer7/pom.xml b/parte_2/tema_2.2_web/web_ejer7/pom.xml
index 9b8484d..b3e1c41 100644
--- a/parte_2/tema_2.2_web/web_ejer7/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejer7/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.5.8
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.3_rest/rest_ejem1/pom.xml b/parte_2/tema_2.3_rest/rest_ejem1/pom.xml
index fffd993..c1f4a8b 100644
--- a/parte_2/tema_2.3_rest/rest_ejem1/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejem1/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.3_rest/rest_ejem10/pom.xml b/parte_2/tema_2.3_rest/rest_ejem10/pom.xml
index 676012d..f0c35a3 100644
--- a/parte_2/tema_2.3_rest/rest_ejem10/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejem10/pom.xml
@@ -12,13 +12,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.3_rest/rest_ejem11/pom.xml b/parte_2/tema_2.3_rest/rest_ejem11/pom.xml
index dbd0172..21dd8a4 100644
--- a/parte_2/tema_2.3_rest/rest_ejem11/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejem11/pom.xml
@@ -12,13 +12,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.3_rest/rest_ejem2/pom.xml b/parte_2/tema_2.3_rest/rest_ejem2/pom.xml
index 79836c0..9844d3f 100644
--- a/parte_2/tema_2.3_rest/rest_ejem2/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejem2/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.3_rest/rest_ejem3/pom.xml b/parte_2/tema_2.3_rest/rest_ejem3/pom.xml
index f11b93f..6bc6656 100644
--- a/parte_2/tema_2.3_rest/rest_ejem3/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejem3/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.3_rest/rest_ejem4/pom.xml b/parte_2/tema_2.3_rest/rest_ejem4/pom.xml
index 63737e2..ad5693f 100644
--- a/parte_2/tema_2.3_rest/rest_ejem4/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejem4/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.3_rest/rest_ejem5/pom.xml b/parte_2/tema_2.3_rest/rest_ejem5/pom.xml
index b1e22ee..1059f35 100644
--- a/parte_2/tema_2.3_rest/rest_ejem5/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejem5/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.3_rest/rest_ejem6/pom.xml b/parte_2/tema_2.3_rest/rest_ejem6/pom.xml
index b530e4d..4fbb0c3 100644
--- a/parte_2/tema_2.3_rest/rest_ejem6/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejem6/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.3_rest/rest_ejem7/pom.xml b/parte_2/tema_2.3_rest/rest_ejem7/pom.xml
index e497724..f3ff67b 100644
--- a/parte_2/tema_2.3_rest/rest_ejem7/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejem7/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.3_rest/rest_ejem8/pom.xml b/parte_2/tema_2.3_rest/rest_ejem8/pom.xml
index 7e97173..9504f9a 100644
--- a/parte_2/tema_2.3_rest/rest_ejem8/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejem8/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.3_rest/rest_ejem9/pom.xml b/parte_2/tema_2.3_rest/rest_ejem9/pom.xml
index b8cf8e9..d6322df 100644
--- a/parte_2/tema_2.3_rest/rest_ejem9/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejem9/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.3_rest/rest_ejer1/pom.xml b/parte_2/tema_2.3_rest/rest_ejer1/pom.xml
index 873a03a..2ff1a03 100644
--- a/parte_2/tema_2.3_rest/rest_ejer1/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejer1/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.5_db/bd_ejem1/pom.xml b/parte_2/tema_2.5_db/bd_ejem1/pom.xml
index a5e03ed..b095d54 100644
--- a/parte_2/tema_2.5_db/bd_ejem1/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem1/pom.xml
@@ -11,12 +11,12 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.5_db/bd_ejem10/pom.xml b/parte_2/tema_2.5_db/bd_ejem10/pom.xml
index ed211f3..2342c90 100644
--- a/parte_2/tema_2.5_db/bd_ejem10/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem10/pom.xml
@@ -11,12 +11,12 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.5_db/bd_ejem11/pom.xml b/parte_2/tema_2.5_db/bd_ejem11/pom.xml
index 566b08a..b852580 100644
--- a/parte_2/tema_2.5_db/bd_ejem11/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem11/pom.xml
@@ -10,12 +10,12 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.5_db/bd_ejem12/pom.xml b/parte_2/tema_2.5_db/bd_ejem12/pom.xml
index ad5749f..63d3b68 100644
--- a/parte_2/tema_2.5_db/bd_ejem12/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem12/pom.xml
@@ -11,12 +11,12 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.5_db/bd_ejem13/pom.xml b/parte_2/tema_2.5_db/bd_ejem13/pom.xml
index 65cb149..7a485f4 100644
--- a/parte_2/tema_2.5_db/bd_ejem13/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem13/pom.xml
@@ -10,13 +10,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.5_db/bd_ejem14/pom.xml b/parte_2/tema_2.5_db/bd_ejem14/pom.xml
index 9a039d9..9719c19 100644
--- a/parte_2/tema_2.5_db/bd_ejem14/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem14/pom.xml
@@ -11,12 +11,12 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.5_db/bd_ejem15/pom.xml b/parte_2/tema_2.5_db/bd_ejem15/pom.xml
index 4ea2f6a..af5b2cb 100644
--- a/parte_2/tema_2.5_db/bd_ejem15/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem15/pom.xml
@@ -11,12 +11,12 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.5_db/bd_ejem16/pom.xml b/parte_2/tema_2.5_db/bd_ejem16/pom.xml
index 06e3252..81998c1 100644
--- a/parte_2/tema_2.5_db/bd_ejem16/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem16/pom.xml
@@ -11,12 +11,12 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.5_db/bd_ejem17/pom.xml b/parte_2/tema_2.5_db/bd_ejem17/pom.xml
index 71d2128..94d5986 100644
--- a/parte_2/tema_2.5_db/bd_ejem17/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem17/pom.xml
@@ -11,12 +11,12 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.5_db/bd_ejem18/pom.xml b/parte_2/tema_2.5_db/bd_ejem18/pom.xml
index 3c201cc..d8b3b45 100644
--- a/parte_2/tema_2.5_db/bd_ejem18/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem18/pom.xml
@@ -10,13 +10,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.5_db/bd_ejem19/pom.xml b/parte_2/tema_2.5_db/bd_ejem19/pom.xml
index 98a226b..ce050d1 100644
--- a/parte_2/tema_2.5_db/bd_ejem19/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem19/pom.xml
@@ -10,13 +10,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.5_db/bd_ejem2/pom.xml b/parte_2/tema_2.5_db/bd_ejem2/pom.xml
index c7d3195..7ff1722 100644
--- a/parte_2/tema_2.5_db/bd_ejem2/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem2/pom.xml
@@ -11,12 +11,12 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.5_db/bd_ejem20/pom.xml b/parte_2/tema_2.5_db/bd_ejem20/pom.xml
index 43ef84e..5dcec14 100644
--- a/parte_2/tema_2.5_db/bd_ejem20/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem20/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.5_db/bd_ejem21/pom.xml b/parte_2/tema_2.5_db/bd_ejem21/pom.xml
index 2d00c8f..af511c1 100644
--- a/parte_2/tema_2.5_db/bd_ejem21/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem21/pom.xml
@@ -11,12 +11,12 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.5_db/bd_ejem22/pom.xml b/parte_2/tema_2.5_db/bd_ejem22/pom.xml
index fdebb5e..a2b3cf0 100644
--- a/parte_2/tema_2.5_db/bd_ejem22/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem22/pom.xml
@@ -11,12 +11,12 @@
org.springframework.boot
spring-boot-starter-parent
- 3.5.8
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.5_db/bd_ejem3/pom.xml b/parte_2/tema_2.5_db/bd_ejem3/pom.xml
index d40ed04..65c6fab 100644
--- a/parte_2/tema_2.5_db/bd_ejem3/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem3/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.5_db/bd_ejem4/pom.xml b/parte_2/tema_2.5_db/bd_ejem4/pom.xml
index ad93b74..1a1d012 100644
--- a/parte_2/tema_2.5_db/bd_ejem4/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem4/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.5_db/bd_ejem5/pom.xml b/parte_2/tema_2.5_db/bd_ejem5/pom.xml
index 8d44eca..41b3673 100644
--- a/parte_2/tema_2.5_db/bd_ejem5/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem5/pom.xml
@@ -11,12 +11,12 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.5_db/bd_ejem6/pom.xml b/parte_2/tema_2.5_db/bd_ejem6/pom.xml
index 44b3ec6..0e7b58c 100644
--- a/parte_2/tema_2.5_db/bd_ejem6/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem6/pom.xml
@@ -11,12 +11,12 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.5_db/bd_ejem7/pom.xml b/parte_2/tema_2.5_db/bd_ejem7/pom.xml
index 29cba84..f554648 100644
--- a/parte_2/tema_2.5_db/bd_ejem7/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem7/pom.xml
@@ -11,12 +11,12 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.5_db/bd_ejem8/pom.xml b/parte_2/tema_2.5_db/bd_ejem8/pom.xml
index 91e2320..eeee7f0 100644
--- a/parte_2/tema_2.5_db/bd_ejem8/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem8/pom.xml
@@ -11,12 +11,12 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.5_db/bd_ejem9/pom.xml b/parte_2/tema_2.5_db/bd_ejem9/pom.xml
index bc83c09..1d370e9 100644
--- a/parte_2/tema_2.5_db/bd_ejem9/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem9/pom.xml
@@ -11,12 +11,12 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.5_db/bd_ejer1/pom.xml b/parte_2/tema_2.5_db/bd_ejer1/pom.xml
index 8b2a758..1c92b35 100644
--- a/parte_2/tema_2.5_db/bd_ejer1/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejer1/pom.xml
@@ -9,12 +9,12 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.5_db/bd_ejer2/pom.xml b/parte_2/tema_2.5_db/bd_ejer2/pom.xml
index 19ae76e..599f36f 100644
--- a/parte_2/tema_2.5_db/bd_ejer2/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejer2/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.6_despliegue/despliegue_ejem1/pom.xml b/parte_2/tema_2.6_despliegue/despliegue_ejem1/pom.xml
index 00667df..d6133a7 100644
--- a/parte_2/tema_2.6_despliegue/despliegue_ejem1/pom.xml
+++ b/parte_2/tema_2.6_despliegue/despliegue_ejem1/pom.xml
@@ -12,13 +12,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_2/tema_2.6_despliegue/despliegue_ejem2/pom.xml b/parte_2/tema_2.6_despliegue/despliegue_ejem2/pom.xml
index 7adbd0f..edef5fa 100644
--- a/parte_2/tema_2.6_despliegue/despliegue_ejem2/pom.xml
+++ b/parte_2/tema_2.6_despliegue/despliegue_ejem2/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-consumer/pom.xml b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-consumer/pom.xml
index 21f189c..40ddd79 100644
--- a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-consumer/pom.xml
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-consumer/pom.xml
@@ -10,13 +10,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.5.11
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-producer/pom.xml b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-producer/pom.xml
index fc1cb2f..80e6e13 100644
--- a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-producer/pom.xml
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-producer/pom.xml
@@ -6,7 +6,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.5.11
+ 4.0.5
@@ -16,7 +16,7 @@
UTF-8
- 17
+ 21
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-consumer/pom.xml b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-consumer/pom.xml
index 2ff35cb..2765f86 100644
--- a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-consumer/pom.xml
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-consumer/pom.xml
@@ -10,13 +10,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.5.11
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-producer/pom.xml b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-producer/pom.xml
index d2fe670..b35957f 100644
--- a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-producer/pom.xml
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-producer/pom.xml
@@ -6,7 +6,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.5.11
+ 4.0.5
@@ -16,7 +16,7 @@
UTF-8
- 17
+ 21
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-client/pom.xml b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-client/pom.xml
index 24d56b0..265f89f 100644
--- a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-client/pom.xml
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-client/pom.xml
@@ -6,7 +6,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.5.11
+ 4.0.5
@@ -16,7 +16,7 @@
UTF-8
- 17
+ 21
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-service/pom.xml b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-service/pom.xml
index b3c10f0..6381fe3 100644
--- a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-service/pom.xml
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-service/pom.xml
@@ -10,13 +10,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.5.11
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_3/tema_3.2_websockets/comunicacion-ws-ejem1/pom.xml b/parte_3/tema_3.2_websockets/comunicacion-ws-ejem1/pom.xml
index 8c823c1..d204c5d 100644
--- a/parte_3/tema_3.2_websockets/comunicacion-ws-ejem1/pom.xml
+++ b/parte_3/tema_3.2_websockets/comunicacion-ws-ejem1/pom.xml
@@ -6,7 +6,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.0.0
+ 4.0.5
@@ -16,7 +16,7 @@
UTF-8
- 17
+ 21
diff --git a/parte_3/tema_3.2_websockets/comunicacion-ws-ejem2/pom.xml b/parte_3/tema_3.2_websockets/comunicacion-ws-ejem2/pom.xml
index aabc3c0..359f789 100644
--- a/parte_3/tema_3.2_websockets/comunicacion-ws-ejem2/pom.xml
+++ b/parte_3/tema_3.2_websockets/comunicacion-ws-ejem2/pom.xml
@@ -6,7 +6,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.2
+ 4.0.5
@@ -16,7 +16,7 @@
UTF-8
- 17
+ 21
diff --git a/parte_4/tema_4.2/aplicacion-java-enunciado/pom.xml b/parte_4/tema_4.2/aplicacion-java-enunciado/pom.xml
index c69e672..caee13f 100644
--- a/parte_4/tema_4.2/aplicacion-java-enunciado/pom.xml
+++ b/parte_4/tema_4.2/aplicacion-java-enunciado/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.0.4
+ 4.0.5
UTF-8
- 17
+ 21
es.urjc.code.daw.tablonanuncios.Application
diff --git a/parte_4/tema_4.2/ejemplo-1/pom.xml b/parte_4/tema_4.2/ejemplo-1/pom.xml
index 4ac74dc..caee13f 100644
--- a/parte_4/tema_4.2/ejemplo-1/pom.xml
+++ b/parte_4/tema_4.2/ejemplo-1/pom.xml
@@ -11,7 +11,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.0.4
+ 4.0.5
diff --git a/parte_4/tema_4.2/ejemplo-2/pom.xml b/parte_4/tema_4.2/ejemplo-2/pom.xml
index b60fa70..b9a8e39 100644
--- a/parte_4/tema_4.2/ejemplo-2/pom.xml
+++ b/parte_4/tema_4.2/ejemplo-2/pom.xml
@@ -10,11 +10,11 @@
UTF-8
- 17
+ 21
- 17
- 17
+ 21
+ 21
diff --git a/parte_4/tema_4.2/ejer4/aplicacion-java-enunciado/pom.xml b/parte_4/tema_4.2/ejer4/aplicacion-java-enunciado/pom.xml
index c69e672..caee13f 100644
--- a/parte_4/tema_4.2/ejer4/aplicacion-java-enunciado/pom.xml
+++ b/parte_4/tema_4.2/ejer4/aplicacion-java-enunciado/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.0.4
+ 4.0.5
UTF-8
- 17
+ 21
es.urjc.code.daw.tablonanuncios.Application
diff --git a/parte_4/tema_4.2/ejer5/aplicacion-java-enunciado/pom.xml b/parte_4/tema_4.2/ejer5/aplicacion-java-enunciado/pom.xml
index c69e672..caee13f 100644
--- a/parte_4/tema_4.2/ejer5/aplicacion-java-enunciado/pom.xml
+++ b/parte_4/tema_4.2/ejer5/aplicacion-java-enunciado/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.0.4
+ 4.0.5
UTF-8
- 17
+ 21
es.urjc.code.daw.tablonanuncios.Application
diff --git a/parte_4/tema_4.2/ejer6/pom.xml b/parte_4/tema_4.2/ejer6/pom.xml
index ad12357..65636c1 100644
--- a/parte_4/tema_4.2/ejer6/pom.xml
+++ b/parte_4/tema_4.2/ejer6/pom.xml
@@ -10,13 +10,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.0.4
+ 4.0.5
UTF-8
- 17
+ 21
es.urjc.code.daw.tablonanuncios.Application
diff --git a/parte_4/tema_4.2/ejer7/pom.xml b/parte_4/tema_4.2/ejer7/pom.xml
index 6349932..ee959d5 100644
--- a/parte_4/tema_4.2/ejer7/pom.xml
+++ b/parte_4/tema_4.2/ejer7/pom.xml
@@ -10,13 +10,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.0.4
+ 4.0.5
UTF-8
- 17
+ 21
es.urjc.code.daw.tablonanuncios.Application
diff --git a/parte_4/tema_4.2/ejer8/pom.xml b/parte_4/tema_4.2/ejer8/pom.xml
index 4a15499..de390e0 100644
--- a/parte_4/tema_4.2/ejer8/pom.xml
+++ b/parte_4/tema_4.2/ejer8/pom.xml
@@ -10,13 +10,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.0.4
+ 4.0.5
UTF-8
- 17
+ 21
es.urjc.code.daw.tablonanuncios.Application
diff --git a/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/pom.xml b/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/pom.xml
index f404c5b..52b5b81 100644
--- a/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/pom.xml
+++ b/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/pom.xml
@@ -10,13 +10,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.4.3
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-producer/pom.xml b/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-producer/pom.xml
index 409635d..d3b1c31 100644
--- a/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-producer/pom.xml
+++ b/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-producer/pom.xml
@@ -6,7 +6,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.4.3
+ 4.0.5
@@ -16,7 +16,7 @@
UTF-8
- 17
+ 21
diff --git a/parte_4/tema_4.3/ejemplo-2/pom.xml b/parte_4/tema_4.3/ejemplo-2/pom.xml
index 739edd3..6c42184 100644
--- a/parte_4/tema_4.3/ejemplo-2/pom.xml
+++ b/parte_4/tema_4.3/ejemplo-2/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.0.4
+ 4.0.5
UTF-8
- 17
+ 21
es.codeurjc.test.tablonanuncios.WebApp
diff --git a/parte_4/tema_4.3/ejemplo-3/pom.xml b/parte_4/tema_4.3/ejemplo-3/pom.xml
index 739edd3..6c42184 100644
--- a/parte_4/tema_4.3/ejemplo-3/pom.xml
+++ b/parte_4/tema_4.3/ejemplo-3/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.0.4
+ 4.0.5
UTF-8
- 17
+ 21
es.codeurjc.test.tablonanuncios.WebApp
diff --git a/parte_4/tema_4.3/ejercicio-1-enunciado/pom.xml b/parte_4/tema_4.3/ejercicio-1-enunciado/pom.xml
index 739edd3..6c42184 100644
--- a/parte_4/tema_4.3/ejercicio-1-enunciado/pom.xml
+++ b/parte_4/tema_4.3/ejercicio-1-enunciado/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.0.4
+ 4.0.5
UTF-8
- 17
+ 21
es.codeurjc.test.tablonanuncios.WebApp
diff --git a/parte_4/tema_4.3/ejercicio-1/pom.xml b/parte_4/tema_4.3/ejercicio-1/pom.xml
index 739edd3..6c42184 100644
--- a/parte_4/tema_4.3/ejercicio-1/pom.xml
+++ b/parte_4/tema_4.3/ejercicio-1/pom.xml
@@ -11,13 +11,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.0.4
+ 4.0.5
UTF-8
- 17
+ 21
es.codeurjc.test.tablonanuncios.WebApp
diff --git a/parte_5/ejem0-jmeter/pom.xml b/parte_5/ejem0-jmeter/pom.xml
index fa20aa9..ae55295 100644
--- a/parte_5/ejem0-jmeter/pom.xml
+++ b/parte_5/ejem0-jmeter/pom.xml
@@ -5,7 +5,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.5.12
+ 4.0.5
es.urjc.code
diff --git a/parte_5/ejem1-mysql/pom.xml b/parte_5/ejem1-mysql/pom.xml
index 470ee32..dee04d3 100644
--- a/parte_5/ejem1-mysql/pom.xml
+++ b/parte_5/ejem1-mysql/pom.xml
@@ -14,7 +14,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.5.11
+ 4.0.5
diff --git a/parte_5/ejem2-cache/pom.xml b/parte_5/ejem2-cache/pom.xml
index 06224a7..a8990fd 100644
--- a/parte_5/ejem2-cache/pom.xml
+++ b/parte_5/ejem2-cache/pom.xml
@@ -14,7 +14,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.5.11
+ 4.0.5
diff --git a/parte_5/ejem3-cache-distribuida/pom.xml b/parte_5/ejem3-cache-distribuida/pom.xml
index a9d8b88..78a0d13 100644
--- a/parte_5/ejem3-cache-distribuida/pom.xml
+++ b/parte_5/ejem3-cache-distribuida/pom.xml
@@ -11,12 +11,12 @@
org.springframework.boot
spring-boot-starter-parent
- 3.4.4
+ 4.0.5
UTF-8
- 17
+ 21
diff --git a/parte_5/ejem3-cache-distribuida2/pom.xml b/parte_5/ejem3-cache-distribuida2/pom.xml
index 8b577ea..489460d 100644
--- a/parte_5/ejem3-cache-distribuida2/pom.xml
+++ b/parte_5/ejem3-cache-distribuida2/pom.xml
@@ -11,7 +11,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.4.1
+ 4.0.5
diff --git a/parte_5/ejem4-haproxy/pom.xml b/parte_5/ejem4-haproxy/pom.xml
index 767245d..c6475c9 100644
--- a/parte_5/ejem4-haproxy/pom.xml
+++ b/parte_5/ejem4-haproxy/pom.xml
@@ -15,7 +15,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.5.11
+ 4.0.5
diff --git a/parte_5/ejem4b-haproxy-ssl-passthrough/pom.xml b/parte_5/ejem4b-haproxy-ssl-passthrough/pom.xml
index ca4548e..caf3804 100644
--- a/parte_5/ejem4b-haproxy-ssl-passthrough/pom.xml
+++ b/parte_5/ejem4b-haproxy-ssl-passthrough/pom.xml
@@ -9,11 +9,11 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 4.0.5
UTF-8
- 17
+ 21
From 546361c8b1323ac3b2eccf99c5fc5a2845a5af81 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Francisco=20Gort=C3=A1zar?=
Date: Sat, 4 Apr 2026 23:38:09 +0200
Subject: [PATCH 02/12] Actualizar maven-build.yml
---
.github/workflows/maven-build.yml | 1 +
1 file changed, 1 insertion(+)
diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-build.yml
index c87a9bc..078ec39 100644
--- a/.github/workflows/maven-build.yml
+++ b/.github/workflows/maven-build.yml
@@ -5,6 +5,7 @@ on:
branches: '*'
pull_request:
branches: '*'
+ workflow_dispatch:
jobs:
build:
From a2373d88ad4c45efa3da5c54d07b593a36e5d19c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Francisco=20Gort=C3=A1zar?=
Date: Sun, 5 Apr 2026 00:09:29 +0200
Subject: [PATCH 03/12] Add spring-boot-starter-json
---
parte_2/tema_2.3_rest/rest_ejem8/pom.xml | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/parte_2/tema_2.3_rest/rest_ejem8/pom.xml b/parte_2/tema_2.3_rest/rest_ejem8/pom.xml
index 9504f9a..e384b58 100644
--- a/parte_2/tema_2.3_rest/rest_ejem8/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejem8/pom.xml
@@ -25,6 +25,10 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.springframework.boot
+ spring-boot-starter-json
+
org.springframework.boot
spring-boot-devtools
From 8f699c498dc1e711aa22c0c87482d55af58ed1bc Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 3 May 2026 16:17:48 +0000
Subject: [PATCH 04/12] Fix Jackson 3.x migration: update imports and API
changes in rest_ejem8, bd_ejem19, comunicacion-ws-ejem2
Agent-Logs-Url: https://github.com/codeurjc/dad2425/sessions/62560d7f-165d-47e7-ba36-87588d19ffb2
Co-authored-by: gortazar <203272+gortazar@users.noreply.github.com>
---
.../es/codeurjc/books/BooksController.java | 6 +--
parte_2/tema_2.5_db/bd_ejem19/pom.xml | 4 ++
.../db/PageImplJacksonSerializer.java | 44 +++++++++----------
.../comunicacion-ws-ejem2/pom.xml | 4 ++
.../ws/service/NotificationService.java | 6 +--
5 files changed, 36 insertions(+), 28 deletions(-)
diff --git a/parte_2/tema_2.3_rest/rest_ejem8/src/main/java/es/codeurjc/books/BooksController.java b/parte_2/tema_2.3_rest/rest_ejem8/src/main/java/es/codeurjc/books/BooksController.java
index 7390f08..b59f949 100644
--- a/parte_2/tema_2.3_rest/rest_ejem8/src/main/java/es/codeurjc/books/BooksController.java
+++ b/parte_2/tema_2.3_rest/rest_ejem8/src/main/java/es/codeurjc/books/BooksController.java
@@ -8,9 +8,9 @@
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
+import tools.jackson.databind.JsonNode;
+import tools.jackson.databind.node.ArrayNode;
+import tools.jackson.databind.node.ObjectNode;
@RestController
public class BooksController {
diff --git a/parte_2/tema_2.5_db/bd_ejem19/pom.xml b/parte_2/tema_2.5_db/bd_ejem19/pom.xml
index ce050d1..868f92e 100644
--- a/parte_2/tema_2.5_db/bd_ejem19/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem19/pom.xml
@@ -24,6 +24,10 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.springframework.boot
+ spring-boot-starter-json
+
org.springframework.boot
spring-boot-starter-data-jpa
diff --git a/parte_2/tema_2.5_db/bd_ejem19/src/main/java/es/codeurjc/db/PageImplJacksonSerializer.java b/parte_2/tema_2.5_db/bd_ejem19/src/main/java/es/codeurjc/db/PageImplJacksonSerializer.java
index 081aea8..e35382d 100644
--- a/parte_2/tema_2.5_db/bd_ejem19/src/main/java/es/codeurjc/db/PageImplJacksonSerializer.java
+++ b/parte_2/tema_2.5_db/bd_ejem19/src/main/java/es/codeurjc/db/PageImplJacksonSerializer.java
@@ -1,42 +1,42 @@
package es.codeurjc.db;
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import org.springframework.boot.jackson.JsonComponent;
+import tools.jackson.core.JacksonException;
+import tools.jackson.core.JsonGenerator;
+import tools.jackson.databind.SerializationContext;
+import tools.jackson.databind.ValueSerializer;
+import org.springframework.boot.jackson.JacksonComponent;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Sort;
-import java.io.IOException;
-@JsonComponent
-public class PageImplJacksonSerializer extends JsonSerializer> {
+@JacksonComponent
+public class PageImplJacksonSerializer extends ValueSerializer> {
@SuppressWarnings("rawtypes")
@Override
- public void serialize(PageImpl page, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)
- throws IOException {
+ public void serialize(PageImpl page, JsonGenerator jsonGenerator, SerializationContext serializationContext)
+ throws JacksonException {
jsonGenerator.writeStartObject();
- jsonGenerator.writeObjectField("content", page.getContent());
- jsonGenerator.writeBooleanField("first", page.isFirst());
- jsonGenerator.writeBooleanField("last", page.isLast());
- jsonGenerator.writeNumberField("totalPages", page.getTotalPages());
- jsonGenerator.writeNumberField("totalElements", page.getTotalElements());
- jsonGenerator.writeNumberField("numberOfElements", page.getNumberOfElements());
+ jsonGenerator.writePOJOProperty("content", page.getContent());
+ jsonGenerator.writeBooleanProperty("first", page.isFirst());
+ jsonGenerator.writeBooleanProperty("last", page.isLast());
+ jsonGenerator.writeNumberProperty("totalPages", page.getTotalPages());
+ jsonGenerator.writeNumberProperty("totalElements", page.getTotalElements());
+ jsonGenerator.writeNumberProperty("numberOfElements", page.getNumberOfElements());
- jsonGenerator.writeNumberField("size", page.getSize());
- jsonGenerator.writeNumberField("number", page.getNumber());
+ jsonGenerator.writeNumberProperty("size", page.getSize());
+ jsonGenerator.writeNumberProperty("number", page.getNumber());
Sort sort = page.getSort();
- jsonGenerator.writeArrayFieldStart("sort");
+ jsonGenerator.writeArrayPropertyStart("sort");
for (Sort.Order order : sort) {
jsonGenerator.writeStartObject();
- jsonGenerator.writeStringField("property", order.getProperty());
- jsonGenerator.writeStringField("direction", order.getDirection().name());
- jsonGenerator.writeBooleanField("ignoreCase", order.isIgnoreCase());
- jsonGenerator.writeStringField("nullHandling", order.getNullHandling().name());
+ jsonGenerator.writeStringProperty("property", order.getProperty());
+ jsonGenerator.writeStringProperty("direction", order.getDirection().name());
+ jsonGenerator.writeBooleanProperty("ignoreCase", order.isIgnoreCase());
+ jsonGenerator.writeStringProperty("nullHandling", order.getNullHandling().name());
jsonGenerator.writeEndObject();
}
diff --git a/parte_3/tema_3.2_websockets/comunicacion-ws-ejem2/pom.xml b/parte_3/tema_3.2_websockets/comunicacion-ws-ejem2/pom.xml
index 359f789..943531c 100644
--- a/parte_3/tema_3.2_websockets/comunicacion-ws-ejem2/pom.xml
+++ b/parte_3/tema_3.2_websockets/comunicacion-ws-ejem2/pom.xml
@@ -24,6 +24,10 @@
org.springframework.boot
spring-boot-starter-websocket
+
+ org.springframework.boot
+ spring-boot-starter-json
+
org.springframework.boot
spring-boot-starter-mustache
diff --git a/parte_3/tema_3.2_websockets/comunicacion-ws-ejem2/src/main/java/es/codeurjc/mastercloudapps/ws/service/NotificationService.java b/parte_3/tema_3.2_websockets/comunicacion-ws-ejem2/src/main/java/es/codeurjc/mastercloudapps/ws/service/NotificationService.java
index 8e49755..c805a6a 100644
--- a/parte_3/tema_3.2_websockets/comunicacion-ws-ejem2/src/main/java/es/codeurjc/mastercloudapps/ws/service/NotificationService.java
+++ b/parte_3/tema_3.2_websockets/comunicacion-ws-ejem2/src/main/java/es/codeurjc/mastercloudapps/ws/service/NotificationService.java
@@ -1,7 +1,7 @@
package es.codeurjc.mastercloudapps.ws.service;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import tools.jackson.core.JacksonException;
+import tools.jackson.databind.ObjectMapper;
import es.codeurjc.mastercloudapps.ws.model.Report;
@@ -90,7 +90,7 @@ public void notifyReportUpdate(Report report) {
}
}
- } catch (JsonProcessingException e) {
+ } catch (JacksonException e) {
throw new RuntimeException(e);
}
}
From b78feb5c1dd7eb25c485c2381023275135325c3f Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 3 May 2026 16:22:14 +0000
Subject: [PATCH 05/12] Fix compilation failures after Spring Boot 4.x /
Jackson 3.x upgrade
Agent-Logs-Url: https://github.com/codeurjc/dad2425/sessions/62560d7f-165d-47e7-ba36-87588d19ffb2
Co-authored-by: gortazar <203272+gortazar@users.noreply.github.com>
---
parte_2/tema_2.5_db/bd_ejem16/mvnw | 358 +++++++++---------
parte_2/tema_2.5_db/bd_ejem16/mvnw.cmd | 388 ++++++++++----------
parte_5/ejem0-jmeter/mvnw | 483 +++++++++++++------------
parte_5/ejem0-jmeter/mvnw.cmd | 345 +++++++++---------
4 files changed, 837 insertions(+), 737 deletions(-)
mode change 100644 => 100755 parte_2/tema_2.5_db/bd_ejem16/mvnw
diff --git a/parte_2/tema_2.5_db/bd_ejem16/mvnw b/parte_2/tema_2.5_db/bd_ejem16/mvnw
old mode 100644
new mode 100755
index a16b543..1fdbaf2
--- a/parte_2/tema_2.5_db/bd_ejem16/mvnw
+++ b/parte_2/tema_2.5_db/bd_ejem16/mvnw
@@ -8,7 +8,7 @@
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
-# https://www.apache.org/licenses/LICENSE-2.0
+# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
@@ -19,7 +19,7 @@
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
-# Maven Start Up Batch script
+# Apache Maven Wrapper startup batch script, version 3.3.0
#
# Required ENV vars:
# ------------------
@@ -27,284 +27,306 @@
#
# Optional ENV vars
# -----------------
-# M2_HOME - location of maven2's installed home dir
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
# e.g. to debug Maven itself, use
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------
-if [ -z "$MAVEN_SKIP_RC" ] ; then
+if [ -z "$MAVEN_SKIP_RC" ]; then
- if [ -f /etc/mavenrc ] ; then
+ if [ -f /usr/local/etc/mavenrc ]; then
+ . /usr/local/etc/mavenrc
+ fi
+
+ if [ -f /etc/mavenrc ]; then
. /etc/mavenrc
fi
- if [ -f "$HOME/.mavenrc" ] ; then
+ if [ -f "$HOME/.mavenrc" ]; then
. "$HOME/.mavenrc"
fi
fi
# OS specific support. $var _must_ be set to either true or false.
-cygwin=false;
-darwin=false;
+cygwin=false
+darwin=false
mingw=false
-case "`uname`" in
- CYGWIN*) cygwin=true ;;
- MINGW*) mingw=true;;
- Darwin*) darwin=true
- # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
- # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
- if [ -z "$JAVA_HOME" ]; then
- if [ -x "/usr/libexec/java_home" ]; then
- export JAVA_HOME="`/usr/libexec/java_home`"
- else
- export JAVA_HOME="/Library/Java/Home"
- fi
+case "$(uname)" in
+CYGWIN*) cygwin=true ;;
+MINGW*) mingw=true ;;
+Darwin*)
+ darwin=true
+ # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
+ # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
+ if [ -z "$JAVA_HOME" ]; then
+ if [ -x "/usr/libexec/java_home" ]; then
+ JAVA_HOME="$(/usr/libexec/java_home)"
+ export JAVA_HOME
+ else
+ JAVA_HOME="/Library/Java/Home"
+ export JAVA_HOME
fi
- ;;
+ fi
+ ;;
esac
-if [ -z "$JAVA_HOME" ] ; then
- if [ -r /etc/gentoo-release ] ; then
- JAVA_HOME=`java-config --jre-home`
+if [ -z "$JAVA_HOME" ]; then
+ if [ -r /etc/gentoo-release ]; then
+ JAVA_HOME=$(java-config --jre-home)
fi
fi
-if [ -z "$M2_HOME" ] ; then
- ## resolve links - $0 may be a link to maven's home
- PRG="$0"
-
- # need this for relative symlinks
- while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG="`dirname "$PRG"`/$link"
- fi
- done
-
- saveddir=`pwd`
-
- M2_HOME=`dirname "$PRG"`/..
-
- # make it fully qualified
- M2_HOME=`cd "$M2_HOME" && pwd`
-
- cd "$saveddir"
- # echo Using m2 at $M2_HOME
-fi
-
# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin ; then
- [ -n "$M2_HOME" ] &&
- M2_HOME=`cygpath --unix "$M2_HOME"`
- [ -n "$JAVA_HOME" ] &&
- JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
- [ -n "$CLASSPATH" ] &&
- CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
+if $cygwin; then
+ [ -n "$JAVA_HOME" ] \
+ && JAVA_HOME=$(cygpath --unix "$JAVA_HOME")
+ [ -n "$CLASSPATH" ] \
+ && CLASSPATH=$(cygpath --path --unix "$CLASSPATH")
fi
# For Mingw, ensure paths are in UNIX format before anything is touched
-if $mingw ; then
- [ -n "$M2_HOME" ] &&
- M2_HOME="`(cd "$M2_HOME"; pwd)`"
- [ -n "$JAVA_HOME" ] &&
- JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
+if $mingw; then
+ [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] \
+ && JAVA_HOME="$(
+ cd "$JAVA_HOME" || (
+ echo "cannot cd into $JAVA_HOME." >&2
+ exit 1
+ )
+ pwd
+ )"
fi
if [ -z "$JAVA_HOME" ]; then
- javaExecutable="`which javac`"
- if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
+ javaExecutable="$(which javac)"
+ if [ -n "$javaExecutable" ] && ! [ "$(expr "$javaExecutable" : '\([^ ]*\)')" = "no" ]; then
# readlink(1) is not available as standard on Solaris 10.
- readLink=`which readlink`
- if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
- if $darwin ; then
- javaHome="`dirname \"$javaExecutable\"`"
- javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
+ readLink=$(which readlink)
+ if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then
+ if $darwin; then
+ javaHome="$(dirname "$javaExecutable")"
+ javaExecutable="$(cd "$javaHome" && pwd -P)/javac"
else
- javaExecutable="`readlink -f \"$javaExecutable\"`"
+ javaExecutable="$(readlink -f "$javaExecutable")"
fi
- javaHome="`dirname \"$javaExecutable\"`"
- javaHome=`expr "$javaHome" : '\(.*\)/bin'`
+ javaHome="$(dirname "$javaExecutable")"
+ javaHome=$(expr "$javaHome" : '\(.*\)/bin')
JAVA_HOME="$javaHome"
export JAVA_HOME
fi
fi
fi
-if [ -z "$JAVACMD" ] ; then
- if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+if [ -z "$JAVACMD" ]; then
+ if [ -n "$JAVA_HOME" ]; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ]; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
else
- JAVACMD="`which java`"
+ JAVACMD="$(
+ \unset -f command 2>/dev/null
+ \command -v java
+ )"
fi
fi
-if [ ! -x "$JAVACMD" ] ; then
+if [ ! -x "$JAVACMD" ]; then
echo "Error: JAVA_HOME is not defined correctly." >&2
echo " We cannot execute $JAVACMD" >&2
exit 1
fi
-if [ -z "$JAVA_HOME" ] ; then
- echo "Warning: JAVA_HOME environment variable is not set."
+if [ -z "$JAVA_HOME" ]; then
+ echo "Warning: JAVA_HOME environment variable is not set." >&2
fi
-CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
-
# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {
-
- if [ -z "$1" ]
- then
- echo "Path not specified to find_maven_basedir"
+ if [ -z "$1" ]; then
+ echo "Path not specified to find_maven_basedir" >&2
return 1
fi
basedir="$1"
wdir="$1"
- while [ "$wdir" != '/' ] ; do
- if [ -d "$wdir"/.mvn ] ; then
+ while [ "$wdir" != '/' ]; do
+ if [ -d "$wdir"/.mvn ]; then
basedir=$wdir
break
fi
# workaround for JBEAP-8937 (on Solaris 10/Sparc)
if [ -d "${wdir}" ]; then
- wdir=`cd "$wdir/.."; pwd`
+ wdir=$(
+ cd "$wdir/.." || exit 1
+ pwd
+ )
fi
# end of workaround
done
- echo "${basedir}"
+ printf '%s' "$(
+ cd "$basedir" || exit 1
+ pwd
+ )"
}
# concatenates all lines of a file
concat_lines() {
if [ -f "$1" ]; then
- echo "$(tr -s '\n' ' ' < "$1")"
+ # Remove \r in case we run on Windows within Git Bash
+ # and check out the repository with auto CRLF management
+ # enabled. Otherwise, we may read lines that are delimited with
+ # \r\n and produce $'-Xarg\r' rather than -Xarg due to word
+ # splitting rules.
+ tr -s '\r\n' ' ' <"$1"
+ fi
+}
+
+log() {
+ if [ "$MVNW_VERBOSE" = true ]; then
+ printf '%s\n' "$1"
fi
}
-BASE_DIR=`find_maven_basedir "$(pwd)"`
+BASE_DIR=$(find_maven_basedir "$(dirname "$0")")
if [ -z "$BASE_DIR" ]; then
- exit 1;
+ exit 1
fi
+MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
+export MAVEN_PROJECTBASEDIR
+log "$MAVEN_PROJECTBASEDIR"
+
##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
-if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
- if [ "$MVNW_VERBOSE" = true ]; then
- echo "Found .mvn/wrapper/maven-wrapper.jar"
- fi
+wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar"
+if [ -r "$wrapperJarPath" ]; then
+ log "Found $wrapperJarPath"
else
- if [ "$MVNW_VERBOSE" = true ]; then
- echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
- fi
- if [ -n "$MVNW_REPOURL" ]; then
- jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
+ log "Couldn't find $wrapperJarPath, downloading it ..."
+
+ if [ -n "$MVNW_REPOURL" ]; then
+ wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.3.0/maven-wrapper-3.3.0.jar"
+ else
+ wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.3.0/maven-wrapper-3.3.0.jar"
+ fi
+ while IFS="=" read -r key value; do
+ # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' )
+ safeValue=$(echo "$value" | tr -d '\r')
+ case "$key" in wrapperUrl)
+ wrapperUrl="$safeValue"
+ break
+ ;;
+ esac
+ done <"$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
+ log "Downloading from: $wrapperUrl"
+
+ if $cygwin; then
+ wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath")
+ fi
+
+ if command -v wget >/dev/null; then
+ log "Found wget ... using wget"
+ [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet"
+ if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
+ wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
else
- jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
+ wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
fi
- while IFS="=" read key value; do
- case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
- esac
- done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
- if [ "$MVNW_VERBOSE" = true ]; then
- echo "Downloading from: $jarUrl"
+ elif command -v curl >/dev/null; then
+ log "Found curl ... using curl"
+ [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent"
+ if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
+ curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath"
+ else
+ curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath"
fi
- wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
+ else
+ log "Falling back to using Java to download"
+ javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java"
+ javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class"
+ # For Cygwin, switch paths to Windows format before running javac
if $cygwin; then
- wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
+ javaSource=$(cygpath --path --windows "$javaSource")
+ javaClass=$(cygpath --path --windows "$javaClass")
fi
-
- if command -v wget > /dev/null; then
- if [ "$MVNW_VERBOSE" = true ]; then
- echo "Found wget ... using wget"
- fi
- if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
- wget "$jarUrl" -O "$wrapperJarPath"
- else
- wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
- fi
- elif command -v curl > /dev/null; then
- if [ "$MVNW_VERBOSE" = true ]; then
- echo "Found curl ... using curl"
- fi
- if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
- curl -o "$wrapperJarPath" "$jarUrl" -f
- else
- curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
- fi
-
- else
- if [ "$MVNW_VERBOSE" = true ]; then
- echo "Falling back to using Java to download"
- fi
- javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
- # For Cygwin, switch paths to Windows format before running javac
- if $cygwin; then
- javaClass=`cygpath --path --windows "$javaClass"`
- fi
- if [ -e "$javaClass" ]; then
- if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
- if [ "$MVNW_VERBOSE" = true ]; then
- echo " - Compiling MavenWrapperDownloader.java ..."
- fi
- # Compiling the Java class
- ("$JAVA_HOME/bin/javac" "$javaClass")
- fi
- if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
- # Running the downloader
- if [ "$MVNW_VERBOSE" = true ]; then
- echo " - Running MavenWrapperDownloader.java ..."
- fi
- ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
- fi
- fi
+ if [ -e "$javaSource" ]; then
+ if [ ! -e "$javaClass" ]; then
+ log " - Compiling MavenWrapperDownloader.java ..."
+ ("$JAVA_HOME/bin/javac" "$javaSource")
+ fi
+ if [ -e "$javaClass" ]; then
+ log " - Running MavenWrapperDownloader.java ..."
+ ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath"
+ fi
fi
+ fi
fi
##########################################################################################
# End of extension
##########################################################################################
-export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
-if [ "$MVNW_VERBOSE" = true ]; then
- echo $MAVEN_PROJECTBASEDIR
+# If specified, validate the SHA-256 sum of the Maven wrapper jar file
+wrapperSha256Sum=""
+while IFS="=" read -r key value; do
+ case "$key" in wrapperSha256Sum)
+ wrapperSha256Sum=$value
+ break
+ ;;
+ esac
+done <"$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
+if [ -n "$wrapperSha256Sum" ]; then
+ wrapperSha256Result=false
+ if command -v sha256sum >/dev/null; then
+ if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c >/dev/null 2>&1; then
+ wrapperSha256Result=true
+ fi
+ elif command -v shasum >/dev/null; then
+ if echo "$wrapperSha256Sum $wrapperJarPath" | shasum -a 256 -c >/dev/null 2>&1; then
+ wrapperSha256Result=true
+ fi
+ else
+ echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2
+ echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties." >&2
+ exit 1
+ fi
+ if [ $wrapperSha256Result = false ]; then
+ echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2
+ echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2
+ echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2
+ exit 1
+ fi
fi
+
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
- [ -n "$M2_HOME" ] &&
- M2_HOME=`cygpath --path --windows "$M2_HOME"`
- [ -n "$JAVA_HOME" ] &&
- JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
- [ -n "$CLASSPATH" ] &&
- CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
- [ -n "$MAVEN_PROJECTBASEDIR" ] &&
- MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
+ [ -n "$JAVA_HOME" ] \
+ && JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME")
+ [ -n "$CLASSPATH" ] \
+ && CLASSPATH=$(cygpath --path --windows "$CLASSPATH")
+ [ -n "$MAVEN_PROJECTBASEDIR" ] \
+ && MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR")
fi
# Provide a "standardized" way to retrieve the CLI args that will
# work with both Windows and non-Windows executions.
-MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
+MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*"
export MAVEN_CMD_LINE_ARGS
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+# shellcheck disable=SC2086 # safe args
exec "$JAVACMD" \
$MAVEN_OPTS \
+ $MAVEN_DEBUG_OPTS \
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
- "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
+ "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
diff --git a/parte_2/tema_2.5_db/bd_ejem16/mvnw.cmd b/parte_2/tema_2.5_db/bd_ejem16/mvnw.cmd
index c8d4337..b694e6c 100644
--- a/parte_2/tema_2.5_db/bd_ejem16/mvnw.cmd
+++ b/parte_2/tema_2.5_db/bd_ejem16/mvnw.cmd
@@ -1,182 +1,206 @@
-@REM ----------------------------------------------------------------------------
-@REM Licensed to the Apache Software Foundation (ASF) under one
-@REM or more contributor license agreements. See the NOTICE file
-@REM distributed with this work for additional information
-@REM regarding copyright ownership. The ASF licenses this file
-@REM to you under the Apache License, Version 2.0 (the
-@REM "License"); you may not use this file except in compliance
-@REM with the License. You may obtain a copy of the License at
-@REM
-@REM https://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing,
-@REM software distributed under the License is distributed on an
-@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-@REM KIND, either express or implied. See the License for the
-@REM specific language governing permissions and limitations
-@REM under the License.
-@REM ----------------------------------------------------------------------------
-
-@REM ----------------------------------------------------------------------------
-@REM Maven Start Up Batch script
-@REM
-@REM Required ENV vars:
-@REM JAVA_HOME - location of a JDK home dir
-@REM
-@REM Optional ENV vars
-@REM M2_HOME - location of maven2's installed home dir
-@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
-@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
-@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
-@REM e.g. to debug Maven itself, use
-@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
-@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
-@REM ----------------------------------------------------------------------------
-
-@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
-@echo off
-@REM set title of command window
-title %0
-@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
-@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
-
-@REM set %HOME% to equivalent of $HOME
-if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
-
-@REM Execute a user defined script before this one
-if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
-@REM check for pre script, once with legacy .bat ending and once with .cmd ending
-if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
-if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
-:skipRcPre
-
-@setlocal
-
-set ERROR_CODE=0
-
-@REM To isolate internal variables from possible post scripts, we use another setlocal
-@setlocal
-
-@REM ==== START VALIDATION ====
-if not "%JAVA_HOME%" == "" goto OkJHome
-
-echo.
-echo Error: JAVA_HOME not found in your environment. >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-:OkJHome
-if exist "%JAVA_HOME%\bin\java.exe" goto init
-
-echo.
-echo Error: JAVA_HOME is set to an invalid directory. >&2
-echo JAVA_HOME = "%JAVA_HOME%" >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-@REM ==== END VALIDATION ====
-
-:init
-
-@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
-@REM Fallback to current working directory if not found.
-
-set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
-IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
-
-set EXEC_DIR=%CD%
-set WDIR=%EXEC_DIR%
-:findBaseDir
-IF EXIST "%WDIR%"\.mvn goto baseDirFound
-cd ..
-IF "%WDIR%"=="%CD%" goto baseDirNotFound
-set WDIR=%CD%
-goto findBaseDir
-
-:baseDirFound
-set MAVEN_PROJECTBASEDIR=%WDIR%
-cd "%EXEC_DIR%"
-goto endDetectBaseDir
-
-:baseDirNotFound
-set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
-cd "%EXEC_DIR%"
-
-:endDetectBaseDir
-
-IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
-
-@setlocal EnableExtensions EnableDelayedExpansion
-for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
-@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
-
-:endReadAdditionalConfig
-
-SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
-set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
-set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
-
-set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
-
-FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
- IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
-)
-
-@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
-@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
-if exist %WRAPPER_JAR% (
- if "%MVNW_VERBOSE%" == "true" (
- echo Found %WRAPPER_JAR%
- )
-) else (
- if not "%MVNW_REPOURL%" == "" (
- SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
- )
- if "%MVNW_VERBOSE%" == "true" (
- echo Couldn't find %WRAPPER_JAR%, downloading it ...
- echo Downloading from: %DOWNLOAD_URL%
- )
-
- powershell -Command "&{"^
- "$webclient = new-object System.Net.WebClient;"^
- "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
- "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
- "}"^
- "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
- "}"
- if "%MVNW_VERBOSE%" == "true" (
- echo Finished downloading %WRAPPER_JAR%
- )
-)
-@REM End of extension
-
-@REM Provide a "standardized" way to retrieve the CLI args that will
-@REM work with both Windows and non-Windows executions.
-set MAVEN_CMD_LINE_ARGS=%*
-
-%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
-if ERRORLEVEL 1 goto error
-goto end
-
-:error
-set ERROR_CODE=1
-
-:end
-@endlocal & set ERROR_CODE=%ERROR_CODE%
-
-if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
-@REM check for post script, once with legacy .bat ending and once with .cmd ending
-if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
-if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
-:skipRcPost
-
-@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
-if "%MAVEN_BATCH_PAUSE%" == "on" pause
-
-if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
-
-exit /B %ERROR_CODE%
+@REM ----------------------------------------------------------------------------
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+@REM ----------------------------------------------------------------------------
+
+@REM ----------------------------------------------------------------------------
+@REM Apache Maven Wrapper startup batch script, version 3.3.0
+@REM
+@REM Required ENV vars:
+@REM JAVA_HOME - location of a JDK home dir
+@REM
+@REM Optional ENV vars
+@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
+@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
+@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
+@REM e.g. to debug Maven itself, use
+@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+@REM ----------------------------------------------------------------------------
+
+@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
+@echo off
+@REM set title of command window
+title %0
+@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
+@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
+
+@REM set %HOME% to equivalent of $HOME
+if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
+
+@REM Execute a user defined script before this one
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
+@REM check for pre script, once with legacy .bat ending and once with .cmd ending
+if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
+if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
+:skipRcPre
+
+@setlocal
+
+set ERROR_CODE=0
+
+@REM To isolate internal variables from possible post scripts, we use another setlocal
+@setlocal
+
+@REM ==== START VALIDATION ====
+if not "%JAVA_HOME%" == "" goto OkJHome
+
+echo. >&2
+echo Error: JAVA_HOME not found in your environment. >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo. >&2
+goto error
+
+:OkJHome
+if exist "%JAVA_HOME%\bin\java.exe" goto init
+
+echo. >&2
+echo Error: JAVA_HOME is set to an invalid directory. >&2
+echo JAVA_HOME = "%JAVA_HOME%" >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo. >&2
+goto error
+
+@REM ==== END VALIDATION ====
+
+:init
+
+@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
+@REM Fallback to current working directory if not found.
+
+set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
+IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
+
+set EXEC_DIR=%CD%
+set WDIR=%EXEC_DIR%
+:findBaseDir
+IF EXIST "%WDIR%"\.mvn goto baseDirFound
+cd ..
+IF "%WDIR%"=="%CD%" goto baseDirNotFound
+set WDIR=%CD%
+goto findBaseDir
+
+:baseDirFound
+set MAVEN_PROJECTBASEDIR=%WDIR%
+cd "%EXEC_DIR%"
+goto endDetectBaseDir
+
+:baseDirNotFound
+set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
+cd "%EXEC_DIR%"
+
+:endDetectBaseDir
+
+IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
+
+@setlocal EnableExtensions EnableDelayedExpansion
+for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
+@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
+
+:endReadAdditionalConfig
+
+SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
+set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
+set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.3.0/maven-wrapper-3.3.0.jar"
+
+FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
+ IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B
+)
+
+@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
+@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
+if exist %WRAPPER_JAR% (
+ if "%MVNW_VERBOSE%" == "true" (
+ echo Found %WRAPPER_JAR%
+ )
+) else (
+ if not "%MVNW_REPOURL%" == "" (
+ SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.3.0/maven-wrapper-3.3.0.jar"
+ )
+ if "%MVNW_VERBOSE%" == "true" (
+ echo Couldn't find %WRAPPER_JAR%, downloading it ...
+ echo Downloading from: %WRAPPER_URL%
+ )
+
+ powershell -Command "&{"^
+ "$webclient = new-object System.Net.WebClient;"^
+ "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
+ "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
+ "}"^
+ "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^
+ "}"
+ if "%MVNW_VERBOSE%" == "true" (
+ echo Finished downloading %WRAPPER_JAR%
+ )
+)
+@REM End of extension
+
+@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file
+SET WRAPPER_SHA_256_SUM=""
+FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
+ IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B
+)
+IF NOT %WRAPPER_SHA_256_SUM%=="" (
+ powershell -Command "&{"^
+ "Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash;"^
+ "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^
+ "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^
+ " Write-Error 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^
+ " Write-Error 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^
+ " Write-Error 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^
+ " exit 1;"^
+ "}"^
+ "}"
+ if ERRORLEVEL 1 goto error
+)
+
+@REM Provide a "standardized" way to retrieve the CLI args that will
+@REM work with both Windows and non-Windows executions.
+set MAVEN_CMD_LINE_ARGS=%*
+
+%MAVEN_JAVA_EXE% ^
+ %JVM_CONFIG_MAVEN_PROPS% ^
+ %MAVEN_OPTS% ^
+ %MAVEN_DEBUG_OPTS% ^
+ -classpath %WRAPPER_JAR% ^
+ "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
+ %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
+if ERRORLEVEL 1 goto error
+goto end
+
+:error
+set ERROR_CODE=1
+
+:end
+@endlocal & set ERROR_CODE=%ERROR_CODE%
+
+if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
+@REM check for post script, once with legacy .bat ending and once with .cmd ending
+if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
+if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
+:skipRcPost
+
+@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
+if "%MAVEN_BATCH_PAUSE%"=="on" pause
+
+if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
+
+cmd /C exit /B %ERROR_CODE%
diff --git a/parte_5/ejem0-jmeter/mvnw b/parte_5/ejem0-jmeter/mvnw
index bd8896b..1fdbaf2 100755
--- a/parte_5/ejem0-jmeter/mvnw
+++ b/parte_5/ejem0-jmeter/mvnw
@@ -19,277 +19,314 @@
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
-# Apache Maven Wrapper startup batch script, version 3.3.4
+# Apache Maven Wrapper startup batch script, version 3.3.0
+#
+# Required ENV vars:
+# ------------------
+# JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
-# JAVA_HOME - location of a JDK home dir, required when download maven via java source
-# MVNW_REPOURL - repo url base for downloading maven distribution
-# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
-# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output
+# MAVEN_OPTS - parameters passed to the Java VM when running Maven
+# e.g. to debug Maven itself, use
+# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------
-set -euf
-[ "${MVNW_VERBOSE-}" != debug ] || set -x
+if [ -z "$MAVEN_SKIP_RC" ]; then
+
+ if [ -f /usr/local/etc/mavenrc ]; then
+ . /usr/local/etc/mavenrc
+ fi
+
+ if [ -f /etc/mavenrc ]; then
+ . /etc/mavenrc
+ fi
+
+ if [ -f "$HOME/.mavenrc" ]; then
+ . "$HOME/.mavenrc"
+ fi
+
+fi
-# OS specific support.
-native_path() { printf %s\\n "$1"; }
+# OS specific support. $var _must_ be set to either true or false.
+cygwin=false
+darwin=false
+mingw=false
case "$(uname)" in
-CYGWIN* | MINGW*)
- [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")"
- native_path() { cygpath --path --windows "$1"; }
+CYGWIN*) cygwin=true ;;
+MINGW*) mingw=true ;;
+Darwin*)
+ darwin=true
+ # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
+ # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
+ if [ -z "$JAVA_HOME" ]; then
+ if [ -x "/usr/libexec/java_home" ]; then
+ JAVA_HOME="$(/usr/libexec/java_home)"
+ export JAVA_HOME
+ else
+ JAVA_HOME="/Library/Java/Home"
+ export JAVA_HOME
+ fi
+ fi
;;
esac
-# set JAVACMD and JAVACCMD
-set_java_home() {
- # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched
- if [ -n "${JAVA_HOME-}" ]; then
+if [ -z "$JAVA_HOME" ]; then
+ if [ -r /etc/gentoo-release ]; then
+ JAVA_HOME=$(java-config --jre-home)
+ fi
+fi
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched
+if $cygwin; then
+ [ -n "$JAVA_HOME" ] \
+ && JAVA_HOME=$(cygpath --unix "$JAVA_HOME")
+ [ -n "$CLASSPATH" ] \
+ && CLASSPATH=$(cygpath --path --unix "$CLASSPATH")
+fi
+
+# For Mingw, ensure paths are in UNIX format before anything is touched
+if $mingw; then
+ [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] \
+ && JAVA_HOME="$(
+ cd "$JAVA_HOME" || (
+ echo "cannot cd into $JAVA_HOME." >&2
+ exit 1
+ )
+ pwd
+ )"
+fi
+
+if [ -z "$JAVA_HOME" ]; then
+ javaExecutable="$(which javac)"
+ if [ -n "$javaExecutable" ] && ! [ "$(expr "$javaExecutable" : '\([^ ]*\)')" = "no" ]; then
+ # readlink(1) is not available as standard on Solaris 10.
+ readLink=$(which readlink)
+ if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then
+ if $darwin; then
+ javaHome="$(dirname "$javaExecutable")"
+ javaExecutable="$(cd "$javaHome" && pwd -P)/javac"
+ else
+ javaExecutable="$(readlink -f "$javaExecutable")"
+ fi
+ javaHome="$(dirname "$javaExecutable")"
+ javaHome=$(expr "$javaHome" : '\(.*\)/bin')
+ JAVA_HOME="$javaHome"
+ export JAVA_HOME
+ fi
+ fi
+fi
+
+if [ -z "$JAVACMD" ]; then
+ if [ -n "$JAVA_HOME" ]; then
if [ -x "$JAVA_HOME/jre/sh/java" ]; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
- JAVACCMD="$JAVA_HOME/jre/sh/javac"
else
JAVACMD="$JAVA_HOME/bin/java"
- JAVACCMD="$JAVA_HOME/bin/javac"
-
- if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then
- echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2
- echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2
- return 1
- fi
fi
else
JAVACMD="$(
- 'set' +e
- 'unset' -f command 2>/dev/null
- 'command' -v java
- )" || :
- JAVACCMD="$(
- 'set' +e
- 'unset' -f command 2>/dev/null
- 'command' -v javac
- )" || :
-
- if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then
- echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2
- return 1
- fi
+ \unset -f command 2>/dev/null
+ \command -v java
+ )"
fi
-}
-
-# hash string like Java String::hashCode
-hash_string() {
- str="${1:-}" h=0
- while [ -n "$str" ]; do
- char="${str%"${str#?}"}"
- h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296))
- str="${str#?}"
- done
- printf %x\\n $h
-}
-
-verbose() { :; }
-[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; }
+fi
-die() {
- printf %s\\n "$1" >&2
+if [ ! -x "$JAVACMD" ]; then
+ echo "Error: JAVA_HOME is not defined correctly." >&2
+ echo " We cannot execute $JAVACMD" >&2
exit 1
-}
-
-trim() {
- # MWRAPPER-139:
- # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds.
- # Needed for removing poorly interpreted newline sequences when running in more
- # exotic environments such as mingw bash on Windows.
- printf "%s" "${1}" | tr -d '[:space:]'
-}
+fi
-scriptDir="$(dirname "$0")"
-scriptName="$(basename "$0")"
+if [ -z "$JAVA_HOME" ]; then
+ echo "Warning: JAVA_HOME environment variable is not set." >&2
+fi
-# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties
-while IFS="=" read -r key value; do
- case "${key-}" in
- distributionUrl) distributionUrl=$(trim "${value-}") ;;
- distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;;
- esac
-done <"$scriptDir/.mvn/wrapper/maven-wrapper.properties"
-[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties"
+# traverses directory structure from process work directory to filesystem root
+# first directory with .mvn subdirectory is considered project base directory
+find_maven_basedir() {
+ if [ -z "$1" ]; then
+ echo "Path not specified to find_maven_basedir" >&2
+ return 1
+ fi
-case "${distributionUrl##*/}" in
-maven-mvnd-*bin.*)
- MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/
- case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in
- *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;;
- :Darwin*x86_64) distributionPlatform=darwin-amd64 ;;
- :Darwin*arm64) distributionPlatform=darwin-aarch64 ;;
- :Linux*x86_64*) distributionPlatform=linux-amd64 ;;
- *)
- echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2
- distributionPlatform=linux-amd64
- ;;
- esac
- distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip"
- ;;
-maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;;
-*) MVN_CMD="mvn${scriptName#mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;;
-esac
+ basedir="$1"
+ wdir="$1"
+ while [ "$wdir" != '/' ]; do
+ if [ -d "$wdir"/.mvn ]; then
+ basedir=$wdir
+ break
+ fi
+ # workaround for JBEAP-8937 (on Solaris 10/Sparc)
+ if [ -d "${wdir}" ]; then
+ wdir=$(
+ cd "$wdir/.." || exit 1
+ pwd
+ )
+ fi
+ # end of workaround
+ done
+ printf '%s' "$(
+ cd "$basedir" || exit 1
+ pwd
+ )"
+}
-# apply MVNW_REPOURL and calculate MAVEN_HOME
-# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/
-[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}"
-distributionUrlName="${distributionUrl##*/}"
-distributionUrlNameMain="${distributionUrlName%.*}"
-distributionUrlNameMain="${distributionUrlNameMain%-bin}"
-MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}"
-MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")"
+# concatenates all lines of a file
+concat_lines() {
+ if [ -f "$1" ]; then
+ # Remove \r in case we run on Windows within Git Bash
+ # and check out the repository with auto CRLF management
+ # enabled. Otherwise, we may read lines that are delimited with
+ # \r\n and produce $'-Xarg\r' rather than -Xarg due to word
+ # splitting rules.
+ tr -s '\r\n' ' ' <"$1"
+ fi
+}
-exec_maven() {
- unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || :
- exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD"
+log() {
+ if [ "$MVNW_VERBOSE" = true ]; then
+ printf '%s\n' "$1"
+ fi
}
-if [ -d "$MAVEN_HOME" ]; then
- verbose "found existing MAVEN_HOME at $MAVEN_HOME"
- exec_maven "$@"
+BASE_DIR=$(find_maven_basedir "$(dirname "$0")")
+if [ -z "$BASE_DIR" ]; then
+ exit 1
fi
-case "${distributionUrl-}" in
-*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;;
-*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;;
-esac
-
-# prepare tmp dir
-if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then
- clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; }
- trap clean HUP INT TERM EXIT
+MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
+export MAVEN_PROJECTBASEDIR
+log "$MAVEN_PROJECTBASEDIR"
+
+##########################################################################################
+# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
+# This allows using the maven wrapper in projects that prohibit checking in binary data.
+##########################################################################################
+wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar"
+if [ -r "$wrapperJarPath" ]; then
+ log "Found $wrapperJarPath"
else
- die "cannot create temp dir"
-fi
+ log "Couldn't find $wrapperJarPath, downloading it ..."
-mkdir -p -- "${MAVEN_HOME%/*}"
-
-# Download and Install Apache Maven
-verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
-verbose "Downloading from: $distributionUrl"
-verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
-
-# select .zip or .tar.gz
-if ! command -v unzip >/dev/null; then
- distributionUrl="${distributionUrl%.zip}.tar.gz"
- distributionUrlName="${distributionUrl##*/}"
-fi
-
-# verbose opt
-__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR=''
-[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v
-
-# normalize http auth
-case "${MVNW_PASSWORD:+has-password}" in
-'') MVNW_USERNAME='' MVNW_PASSWORD='' ;;
-has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;;
-esac
+ if [ -n "$MVNW_REPOURL" ]; then
+ wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.3.0/maven-wrapper-3.3.0.jar"
+ else
+ wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.3.0/maven-wrapper-3.3.0.jar"
+ fi
+ while IFS="=" read -r key value; do
+ # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' )
+ safeValue=$(echo "$value" | tr -d '\r')
+ case "$key" in wrapperUrl)
+ wrapperUrl="$safeValue"
+ break
+ ;;
+ esac
+ done <"$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
+ log "Downloading from: $wrapperUrl"
+
+ if $cygwin; then
+ wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath")
+ fi
-if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then
- verbose "Found wget ... using wget"
- wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl"
-elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then
- verbose "Found curl ... using curl"
- curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl"
-elif set_java_home; then
- verbose "Falling back to use Java to download"
- javaSource="$TMP_DOWNLOAD_DIR/Downloader.java"
- targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName"
- cat >"$javaSource" <<-END
- public class Downloader extends java.net.Authenticator
- {
- protected java.net.PasswordAuthentication getPasswordAuthentication()
- {
- return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() );
- }
- public static void main( String[] args ) throws Exception
- {
- setDefault( new Downloader() );
- java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() );
- }
- }
- END
- # For Cygwin/MinGW, switch paths to Windows format before running javac and java
- verbose " - Compiling Downloader.java ..."
- "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java"
- verbose " - Running Downloader.java ..."
- "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")"
+ if command -v wget >/dev/null; then
+ log "Found wget ... using wget"
+ [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet"
+ if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
+ wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
+ else
+ wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
+ fi
+ elif command -v curl >/dev/null; then
+ log "Found curl ... using curl"
+ [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent"
+ if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
+ curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath"
+ else
+ curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath"
+ fi
+ else
+ log "Falling back to using Java to download"
+ javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java"
+ javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class"
+ # For Cygwin, switch paths to Windows format before running javac
+ if $cygwin; then
+ javaSource=$(cygpath --path --windows "$javaSource")
+ javaClass=$(cygpath --path --windows "$javaClass")
+ fi
+ if [ -e "$javaSource" ]; then
+ if [ ! -e "$javaClass" ]; then
+ log " - Compiling MavenWrapperDownloader.java ..."
+ ("$JAVA_HOME/bin/javac" "$javaSource")
+ fi
+ if [ -e "$javaClass" ]; then
+ log " - Running MavenWrapperDownloader.java ..."
+ ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath"
+ fi
+ fi
+ fi
fi
+##########################################################################################
+# End of extension
+##########################################################################################
-# If specified, validate the SHA-256 sum of the Maven distribution zip file
-if [ -n "${distributionSha256Sum-}" ]; then
- distributionSha256Result=false
- if [ "$MVN_CMD" = mvnd.sh ]; then
- echo "Checksum validation is not supported for maven-mvnd." >&2
- echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
- exit 1
- elif command -v sha256sum >/dev/null; then
- if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c - >/dev/null 2>&1; then
- distributionSha256Result=true
+# If specified, validate the SHA-256 sum of the Maven wrapper jar file
+wrapperSha256Sum=""
+while IFS="=" read -r key value; do
+ case "$key" in wrapperSha256Sum)
+ wrapperSha256Sum=$value
+ break
+ ;;
+ esac
+done <"$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
+if [ -n "$wrapperSha256Sum" ]; then
+ wrapperSha256Result=false
+ if command -v sha256sum >/dev/null; then
+ if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c >/dev/null 2>&1; then
+ wrapperSha256Result=true
fi
elif command -v shasum >/dev/null; then
- if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then
- distributionSha256Result=true
+ if echo "$wrapperSha256Sum $wrapperJarPath" | shasum -a 256 -c >/dev/null 2>&1; then
+ wrapperSha256Result=true
fi
else
echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2
- echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
+ echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties." >&2
exit 1
fi
- if [ $distributionSha256Result = false ]; then
- echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2
- echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2
+ if [ $wrapperSha256Result = false ]; then
+ echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2
+ echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2
+ echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2
exit 1
fi
fi
-# unzip and move
-if command -v unzip >/dev/null; then
- unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip"
-else
- tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar"
-fi
-
-# Find the actual extracted directory name (handles snapshots where filename != directory name)
-actualDistributionDir=""
+MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
-# First try the expected directory name (for regular distributions)
-if [ -d "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" ]; then
- if [ -f "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/bin/$MVN_CMD" ]; then
- actualDistributionDir="$distributionUrlNameMain"
- fi
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin; then
+ [ -n "$JAVA_HOME" ] \
+ && JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME")
+ [ -n "$CLASSPATH" ] \
+ && CLASSPATH=$(cygpath --path --windows "$CLASSPATH")
+ [ -n "$MAVEN_PROJECTBASEDIR" ] \
+ && MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR")
fi
-# If not found, search for any directory with the Maven executable (for snapshots)
-if [ -z "$actualDistributionDir" ]; then
- # enable globbing to iterate over items
- set +f
- for dir in "$TMP_DOWNLOAD_DIR"/*; do
- if [ -d "$dir" ]; then
- if [ -f "$dir/bin/$MVN_CMD" ]; then
- actualDistributionDir="$(basename "$dir")"
- break
- fi
- fi
- done
- set -f
-fi
-
-if [ -z "$actualDistributionDir" ]; then
- verbose "Contents of $TMP_DOWNLOAD_DIR:"
- verbose "$(ls -la "$TMP_DOWNLOAD_DIR")"
- die "Could not find Maven distribution directory in extracted archive"
-fi
+# Provide a "standardized" way to retrieve the CLI args that will
+# work with both Windows and non-Windows executions.
+MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*"
+export MAVEN_CMD_LINE_ARGS
-verbose "Found extracted Maven distribution directory: $actualDistributionDir"
-printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$actualDistributionDir/mvnw.url"
-mv -- "$TMP_DOWNLOAD_DIR/$actualDistributionDir" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME"
+WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
-clean || :
-exec_maven "$@"
+# shellcheck disable=SC2086 # safe args
+exec "$JAVACMD" \
+ $MAVEN_OPTS \
+ $MAVEN_DEBUG_OPTS \
+ -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
+ "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
+ ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
diff --git a/parte_5/ejem0-jmeter/mvnw.cmd b/parte_5/ejem0-jmeter/mvnw.cmd
index 92450f9..ad14baf 100644
--- a/parte_5/ejem0-jmeter/mvnw.cmd
+++ b/parte_5/ejem0-jmeter/mvnw.cmd
@@ -1,4 +1,3 @@
-<# : batch portion
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@@ -19,171 +18,189 @@
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
-@REM Apache Maven Wrapper startup batch script, version 3.3.4
+@REM Apache Maven Wrapper startup batch script, version 3.3.0
+@REM
+@REM Required ENV vars:
+@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
-@REM MVNW_REPOURL - repo url base for downloading maven distribution
-@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
-@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output
+@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
+@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
+@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
+@REM e.g. to debug Maven itself, use
+@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------
-@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0)
-@SET __MVNW_CMD__=
-@SET __MVNW_ERROR__=
-@SET __MVNW_PSMODULEP_SAVE=%PSModulePath%
-@SET PSModulePath=
-@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @(
- IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B)
+@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
+@echo off
+@REM set title of command window
+title %0
+@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
+@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
+
+@REM set %HOME% to equivalent of $HOME
+if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
+
+@REM Execute a user defined script before this one
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
+@REM check for pre script, once with legacy .bat ending and once with .cmd ending
+if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
+if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
+:skipRcPre
+
+@setlocal
+
+set ERROR_CODE=0
+
+@REM To isolate internal variables from possible post scripts, we use another setlocal
+@setlocal
+
+@REM ==== START VALIDATION ====
+if not "%JAVA_HOME%" == "" goto OkJHome
+
+echo. >&2
+echo Error: JAVA_HOME not found in your environment. >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo. >&2
+goto error
+
+:OkJHome
+if exist "%JAVA_HOME%\bin\java.exe" goto init
+
+echo. >&2
+echo Error: JAVA_HOME is set to an invalid directory. >&2
+echo JAVA_HOME = "%JAVA_HOME%" >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo. >&2
+goto error
+
+@REM ==== END VALIDATION ====
+
+:init
+
+@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
+@REM Fallback to current working directory if not found.
+
+set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
+IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
+
+set EXEC_DIR=%CD%
+set WDIR=%EXEC_DIR%
+:findBaseDir
+IF EXIST "%WDIR%"\.mvn goto baseDirFound
+cd ..
+IF "%WDIR%"=="%CD%" goto baseDirNotFound
+set WDIR=%CD%
+goto findBaseDir
+
+:baseDirFound
+set MAVEN_PROJECTBASEDIR=%WDIR%
+cd "%EXEC_DIR%"
+goto endDetectBaseDir
+
+:baseDirNotFound
+set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
+cd "%EXEC_DIR%"
+
+:endDetectBaseDir
+
+IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
+
+@setlocal EnableExtensions EnableDelayedExpansion
+for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
+@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
+
+:endReadAdditionalConfig
+
+SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
+set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
+set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.3.0/maven-wrapper-3.3.0.jar"
+
+FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
+ IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B
+)
+
+@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
+@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
+if exist %WRAPPER_JAR% (
+ if "%MVNW_VERBOSE%" == "true" (
+ echo Found %WRAPPER_JAR%
+ )
+) else (
+ if not "%MVNW_REPOURL%" == "" (
+ SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.3.0/maven-wrapper-3.3.0.jar"
+ )
+ if "%MVNW_VERBOSE%" == "true" (
+ echo Couldn't find %WRAPPER_JAR%, downloading it ...
+ echo Downloading from: %WRAPPER_URL%
+ )
+
+ powershell -Command "&{"^
+ "$webclient = new-object System.Net.WebClient;"^
+ "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
+ "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
+ "}"^
+ "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^
+ "}"
+ if "%MVNW_VERBOSE%" == "true" (
+ echo Finished downloading %WRAPPER_JAR%
+ )
+)
+@REM End of extension
+
+@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file
+SET WRAPPER_SHA_256_SUM=""
+FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
+ IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B
)
-@SET PSModulePath=%__MVNW_PSMODULEP_SAVE%
-@SET __MVNW_PSMODULEP_SAVE=
-@SET __MVNW_ARG0_NAME__=
-@SET MVNW_USERNAME=
-@SET MVNW_PASSWORD=
-@IF NOT "%__MVNW_CMD__%"=="" ("%__MVNW_CMD__%" %*)
-@echo Cannot start maven from wrapper >&2 && exit /b 1
-@GOTO :EOF
-: end batch / begin powershell #>
-
-$ErrorActionPreference = "Stop"
-if ($env:MVNW_VERBOSE -eq "true") {
- $VerbosePreference = "Continue"
-}
-
-# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties
-$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl
-if (!$distributionUrl) {
- Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties"
-}
-
-switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) {
- "maven-mvnd-*" {
- $USE_MVND = $true
- $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip"
- $MVN_CMD = "mvnd.cmd"
- break
- }
- default {
- $USE_MVND = $false
- $MVN_CMD = $script -replace '^mvnw','mvn'
- break
- }
-}
-
-# apply MVNW_REPOURL and calculate MAVEN_HOME
-# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/
-if ($env:MVNW_REPOURL) {
- $MVNW_REPO_PATTERN = if ($USE_MVND -eq $False) { "/org/apache/maven/" } else { "/maven/mvnd/" }
- $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace "^.*$MVNW_REPO_PATTERN",'')"
-}
-$distributionUrlName = $distributionUrl -replace '^.*/',''
-$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$',''
-
-$MAVEN_M2_PATH = "$HOME/.m2"
-if ($env:MAVEN_USER_HOME) {
- $MAVEN_M2_PATH = "$env:MAVEN_USER_HOME"
-}
-
-if (-not (Test-Path -Path $MAVEN_M2_PATH)) {
- New-Item -Path $MAVEN_M2_PATH -ItemType Directory | Out-Null
-}
-
-$MAVEN_WRAPPER_DISTS = $null
-if ((Get-Item $MAVEN_M2_PATH).Target[0] -eq $null) {
- $MAVEN_WRAPPER_DISTS = "$MAVEN_M2_PATH/wrapper/dists"
-} else {
- $MAVEN_WRAPPER_DISTS = (Get-Item $MAVEN_M2_PATH).Target[0] + "/wrapper/dists"
-}
-
-$MAVEN_HOME_PARENT = "$MAVEN_WRAPPER_DISTS/$distributionUrlNameMain"
-$MAVEN_HOME_NAME = ([System.Security.Cryptography.SHA256]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join ''
-$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME"
-
-if (Test-Path -Path "$MAVEN_HOME" -PathType Container) {
- Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME"
- Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
- exit $?
-}
-
-if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) {
- Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl"
-}
-
-# prepare tmp dir
-$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile
-$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir"
-$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null
-trap {
- if ($TMP_DOWNLOAD_DIR.Exists) {
- try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
- catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
- }
-}
-
-New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null
-
-# Download and Install Apache Maven
-Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
-Write-Verbose "Downloading from: $distributionUrl"
-Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
-
-$webclient = New-Object System.Net.WebClient
-if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) {
- $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD)
-}
-[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
-$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null
-
-# If specified, validate the SHA-256 sum of the Maven distribution zip file
-$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum
-if ($distributionSha256Sum) {
- if ($USE_MVND) {
- Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties."
- }
- Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash
- if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) {
- Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property."
- }
-}
-
-# unzip and move
-Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null
-
-# Find the actual extracted directory name (handles snapshots where filename != directory name)
-$actualDistributionDir = ""
-
-# First try the expected directory name (for regular distributions)
-$expectedPath = Join-Path "$TMP_DOWNLOAD_DIR" "$distributionUrlNameMain"
-$expectedMvnPath = Join-Path "$expectedPath" "bin/$MVN_CMD"
-if ((Test-Path -Path $expectedPath -PathType Container) -and (Test-Path -Path $expectedMvnPath -PathType Leaf)) {
- $actualDistributionDir = $distributionUrlNameMain
-}
-
-# If not found, search for any directory with the Maven executable (for snapshots)
-if (!$actualDistributionDir) {
- Get-ChildItem -Path "$TMP_DOWNLOAD_DIR" -Directory | ForEach-Object {
- $testPath = Join-Path $_.FullName "bin/$MVN_CMD"
- if (Test-Path -Path $testPath -PathType Leaf) {
- $actualDistributionDir = $_.Name
- }
- }
-}
-
-if (!$actualDistributionDir) {
- Write-Error "Could not find Maven distribution directory in extracted archive"
-}
-
-Write-Verbose "Found extracted Maven distribution directory: $actualDistributionDir"
-Rename-Item -Path "$TMP_DOWNLOAD_DIR/$actualDistributionDir" -NewName $MAVEN_HOME_NAME | Out-Null
-try {
- Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null
-} catch {
- if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) {
- Write-Error "fail to move MAVEN_HOME"
- }
-} finally {
- try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
- catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
-}
-
-Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
+IF NOT %WRAPPER_SHA_256_SUM%=="" (
+ powershell -Command "&{"^
+ "Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash;"^
+ "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^
+ "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^
+ " Write-Error 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^
+ " Write-Error 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^
+ " Write-Error 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^
+ " exit 1;"^
+ "}"^
+ "}"
+ if ERRORLEVEL 1 goto error
+)
+
+@REM Provide a "standardized" way to retrieve the CLI args that will
+@REM work with both Windows and non-Windows executions.
+set MAVEN_CMD_LINE_ARGS=%*
+
+%MAVEN_JAVA_EXE% ^
+ %JVM_CONFIG_MAVEN_PROPS% ^
+ %MAVEN_OPTS% ^
+ %MAVEN_DEBUG_OPTS% ^
+ -classpath %WRAPPER_JAR% ^
+ "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
+ %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
+if ERRORLEVEL 1 goto error
+goto end
+
+:error
+set ERROR_CODE=1
+
+:end
+@endlocal & set ERROR_CODE=%ERROR_CODE%
+
+if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
+@REM check for post script, once with legacy .bat ending and once with .cmd ending
+if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
+if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
+:skipRcPost
+
+@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
+if "%MAVEN_BATCH_PAUSE%"=="on" pause
+
+if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
+
+cmd /C exit /B %ERROR_CODE%
From ae9d8723ebcbf7a3543a96572c0e0e3220390d95 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 3 May 2026 21:19:19 +0000
Subject: [PATCH 06/12] Fix all remaining compilation failures: Jackson 3.x,
Hibernate 7, Spring Security 7, Spring Session 4.x, CI workflow
Agent-Logs-Url: https://github.com/codeurjc/dad2425/sessions/63ada7cb-c19d-454b-9ff6-ea5c62f687b3
Co-authored-by: gortazar <203272+gortazar@users.noreply.github.com>
---
.github/workflows/maven-build.yml | 4 +-
.../board/controller/PostController.java | 2 +-
.../mastercloudapps/amqp/ExampleData.java | 2 +-
.../mastercloudapps/amqp/ExampleData.java | 2 +-
.../mastercloudapps/amqp/ExampleData.java | 2 +-
.../mastercloudapps/amqp/ExampleData.java | 2 +-
.../mastercloudapps/amqp/ExampleData.java | 2 +-
.../amqp/WebSocketHandler.java | 6 +-
.../mastercloudapps/amqp/ExampleData.java | 2 +-
parte_5/ejem3-cache-distribuida/pom.xml | 8 +-
.../es/urjc/code/security/Application.java | 23 +-----
.../code/security/SecurityConfiguration.java | 16 ++--
parte_5/ejem3-cache-distribuida2/pom.xml | 8 +-
.../es/codeurjc/daw/library/Application.java | 26 +-----
.../library/security/WebSecurityConfig.java | 5 +-
.../library/security/WebSecurityConfig.java | 80 ++++++++++---------
16 files changed, 73 insertions(+), 117 deletions(-)
diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-build.yml
index 078ec39..6eb32f5 100644
--- a/.github/workflows/maven-build.yml
+++ b/.github/workflows/maven-build.yml
@@ -101,8 +101,8 @@ jobs:
- 'parte_4/tema_4.2/ejer8'
# Parte 4 - Docker Projects
- - 'parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem2-consumer'
- - 'parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem2-producer'
+ - 'parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer'
+ - 'parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-producer'
- 'parte_4/tema_4.3/ejemplo-2'
- 'parte_4/tema_4.3/ejemplo-3'
- 'parte_4/tema_4.3/ejercicio-1-enunciado'
diff --git a/parte_2/tema_2.5_db/bd_ejem22/src/main/java/es/codeurjc/board/controller/PostController.java b/parte_2/tema_2.5_db/bd_ejem22/src/main/java/es/codeurjc/board/controller/PostController.java
index 997efd5..4cc464c 100644
--- a/parte_2/tema_2.5_db/bd_ejem22/src/main/java/es/codeurjc/board/controller/PostController.java
+++ b/parte_2/tema_2.5_db/bd_ejem22/src/main/java/es/codeurjc/board/controller/PostController.java
@@ -7,7 +7,7 @@
import java.sql.SQLException;
import java.util.List;
-import org.hibernate.engine.jdbc.BlobProxy;
+import org.hibernate.engine.jdbc.proxy.BlobProxy;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.InputStreamResource;
import org.springframework.core.io.Resource;
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-consumer/src/main/java/es/codeurjc/mastercloudapps/amqp/ExampleData.java b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-consumer/src/main/java/es/codeurjc/mastercloudapps/amqp/ExampleData.java
index f05eca8..b6c7bb0 100644
--- a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-consumer/src/main/java/es/codeurjc/mastercloudapps/amqp/ExampleData.java
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-consumer/src/main/java/es/codeurjc/mastercloudapps/amqp/ExampleData.java
@@ -1,6 +1,6 @@
package es.codeurjc.mastercloudapps.amqp;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import tools.jackson.databind.ObjectMapper;
public class ExampleData {
private String data;
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-producer/src/main/java/es/codeurjc/mastercloudapps/amqp/ExampleData.java b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-producer/src/main/java/es/codeurjc/mastercloudapps/amqp/ExampleData.java
index f05eca8..b6c7bb0 100644
--- a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-producer/src/main/java/es/codeurjc/mastercloudapps/amqp/ExampleData.java
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-producer/src/main/java/es/codeurjc/mastercloudapps/amqp/ExampleData.java
@@ -1,6 +1,6 @@
package es.codeurjc.mastercloudapps.amqp;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import tools.jackson.databind.ObjectMapper;
public class ExampleData {
private String data;
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-client/src/main/java/es/codeurjc/mastercloudapps/amqp/ExampleData.java b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-client/src/main/java/es/codeurjc/mastercloudapps/amqp/ExampleData.java
index f05eca8..b6c7bb0 100644
--- a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-client/src/main/java/es/codeurjc/mastercloudapps/amqp/ExampleData.java
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-client/src/main/java/es/codeurjc/mastercloudapps/amqp/ExampleData.java
@@ -1,6 +1,6 @@
package es.codeurjc.mastercloudapps.amqp;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import tools.jackson.databind.ObjectMapper;
public class ExampleData {
private String data;
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-service/src/main/java/es/codeurjc/mastercloudapps/amqp/ExampleData.java b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-service/src/main/java/es/codeurjc/mastercloudapps/amqp/ExampleData.java
index f05eca8..b6c7bb0 100644
--- a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-service/src/main/java/es/codeurjc/mastercloudapps/amqp/ExampleData.java
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-service/src/main/java/es/codeurjc/mastercloudapps/amqp/ExampleData.java
@@ -1,6 +1,6 @@
package es.codeurjc.mastercloudapps.amqp;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import tools.jackson.databind.ObjectMapper;
public class ExampleData {
private String data;
diff --git a/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/src/main/java/es/codeurjc/mastercloudapps/amqp/ExampleData.java b/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/src/main/java/es/codeurjc/mastercloudapps/amqp/ExampleData.java
index f05eca8..b6c7bb0 100644
--- a/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/src/main/java/es/codeurjc/mastercloudapps/amqp/ExampleData.java
+++ b/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/src/main/java/es/codeurjc/mastercloudapps/amqp/ExampleData.java
@@ -1,6 +1,6 @@
package es.codeurjc.mastercloudapps.amqp;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import tools.jackson.databind.ObjectMapper;
public class ExampleData {
private String data;
diff --git a/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/src/main/java/es/codeurjc/mastercloudapps/amqp/WebSocketHandler.java b/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/src/main/java/es/codeurjc/mastercloudapps/amqp/WebSocketHandler.java
index b48d980..9680613 100644
--- a/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/src/main/java/es/codeurjc/mastercloudapps/amqp/WebSocketHandler.java
+++ b/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/src/main/java/es/codeurjc/mastercloudapps/amqp/WebSocketHandler.java
@@ -10,8 +10,8 @@
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.AbstractWebSocketHandler;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import tools.jackson.core.JacksonException;
+import tools.jackson.databind.ObjectMapper;
@Component
public class WebSocketHandler extends AbstractWebSocketHandler {
@@ -50,7 +50,7 @@ public void sendMessage(ExampleData data) {
try {
json = new ObjectMapper().writeValueAsString(data);
websocketSession.sendMessage(new TextMessage(json));
- } catch (JsonProcessingException e) {
+ } catch (JacksonException e) {
logger.error("Cannot convert to json: " + data.getData());
throw new RuntimeException();
} catch (IOException e) {
diff --git a/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-producer/src/main/java/es/codeurjc/mastercloudapps/amqp/ExampleData.java b/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-producer/src/main/java/es/codeurjc/mastercloudapps/amqp/ExampleData.java
index f05eca8..b6c7bb0 100644
--- a/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-producer/src/main/java/es/codeurjc/mastercloudapps/amqp/ExampleData.java
+++ b/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-producer/src/main/java/es/codeurjc/mastercloudapps/amqp/ExampleData.java
@@ -1,6 +1,6 @@
package es.codeurjc.mastercloudapps.amqp;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import tools.jackson.databind.ObjectMapper;
public class ExampleData {
private String data;
diff --git a/parte_5/ejem3-cache-distribuida/pom.xml b/parte_5/ejem3-cache-distribuida/pom.xml
index 78a0d13..c58a8c8 100644
--- a/parte_5/ejem3-cache-distribuida/pom.xml
+++ b/parte_5/ejem3-cache-distribuida/pom.xml
@@ -41,14 +41,10 @@
h2
-
+
org.springframework.session
- spring-session-hazelcast
-
-
- com.hazelcast
- hazelcast
+ spring-session-jdbc
diff --git a/parte_5/ejem3-cache-distribuida/src/main/java/es/urjc/code/security/Application.java b/parte_5/ejem3-cache-distribuida/src/main/java/es/urjc/code/security/Application.java
index a014d45..865bdcc 100644
--- a/parte_5/ejem3-cache-distribuida/src/main/java/es/urjc/code/security/Application.java
+++ b/parte_5/ejem3-cache-distribuida/src/main/java/es/urjc/code/security/Application.java
@@ -1,33 +1,14 @@
package es.urjc.code.security;
-import java.util.Collections;
-
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.annotation.Bean;
-import org.springframework.session.hazelcast.config.annotation.web.http.EnableHazelcastHttpSession;
-
-import com.hazelcast.config.Config;
-import com.hazelcast.config.JoinConfig;
+import org.springframework.session.jdbc.config.annotation.web.http.EnableJdbcHttpSession;
@SpringBootApplication
-@EnableHazelcastHttpSession
+@EnableJdbcHttpSession
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
-
- @Bean
- public Config config() {
-
- Config config = new Config();
-
- JoinConfig joinConfig = config.getNetworkConfig().getJoin();
-
- joinConfig.getMulticastConfig().setEnabled(false);
- joinConfig.getTcpIpConfig().setEnabled(true).setMembers(Collections.singletonList("127.0.0.1"));
-
- return config;
- }
}
diff --git a/parte_5/ejem3-cache-distribuida/src/main/java/es/urjc/code/security/SecurityConfiguration.java b/parte_5/ejem3-cache-distribuida/src/main/java/es/urjc/code/security/SecurityConfiguration.java
index 3117b74..eac4b21 100644
--- a/parte_5/ejem3-cache-distribuida/src/main/java/es/urjc/code/security/SecurityConfiguration.java
+++ b/parte_5/ejem3-cache-distribuida/src/main/java/es/urjc/code/security/SecurityConfiguration.java
@@ -1,8 +1,9 @@
+package es.urjc.code.security;
+
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;
-import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
@Configuration
public class SecurityConfiguration {
@@ -10,14 +11,15 @@ public class SecurityConfiguration {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
- .authorizeHttpRequests()
+ .authorizeHttpRequests(authorize -> authorize
.anyRequest().authenticated()
- .and()
- .formLogin()
+ )
+ .formLogin(formLogin -> formLogin
+ .permitAll()
+ )
+ .logout(logout -> logout
.permitAll()
- .and()
- .logout()
- .permitAll();
+ );
return http.build();
}
diff --git a/parte_5/ejem3-cache-distribuida2/pom.xml b/parte_5/ejem3-cache-distribuida2/pom.xml
index 489460d..7d17fb0 100644
--- a/parte_5/ejem3-cache-distribuida2/pom.xml
+++ b/parte_5/ejem3-cache-distribuida2/pom.xml
@@ -41,14 +41,10 @@
spring-boot-starter-security
-
+
org.springframework.session
- spring-session-hazelcast
-
-
- com.hazelcast
- hazelcast
+ spring-session-jdbc
diff --git a/parte_5/ejem3-cache-distribuida2/src/main/java/es/codeurjc/daw/library/Application.java b/parte_5/ejem3-cache-distribuida2/src/main/java/es/codeurjc/daw/library/Application.java
index 2e9f351..136ad48 100644
--- a/parte_5/ejem3-cache-distribuida2/src/main/java/es/codeurjc/daw/library/Application.java
+++ b/parte_5/ejem3-cache-distribuida2/src/main/java/es/codeurjc/daw/library/Application.java
@@ -1,36 +1,14 @@
package es.codeurjc.daw.library;
-import java.util.Collections;
-
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.annotation.Bean;
-import org.springframework.session.hazelcast.config.annotation.web.http.EnableHazelcastHttpSession;
-
-import com.hazelcast.config.Config;
-import com.hazelcast.config.JoinConfig;
-import com.hazelcast.core.Hazelcast;
-import com.hazelcast.core.HazelcastInstance;
+import org.springframework.session.jdbc.config.annotation.web.http.EnableJdbcHttpSession;
@SpringBootApplication
-@EnableHazelcastHttpSession
+@EnableJdbcHttpSession
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
-
- @Bean
- HazelcastInstance config() {
-
- Config config = new Config();
-
- JoinConfig joinConfig = config.getNetworkConfig().getJoin();
-
- joinConfig.getMulticastConfig().setEnabled(false);
- joinConfig.getTcpIpConfig().setEnabled(true).setMembers(Collections.singletonList("127.0.0.1"));
-
- return Hazelcast.newHazelcastInstance(config);
- }
-
}
\ No newline at end of file
diff --git a/parte_5/ejem3-cache-distribuida2/src/main/java/es/codeurjc/daw/library/security/WebSecurityConfig.java b/parte_5/ejem3-cache-distribuida2/src/main/java/es/codeurjc/daw/library/security/WebSecurityConfig.java
index c81b9e0..52a4f76 100644
--- a/parte_5/ejem3-cache-distribuida2/src/main/java/es/codeurjc/daw/library/security/WebSecurityConfig.java
+++ b/parte_5/ejem3-cache-distribuida2/src/main/java/es/codeurjc/daw/library/security/WebSecurityConfig.java
@@ -24,11 +24,8 @@ public PasswordEncoder passwordEncoder() {
@Bean
public DaoAuthenticationProvider authenticationProvider() {
- DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();
-
- authProvider.setUserDetailsService(userDetailService);
+ DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider(userDetailService);
authProvider.setPasswordEncoder(passwordEncoder());
-
return authProvider;
}
diff --git a/parte_5/ejem4b-haproxy-ssl-passthrough/src/main/java/es/codeurjc/daw/library/security/WebSecurityConfig.java b/parte_5/ejem4b-haproxy-ssl-passthrough/src/main/java/es/codeurjc/daw/library/security/WebSecurityConfig.java
index d5f56de..c732b71 100644
--- a/parte_5/ejem4b-haproxy-ssl-passthrough/src/main/java/es/codeurjc/daw/library/security/WebSecurityConfig.java
+++ b/parte_5/ejem4b-haproxy-ssl-passthrough/src/main/java/es/codeurjc/daw/library/security/WebSecurityConfig.java
@@ -5,58 +5,64 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
+import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.security.web.SecurityFilterChain;
@Configuration
@EnableWebSecurity
-public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
+public class WebSecurityConfig {
@Autowired
RepositoryUserDetailsService userDetailsService;
-
+
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder(10, new SecureRandom());
}
- @Override
- protected void configure(AuthenticationManagerBuilder auth) throws Exception {
+ @Bean
+ public DaoAuthenticationProvider authenticationProvider() {
+ DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider(userDetailsService);
+ authProvider.setPasswordEncoder(passwordEncoder());
+ return authProvider;
+ }
+
+ @Bean
+ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
+
+ http.authenticationProvider(authenticationProvider());
+
+ http
+ .authorizeHttpRequests(authorize -> authorize
+ // Public pages
+ .requestMatchers("/").permitAll()
+ .requestMatchers("/login").permitAll()
+ .requestMatchers("/loginerror").permitAll()
+ .requestMatchers("/logout").permitAll()
+ // Private pages
+ .requestMatchers("/newbook").hasAnyRole("USER")
+ .requestMatchers("/editbook/*").hasAnyRole("USER")
+ .requestMatchers("/removebook/*").hasAnyRole("ADMIN")
+ .anyRequest().authenticated()
+ )
+ .formLogin(formLogin -> formLogin
+ .loginPage("/login")
+ .usernameParameter("username")
+ .passwordParameter("password")
+ .defaultSuccessUrl("/")
+ .failureUrl("/loginerror")
+ .permitAll()
+ )
+ .logout(logout -> logout
+ .logoutUrl("/logout")
+ .logoutSuccessUrl("/")
+ .permitAll()
+ );
- auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
+ return http.build();
}
-
- @Override
- protected void configure(HttpSecurity http) throws Exception {
-
- // Public pages
- http.authorizeRequests()
- .antMatchers("/").permitAll()
- .antMatchers("/login").permitAll()
- .antMatchers("/loginerror").permitAll()
- .antMatchers("/logout").permitAll()
- // Private pages
- .antMatchers("/newbook").hasAnyRole("USER")
- .antMatchers("/editbook/*").hasAnyRole("USER")
- .antMatchers("/removebook/*").hasAnyRole("ADMIN")
- .anyRequest().authenticated()
- .and()
- // Login form
- .formLogin()
- .loginPage("/login")
- .usernameParameter("username")
- .passwordParameter("password")
- .defaultSuccessUrl("/")
- .failureUrl("/loginerror")
- .and()
- // Logout
- .logout()
- .logoutUrl("/logout")
- .logoutSuccessUrl("/");
- }
}
\ No newline at end of file
From 9ced767ef296a3f8fc3f3cab5237a04b721326f5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Patxi=20Gort=C3=A1zar?=
Date: Tue, 27 Oct 2026 12:55:13 +0100
Subject: [PATCH 07/12] Use JacksonJsonMessageConverter in the RabbitMQ samples
Spring Boot 4 ships Jackson 3, so com.fasterxml.jackson.databind is gone
from the classpath and Jackson2JsonMessageConverter fails at startup with
ClassNotFoundException on com.fasterxml.jackson.databind.json.JsonMapper.
Spring AMQP 4 provides JacksonJsonMessageConverter as the Jackson 3
equivalent.
The ExampleData classes in these projects had already been moved to
tools.jackson.databind; only the converter bean was left behind.
Verified on Temurin 21: all six compile and their Spring context starts.
Co-Authored-By: Claude Opus 5
---
.../java/es/codeurjc/mastercloudapps/amqp/Application.java | 4 ++--
.../java/es/codeurjc/mastercloudapps/amqp/Application.java | 4 ++--
.../java/es/codeurjc/mastercloudapps/amqp/Application.java | 4 ++--
.../java/es/codeurjc/mastercloudapps/amqp/Application.java | 4 ++--
.../java/es/codeurjc/mastercloudapps/amqp/Application.java | 4 ++--
.../java/es/codeurjc/mastercloudapps/amqp/Application.java | 4 ++--
6 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-consumer/src/main/java/es/codeurjc/mastercloudapps/amqp/Application.java b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-consumer/src/main/java/es/codeurjc/mastercloudapps/amqp/Application.java
index 7facb9e..86a2f86 100644
--- a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-consumer/src/main/java/es/codeurjc/mastercloudapps/amqp/Application.java
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-consumer/src/main/java/es/codeurjc/mastercloudapps/amqp/Application.java
@@ -1,7 +1,7 @@
package es.codeurjc.mastercloudapps.amqp;
import org.springframework.amqp.core.Queue;
-import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
+import org.springframework.amqp.support.converter.JacksonJsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -21,6 +21,6 @@ public Queue myQueue() {
@Bean
public MessageConverter messageConverter() {
- return new Jackson2JsonMessageConverter();
+ return new JacksonJsonMessageConverter();
}
}
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-producer/src/main/java/es/codeurjc/mastercloudapps/amqp/Application.java b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-producer/src/main/java/es/codeurjc/mastercloudapps/amqp/Application.java
index 24a7d00..64a91e4 100644
--- a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-producer/src/main/java/es/codeurjc/mastercloudapps/amqp/Application.java
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-producer/src/main/java/es/codeurjc/mastercloudapps/amqp/Application.java
@@ -1,7 +1,7 @@
package es.codeurjc.mastercloudapps.amqp;
import org.springframework.amqp.core.Queue;
-import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
+import org.springframework.amqp.support.converter.JacksonJsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -23,6 +23,6 @@ public Queue myQueue() {
@Bean
public MessageConverter messageConverter() {
- return new Jackson2JsonMessageConverter();
+ return new JacksonJsonMessageConverter();
}
}
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-client/src/main/java/es/codeurjc/mastercloudapps/amqp/Application.java b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-client/src/main/java/es/codeurjc/mastercloudapps/amqp/Application.java
index 8658b9c..45f15d8 100644
--- a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-client/src/main/java/es/codeurjc/mastercloudapps/amqp/Application.java
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-client/src/main/java/es/codeurjc/mastercloudapps/amqp/Application.java
@@ -1,7 +1,7 @@
package es.codeurjc.mastercloudapps.amqp;
import org.springframework.amqp.core.Queue;
-import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
+import org.springframework.amqp.support.converter.JacksonJsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -28,6 +28,6 @@ public Queue responsesQueue() {
@Bean
public MessageConverter messageConverter() {
- return new Jackson2JsonMessageConverter();
+ return new JacksonJsonMessageConverter();
}
}
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-service/src/main/java/es/codeurjc/mastercloudapps/amqp/Application.java b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-service/src/main/java/es/codeurjc/mastercloudapps/amqp/Application.java
index 1b3ed54..eacaff7 100644
--- a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-service/src/main/java/es/codeurjc/mastercloudapps/amqp/Application.java
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-service/src/main/java/es/codeurjc/mastercloudapps/amqp/Application.java
@@ -1,7 +1,7 @@
package es.codeurjc.mastercloudapps.amqp;
import org.springframework.amqp.core.Queue;
-import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
+import org.springframework.amqp.support.converter.JacksonJsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -26,6 +26,6 @@ public Queue responsesQueue() {
@Bean
public MessageConverter messageConverter() {
- return new Jackson2JsonMessageConverter();
+ return new JacksonJsonMessageConverter();
}
}
diff --git a/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/src/main/java/es/codeurjc/mastercloudapps/amqp/Application.java b/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/src/main/java/es/codeurjc/mastercloudapps/amqp/Application.java
index 7facb9e..86a2f86 100644
--- a/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/src/main/java/es/codeurjc/mastercloudapps/amqp/Application.java
+++ b/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/src/main/java/es/codeurjc/mastercloudapps/amqp/Application.java
@@ -1,7 +1,7 @@
package es.codeurjc.mastercloudapps.amqp;
import org.springframework.amqp.core.Queue;
-import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
+import org.springframework.amqp.support.converter.JacksonJsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -21,6 +21,6 @@ public Queue myQueue() {
@Bean
public MessageConverter messageConverter() {
- return new Jackson2JsonMessageConverter();
+ return new JacksonJsonMessageConverter();
}
}
diff --git a/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-producer/src/main/java/es/codeurjc/mastercloudapps/amqp/Application.java b/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-producer/src/main/java/es/codeurjc/mastercloudapps/amqp/Application.java
index 24a7d00..64a91e4 100644
--- a/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-producer/src/main/java/es/codeurjc/mastercloudapps/amqp/Application.java
+++ b/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-producer/src/main/java/es/codeurjc/mastercloudapps/amqp/Application.java
@@ -1,7 +1,7 @@
package es.codeurjc.mastercloudapps.amqp;
import org.springframework.amqp.core.Queue;
-import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
+import org.springframework.amqp.support.converter.JacksonJsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -23,6 +23,6 @@ public Queue myQueue() {
@Bean
public MessageConverter messageConverter() {
- return new Jackson2JsonMessageConverter();
+ return new JacksonJsonMessageConverter();
}
}
From 75187792d2cd2bc8c0be3c52daf8738216be6ed9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Patxi=20Gort=C3=A1zar?=
Date: Wed, 28 Oct 2026 12:54:26 +0100
Subject: [PATCH 08/12] Rename the entities that collided with the SQL reserved
word USER
H2 treats USER as reserved, so Hibernate's generated DDL failed at startup
in three samples. MySQL accepts it, which is why these ran for years and
only broke on the H2-backed profiles.
Renamed the entity rather than quoting the identifier: a delimited name
would be case-sensitive and would have to be quoted in every hand-written
query, which is a trap for students using the H2 console.
- parte_5/ejem3-cache-distribuida: User -> AppUser
- parte_5/ejem4b-haproxy-ssl-passthrough: User -> AppUser
- parte_2/tema_2.5_db/bd_ejer2: Post.user -> Post.author, since the clash
there is a column, not a table; templates and the form field follow.
In new_post.html only the form field was renamed. The {{#user}} section
there reads the model attribute the controller sets from UserSession,
which is a different thing and still named user. Visible labels are left
untouched.
Verified on Temurin 21: the three compile and their Spring context starts.
Co-Authored-By: Claude Opus 5
---
.../board/controller/PostController.java | 2 +-
.../main/java/es/codeurjc/board/model/Post.java | 16 ++++++++--------
.../src/main/resources/templates/index.html | 2 +-
.../src/main/resources/templates/new_post.html | 2 +-
.../src/main/resources/templates/show_post.html | 2 +-
.../code/security/{User.java => AppUser.java} | 6 +++---
.../urjc/code/security/DatabaseUsersLoader.java | 4 ++--
.../es/urjc/code/security/UserRepository.java | 4 ++--
.../UserRepositoryAuthenticationProvider.java | 4 ++--
.../library/model/{User.java => AppUser.java} | 6 +++---
.../daw/library/repository/UserRepository.java | 6 +++---
.../security/RepositoryUserDetailsService.java | 6 +++---
.../daw/library/service/DatabaseInitializer.java | 6 +++---
13 files changed, 33 insertions(+), 33 deletions(-)
rename parte_5/ejem3-cache-distribuida/src/main/java/es/urjc/code/security/{User.java => AppUser.java} (91%)
rename parte_5/ejem4b-haproxy-ssl-passthrough/src/main/java/es/codeurjc/daw/library/model/{User.java => AppUser.java} (89%)
diff --git a/parte_2/tema_2.5_db/bd_ejer2/src/main/java/es/codeurjc/board/controller/PostController.java b/parte_2/tema_2.5_db/bd_ejer2/src/main/java/es/codeurjc/board/controller/PostController.java
index 312f157..bf35adc 100644
--- a/parte_2/tema_2.5_db/bd_ejer2/src/main/java/es/codeurjc/board/controller/PostController.java
+++ b/parte_2/tema_2.5_db/bd_ejer2/src/main/java/es/codeurjc/board/controller/PostController.java
@@ -66,7 +66,7 @@ public String newPost(Model model, Post post, MultipartFile image) throws IOExce
imageService.saveImage(POSTS_FOLDER, post.getId(), image);
- userSession.setUser(post.getUser());
+ userSession.setUser(post.getAuthor());
userSession.incNumPosts();
model.addAttribute("numPosts", userSession.getNumPosts());
diff --git a/parte_2/tema_2.5_db/bd_ejer2/src/main/java/es/codeurjc/board/model/Post.java b/parte_2/tema_2.5_db/bd_ejer2/src/main/java/es/codeurjc/board/model/Post.java
index 44ed78c..10885e3 100644
--- a/parte_2/tema_2.5_db/bd_ejer2/src/main/java/es/codeurjc/board/model/Post.java
+++ b/parte_2/tema_2.5_db/bd_ejer2/src/main/java/es/codeurjc/board/model/Post.java
@@ -12,16 +12,16 @@ public class Post {
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
- private String user;
+ private String author;
private String title;
private String text;
public Post() {
}
- public Post(String user, String title, String text) {
+ public Post(String author, String title, String text) {
super();
- this.user = user;
+ this.author = author;
this.title = title;
this.text = text;
}
@@ -34,12 +34,12 @@ public void setId(long id) {
this.id = id;
}
- public String getUser() {
- return user;
+ public String getAuthor() {
+ return author;
}
- public void setUser(String user) {
- this.user = user;
+ public void setAuthor(String author) {
+ this.author = author;
}
public String getTitle() {
@@ -60,7 +60,7 @@ public void setText(String text) {
@Override
public String toString() {
- return "Post [id=" + id + ", user=" + user + ", title=" + title + ", text=" + text + "]";
+ return "Post [id=" + id + ", author=" + author + ", title=" + title + ", text=" + text + "]";
}
}
diff --git a/parte_2/tema_2.5_db/bd_ejer2/src/main/resources/templates/index.html b/parte_2/tema_2.5_db/bd_ejer2/src/main/resources/templates/index.html
index a26969a..60c0535 100644
--- a/parte_2/tema_2.5_db/bd_ejer2/src/main/resources/templates/index.html
+++ b/parte_2/tema_2.5_db/bd_ejer2/src/main/resources/templates/index.html
@@ -7,7 +7,7 @@ Welcome!
Posts
{{#posts}}
- {{user}} {{title}}
+ {{author}} {{title}}
{{/posts}}
diff --git a/parte_2/tema_2.5_db/bd_ejer2/src/main/resources/templates/new_post.html b/parte_2/tema_2.5_db/bd_ejer2/src/main/resources/templates/new_post.html
index 4a90b75..af81bc4 100644
--- a/parte_2/tema_2.5_db/bd_ejer2/src/main/resources/templates/new_post.html
+++ b/parte_2/tema_2.5_db/bd_ejer2/src/main/resources/templates/new_post.html
@@ -5,7 +5,7 @@
diff --git a/parte_5/ejem1-jmeter/ejem-2-cache-redis/src/main/java/es/codeurjc/board/CacheConfiguration.java b/parte_5/ejem1-jmeter/ejem-2-cache-redis/src/main/java/es/codeurjc/board/CacheConfiguration.java
index 4a7d8a7..31d97d6 100644
--- a/parte_5/ejem1-jmeter/ejem-2-cache-redis/src/main/java/es/codeurjc/board/CacheConfiguration.java
+++ b/parte_5/ejem1-jmeter/ejem-2-cache-redis/src/main/java/es/codeurjc/board/CacheConfiguration.java
@@ -8,9 +8,11 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
-import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.GenericJacksonJsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;
+import tools.jackson.databind.ObjectMapper;
+
@Configuration
@EnableCaching
public class CacheConfiguration {
@@ -21,5 +23,5 @@ public RedisCacheConfiguration redisCacheManager() {
.entryTtl(Duration.ofMinutes(10)) // Los productos viven 10 min en caché
.disableCachingNullValues()
.serializeValuesWith(RedisSerializationContext.SerializationPair
- .fromSerializer(new GenericJackson2JsonRedisSerializer())); }
+ .fromSerializer(new GenericJacksonJsonRedisSerializer(new ObjectMapper()))); }
}
From 9724c66556f21becf1dec8807a5fb32748b942e8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Patxi=20Gort=C3=A1zar?=
Date: Thu, 29 Oct 2026 07:43:43 +0100
Subject: [PATCH 11/12] Add a smoke test to every Maven project
Nothing in this branch was covered by a test: only one of the 86 projects
shipped any, so "it compiles" was the whole guarantee behind the Spring
Boot 4 upgrade. Every project now has a SmokeTest that boots it.
Three shapes, picked per project:
- Spring Boot apps with no external service: @SpringBootTest, which fails
if any bean cannot be created. That is what caught the Jackson 3 and
autoconfiguration breakage earlier in this branch.
- Apps backed by MySQL, RabbitMQ or Redis: Testcontainers via
@ServiceConnection, plus a test that opens the connection and checks it
answers. 21 projects, with real containers.
- parte_4/tema_4.2/ejemplo-2 is a plain command-line program with no
Spring: it runs main() and asserts the arguments come out. JUnit and
surefire are declared there by hand, since that pom has no Boot parent.
Three projects needed more than the test itself:
- parte_4/tema_4.3/ejemplo-{2,3} have a second @SpringBootConfiguration
(DatabaseWaitConfigurator), so the test says classes = WebApp.class
instead of letting the search find two candidates.
- parte_2/tema_2.6_despliegue/despliegue_ejem2 defaults to the dev
profile, which pins H2Dialect. @ServiceConnection replaces the URL and
the credentials but not the dialect, so Hibernate emitted sequence DDL
against MySQL. The test runs under the prod profile instead.
parte_5/ejem0-jmeter had an Ejem0EmployeeApplicationTests doing
contextLoads() against a database that only exists under docker-compose,
so it could never pass on its own. The new SmokeTest replaces it and
brings its own container.
Verified on Temurin 21: mvn clean verify on all 86 projects, 86 green,
132 tests, 21 of them against real containers.
Co-Authored-By: Claude Opus 5
---
parte_2/tema_2.2_web/web_ejem1/pom.xml | 5 ++
.../test/java/es/codeurjc/web/SmokeTest.java | 15 ++++++
parte_2/tema_2.2_web/web_ejem2/pom.xml | 5 ++
.../test/java/es/codeurjc/web/SmokeTest.java | 15 ++++++
parte_2/tema_2.2_web/web_ejem3/pom.xml | 5 ++
.../test/java/es/codeurjc/web/SmokeTest.java | 15 ++++++
parte_2/tema_2.2_web/web_ejem4/pom.xml | 5 ++
.../test/java/es/codeurjc/web/SmokeTest.java | 15 ++++++
parte_2/tema_2.2_web/web_ejem5/pom.xml | 5 ++
.../test/java/es/codeurjc/web/SmokeTest.java | 15 ++++++
parte_2/tema_2.2_web/web_ejem6/pom.xml | 5 ++
.../test/java/es/codeurjc/web/SmokeTest.java | 15 ++++++
parte_2/tema_2.2_web/web_ejem7/pom.xml | 5 ++
.../test/java/es/codeurjc/web/SmokeTest.java | 15 ++++++
parte_2/tema_2.2_web/web_ejem8/pom.xml | 5 ++
.../test/java/es/codeurjc/web/SmokeTest.java | 15 ++++++
parte_2/tema_2.2_web/web_ejem8b/pom.xml | 5 ++
.../test/java/es/codeurjc/web/SmokeTest.java | 15 ++++++
parte_2/tema_2.2_web/web_ejer1/pom.xml | 5 ++
.../test/java/es/codeurjc/web/SmokeTest.java | 15 ++++++
parte_2/tema_2.2_web/web_ejer1b/pom.xml | 5 ++
.../test/java/es/codeurjc/web/SmokeTest.java | 15 ++++++
parte_2/tema_2.2_web/web_ejer2/pom.xml | 5 ++
.../test/java/es/codeurjc/web/SmokeTest.java | 15 ++++++
parte_2/tema_2.2_web/web_ejer3/pom.xml | 5 ++
.../test/java/es/codeurjc/web/SmokeTest.java | 15 ++++++
.../tema_2.2_web/web_ejer3_devtools/pom.xml | 5 ++
.../test/java/es/codeurjc/web/SmokeTest.java | 15 ++++++
parte_2/tema_2.2_web/web_ejer4/pom.xml | 5 ++
.../java/es/codeurjc/board/SmokeTest.java | 15 ++++++
parte_2/tema_2.2_web/web_ejer5/pom.xml | 5 ++
.../java/es/codeurjc/board/SmokeTest.java | 15 ++++++
parte_2/tema_2.2_web/web_ejer6/pom.xml | 5 ++
.../java/es/codeurjc/board/SmokeTest.java | 15 ++++++
parte_2/tema_2.2_web/web_ejer7/pom.xml | 5 ++
.../java/es/codeurjc/board/SmokeTest.java | 15 ++++++
parte_2/tema_2.3_rest/rest_ejem1/pom.xml | 5 ++
.../java/es/codeurjc/board/SmokeTest.java | 15 ++++++
parte_2/tema_2.3_rest/rest_ejem10/pom.xml | 5 ++
.../java/es/codeurjc/board/SmokeTest.java | 15 ++++++
parte_2/tema_2.3_rest/rest_ejem11/pom.xml | 5 ++
.../java/es/codeurjc/board/SmokeTest.java | 15 ++++++
parte_2/tema_2.3_rest/rest_ejem2/pom.xml | 5 ++
.../java/es/codeurjc/board/SmokeTest.java | 15 ++++++
parte_2/tema_2.3_rest/rest_ejem3/pom.xml | 5 ++
.../java/es/codeurjc/libreria/SmokeTest.java | 15 ++++++
parte_2/tema_2.3_rest/rest_ejem4/pom.xml | 5 ++
.../java/es/codeurjc/libreria/SmokeTest.java | 15 ++++++
parte_2/tema_2.3_rest/rest_ejem5/pom.xml | 5 ++
.../java/es/codeurjc/libreria/SmokeTest.java | 15 ++++++
parte_2/tema_2.3_rest/rest_ejem6/pom.xml | 5 ++
.../java/es/codeurjc/libreria/SmokeTest.java | 15 ++++++
parte_2/tema_2.3_rest/rest_ejem7/pom.xml | 5 ++
.../java/es/codeurjc/books/SmokeTest.java | 15 ++++++
parte_2/tema_2.3_rest/rest_ejem8/pom.xml | 5 ++
.../java/es/codeurjc/books/SmokeTest.java | 15 ++++++
parte_2/tema_2.3_rest/rest_ejem9/pom.xml | 5 ++
.../java/es/codeurjc/books/SmokeTest.java | 15 ++++++
parte_2/tema_2.3_rest/rest_ejer1/pom.xml | 5 ++
.../java/es/codeurjc/items/SmokeTest.java | 15 ++++++
parte_2/tema_2.5_db/bd_ejem1/pom.xml | 5 ++
.../test/java/es/codeurjc/db/SmokeTest.java | 32 +++++++++++++
parte_2/tema_2.5_db/bd_ejem10/pom.xml | 5 ++
.../test/java/es/codeurjc/db/SmokeTest.java | 32 +++++++++++++
parte_2/tema_2.5_db/bd_ejem11/pom.xml | 5 ++
.../java/es/codeurjc/board/SmokeTest.java | 32 +++++++++++++
parte_2/tema_2.5_db/bd_ejem12/pom.xml | 5 ++
.../test/java/es/codeurjc/db/SmokeTest.java | 32 +++++++++++++
parte_2/tema_2.5_db/bd_ejem13/pom.xml | 5 ++
.../test/java/es/codeurjc/db/SmokeTest.java | 32 +++++++++++++
parte_2/tema_2.5_db/bd_ejem14/pom.xml | 5 ++
.../test/java/es/codeurjc/db/SmokeTest.java | 32 +++++++++++++
parte_2/tema_2.5_db/bd_ejem15/pom.xml | 5 ++
.../java/es/codeurjc/board/SmokeTest.java | 32 +++++++++++++
parte_2/tema_2.5_db/bd_ejem16/pom.xml | 5 ++
.../test/java/es/codeurjc/db/SmokeTest.java | 32 +++++++++++++
parte_2/tema_2.5_db/bd_ejem17/pom.xml | 5 ++
.../java/es/codeurjc/board/SmokeTest.java | 32 +++++++++++++
parte_2/tema_2.5_db/bd_ejem18/pom.xml | 5 ++
.../test/java/es/codeurjc/db/SmokeTest.java | 32 +++++++++++++
parte_2/tema_2.5_db/bd_ejem19/pom.xml | 5 ++
.../test/java/es/codeurjc/db/SmokeTest.java | 32 +++++++++++++
parte_2/tema_2.5_db/bd_ejem2/pom.xml | 5 ++
.../java/es/codeurjc/board/SmokeTest.java | 32 +++++++++++++
parte_2/tema_2.5_db/bd_ejem20/pom.xml | 20 ++++++++
.../test/java/es/codeurjc/db/SmokeTest.java | 41 +++++++++++++++++
parte_2/tema_2.5_db/bd_ejem21/pom.xml | 20 ++++++++
.../java/es/codeurjc/board/SmokeTest.java | 41 +++++++++++++++++
parte_2/tema_2.5_db/bd_ejem22/pom.xml | 20 ++++++++
.../java/es/codeurjc/board/SmokeTest.java | 41 +++++++++++++++++
parte_2/tema_2.5_db/bd_ejem3/pom.xml | 5 ++
.../java/es/codeurjc/board/SmokeTest.java | 32 +++++++++++++
parte_2/tema_2.5_db/bd_ejem4/pom.xml | 5 ++
.../java/es/codeurjc/board/SmokeTest.java | 32 +++++++++++++
parte_2/tema_2.5_db/bd_ejem5/pom.xml | 5 ++
.../test/java/es/codeurjc/db/SmokeTest.java | 32 +++++++++++++
parte_2/tema_2.5_db/bd_ejem6/pom.xml | 5 ++
.../test/java/es/codeurjc/db/SmokeTest.java | 32 +++++++++++++
parte_2/tema_2.5_db/bd_ejem7/pom.xml | 5 ++
.../test/java/es/codeurjc/db/SmokeTest.java | 32 +++++++++++++
parte_2/tema_2.5_db/bd_ejem8/pom.xml | 5 ++
.../test/java/es/codeurjc/db/SmokeTest.java | 32 +++++++++++++
parte_2/tema_2.5_db/bd_ejem9/pom.xml | 5 ++
.../test/java/es/codeurjc/db/SmokeTest.java | 32 +++++++++++++
parte_2/tema_2.5_db/bd_ejer1/pom.xml | 5 ++
.../java/es/codeurjc/items/SmokeTest.java | 32 +++++++++++++
parte_2/tema_2.5_db/bd_ejer2/pom.xml | 5 ++
.../java/es/codeurjc/board/SmokeTest.java | 32 +++++++++++++
.../despliegue_ejem1/pom.xml | 5 ++
.../test/java/es/codeurjc/web/SmokeTest.java | 15 ++++++
.../despliegue_ejem2/pom.xml | 20 ++++++++
.../test/java/es/codeurjc/db/SmokeTest.java | 43 +++++++++++++++++
.../pom.xml | 20 ++++++++
.../mastercloudapps/amqp/SmokeTest.java | 39 ++++++++++++++++
.../pom.xml | 20 ++++++++
.../mastercloudapps/amqp/SmokeTest.java | 39 ++++++++++++++++
.../pom.xml | 20 ++++++++
.../mastercloudapps/amqp/SmokeTest.java | 39 ++++++++++++++++
.../pom.xml | 20 ++++++++
.../mastercloudapps/amqp/SmokeTest.java | 39 ++++++++++++++++
.../pom.xml | 20 ++++++++
.../mastercloudapps/amqp/SmokeTest.java | 39 ++++++++++++++++
.../pom.xml | 20 ++++++++
.../mastercloudapps/amqp/SmokeTest.java | 39 ++++++++++++++++
.../comunicacion-ws-ejem1/pom.xml | 5 ++
.../mastercloudapps/ws/SmokeTest.java | 15 ++++++
.../comunicacion-ws-ejem2/pom.xml | 5 ++
.../mastercloudapps/ws/SmokeTest.java | 32 +++++++++++++
.../aplicacion-java-enunciado/pom.xml | 5 ++
.../code/daw/tablonanuncios/SmokeTest.java | 15 ++++++
parte_4/tema_4.2/ejemplo-1/pom.xml | 5 ++
.../code/daw/tablonanuncios/SmokeTest.java | 15 ++++++
parte_4/tema_4.2/ejemplo-2/pom.xml | 14 ++++++
.../java/es/urjc/code/example/SmokeTest.java | 34 ++++++++++++++
.../ejer4/aplicacion-java-enunciado/pom.xml | 5 ++
.../code/daw/tablonanuncios/SmokeTest.java | 15 ++++++
.../ejer5/aplicacion-java-enunciado/pom.xml | 5 ++
.../code/daw/tablonanuncios/SmokeTest.java | 15 ++++++
parte_4/tema_4.2/ejer6/pom.xml | 5 ++
.../code/daw/tablonanuncios/SmokeTest.java | 15 ++++++
parte_4/tema_4.2/ejer7/pom.xml | 5 ++
.../code/daw/tablonanuncios/SmokeTest.java | 15 ++++++
parte_4/tema_4.2/ejer8/pom.xml | 5 ++
.../code/daw/tablonanuncios/SmokeTest.java | 15 ++++++
.../pom.xml | 20 ++++++++
.../mastercloudapps/amqp/SmokeTest.java | 39 ++++++++++++++++
.../pom.xml | 20 ++++++++
.../mastercloudapps/amqp/SmokeTest.java | 39 ++++++++++++++++
parte_4/tema_4.3/ejemplo-2/pom.xml | 20 ++++++++
.../test/tablonanuncios/SmokeTest.java | 41 +++++++++++++++++
parte_4/tema_4.3/ejemplo-3/pom.xml | 20 ++++++++
.../test/tablonanuncios/SmokeTest.java | 41 +++++++++++++++++
.../tema_4.3/ejercicio-1-enunciado/pom.xml | 20 ++++++++
.../test/tablonanuncios/SmokeTest.java | 41 +++++++++++++++++
parte_4/tema_4.3/ejercicio-1/pom.xml | 20 ++++++++
.../test/tablonanuncios/SmokeTest.java | 41 +++++++++++++++++
parte_5/ejem0-jmeter/pom.xml | 15 ++++++
.../Ejem0EmployeeApplicationTests.java | 13 ------
.../es/urjc/code/ejem0employee/SmokeTest.java | 41 +++++++++++++++++
parte_5/ejem1-jmeter/ejem-1/pom.xml | 20 ++++++++
.../java/es/codeurjc/board/SmokeTest.java | 41 +++++++++++++++++
.../ejem1-jmeter/ejem-2-cache-redis/pom.xml | 20 ++++++++
.../java/es/codeurjc/board/SmokeTest.java | 46 +++++++++++++++++++
parte_5/ejem1-jmeter/ejem-2-cache/pom.xml | 20 ++++++++
.../java/es/codeurjc/board/SmokeTest.java | 41 +++++++++++++++++
parte_5/ejem3-cache-distribuida/pom.xml | 5 ++
.../java/es/urjc/code/security/SmokeTest.java | 32 +++++++++++++
parte_5/ejem3-cache-distribuida2/pom.xml | 5 ++
.../es/codeurjc/daw/library/SmokeTest.java | 32 +++++++++++++
parte_5/ejem4-haproxy/pom.xml | 20 ++++++++
.../es/codeurjc/tablonanuncios/SmokeTest.java | 41 +++++++++++++++++
.../ejem4b-haproxy-ssl-passthrough/pom.xml | 5 ++
.../es/codeurjc/daw/library/SmokeTest.java | 32 +++++++++++++
173 files changed, 3020 insertions(+), 13 deletions(-)
create mode 100644 parte_2/tema_2.2_web/web_ejem1/src/test/java/es/codeurjc/web/SmokeTest.java
create mode 100644 parte_2/tema_2.2_web/web_ejem2/src/test/java/es/codeurjc/web/SmokeTest.java
create mode 100644 parte_2/tema_2.2_web/web_ejem3/src/test/java/es/codeurjc/web/SmokeTest.java
create mode 100644 parte_2/tema_2.2_web/web_ejem4/src/test/java/es/codeurjc/web/SmokeTest.java
create mode 100644 parte_2/tema_2.2_web/web_ejem5/src/test/java/es/codeurjc/web/SmokeTest.java
create mode 100644 parte_2/tema_2.2_web/web_ejem6/src/test/java/es/codeurjc/web/SmokeTest.java
create mode 100644 parte_2/tema_2.2_web/web_ejem7/src/test/java/es/codeurjc/web/SmokeTest.java
create mode 100644 parte_2/tema_2.2_web/web_ejem8/src/test/java/es/codeurjc/web/SmokeTest.java
create mode 100644 parte_2/tema_2.2_web/web_ejem8b/src/test/java/es/codeurjc/web/SmokeTest.java
create mode 100644 parte_2/tema_2.2_web/web_ejer1/src/test/java/es/codeurjc/web/SmokeTest.java
create mode 100644 parte_2/tema_2.2_web/web_ejer1b/src/test/java/es/codeurjc/web/SmokeTest.java
create mode 100644 parte_2/tema_2.2_web/web_ejer2/src/test/java/es/codeurjc/web/SmokeTest.java
create mode 100644 parte_2/tema_2.2_web/web_ejer3/src/test/java/es/codeurjc/web/SmokeTest.java
create mode 100644 parte_2/tema_2.2_web/web_ejer3_devtools/src/test/java/es/codeurjc/web/SmokeTest.java
create mode 100644 parte_2/tema_2.2_web/web_ejer4/src/test/java/es/codeurjc/board/SmokeTest.java
create mode 100644 parte_2/tema_2.2_web/web_ejer5/src/test/java/es/codeurjc/board/SmokeTest.java
create mode 100644 parte_2/tema_2.2_web/web_ejer6/src/test/java/es/codeurjc/board/SmokeTest.java
create mode 100644 parte_2/tema_2.2_web/web_ejer7/src/test/java/es/codeurjc/board/SmokeTest.java
create mode 100644 parte_2/tema_2.3_rest/rest_ejem1/src/test/java/es/codeurjc/board/SmokeTest.java
create mode 100644 parte_2/tema_2.3_rest/rest_ejem10/src/test/java/es/codeurjc/board/SmokeTest.java
create mode 100644 parte_2/tema_2.3_rest/rest_ejem11/src/test/java/es/codeurjc/board/SmokeTest.java
create mode 100644 parte_2/tema_2.3_rest/rest_ejem2/src/test/java/es/codeurjc/board/SmokeTest.java
create mode 100644 parte_2/tema_2.3_rest/rest_ejem3/src/test/java/es/codeurjc/libreria/SmokeTest.java
create mode 100644 parte_2/tema_2.3_rest/rest_ejem4/src/test/java/es/codeurjc/libreria/SmokeTest.java
create mode 100644 parte_2/tema_2.3_rest/rest_ejem5/src/test/java/es/codeurjc/libreria/SmokeTest.java
create mode 100644 parte_2/tema_2.3_rest/rest_ejem6/src/test/java/es/codeurjc/libreria/SmokeTest.java
create mode 100644 parte_2/tema_2.3_rest/rest_ejem7/src/test/java/es/codeurjc/books/SmokeTest.java
create mode 100644 parte_2/tema_2.3_rest/rest_ejem8/src/test/java/es/codeurjc/books/SmokeTest.java
create mode 100644 parte_2/tema_2.3_rest/rest_ejem9/src/test/java/es/codeurjc/books/SmokeTest.java
create mode 100644 parte_2/tema_2.3_rest/rest_ejer1/src/test/java/es/codeurjc/items/SmokeTest.java
create mode 100644 parte_2/tema_2.5_db/bd_ejem1/src/test/java/es/codeurjc/db/SmokeTest.java
create mode 100644 parte_2/tema_2.5_db/bd_ejem10/src/test/java/es/codeurjc/db/SmokeTest.java
create mode 100644 parte_2/tema_2.5_db/bd_ejem11/src/test/java/es/codeurjc/board/SmokeTest.java
create mode 100644 parte_2/tema_2.5_db/bd_ejem12/src/test/java/es/codeurjc/db/SmokeTest.java
create mode 100644 parte_2/tema_2.5_db/bd_ejem13/src/test/java/es/codeurjc/db/SmokeTest.java
create mode 100644 parte_2/tema_2.5_db/bd_ejem14/src/test/java/es/codeurjc/db/SmokeTest.java
create mode 100644 parte_2/tema_2.5_db/bd_ejem15/src/test/java/es/codeurjc/board/SmokeTest.java
create mode 100644 parte_2/tema_2.5_db/bd_ejem16/src/test/java/es/codeurjc/db/SmokeTest.java
create mode 100644 parte_2/tema_2.5_db/bd_ejem17/src/test/java/es/codeurjc/board/SmokeTest.java
create mode 100644 parte_2/tema_2.5_db/bd_ejem18/src/test/java/es/codeurjc/db/SmokeTest.java
create mode 100644 parte_2/tema_2.5_db/bd_ejem19/src/test/java/es/codeurjc/db/SmokeTest.java
create mode 100644 parte_2/tema_2.5_db/bd_ejem2/src/test/java/es/codeurjc/board/SmokeTest.java
create mode 100644 parte_2/tema_2.5_db/bd_ejem20/src/test/java/es/codeurjc/db/SmokeTest.java
create mode 100644 parte_2/tema_2.5_db/bd_ejem21/src/test/java/es/codeurjc/board/SmokeTest.java
create mode 100644 parte_2/tema_2.5_db/bd_ejem22/src/test/java/es/codeurjc/board/SmokeTest.java
create mode 100644 parte_2/tema_2.5_db/bd_ejem3/src/test/java/es/codeurjc/board/SmokeTest.java
create mode 100644 parte_2/tema_2.5_db/bd_ejem4/src/test/java/es/codeurjc/board/SmokeTest.java
create mode 100644 parte_2/tema_2.5_db/bd_ejem5/src/test/java/es/codeurjc/db/SmokeTest.java
create mode 100644 parte_2/tema_2.5_db/bd_ejem6/src/test/java/es/codeurjc/db/SmokeTest.java
create mode 100644 parte_2/tema_2.5_db/bd_ejem7/src/test/java/es/codeurjc/db/SmokeTest.java
create mode 100644 parte_2/tema_2.5_db/bd_ejem8/src/test/java/es/codeurjc/db/SmokeTest.java
create mode 100644 parte_2/tema_2.5_db/bd_ejem9/src/test/java/es/codeurjc/db/SmokeTest.java
create mode 100644 parte_2/tema_2.5_db/bd_ejer1/src/test/java/es/codeurjc/items/SmokeTest.java
create mode 100644 parte_2/tema_2.5_db/bd_ejer2/src/test/java/es/codeurjc/board/SmokeTest.java
create mode 100644 parte_2/tema_2.6_despliegue/despliegue_ejem1/src/test/java/es/codeurjc/web/SmokeTest.java
create mode 100644 parte_2/tema_2.6_despliegue/despliegue_ejem2/src/test/java/es/codeurjc/db/SmokeTest.java
create mode 100644 parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-consumer/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java
create mode 100644 parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-producer/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java
create mode 100644 parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-consumer/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java
create mode 100644 parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-producer/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java
create mode 100644 parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-client/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java
create mode 100644 parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-service/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java
create mode 100644 parte_3/tema_3.2_websockets/comunicacion-ws-ejem1/src/test/java/es/codeurjc/mastercloudapps/ws/SmokeTest.java
create mode 100644 parte_3/tema_3.2_websockets/comunicacion-ws-ejem2/src/test/java/es/codeurjc/mastercloudapps/ws/SmokeTest.java
create mode 100644 parte_4/tema_4.2/aplicacion-java-enunciado/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java
create mode 100644 parte_4/tema_4.2/ejemplo-1/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java
create mode 100644 parte_4/tema_4.2/ejemplo-2/src/test/java/es/urjc/code/example/SmokeTest.java
create mode 100644 parte_4/tema_4.2/ejer4/aplicacion-java-enunciado/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java
create mode 100644 parte_4/tema_4.2/ejer5/aplicacion-java-enunciado/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java
create mode 100644 parte_4/tema_4.2/ejer6/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java
create mode 100644 parte_4/tema_4.2/ejer7/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java
create mode 100644 parte_4/tema_4.2/ejer8/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java
create mode 100644 parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java
create mode 100644 parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-producer/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java
create mode 100644 parte_4/tema_4.3/ejemplo-2/src/test/java/es/codeurjc/test/tablonanuncios/SmokeTest.java
create mode 100644 parte_4/tema_4.3/ejemplo-3/src/test/java/es/codeurjc/test/tablonanuncios/SmokeTest.java
create mode 100644 parte_4/tema_4.3/ejercicio-1-enunciado/src/test/java/es/codeurjc/test/tablonanuncios/SmokeTest.java
create mode 100644 parte_4/tema_4.3/ejercicio-1/src/test/java/es/codeurjc/test/tablonanuncios/SmokeTest.java
delete mode 100644 parte_5/ejem0-jmeter/src/test/java/es/urjc/code/ejem0employee/Ejem0EmployeeApplicationTests.java
create mode 100644 parte_5/ejem0-jmeter/src/test/java/es/urjc/code/ejem0employee/SmokeTest.java
create mode 100644 parte_5/ejem1-jmeter/ejem-1/src/test/java/es/codeurjc/board/SmokeTest.java
create mode 100644 parte_5/ejem1-jmeter/ejem-2-cache-redis/src/test/java/es/codeurjc/board/SmokeTest.java
create mode 100644 parte_5/ejem1-jmeter/ejem-2-cache/src/test/java/es/codeurjc/board/SmokeTest.java
create mode 100644 parte_5/ejem3-cache-distribuida/src/test/java/es/urjc/code/security/SmokeTest.java
create mode 100644 parte_5/ejem3-cache-distribuida2/src/test/java/es/codeurjc/daw/library/SmokeTest.java
create mode 100644 parte_5/ejem4-haproxy/src/test/java/es/codeurjc/tablonanuncios/SmokeTest.java
create mode 100644 parte_5/ejem4b-haproxy-ssl-passthrough/src/test/java/es/codeurjc/daw/library/SmokeTest.java
diff --git a/parte_2/tema_2.2_web/web_ejem1/pom.xml b/parte_2/tema_2.2_web/web_ejem1/pom.xml
index 9d4c7cd..d73e7de 100644
--- a/parte_2/tema_2.2_web/web_ejem1/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejem1/pom.xml
@@ -30,6 +30,11 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.2_web/web_ejem1/src/test/java/es/codeurjc/web/SmokeTest.java b/parte_2/tema_2.2_web/web_ejem1/src/test/java/es/codeurjc/web/SmokeTest.java
new file mode 100644
index 0000000..4908cd9
--- /dev/null
+++ b/parte_2/tema_2.2_web/web_ejem1/src/test/java/es/codeurjc/web/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.web;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.2_web/web_ejem2/pom.xml b/parte_2/tema_2.2_web/web_ejem2/pom.xml
index 0c11abe..e078fcb 100644
--- a/parte_2/tema_2.2_web/web_ejem2/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejem2/pom.xml
@@ -30,6 +30,11 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.2_web/web_ejem2/src/test/java/es/codeurjc/web/SmokeTest.java b/parte_2/tema_2.2_web/web_ejem2/src/test/java/es/codeurjc/web/SmokeTest.java
new file mode 100644
index 0000000..4908cd9
--- /dev/null
+++ b/parte_2/tema_2.2_web/web_ejem2/src/test/java/es/codeurjc/web/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.web;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.2_web/web_ejem3/pom.xml b/parte_2/tema_2.2_web/web_ejem3/pom.xml
index 7945a59..f8e3b7c 100644
--- a/parte_2/tema_2.2_web/web_ejem3/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejem3/pom.xml
@@ -29,6 +29,11 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.2_web/web_ejem3/src/test/java/es/codeurjc/web/SmokeTest.java b/parte_2/tema_2.2_web/web_ejem3/src/test/java/es/codeurjc/web/SmokeTest.java
new file mode 100644
index 0000000..4908cd9
--- /dev/null
+++ b/parte_2/tema_2.2_web/web_ejem3/src/test/java/es/codeurjc/web/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.web;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.2_web/web_ejem4/pom.xml b/parte_2/tema_2.2_web/web_ejem4/pom.xml
index ce54dd3..d36ebec 100644
--- a/parte_2/tema_2.2_web/web_ejem4/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejem4/pom.xml
@@ -29,6 +29,11 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.2_web/web_ejem4/src/test/java/es/codeurjc/web/SmokeTest.java b/parte_2/tema_2.2_web/web_ejem4/src/test/java/es/codeurjc/web/SmokeTest.java
new file mode 100644
index 0000000..4908cd9
--- /dev/null
+++ b/parte_2/tema_2.2_web/web_ejem4/src/test/java/es/codeurjc/web/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.web;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.2_web/web_ejem5/pom.xml b/parte_2/tema_2.2_web/web_ejem5/pom.xml
index ca12035..48b3e4c 100644
--- a/parte_2/tema_2.2_web/web_ejem5/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejem5/pom.xml
@@ -30,6 +30,11 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.2_web/web_ejem5/src/test/java/es/codeurjc/web/SmokeTest.java b/parte_2/tema_2.2_web/web_ejem5/src/test/java/es/codeurjc/web/SmokeTest.java
new file mode 100644
index 0000000..4908cd9
--- /dev/null
+++ b/parte_2/tema_2.2_web/web_ejem5/src/test/java/es/codeurjc/web/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.web;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.2_web/web_ejem6/pom.xml b/parte_2/tema_2.2_web/web_ejem6/pom.xml
index 2041b18..1ca63ae 100644
--- a/parte_2/tema_2.2_web/web_ejem6/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejem6/pom.xml
@@ -30,6 +30,11 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.2_web/web_ejem6/src/test/java/es/codeurjc/web/SmokeTest.java b/parte_2/tema_2.2_web/web_ejem6/src/test/java/es/codeurjc/web/SmokeTest.java
new file mode 100644
index 0000000..4908cd9
--- /dev/null
+++ b/parte_2/tema_2.2_web/web_ejem6/src/test/java/es/codeurjc/web/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.web;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.2_web/web_ejem7/pom.xml b/parte_2/tema_2.2_web/web_ejem7/pom.xml
index f9237fa..27e3721 100644
--- a/parte_2/tema_2.2_web/web_ejem7/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejem7/pom.xml
@@ -30,6 +30,11 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.2_web/web_ejem7/src/test/java/es/codeurjc/web/SmokeTest.java b/parte_2/tema_2.2_web/web_ejem7/src/test/java/es/codeurjc/web/SmokeTest.java
new file mode 100644
index 0000000..4908cd9
--- /dev/null
+++ b/parte_2/tema_2.2_web/web_ejem7/src/test/java/es/codeurjc/web/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.web;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.2_web/web_ejem8/pom.xml b/parte_2/tema_2.2_web/web_ejem8/pom.xml
index 7a0a291..123573b 100644
--- a/parte_2/tema_2.2_web/web_ejem8/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejem8/pom.xml
@@ -30,6 +30,11 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.2_web/web_ejem8/src/test/java/es/codeurjc/web/SmokeTest.java b/parte_2/tema_2.2_web/web_ejem8/src/test/java/es/codeurjc/web/SmokeTest.java
new file mode 100644
index 0000000..4908cd9
--- /dev/null
+++ b/parte_2/tema_2.2_web/web_ejem8/src/test/java/es/codeurjc/web/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.web;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.2_web/web_ejem8b/pom.xml b/parte_2/tema_2.2_web/web_ejem8b/pom.xml
index 64996b7..0a98970 100644
--- a/parte_2/tema_2.2_web/web_ejem8b/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejem8b/pom.xml
@@ -30,6 +30,11 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.2_web/web_ejem8b/src/test/java/es/codeurjc/web/SmokeTest.java b/parte_2/tema_2.2_web/web_ejem8b/src/test/java/es/codeurjc/web/SmokeTest.java
new file mode 100644
index 0000000..4908cd9
--- /dev/null
+++ b/parte_2/tema_2.2_web/web_ejem8b/src/test/java/es/codeurjc/web/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.web;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.2_web/web_ejer1/pom.xml b/parte_2/tema_2.2_web/web_ejer1/pom.xml
index 1ba63e2..8c0de10 100644
--- a/parte_2/tema_2.2_web/web_ejer1/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejer1/pom.xml
@@ -29,6 +29,11 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.2_web/web_ejer1/src/test/java/es/codeurjc/web/SmokeTest.java b/parte_2/tema_2.2_web/web_ejer1/src/test/java/es/codeurjc/web/SmokeTest.java
new file mode 100644
index 0000000..4908cd9
--- /dev/null
+++ b/parte_2/tema_2.2_web/web_ejer1/src/test/java/es/codeurjc/web/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.web;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.2_web/web_ejer1b/pom.xml b/parte_2/tema_2.2_web/web_ejer1b/pom.xml
index c2f5693..f4027db 100644
--- a/parte_2/tema_2.2_web/web_ejer1b/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejer1b/pom.xml
@@ -29,6 +29,11 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.2_web/web_ejer1b/src/test/java/es/codeurjc/web/SmokeTest.java b/parte_2/tema_2.2_web/web_ejer1b/src/test/java/es/codeurjc/web/SmokeTest.java
new file mode 100644
index 0000000..4908cd9
--- /dev/null
+++ b/parte_2/tema_2.2_web/web_ejer1b/src/test/java/es/codeurjc/web/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.web;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.2_web/web_ejer2/pom.xml b/parte_2/tema_2.2_web/web_ejer2/pom.xml
index 0d5aaf5..ef6c442 100644
--- a/parte_2/tema_2.2_web/web_ejer2/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejer2/pom.xml
@@ -29,6 +29,11 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.2_web/web_ejer2/src/test/java/es/codeurjc/web/SmokeTest.java b/parte_2/tema_2.2_web/web_ejer2/src/test/java/es/codeurjc/web/SmokeTest.java
new file mode 100644
index 0000000..4908cd9
--- /dev/null
+++ b/parte_2/tema_2.2_web/web_ejer2/src/test/java/es/codeurjc/web/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.web;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.2_web/web_ejer3/pom.xml b/parte_2/tema_2.2_web/web_ejer3/pom.xml
index 72bd1e5..9422a9b 100644
--- a/parte_2/tema_2.2_web/web_ejer3/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejer3/pom.xml
@@ -29,6 +29,11 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.2_web/web_ejer3/src/test/java/es/codeurjc/web/SmokeTest.java b/parte_2/tema_2.2_web/web_ejer3/src/test/java/es/codeurjc/web/SmokeTest.java
new file mode 100644
index 0000000..4908cd9
--- /dev/null
+++ b/parte_2/tema_2.2_web/web_ejer3/src/test/java/es/codeurjc/web/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.web;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.2_web/web_ejer3_devtools/pom.xml b/parte_2/tema_2.2_web/web_ejer3_devtools/pom.xml
index 49ba101..9a9e68a 100644
--- a/parte_2/tema_2.2_web/web_ejer3_devtools/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejer3_devtools/pom.xml
@@ -33,6 +33,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.2_web/web_ejer3_devtools/src/test/java/es/codeurjc/web/SmokeTest.java b/parte_2/tema_2.2_web/web_ejer3_devtools/src/test/java/es/codeurjc/web/SmokeTest.java
new file mode 100644
index 0000000..4908cd9
--- /dev/null
+++ b/parte_2/tema_2.2_web/web_ejer3_devtools/src/test/java/es/codeurjc/web/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.web;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.2_web/web_ejer4/pom.xml b/parte_2/tema_2.2_web/web_ejer4/pom.xml
index 1c6a538..f334f63 100644
--- a/parte_2/tema_2.2_web/web_ejer4/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejer4/pom.xml
@@ -33,6 +33,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.2_web/web_ejer4/src/test/java/es/codeurjc/board/SmokeTest.java b/parte_2/tema_2.2_web/web_ejer4/src/test/java/es/codeurjc/board/SmokeTest.java
new file mode 100644
index 0000000..5914215
--- /dev/null
+++ b/parte_2/tema_2.2_web/web_ejer4/src/test/java/es/codeurjc/board/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.board;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.2_web/web_ejer5/pom.xml b/parte_2/tema_2.2_web/web_ejer5/pom.xml
index bb46b89..33a3afd 100644
--- a/parte_2/tema_2.2_web/web_ejer5/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejer5/pom.xml
@@ -33,6 +33,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.2_web/web_ejer5/src/test/java/es/codeurjc/board/SmokeTest.java b/parte_2/tema_2.2_web/web_ejer5/src/test/java/es/codeurjc/board/SmokeTest.java
new file mode 100644
index 0000000..5914215
--- /dev/null
+++ b/parte_2/tema_2.2_web/web_ejer5/src/test/java/es/codeurjc/board/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.board;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.2_web/web_ejer6/pom.xml b/parte_2/tema_2.2_web/web_ejer6/pom.xml
index 9f514ba..114f60f 100644
--- a/parte_2/tema_2.2_web/web_ejer6/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejer6/pom.xml
@@ -33,6 +33,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.2_web/web_ejer6/src/test/java/es/codeurjc/board/SmokeTest.java b/parte_2/tema_2.2_web/web_ejer6/src/test/java/es/codeurjc/board/SmokeTest.java
new file mode 100644
index 0000000..5914215
--- /dev/null
+++ b/parte_2/tema_2.2_web/web_ejer6/src/test/java/es/codeurjc/board/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.board;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.2_web/web_ejer7/pom.xml b/parte_2/tema_2.2_web/web_ejer7/pom.xml
index b3e1c41..19ceebb 100644
--- a/parte_2/tema_2.2_web/web_ejer7/pom.xml
+++ b/parte_2/tema_2.2_web/web_ejer7/pom.xml
@@ -33,6 +33,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.2_web/web_ejer7/src/test/java/es/codeurjc/board/SmokeTest.java b/parte_2/tema_2.2_web/web_ejer7/src/test/java/es/codeurjc/board/SmokeTest.java
new file mode 100644
index 0000000..5914215
--- /dev/null
+++ b/parte_2/tema_2.2_web/web_ejer7/src/test/java/es/codeurjc/board/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.board;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.3_rest/rest_ejem1/pom.xml b/parte_2/tema_2.3_rest/rest_ejem1/pom.xml
index c1f4a8b..f7a0c48 100644
--- a/parte_2/tema_2.3_rest/rest_ejem1/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejem1/pom.xml
@@ -29,6 +29,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.3_rest/rest_ejem1/src/test/java/es/codeurjc/board/SmokeTest.java b/parte_2/tema_2.3_rest/rest_ejem1/src/test/java/es/codeurjc/board/SmokeTest.java
new file mode 100644
index 0000000..5914215
--- /dev/null
+++ b/parte_2/tema_2.3_rest/rest_ejem1/src/test/java/es/codeurjc/board/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.board;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.3_rest/rest_ejem10/pom.xml b/parte_2/tema_2.3_rest/rest_ejem10/pom.xml
index f0c35a3..2d93c1c 100644
--- a/parte_2/tema_2.3_rest/rest_ejem10/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejem10/pom.xml
@@ -35,6 +35,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.3_rest/rest_ejem10/src/test/java/es/codeurjc/board/SmokeTest.java b/parte_2/tema_2.3_rest/rest_ejem10/src/test/java/es/codeurjc/board/SmokeTest.java
new file mode 100644
index 0000000..5914215
--- /dev/null
+++ b/parte_2/tema_2.3_rest/rest_ejem10/src/test/java/es/codeurjc/board/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.board;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.3_rest/rest_ejem11/pom.xml b/parte_2/tema_2.3_rest/rest_ejem11/pom.xml
index 21dd8a4..08550a1 100644
--- a/parte_2/tema_2.3_rest/rest_ejem11/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejem11/pom.xml
@@ -35,6 +35,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.3_rest/rest_ejem11/src/test/java/es/codeurjc/board/SmokeTest.java b/parte_2/tema_2.3_rest/rest_ejem11/src/test/java/es/codeurjc/board/SmokeTest.java
new file mode 100644
index 0000000..5914215
--- /dev/null
+++ b/parte_2/tema_2.3_rest/rest_ejem11/src/test/java/es/codeurjc/board/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.board;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.3_rest/rest_ejem2/pom.xml b/parte_2/tema_2.3_rest/rest_ejem2/pom.xml
index 9844d3f..34d8f02 100644
--- a/parte_2/tema_2.3_rest/rest_ejem2/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejem2/pom.xml
@@ -29,6 +29,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.3_rest/rest_ejem2/src/test/java/es/codeurjc/board/SmokeTest.java b/parte_2/tema_2.3_rest/rest_ejem2/src/test/java/es/codeurjc/board/SmokeTest.java
new file mode 100644
index 0000000..5914215
--- /dev/null
+++ b/parte_2/tema_2.3_rest/rest_ejem2/src/test/java/es/codeurjc/board/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.board;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.3_rest/rest_ejem3/pom.xml b/parte_2/tema_2.3_rest/rest_ejem3/pom.xml
index 6bc6656..ed73579 100644
--- a/parte_2/tema_2.3_rest/rest_ejem3/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejem3/pom.xml
@@ -29,6 +29,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.3_rest/rest_ejem3/src/test/java/es/codeurjc/libreria/SmokeTest.java b/parte_2/tema_2.3_rest/rest_ejem3/src/test/java/es/codeurjc/libreria/SmokeTest.java
new file mode 100644
index 0000000..c1d305c
--- /dev/null
+++ b/parte_2/tema_2.3_rest/rest_ejem3/src/test/java/es/codeurjc/libreria/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.libreria;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.3_rest/rest_ejem4/pom.xml b/parte_2/tema_2.3_rest/rest_ejem4/pom.xml
index ad5693f..64a93cf 100644
--- a/parte_2/tema_2.3_rest/rest_ejem4/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejem4/pom.xml
@@ -29,6 +29,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.3_rest/rest_ejem4/src/test/java/es/codeurjc/libreria/SmokeTest.java b/parte_2/tema_2.3_rest/rest_ejem4/src/test/java/es/codeurjc/libreria/SmokeTest.java
new file mode 100644
index 0000000..c1d305c
--- /dev/null
+++ b/parte_2/tema_2.3_rest/rest_ejem4/src/test/java/es/codeurjc/libreria/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.libreria;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.3_rest/rest_ejem5/pom.xml b/parte_2/tema_2.3_rest/rest_ejem5/pom.xml
index 1059f35..4834d39 100644
--- a/parte_2/tema_2.3_rest/rest_ejem5/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejem5/pom.xml
@@ -29,6 +29,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.3_rest/rest_ejem5/src/test/java/es/codeurjc/libreria/SmokeTest.java b/parte_2/tema_2.3_rest/rest_ejem5/src/test/java/es/codeurjc/libreria/SmokeTest.java
new file mode 100644
index 0000000..c1d305c
--- /dev/null
+++ b/parte_2/tema_2.3_rest/rest_ejem5/src/test/java/es/codeurjc/libreria/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.libreria;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.3_rest/rest_ejem6/pom.xml b/parte_2/tema_2.3_rest/rest_ejem6/pom.xml
index 4fbb0c3..ebc22b0 100644
--- a/parte_2/tema_2.3_rest/rest_ejem6/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejem6/pom.xml
@@ -29,6 +29,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.3_rest/rest_ejem6/src/test/java/es/codeurjc/libreria/SmokeTest.java b/parte_2/tema_2.3_rest/rest_ejem6/src/test/java/es/codeurjc/libreria/SmokeTest.java
new file mode 100644
index 0000000..c1d305c
--- /dev/null
+++ b/parte_2/tema_2.3_rest/rest_ejem6/src/test/java/es/codeurjc/libreria/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.libreria;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.3_rest/rest_ejem7/pom.xml b/parte_2/tema_2.3_rest/rest_ejem7/pom.xml
index f3ff67b..ecffeb8 100644
--- a/parte_2/tema_2.3_rest/rest_ejem7/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejem7/pom.xml
@@ -29,6 +29,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.3_rest/rest_ejem7/src/test/java/es/codeurjc/books/SmokeTest.java b/parte_2/tema_2.3_rest/rest_ejem7/src/test/java/es/codeurjc/books/SmokeTest.java
new file mode 100644
index 0000000..8e0023e
--- /dev/null
+++ b/parte_2/tema_2.3_rest/rest_ejem7/src/test/java/es/codeurjc/books/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.books;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.3_rest/rest_ejem8/pom.xml b/parte_2/tema_2.3_rest/rest_ejem8/pom.xml
index e384b58..f3f72a1 100644
--- a/parte_2/tema_2.3_rest/rest_ejem8/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejem8/pom.xml
@@ -33,6 +33,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.3_rest/rest_ejem8/src/test/java/es/codeurjc/books/SmokeTest.java b/parte_2/tema_2.3_rest/rest_ejem8/src/test/java/es/codeurjc/books/SmokeTest.java
new file mode 100644
index 0000000..8e0023e
--- /dev/null
+++ b/parte_2/tema_2.3_rest/rest_ejem8/src/test/java/es/codeurjc/books/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.books;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.3_rest/rest_ejem9/pom.xml b/parte_2/tema_2.3_rest/rest_ejem9/pom.xml
index f4cd885..45f66ce 100644
--- a/parte_2/tema_2.3_rest/rest_ejem9/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejem9/pom.xml
@@ -37,6 +37,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.3_rest/rest_ejem9/src/test/java/es/codeurjc/books/SmokeTest.java b/parte_2/tema_2.3_rest/rest_ejem9/src/test/java/es/codeurjc/books/SmokeTest.java
new file mode 100644
index 0000000..8e0023e
--- /dev/null
+++ b/parte_2/tema_2.3_rest/rest_ejem9/src/test/java/es/codeurjc/books/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.books;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.3_rest/rest_ejer1/pom.xml b/parte_2/tema_2.3_rest/rest_ejer1/pom.xml
index 2ff1a03..613fa95 100644
--- a/parte_2/tema_2.3_rest/rest_ejer1/pom.xml
+++ b/parte_2/tema_2.3_rest/rest_ejer1/pom.xml
@@ -25,6 +25,11 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.3_rest/rest_ejer1/src/test/java/es/codeurjc/items/SmokeTest.java b/parte_2/tema_2.3_rest/rest_ejer1/src/test/java/es/codeurjc/items/SmokeTest.java
new file mode 100644
index 0000000..2430125
--- /dev/null
+++ b/parte_2/tema_2.3_rest/rest_ejer1/src/test/java/es/codeurjc/items/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.items;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.5_db/bd_ejem1/pom.xml b/parte_2/tema_2.5_db/bd_ejem1/pom.xml
index b095d54..a70794f 100644
--- a/parte_2/tema_2.5_db/bd_ejem1/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem1/pom.xml
@@ -28,6 +28,11 @@
com.h2database
h2
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
\ No newline at end of file
diff --git a/parte_2/tema_2.5_db/bd_ejem1/src/test/java/es/codeurjc/db/SmokeTest.java b/parte_2/tema_2.5_db/bd_ejem1/src/test/java/es/codeurjc/db/SmokeTest.java
new file mode 100644
index 0000000..b52e2aa
--- /dev/null
+++ b/parte_2/tema_2.5_db/bd_ejem1/src/test/java/es/codeurjc/db/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.codeurjc.db;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_2/tema_2.5_db/bd_ejem10/pom.xml b/parte_2/tema_2.5_db/bd_ejem10/pom.xml
index 2342c90..000c176 100644
--- a/parte_2/tema_2.5_db/bd_ejem10/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem10/pom.xml
@@ -36,6 +36,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
\ No newline at end of file
diff --git a/parte_2/tema_2.5_db/bd_ejem10/src/test/java/es/codeurjc/db/SmokeTest.java b/parte_2/tema_2.5_db/bd_ejem10/src/test/java/es/codeurjc/db/SmokeTest.java
new file mode 100644
index 0000000..b52e2aa
--- /dev/null
+++ b/parte_2/tema_2.5_db/bd_ejem10/src/test/java/es/codeurjc/db/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.codeurjc.db;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_2/tema_2.5_db/bd_ejem11/pom.xml b/parte_2/tema_2.5_db/bd_ejem11/pom.xml
index b852580..b5a2e5e 100644
--- a/parte_2/tema_2.5_db/bd_ejem11/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem11/pom.xml
@@ -36,6 +36,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.5_db/bd_ejem11/src/test/java/es/codeurjc/board/SmokeTest.java b/parte_2/tema_2.5_db/bd_ejem11/src/test/java/es/codeurjc/board/SmokeTest.java
new file mode 100644
index 0000000..811d836
--- /dev/null
+++ b/parte_2/tema_2.5_db/bd_ejem11/src/test/java/es/codeurjc/board/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.codeurjc.board;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_2/tema_2.5_db/bd_ejem12/pom.xml b/parte_2/tema_2.5_db/bd_ejem12/pom.xml
index 63d3b68..950922e 100644
--- a/parte_2/tema_2.5_db/bd_ejem12/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem12/pom.xml
@@ -36,6 +36,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.5_db/bd_ejem12/src/test/java/es/codeurjc/db/SmokeTest.java b/parte_2/tema_2.5_db/bd_ejem12/src/test/java/es/codeurjc/db/SmokeTest.java
new file mode 100644
index 0000000..b52e2aa
--- /dev/null
+++ b/parte_2/tema_2.5_db/bd_ejem12/src/test/java/es/codeurjc/db/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.codeurjc.db;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_2/tema_2.5_db/bd_ejem13/pom.xml b/parte_2/tema_2.5_db/bd_ejem13/pom.xml
index 7a485f4..f1ce402 100644
--- a/parte_2/tema_2.5_db/bd_ejem13/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem13/pom.xml
@@ -36,6 +36,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.5_db/bd_ejem13/src/test/java/es/codeurjc/db/SmokeTest.java b/parte_2/tema_2.5_db/bd_ejem13/src/test/java/es/codeurjc/db/SmokeTest.java
new file mode 100644
index 0000000..b52e2aa
--- /dev/null
+++ b/parte_2/tema_2.5_db/bd_ejem13/src/test/java/es/codeurjc/db/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.codeurjc.db;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_2/tema_2.5_db/bd_ejem14/pom.xml b/parte_2/tema_2.5_db/bd_ejem14/pom.xml
index 9719c19..bb07c20 100644
--- a/parte_2/tema_2.5_db/bd_ejem14/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem14/pom.xml
@@ -36,6 +36,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
\ No newline at end of file
diff --git a/parte_2/tema_2.5_db/bd_ejem14/src/test/java/es/codeurjc/db/SmokeTest.java b/parte_2/tema_2.5_db/bd_ejem14/src/test/java/es/codeurjc/db/SmokeTest.java
new file mode 100644
index 0000000..b52e2aa
--- /dev/null
+++ b/parte_2/tema_2.5_db/bd_ejem14/src/test/java/es/codeurjc/db/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.codeurjc.db;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_2/tema_2.5_db/bd_ejem15/pom.xml b/parte_2/tema_2.5_db/bd_ejem15/pom.xml
index af5b2cb..b96100f 100644
--- a/parte_2/tema_2.5_db/bd_ejem15/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem15/pom.xml
@@ -36,6 +36,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
\ No newline at end of file
diff --git a/parte_2/tema_2.5_db/bd_ejem15/src/test/java/es/codeurjc/board/SmokeTest.java b/parte_2/tema_2.5_db/bd_ejem15/src/test/java/es/codeurjc/board/SmokeTest.java
new file mode 100644
index 0000000..811d836
--- /dev/null
+++ b/parte_2/tema_2.5_db/bd_ejem15/src/test/java/es/codeurjc/board/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.codeurjc.board;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_2/tema_2.5_db/bd_ejem16/pom.xml b/parte_2/tema_2.5_db/bd_ejem16/pom.xml
index 81998c1..3382005 100644
--- a/parte_2/tema_2.5_db/bd_ejem16/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem16/pom.xml
@@ -36,6 +36,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.5_db/bd_ejem16/src/test/java/es/codeurjc/db/SmokeTest.java b/parte_2/tema_2.5_db/bd_ejem16/src/test/java/es/codeurjc/db/SmokeTest.java
new file mode 100644
index 0000000..b52e2aa
--- /dev/null
+++ b/parte_2/tema_2.5_db/bd_ejem16/src/test/java/es/codeurjc/db/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.codeurjc.db;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_2/tema_2.5_db/bd_ejem17/pom.xml b/parte_2/tema_2.5_db/bd_ejem17/pom.xml
index 94d5986..9325c1b 100644
--- a/parte_2/tema_2.5_db/bd_ejem17/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem17/pom.xml
@@ -51,6 +51,11 @@
jakarta
provided
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.5_db/bd_ejem17/src/test/java/es/codeurjc/board/SmokeTest.java b/parte_2/tema_2.5_db/bd_ejem17/src/test/java/es/codeurjc/board/SmokeTest.java
new file mode 100644
index 0000000..811d836
--- /dev/null
+++ b/parte_2/tema_2.5_db/bd_ejem17/src/test/java/es/codeurjc/board/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.codeurjc.board;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_2/tema_2.5_db/bd_ejem18/pom.xml b/parte_2/tema_2.5_db/bd_ejem18/pom.xml
index d8b3b45..254f98d 100644
--- a/parte_2/tema_2.5_db/bd_ejem18/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem18/pom.xml
@@ -36,6 +36,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.5_db/bd_ejem18/src/test/java/es/codeurjc/db/SmokeTest.java b/parte_2/tema_2.5_db/bd_ejem18/src/test/java/es/codeurjc/db/SmokeTest.java
new file mode 100644
index 0000000..b52e2aa
--- /dev/null
+++ b/parte_2/tema_2.5_db/bd_ejem18/src/test/java/es/codeurjc/db/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.codeurjc.db;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_2/tema_2.5_db/bd_ejem19/pom.xml b/parte_2/tema_2.5_db/bd_ejem19/pom.xml
index 868f92e..c3aa152 100644
--- a/parte_2/tema_2.5_db/bd_ejem19/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem19/pom.xml
@@ -40,6 +40,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.5_db/bd_ejem19/src/test/java/es/codeurjc/db/SmokeTest.java b/parte_2/tema_2.5_db/bd_ejem19/src/test/java/es/codeurjc/db/SmokeTest.java
new file mode 100644
index 0000000..b52e2aa
--- /dev/null
+++ b/parte_2/tema_2.5_db/bd_ejem19/src/test/java/es/codeurjc/db/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.codeurjc.db;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_2/tema_2.5_db/bd_ejem2/pom.xml b/parte_2/tema_2.5_db/bd_ejem2/pom.xml
index 7ff1722..9d48228 100644
--- a/parte_2/tema_2.5_db/bd_ejem2/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem2/pom.xml
@@ -36,6 +36,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
\ No newline at end of file
diff --git a/parte_2/tema_2.5_db/bd_ejem2/src/test/java/es/codeurjc/board/SmokeTest.java b/parte_2/tema_2.5_db/bd_ejem2/src/test/java/es/codeurjc/board/SmokeTest.java
new file mode 100644
index 0000000..811d836
--- /dev/null
+++ b/parte_2/tema_2.5_db/bd_ejem2/src/test/java/es/codeurjc/board/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.codeurjc.board;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_2/tema_2.5_db/bd_ejem20/pom.xml b/parte_2/tema_2.5_db/bd_ejem20/pom.xml
index 5dcec14..d73817d 100644
--- a/parte_2/tema_2.5_db/bd_ejem20/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem20/pom.xml
@@ -38,6 +38,26 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.testcontainers
+ testcontainers-junit-jupiter
+ test
+
+
+ org.testcontainers
+ testcontainers-mysql
+ test
+
diff --git a/parte_2/tema_2.5_db/bd_ejem20/src/test/java/es/codeurjc/db/SmokeTest.java b/parte_2/tema_2.5_db/bd_ejem20/src/test/java/es/codeurjc/db/SmokeTest.java
new file mode 100644
index 0000000..69c9a0b
--- /dev/null
+++ b/parte_2/tema_2.5_db/bd_ejem20/src/test/java/es/codeurjc/db/SmokeTest.java
@@ -0,0 +1,41 @@
+package es.codeurjc.db;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.testcontainers.mysql.MySQLContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest(properties = "spring.jpa.hibernate.ddl-auto=create-drop")
+@Testcontainers
+class SmokeTest {
+
+ @Container
+ @ServiceConnection
+ static MySQLContainer mysql = new MySQLContainer("mysql:8.0");
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_2/tema_2.5_db/bd_ejem21/pom.xml b/parte_2/tema_2.5_db/bd_ejem21/pom.xml
index af511c1..ffd6d54 100644
--- a/parte_2/tema_2.5_db/bd_ejem21/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem21/pom.xml
@@ -37,6 +37,26 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.testcontainers
+ testcontainers-junit-jupiter
+ test
+
+
+ org.testcontainers
+ testcontainers-mysql
+ test
+
diff --git a/parte_2/tema_2.5_db/bd_ejem21/src/test/java/es/codeurjc/board/SmokeTest.java b/parte_2/tema_2.5_db/bd_ejem21/src/test/java/es/codeurjc/board/SmokeTest.java
new file mode 100644
index 0000000..c5c5d8a
--- /dev/null
+++ b/parte_2/tema_2.5_db/bd_ejem21/src/test/java/es/codeurjc/board/SmokeTest.java
@@ -0,0 +1,41 @@
+package es.codeurjc.board;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.testcontainers.mysql.MySQLContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest(properties = "spring.jpa.hibernate.ddl-auto=create-drop")
+@Testcontainers
+class SmokeTest {
+
+ @Container
+ @ServiceConnection
+ static MySQLContainer mysql = new MySQLContainer("mysql:8.0");
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_2/tema_2.5_db/bd_ejem22/pom.xml b/parte_2/tema_2.5_db/bd_ejem22/pom.xml
index a2b3cf0..1595e0e 100644
--- a/parte_2/tema_2.5_db/bd_ejem22/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem22/pom.xml
@@ -37,6 +37,26 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.testcontainers
+ testcontainers-junit-jupiter
+ test
+
+
+ org.testcontainers
+ testcontainers-mysql
+ test
+
diff --git a/parte_2/tema_2.5_db/bd_ejem22/src/test/java/es/codeurjc/board/SmokeTest.java b/parte_2/tema_2.5_db/bd_ejem22/src/test/java/es/codeurjc/board/SmokeTest.java
new file mode 100644
index 0000000..c5c5d8a
--- /dev/null
+++ b/parte_2/tema_2.5_db/bd_ejem22/src/test/java/es/codeurjc/board/SmokeTest.java
@@ -0,0 +1,41 @@
+package es.codeurjc.board;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.testcontainers.mysql.MySQLContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest(properties = "spring.jpa.hibernate.ddl-auto=create-drop")
+@Testcontainers
+class SmokeTest {
+
+ @Container
+ @ServiceConnection
+ static MySQLContainer mysql = new MySQLContainer("mysql:8.0");
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_2/tema_2.5_db/bd_ejem3/pom.xml b/parte_2/tema_2.5_db/bd_ejem3/pom.xml
index 65c6fab..204fa9a 100644
--- a/parte_2/tema_2.5_db/bd_ejem3/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem3/pom.xml
@@ -37,6 +37,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
\ No newline at end of file
diff --git a/parte_2/tema_2.5_db/bd_ejem3/src/test/java/es/codeurjc/board/SmokeTest.java b/parte_2/tema_2.5_db/bd_ejem3/src/test/java/es/codeurjc/board/SmokeTest.java
new file mode 100644
index 0000000..811d836
--- /dev/null
+++ b/parte_2/tema_2.5_db/bd_ejem3/src/test/java/es/codeurjc/board/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.codeurjc.board;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_2/tema_2.5_db/bd_ejem4/pom.xml b/parte_2/tema_2.5_db/bd_ejem4/pom.xml
index 1a1d012..290bdfe 100644
--- a/parte_2/tema_2.5_db/bd_ejem4/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem4/pom.xml
@@ -37,6 +37,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
\ No newline at end of file
diff --git a/parte_2/tema_2.5_db/bd_ejem4/src/test/java/es/codeurjc/board/SmokeTest.java b/parte_2/tema_2.5_db/bd_ejem4/src/test/java/es/codeurjc/board/SmokeTest.java
new file mode 100644
index 0000000..811d836
--- /dev/null
+++ b/parte_2/tema_2.5_db/bd_ejem4/src/test/java/es/codeurjc/board/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.codeurjc.board;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_2/tema_2.5_db/bd_ejem5/pom.xml b/parte_2/tema_2.5_db/bd_ejem5/pom.xml
index 41b3673..c170d8b 100644
--- a/parte_2/tema_2.5_db/bd_ejem5/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem5/pom.xml
@@ -36,6 +36,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
\ No newline at end of file
diff --git a/parte_2/tema_2.5_db/bd_ejem5/src/test/java/es/codeurjc/db/SmokeTest.java b/parte_2/tema_2.5_db/bd_ejem5/src/test/java/es/codeurjc/db/SmokeTest.java
new file mode 100644
index 0000000..b52e2aa
--- /dev/null
+++ b/parte_2/tema_2.5_db/bd_ejem5/src/test/java/es/codeurjc/db/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.codeurjc.db;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_2/tema_2.5_db/bd_ejem6/pom.xml b/parte_2/tema_2.5_db/bd_ejem6/pom.xml
index 0e7b58c..c6e16ec 100644
--- a/parte_2/tema_2.5_db/bd_ejem6/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem6/pom.xml
@@ -36,6 +36,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.5_db/bd_ejem6/src/test/java/es/codeurjc/db/SmokeTest.java b/parte_2/tema_2.5_db/bd_ejem6/src/test/java/es/codeurjc/db/SmokeTest.java
new file mode 100644
index 0000000..b52e2aa
--- /dev/null
+++ b/parte_2/tema_2.5_db/bd_ejem6/src/test/java/es/codeurjc/db/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.codeurjc.db;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_2/tema_2.5_db/bd_ejem7/pom.xml b/parte_2/tema_2.5_db/bd_ejem7/pom.xml
index f554648..c582ca6 100644
--- a/parte_2/tema_2.5_db/bd_ejem7/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem7/pom.xml
@@ -36,6 +36,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
\ No newline at end of file
diff --git a/parte_2/tema_2.5_db/bd_ejem7/src/test/java/es/codeurjc/db/SmokeTest.java b/parte_2/tema_2.5_db/bd_ejem7/src/test/java/es/codeurjc/db/SmokeTest.java
new file mode 100644
index 0000000..b52e2aa
--- /dev/null
+++ b/parte_2/tema_2.5_db/bd_ejem7/src/test/java/es/codeurjc/db/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.codeurjc.db;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_2/tema_2.5_db/bd_ejem8/pom.xml b/parte_2/tema_2.5_db/bd_ejem8/pom.xml
index eeee7f0..499b583 100644
--- a/parte_2/tema_2.5_db/bd_ejem8/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem8/pom.xml
@@ -36,6 +36,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
\ No newline at end of file
diff --git a/parte_2/tema_2.5_db/bd_ejem8/src/test/java/es/codeurjc/db/SmokeTest.java b/parte_2/tema_2.5_db/bd_ejem8/src/test/java/es/codeurjc/db/SmokeTest.java
new file mode 100644
index 0000000..b52e2aa
--- /dev/null
+++ b/parte_2/tema_2.5_db/bd_ejem8/src/test/java/es/codeurjc/db/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.codeurjc.db;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_2/tema_2.5_db/bd_ejem9/pom.xml b/parte_2/tema_2.5_db/bd_ejem9/pom.xml
index 1d370e9..dc5396f 100644
--- a/parte_2/tema_2.5_db/bd_ejem9/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejem9/pom.xml
@@ -36,6 +36,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
\ No newline at end of file
diff --git a/parte_2/tema_2.5_db/bd_ejem9/src/test/java/es/codeurjc/db/SmokeTest.java b/parte_2/tema_2.5_db/bd_ejem9/src/test/java/es/codeurjc/db/SmokeTest.java
new file mode 100644
index 0000000..b52e2aa
--- /dev/null
+++ b/parte_2/tema_2.5_db/bd_ejem9/src/test/java/es/codeurjc/db/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.codeurjc.db;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_2/tema_2.5_db/bd_ejer1/pom.xml b/parte_2/tema_2.5_db/bd_ejer1/pom.xml
index 1c92b35..6005218 100644
--- a/parte_2/tema_2.5_db/bd_ejer1/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejer1/pom.xml
@@ -30,5 +30,10 @@
com.h2database
h2
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.5_db/bd_ejer1/src/test/java/es/codeurjc/items/SmokeTest.java b/parte_2/tema_2.5_db/bd_ejer1/src/test/java/es/codeurjc/items/SmokeTest.java
new file mode 100644
index 0000000..7a7834e
--- /dev/null
+++ b/parte_2/tema_2.5_db/bd_ejer1/src/test/java/es/codeurjc/items/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.codeurjc.items;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_2/tema_2.5_db/bd_ejer2/pom.xml b/parte_2/tema_2.5_db/bd_ejer2/pom.xml
index 599f36f..5fdca59 100644
--- a/parte_2/tema_2.5_db/bd_ejer2/pom.xml
+++ b/parte_2/tema_2.5_db/bd_ejer2/pom.xml
@@ -41,6 +41,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.5_db/bd_ejer2/src/test/java/es/codeurjc/board/SmokeTest.java b/parte_2/tema_2.5_db/bd_ejer2/src/test/java/es/codeurjc/board/SmokeTest.java
new file mode 100644
index 0000000..811d836
--- /dev/null
+++ b/parte_2/tema_2.5_db/bd_ejer2/src/test/java/es/codeurjc/board/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.codeurjc.board;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_2/tema_2.6_despliegue/despliegue_ejem1/pom.xml b/parte_2/tema_2.6_despliegue/despliegue_ejem1/pom.xml
index d6133a7..f1a40eb 100644
--- a/parte_2/tema_2.6_despliegue/despliegue_ejem1/pom.xml
+++ b/parte_2/tema_2.6_despliegue/despliegue_ejem1/pom.xml
@@ -30,6 +30,11 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_2/tema_2.6_despliegue/despliegue_ejem1/src/test/java/es/codeurjc/web/SmokeTest.java b/parte_2/tema_2.6_despliegue/despliegue_ejem1/src/test/java/es/codeurjc/web/SmokeTest.java
new file mode 100644
index 0000000..4908cd9
--- /dev/null
+++ b/parte_2/tema_2.6_despliegue/despliegue_ejem1/src/test/java/es/codeurjc/web/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.web;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_2/tema_2.6_despliegue/despliegue_ejem2/pom.xml b/parte_2/tema_2.6_despliegue/despliegue_ejem2/pom.xml
index edef5fa..85fd31d 100644
--- a/parte_2/tema_2.6_despliegue/despliegue_ejem2/pom.xml
+++ b/parte_2/tema_2.6_despliegue/despliegue_ejem2/pom.xml
@@ -43,6 +43,26 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.testcontainers
+ testcontainers-junit-jupiter
+ test
+
+
+ org.testcontainers
+ testcontainers-mysql
+ test
+
diff --git a/parte_2/tema_2.6_despliegue/despliegue_ejem2/src/test/java/es/codeurjc/db/SmokeTest.java b/parte_2/tema_2.6_despliegue/despliegue_ejem2/src/test/java/es/codeurjc/db/SmokeTest.java
new file mode 100644
index 0000000..74dc422
--- /dev/null
+++ b/parte_2/tema_2.6_despliegue/despliegue_ejem2/src/test/java/es/codeurjc/db/SmokeTest.java
@@ -0,0 +1,43 @@
+package es.codeurjc.db;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.springframework.test.context.ActiveProfiles;
+import org.testcontainers.mysql.MySQLContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest(properties = "spring.jpa.hibernate.ddl-auto=create-drop")
+@ActiveProfiles("prod")
+@Testcontainers
+class SmokeTest {
+
+ @Container
+ @ServiceConnection
+ static MySQLContainer mysql = new MySQLContainer("mysql:8.0");
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-consumer/pom.xml b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-consumer/pom.xml
index 40ddd79..b72f006 100644
--- a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-consumer/pom.xml
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-consumer/pom.xml
@@ -24,6 +24,26 @@
org.springframework.boot
spring-boot-starter-amqp
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.testcontainers
+ testcontainers-junit-jupiter
+ test
+
+
+ org.testcontainers
+ testcontainers-rabbitmq
+ test
+
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-consumer/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-consumer/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java
new file mode 100644
index 0000000..7ef6e05
--- /dev/null
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-consumer/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java
@@ -0,0 +1,39 @@
+package es.codeurjc.mastercloudapps.amqp;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.amqp.rabbit.connection.Connection;
+import org.springframework.amqp.rabbit.connection.ConnectionFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.testcontainers.rabbitmq.RabbitMQContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+/**
+ * Comprobacion minima: el contexto arranca y el broker responde.
+ */
+@SpringBootTest
+@Testcontainers
+class SmokeTest {
+
+ @Container
+ @ServiceConnection
+ static RabbitMQContainer rabbit = new RabbitMQContainer("rabbitmq:3.13-management");
+
+ @Autowired
+ private ConnectionFactory connectionFactory;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laColaResponde() {
+ try (Connection conexion = connectionFactory.createConnection()) {
+ assertTrue(conexion.isOpen());
+ }
+ }
+}
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-producer/pom.xml b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-producer/pom.xml
index 80e6e13..150a781 100644
--- a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-producer/pom.xml
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-producer/pom.xml
@@ -24,6 +24,26 @@
org.springframework.boot
spring-boot-starter-amqp
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.testcontainers
+ testcontainers-junit-jupiter
+ test
+
+
+ org.testcontainers
+ testcontainers-rabbitmq
+ test
+
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-producer/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-producer/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java
new file mode 100644
index 0000000..7ef6e05
--- /dev/null
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-producer/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java
@@ -0,0 +1,39 @@
+package es.codeurjc.mastercloudapps.amqp;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.amqp.rabbit.connection.Connection;
+import org.springframework.amqp.rabbit.connection.ConnectionFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.testcontainers.rabbitmq.RabbitMQContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+/**
+ * Comprobacion minima: el contexto arranca y el broker responde.
+ */
+@SpringBootTest
+@Testcontainers
+class SmokeTest {
+
+ @Container
+ @ServiceConnection
+ static RabbitMQContainer rabbit = new RabbitMQContainer("rabbitmq:3.13-management");
+
+ @Autowired
+ private ConnectionFactory connectionFactory;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laColaResponde() {
+ try (Connection conexion = connectionFactory.createConnection()) {
+ assertTrue(conexion.isOpen());
+ }
+ }
+}
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-consumer/pom.xml b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-consumer/pom.xml
index 2765f86..c6b708e 100644
--- a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-consumer/pom.xml
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-consumer/pom.xml
@@ -28,6 +28,26 @@
org.springframework.boot
spring-boot-starter-json
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.testcontainers
+ testcontainers-junit-jupiter
+ test
+
+
+ org.testcontainers
+ testcontainers-rabbitmq
+ test
+
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-consumer/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-consumer/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java
new file mode 100644
index 0000000..7ef6e05
--- /dev/null
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-consumer/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java
@@ -0,0 +1,39 @@
+package es.codeurjc.mastercloudapps.amqp;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.amqp.rabbit.connection.Connection;
+import org.springframework.amqp.rabbit.connection.ConnectionFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.testcontainers.rabbitmq.RabbitMQContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+/**
+ * Comprobacion minima: el contexto arranca y el broker responde.
+ */
+@SpringBootTest
+@Testcontainers
+class SmokeTest {
+
+ @Container
+ @ServiceConnection
+ static RabbitMQContainer rabbit = new RabbitMQContainer("rabbitmq:3.13-management");
+
+ @Autowired
+ private ConnectionFactory connectionFactory;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laColaResponde() {
+ try (Connection conexion = connectionFactory.createConnection()) {
+ assertTrue(conexion.isOpen());
+ }
+ }
+}
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-producer/pom.xml b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-producer/pom.xml
index b35957f..53c0654 100644
--- a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-producer/pom.xml
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-producer/pom.xml
@@ -28,6 +28,26 @@
org.springframework.boot
spring-boot-starter-json
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.testcontainers
+ testcontainers-junit-jupiter
+ test
+
+
+ org.testcontainers
+ testcontainers-rabbitmq
+ test
+
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-producer/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-producer/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java
new file mode 100644
index 0000000..7ef6e05
--- /dev/null
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-producer/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java
@@ -0,0 +1,39 @@
+package es.codeurjc.mastercloudapps.amqp;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.amqp.rabbit.connection.Connection;
+import org.springframework.amqp.rabbit.connection.ConnectionFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.testcontainers.rabbitmq.RabbitMQContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+/**
+ * Comprobacion minima: el contexto arranca y el broker responde.
+ */
+@SpringBootTest
+@Testcontainers
+class SmokeTest {
+
+ @Container
+ @ServiceConnection
+ static RabbitMQContainer rabbit = new RabbitMQContainer("rabbitmq:3.13-management");
+
+ @Autowired
+ private ConnectionFactory connectionFactory;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laColaResponde() {
+ try (Connection conexion = connectionFactory.createConnection()) {
+ assertTrue(conexion.isOpen());
+ }
+ }
+}
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-client/pom.xml b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-client/pom.xml
index 265f89f..39bf40d 100644
--- a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-client/pom.xml
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-client/pom.xml
@@ -45,6 +45,26 @@
h2
runtime
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.testcontainers
+ testcontainers-junit-jupiter
+ test
+
+
+ org.testcontainers
+ testcontainers-rabbitmq
+ test
+
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-client/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-client/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java
new file mode 100644
index 0000000..7ef6e05
--- /dev/null
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-client/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java
@@ -0,0 +1,39 @@
+package es.codeurjc.mastercloudapps.amqp;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.amqp.rabbit.connection.Connection;
+import org.springframework.amqp.rabbit.connection.ConnectionFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.testcontainers.rabbitmq.RabbitMQContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+/**
+ * Comprobacion minima: el contexto arranca y el broker responde.
+ */
+@SpringBootTest
+@Testcontainers
+class SmokeTest {
+
+ @Container
+ @ServiceConnection
+ static RabbitMQContainer rabbit = new RabbitMQContainer("rabbitmq:3.13-management");
+
+ @Autowired
+ private ConnectionFactory connectionFactory;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laColaResponde() {
+ try (Connection conexion = connectionFactory.createConnection()) {
+ assertTrue(conexion.isOpen());
+ }
+ }
+}
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-service/pom.xml b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-service/pom.xml
index 6381fe3..56998a0 100644
--- a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-service/pom.xml
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-service/pom.xml
@@ -28,6 +28,26 @@
org.springframework.boot
spring-boot-starter-json
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.testcontainers
+ testcontainers-junit-jupiter
+ test
+
+
+ org.testcontainers
+ testcontainers-rabbitmq
+ test
+
diff --git a/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-service/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-service/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java
new file mode 100644
index 0000000..7ef6e05
--- /dev/null
+++ b/parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-service/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java
@@ -0,0 +1,39 @@
+package es.codeurjc.mastercloudapps.amqp;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.amqp.rabbit.connection.Connection;
+import org.springframework.amqp.rabbit.connection.ConnectionFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.testcontainers.rabbitmq.RabbitMQContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+/**
+ * Comprobacion minima: el contexto arranca y el broker responde.
+ */
+@SpringBootTest
+@Testcontainers
+class SmokeTest {
+
+ @Container
+ @ServiceConnection
+ static RabbitMQContainer rabbit = new RabbitMQContainer("rabbitmq:3.13-management");
+
+ @Autowired
+ private ConnectionFactory connectionFactory;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laColaResponde() {
+ try (Connection conexion = connectionFactory.createConnection()) {
+ assertTrue(conexion.isOpen());
+ }
+ }
+}
diff --git a/parte_3/tema_3.2_websockets/comunicacion-ws-ejem1/pom.xml b/parte_3/tema_3.2_websockets/comunicacion-ws-ejem1/pom.xml
index d204c5d..9ac9756 100644
--- a/parte_3/tema_3.2_websockets/comunicacion-ws-ejem1/pom.xml
+++ b/parte_3/tema_3.2_websockets/comunicacion-ws-ejem1/pom.xml
@@ -24,6 +24,11 @@
org.springframework.boot
spring-boot-starter-websocket
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_3/tema_3.2_websockets/comunicacion-ws-ejem1/src/test/java/es/codeurjc/mastercloudapps/ws/SmokeTest.java b/parte_3/tema_3.2_websockets/comunicacion-ws-ejem1/src/test/java/es/codeurjc/mastercloudapps/ws/SmokeTest.java
new file mode 100644
index 0000000..7615141
--- /dev/null
+++ b/parte_3/tema_3.2_websockets/comunicacion-ws-ejem1/src/test/java/es/codeurjc/mastercloudapps/ws/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.codeurjc.mastercloudapps.ws;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_3/tema_3.2_websockets/comunicacion-ws-ejem2/pom.xml b/parte_3/tema_3.2_websockets/comunicacion-ws-ejem2/pom.xml
index 943531c..a9f9eec 100644
--- a/parte_3/tema_3.2_websockets/comunicacion-ws-ejem2/pom.xml
+++ b/parte_3/tema_3.2_websockets/comunicacion-ws-ejem2/pom.xml
@@ -48,6 +48,11 @@
org.springframework.boot
spring-boot-starter-security
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_3/tema_3.2_websockets/comunicacion-ws-ejem2/src/test/java/es/codeurjc/mastercloudapps/ws/SmokeTest.java b/parte_3/tema_3.2_websockets/comunicacion-ws-ejem2/src/test/java/es/codeurjc/mastercloudapps/ws/SmokeTest.java
new file mode 100644
index 0000000..ec82105
--- /dev/null
+++ b/parte_3/tema_3.2_websockets/comunicacion-ws-ejem2/src/test/java/es/codeurjc/mastercloudapps/ws/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.codeurjc.mastercloudapps.ws;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_4/tema_4.2/aplicacion-java-enunciado/pom.xml b/parte_4/tema_4.2/aplicacion-java-enunciado/pom.xml
index caee13f..52ddf59 100644
--- a/parte_4/tema_4.2/aplicacion-java-enunciado/pom.xml
+++ b/parte_4/tema_4.2/aplicacion-java-enunciado/pom.xml
@@ -34,6 +34,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_4/tema_4.2/aplicacion-java-enunciado/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java b/parte_4/tema_4.2/aplicacion-java-enunciado/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java
new file mode 100644
index 0000000..d61d094
--- /dev/null
+++ b/parte_4/tema_4.2/aplicacion-java-enunciado/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.urjc.code.daw.tablonanuncios;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_4/tema_4.2/ejemplo-1/pom.xml b/parte_4/tema_4.2/ejemplo-1/pom.xml
index caee13f..52ddf59 100644
--- a/parte_4/tema_4.2/ejemplo-1/pom.xml
+++ b/parte_4/tema_4.2/ejemplo-1/pom.xml
@@ -34,6 +34,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_4/tema_4.2/ejemplo-1/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java b/parte_4/tema_4.2/ejemplo-1/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java
new file mode 100644
index 0000000..d61d094
--- /dev/null
+++ b/parte_4/tema_4.2/ejemplo-1/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.urjc.code.daw.tablonanuncios;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_4/tema_4.2/ejemplo-2/pom.xml b/parte_4/tema_4.2/ejemplo-2/pom.xml
index b9a8e39..73b559e 100644
--- a/parte_4/tema_4.2/ejemplo-2/pom.xml
+++ b/parte_4/tema_4.2/ejemplo-2/pom.xml
@@ -15,12 +15,26 @@
21
21
+ 6.0.3
+
+
+ org.junit.jupiter
+ junit-jupiter
+ ${junit-jupiter.version}
+ test
+
+
+
app
+
+ maven-surefire-plugin
+ 3.5.5
+
maven-assembly-plugin
3.3.0
diff --git a/parte_4/tema_4.2/ejemplo-2/src/test/java/es/urjc/code/example/SmokeTest.java b/parte_4/tema_4.2/ejemplo-2/src/test/java/es/urjc/code/example/SmokeTest.java
new file mode 100644
index 0000000..44fc47e
--- /dev/null
+++ b/parte_4/tema_4.2/ejemplo-2/src/test/java/es/urjc/code/example/SmokeTest.java
@@ -0,0 +1,34 @@
+package es.urjc.code.example;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.nio.charset.StandardCharsets;
+
+import org.junit.jupiter.api.Test;
+
+/**
+ * Comprobacion minima: la aplicacion arranca y procesa los argumentos.
+ */
+class SmokeTest {
+
+ @Test
+ void laAplicacionArrancaYLeeLosArgumentos() throws Exception {
+ PrintStream salidaOriginal = System.out;
+ ByteArrayOutputStream capturada = new ByteArrayOutputStream();
+
+ try {
+ System.setOut(new PrintStream(capturada, true, StandardCharsets.UTF_8));
+ Application.main(new String[] { "uno", "dos" });
+ } finally {
+ System.setOut(salidaOriginal);
+ }
+
+ String salida = capturada.toString(StandardCharsets.UTF_8);
+
+ assertTrue(salida.contains("Command line application"));
+ assertTrue(salida.contains("uno"));
+ assertTrue(salida.contains("dos"));
+ }
+}
diff --git a/parte_4/tema_4.2/ejer4/aplicacion-java-enunciado/pom.xml b/parte_4/tema_4.2/ejer4/aplicacion-java-enunciado/pom.xml
index caee13f..52ddf59 100644
--- a/parte_4/tema_4.2/ejer4/aplicacion-java-enunciado/pom.xml
+++ b/parte_4/tema_4.2/ejer4/aplicacion-java-enunciado/pom.xml
@@ -34,6 +34,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_4/tema_4.2/ejer4/aplicacion-java-enunciado/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java b/parte_4/tema_4.2/ejer4/aplicacion-java-enunciado/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java
new file mode 100644
index 0000000..d61d094
--- /dev/null
+++ b/parte_4/tema_4.2/ejer4/aplicacion-java-enunciado/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.urjc.code.daw.tablonanuncios;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_4/tema_4.2/ejer5/aplicacion-java-enunciado/pom.xml b/parte_4/tema_4.2/ejer5/aplicacion-java-enunciado/pom.xml
index caee13f..52ddf59 100644
--- a/parte_4/tema_4.2/ejer5/aplicacion-java-enunciado/pom.xml
+++ b/parte_4/tema_4.2/ejer5/aplicacion-java-enunciado/pom.xml
@@ -34,6 +34,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_4/tema_4.2/ejer5/aplicacion-java-enunciado/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java b/parte_4/tema_4.2/ejer5/aplicacion-java-enunciado/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java
new file mode 100644
index 0000000..d61d094
--- /dev/null
+++ b/parte_4/tema_4.2/ejer5/aplicacion-java-enunciado/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.urjc.code.daw.tablonanuncios;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_4/tema_4.2/ejer6/pom.xml b/parte_4/tema_4.2/ejer6/pom.xml
index 65636c1..4111ac3 100644
--- a/parte_4/tema_4.2/ejer6/pom.xml
+++ b/parte_4/tema_4.2/ejer6/pom.xml
@@ -33,6 +33,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_4/tema_4.2/ejer6/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java b/parte_4/tema_4.2/ejer6/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java
new file mode 100644
index 0000000..d61d094
--- /dev/null
+++ b/parte_4/tema_4.2/ejer6/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.urjc.code.daw.tablonanuncios;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_4/tema_4.2/ejer7/pom.xml b/parte_4/tema_4.2/ejer7/pom.xml
index ee959d5..effbe76 100644
--- a/parte_4/tema_4.2/ejer7/pom.xml
+++ b/parte_4/tema_4.2/ejer7/pom.xml
@@ -33,6 +33,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_4/tema_4.2/ejer7/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java b/parte_4/tema_4.2/ejer7/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java
new file mode 100644
index 0000000..d61d094
--- /dev/null
+++ b/parte_4/tema_4.2/ejer7/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.urjc.code.daw.tablonanuncios;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_4/tema_4.2/ejer8/pom.xml b/parte_4/tema_4.2/ejer8/pom.xml
index de390e0..a1f0eeb 100644
--- a/parte_4/tema_4.2/ejer8/pom.xml
+++ b/parte_4/tema_4.2/ejer8/pom.xml
@@ -33,6 +33,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_4/tema_4.2/ejer8/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java b/parte_4/tema_4.2/ejer8/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java
new file mode 100644
index 0000000..d61d094
--- /dev/null
+++ b/parte_4/tema_4.2/ejer8/src/test/java/es/urjc/code/daw/tablonanuncios/SmokeTest.java
@@ -0,0 +1,15 @@
+package es.urjc.code.daw.tablonanuncios;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto de Spring arranca.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Test
+ void elContextoArranca() {
+ }
+}
diff --git a/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/pom.xml b/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/pom.xml
index 52b5b81..144fa2e 100644
--- a/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/pom.xml
+++ b/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/pom.xml
@@ -36,6 +36,26 @@
org.springframework.boot
spring-boot-starter-websocket
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.testcontainers
+ testcontainers-junit-jupiter
+ test
+
+
+ org.testcontainers
+ testcontainers-rabbitmq
+ test
+
diff --git a/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java b/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java
new file mode 100644
index 0000000..7ef6e05
--- /dev/null
+++ b/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java
@@ -0,0 +1,39 @@
+package es.codeurjc.mastercloudapps.amqp;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.amqp.rabbit.connection.Connection;
+import org.springframework.amqp.rabbit.connection.ConnectionFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.testcontainers.rabbitmq.RabbitMQContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+/**
+ * Comprobacion minima: el contexto arranca y el broker responde.
+ */
+@SpringBootTest
+@Testcontainers
+class SmokeTest {
+
+ @Container
+ @ServiceConnection
+ static RabbitMQContainer rabbit = new RabbitMQContainer("rabbitmq:3.13-management");
+
+ @Autowired
+ private ConnectionFactory connectionFactory;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laColaResponde() {
+ try (Connection conexion = connectionFactory.createConnection()) {
+ assertTrue(conexion.isOpen());
+ }
+ }
+}
diff --git a/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-producer/pom.xml b/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-producer/pom.xml
index d3b1c31..976424f 100644
--- a/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-producer/pom.xml
+++ b/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-producer/pom.xml
@@ -28,6 +28,26 @@
org.springframework.boot
spring-boot-starter-json
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.testcontainers
+ testcontainers-junit-jupiter
+ test
+
+
+ org.testcontainers
+ testcontainers-rabbitmq
+ test
+
diff --git a/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-producer/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java b/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-producer/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java
new file mode 100644
index 0000000..7ef6e05
--- /dev/null
+++ b/parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-producer/src/test/java/es/codeurjc/mastercloudapps/amqp/SmokeTest.java
@@ -0,0 +1,39 @@
+package es.codeurjc.mastercloudapps.amqp;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.amqp.rabbit.connection.Connection;
+import org.springframework.amqp.rabbit.connection.ConnectionFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.testcontainers.rabbitmq.RabbitMQContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+/**
+ * Comprobacion minima: el contexto arranca y el broker responde.
+ */
+@SpringBootTest
+@Testcontainers
+class SmokeTest {
+
+ @Container
+ @ServiceConnection
+ static RabbitMQContainer rabbit = new RabbitMQContainer("rabbitmq:3.13-management");
+
+ @Autowired
+ private ConnectionFactory connectionFactory;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laColaResponde() {
+ try (Connection conexion = connectionFactory.createConnection()) {
+ assertTrue(conexion.isOpen());
+ }
+ }
+}
diff --git a/parte_4/tema_4.3/ejemplo-2/pom.xml b/parte_4/tema_4.3/ejemplo-2/pom.xml
index 6c42184..3c1834b 100644
--- a/parte_4/tema_4.3/ejemplo-2/pom.xml
+++ b/parte_4/tema_4.3/ejemplo-2/pom.xml
@@ -42,6 +42,26 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.testcontainers
+ testcontainers-junit-jupiter
+ test
+
+
+ org.testcontainers
+ testcontainers-mysql
+ test
+
diff --git a/parte_4/tema_4.3/ejemplo-2/src/test/java/es/codeurjc/test/tablonanuncios/SmokeTest.java b/parte_4/tema_4.3/ejemplo-2/src/test/java/es/codeurjc/test/tablonanuncios/SmokeTest.java
new file mode 100644
index 0000000..d5c404f
--- /dev/null
+++ b/parte_4/tema_4.3/ejemplo-2/src/test/java/es/codeurjc/test/tablonanuncios/SmokeTest.java
@@ -0,0 +1,41 @@
+package es.codeurjc.test.tablonanuncios;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.testcontainers.mysql.MySQLContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest(classes = WebApp.class, properties = "spring.jpa.hibernate.ddl-auto=create-drop")
+@Testcontainers
+class SmokeTest {
+
+ @Container
+ @ServiceConnection
+ static MySQLContainer mysql = new MySQLContainer("mysql:8.0");
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_4/tema_4.3/ejemplo-3/pom.xml b/parte_4/tema_4.3/ejemplo-3/pom.xml
index 6c42184..3c1834b 100644
--- a/parte_4/tema_4.3/ejemplo-3/pom.xml
+++ b/parte_4/tema_4.3/ejemplo-3/pom.xml
@@ -42,6 +42,26 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.testcontainers
+ testcontainers-junit-jupiter
+ test
+
+
+ org.testcontainers
+ testcontainers-mysql
+ test
+
diff --git a/parte_4/tema_4.3/ejemplo-3/src/test/java/es/codeurjc/test/tablonanuncios/SmokeTest.java b/parte_4/tema_4.3/ejemplo-3/src/test/java/es/codeurjc/test/tablonanuncios/SmokeTest.java
new file mode 100644
index 0000000..d5c404f
--- /dev/null
+++ b/parte_4/tema_4.3/ejemplo-3/src/test/java/es/codeurjc/test/tablonanuncios/SmokeTest.java
@@ -0,0 +1,41 @@
+package es.codeurjc.test.tablonanuncios;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.testcontainers.mysql.MySQLContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest(classes = WebApp.class, properties = "spring.jpa.hibernate.ddl-auto=create-drop")
+@Testcontainers
+class SmokeTest {
+
+ @Container
+ @ServiceConnection
+ static MySQLContainer mysql = new MySQLContainer("mysql:8.0");
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_4/tema_4.3/ejercicio-1-enunciado/pom.xml b/parte_4/tema_4.3/ejercicio-1-enunciado/pom.xml
index 6c42184..3c1834b 100644
--- a/parte_4/tema_4.3/ejercicio-1-enunciado/pom.xml
+++ b/parte_4/tema_4.3/ejercicio-1-enunciado/pom.xml
@@ -42,6 +42,26 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.testcontainers
+ testcontainers-junit-jupiter
+ test
+
+
+ org.testcontainers
+ testcontainers-mysql
+ test
+
diff --git a/parte_4/tema_4.3/ejercicio-1-enunciado/src/test/java/es/codeurjc/test/tablonanuncios/SmokeTest.java b/parte_4/tema_4.3/ejercicio-1-enunciado/src/test/java/es/codeurjc/test/tablonanuncios/SmokeTest.java
new file mode 100644
index 0000000..ebd56e7
--- /dev/null
+++ b/parte_4/tema_4.3/ejercicio-1-enunciado/src/test/java/es/codeurjc/test/tablonanuncios/SmokeTest.java
@@ -0,0 +1,41 @@
+package es.codeurjc.test.tablonanuncios;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.testcontainers.mysql.MySQLContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest(properties = "spring.jpa.hibernate.ddl-auto=create-drop")
+@Testcontainers
+class SmokeTest {
+
+ @Container
+ @ServiceConnection
+ static MySQLContainer mysql = new MySQLContainer("mysql:8.0");
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_4/tema_4.3/ejercicio-1/pom.xml b/parte_4/tema_4.3/ejercicio-1/pom.xml
index 6c42184..3c1834b 100644
--- a/parte_4/tema_4.3/ejercicio-1/pom.xml
+++ b/parte_4/tema_4.3/ejercicio-1/pom.xml
@@ -42,6 +42,26 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.testcontainers
+ testcontainers-junit-jupiter
+ test
+
+
+ org.testcontainers
+ testcontainers-mysql
+ test
+
diff --git a/parte_4/tema_4.3/ejercicio-1/src/test/java/es/codeurjc/test/tablonanuncios/SmokeTest.java b/parte_4/tema_4.3/ejercicio-1/src/test/java/es/codeurjc/test/tablonanuncios/SmokeTest.java
new file mode 100644
index 0000000..ebd56e7
--- /dev/null
+++ b/parte_4/tema_4.3/ejercicio-1/src/test/java/es/codeurjc/test/tablonanuncios/SmokeTest.java
@@ -0,0 +1,41 @@
+package es.codeurjc.test.tablonanuncios;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.testcontainers.mysql.MySQLContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest(properties = "spring.jpa.hibernate.ddl-auto=create-drop")
+@Testcontainers
+class SmokeTest {
+
+ @Container
+ @ServiceConnection
+ static MySQLContainer mysql = new MySQLContainer("mysql:8.0");
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_5/ejem0-jmeter/pom.xml b/parte_5/ejem0-jmeter/pom.xml
index ae55295..3bbff11 100644
--- a/parte_5/ejem0-jmeter/pom.xml
+++ b/parte_5/ejem0-jmeter/pom.xml
@@ -58,6 +58,21 @@
spring-boot-starter-test
test
+
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.testcontainers
+ testcontainers-junit-jupiter
+ test
+
+
+ org.testcontainers
+ testcontainers-mysql
+ test
+
diff --git a/parte_5/ejem0-jmeter/src/test/java/es/urjc/code/ejem0employee/Ejem0EmployeeApplicationTests.java b/parte_5/ejem0-jmeter/src/test/java/es/urjc/code/ejem0employee/Ejem0EmployeeApplicationTests.java
deleted file mode 100644
index df6aa35..0000000
--- a/parte_5/ejem0-jmeter/src/test/java/es/urjc/code/ejem0employee/Ejem0EmployeeApplicationTests.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package es.urjc.code.ejem0employee;
-
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-
-@SpringBootTest
-class Ejem0EmployeeApplicationTests {
-
- @Test
- void contextLoads() {
- }
-
-}
diff --git a/parte_5/ejem0-jmeter/src/test/java/es/urjc/code/ejem0employee/SmokeTest.java b/parte_5/ejem0-jmeter/src/test/java/es/urjc/code/ejem0employee/SmokeTest.java
new file mode 100644
index 0000000..a471d1e
--- /dev/null
+++ b/parte_5/ejem0-jmeter/src/test/java/es/urjc/code/ejem0employee/SmokeTest.java
@@ -0,0 +1,41 @@
+package es.urjc.code.ejem0employee;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.testcontainers.mysql.MySQLContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest(properties = "spring.jpa.hibernate.ddl-auto=create-drop")
+@Testcontainers
+class SmokeTest {
+
+ @Container
+ @ServiceConnection
+ static MySQLContainer mysql = new MySQLContainer("mysql:8.0");
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_5/ejem1-jmeter/ejem-1/pom.xml b/parte_5/ejem1-jmeter/ejem-1/pom.xml
index c3c24ce..8db2e6f 100644
--- a/parte_5/ejem1-jmeter/ejem-1/pom.xml
+++ b/parte_5/ejem1-jmeter/ejem-1/pom.xml
@@ -49,6 +49,26 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.testcontainers
+ testcontainers-junit-jupiter
+ test
+
+
+ org.testcontainers
+ testcontainers-mysql
+ test
+
diff --git a/parte_5/ejem1-jmeter/ejem-1/src/test/java/es/codeurjc/board/SmokeTest.java b/parte_5/ejem1-jmeter/ejem-1/src/test/java/es/codeurjc/board/SmokeTest.java
new file mode 100644
index 0000000..c5c5d8a
--- /dev/null
+++ b/parte_5/ejem1-jmeter/ejem-1/src/test/java/es/codeurjc/board/SmokeTest.java
@@ -0,0 +1,41 @@
+package es.codeurjc.board;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.testcontainers.mysql.MySQLContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest(properties = "spring.jpa.hibernate.ddl-auto=create-drop")
+@Testcontainers
+class SmokeTest {
+
+ @Container
+ @ServiceConnection
+ static MySQLContainer mysql = new MySQLContainer("mysql:8.0");
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_5/ejem1-jmeter/ejem-2-cache-redis/pom.xml b/parte_5/ejem1-jmeter/ejem-2-cache-redis/pom.xml
index 31f476e..730a03f 100644
--- a/parte_5/ejem1-jmeter/ejem-2-cache-redis/pom.xml
+++ b/parte_5/ejem1-jmeter/ejem-2-cache-redis/pom.xml
@@ -57,6 +57,26 @@
spring-boot-starter-cache
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.testcontainers
+ testcontainers-junit-jupiter
+ test
+
+
+ org.testcontainers
+ testcontainers-mysql
+ test
+
diff --git a/parte_5/ejem1-jmeter/ejem-2-cache-redis/src/test/java/es/codeurjc/board/SmokeTest.java b/parte_5/ejem1-jmeter/ejem-2-cache-redis/src/test/java/es/codeurjc/board/SmokeTest.java
new file mode 100644
index 0000000..69802ab
--- /dev/null
+++ b/parte_5/ejem1-jmeter/ejem-2-cache-redis/src/test/java/es/codeurjc/board/SmokeTest.java
@@ -0,0 +1,46 @@
+package es.codeurjc.board;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.testcontainers.mysql.MySQLContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.containers.GenericContainer;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest(properties = "spring.jpa.hibernate.ddl-auto=create-drop")
+@Testcontainers
+class SmokeTest {
+
+ @Container
+ @ServiceConnection
+ static MySQLContainer mysql = new MySQLContainer("mysql:8.0");
+
+ @Container
+ @ServiceConnection(name = "redis")
+ static GenericContainer> redis = new GenericContainer<>("redis:alpine").withExposedPorts(6379);
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_5/ejem1-jmeter/ejem-2-cache/pom.xml b/parte_5/ejem1-jmeter/ejem-2-cache/pom.xml
index 433f149..1712a1b 100644
--- a/parte_5/ejem1-jmeter/ejem-2-cache/pom.xml
+++ b/parte_5/ejem1-jmeter/ejem-2-cache/pom.xml
@@ -49,6 +49,26 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.testcontainers
+ testcontainers-junit-jupiter
+ test
+
+
+ org.testcontainers
+ testcontainers-mysql
+ test
+
diff --git a/parte_5/ejem1-jmeter/ejem-2-cache/src/test/java/es/codeurjc/board/SmokeTest.java b/parte_5/ejem1-jmeter/ejem-2-cache/src/test/java/es/codeurjc/board/SmokeTest.java
new file mode 100644
index 0000000..c5c5d8a
--- /dev/null
+++ b/parte_5/ejem1-jmeter/ejem-2-cache/src/test/java/es/codeurjc/board/SmokeTest.java
@@ -0,0 +1,41 @@
+package es.codeurjc.board;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.testcontainers.mysql.MySQLContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest(properties = "spring.jpa.hibernate.ddl-auto=create-drop")
+@Testcontainers
+class SmokeTest {
+
+ @Container
+ @ServiceConnection
+ static MySQLContainer mysql = new MySQLContainer("mysql:8.0");
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_5/ejem3-cache-distribuida/pom.xml b/parte_5/ejem3-cache-distribuida/pom.xml
index c58a8c8..45f8ceb 100644
--- a/parte_5/ejem3-cache-distribuida/pom.xml
+++ b/parte_5/ejem3-cache-distribuida/pom.xml
@@ -47,6 +47,11 @@
spring-session-jdbc
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_5/ejem3-cache-distribuida/src/test/java/es/urjc/code/security/SmokeTest.java b/parte_5/ejem3-cache-distribuida/src/test/java/es/urjc/code/security/SmokeTest.java
new file mode 100644
index 0000000..82a4c69
--- /dev/null
+++ b/parte_5/ejem3-cache-distribuida/src/test/java/es/urjc/code/security/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.urjc.code.security;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_5/ejem3-cache-distribuida2/pom.xml b/parte_5/ejem3-cache-distribuida2/pom.xml
index 7d17fb0..d17fffa 100644
--- a/parte_5/ejem3-cache-distribuida2/pom.xml
+++ b/parte_5/ejem3-cache-distribuida2/pom.xml
@@ -52,6 +52,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_5/ejem3-cache-distribuida2/src/test/java/es/codeurjc/daw/library/SmokeTest.java b/parte_5/ejem3-cache-distribuida2/src/test/java/es/codeurjc/daw/library/SmokeTest.java
new file mode 100644
index 0000000..dc2506d
--- /dev/null
+++ b/parte_5/ejem3-cache-distribuida2/src/test/java/es/codeurjc/daw/library/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.codeurjc.daw.library;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_5/ejem4-haproxy/pom.xml b/parte_5/ejem4-haproxy/pom.xml
index c6475c9..ff22648 100644
--- a/parte_5/ejem4-haproxy/pom.xml
+++ b/parte_5/ejem4-haproxy/pom.xml
@@ -46,6 +46,26 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.testcontainers
+ testcontainers-junit-jupiter
+ test
+
+
+ org.testcontainers
+ testcontainers-mysql
+ test
+
diff --git a/parte_5/ejem4-haproxy/src/test/java/es/codeurjc/tablonanuncios/SmokeTest.java b/parte_5/ejem4-haproxy/src/test/java/es/codeurjc/tablonanuncios/SmokeTest.java
new file mode 100644
index 0000000..5e0e00b
--- /dev/null
+++ b/parte_5/ejem4-haproxy/src/test/java/es/codeurjc/tablonanuncios/SmokeTest.java
@@ -0,0 +1,41 @@
+package es.codeurjc.tablonanuncios;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.testcontainers.mysql.MySQLContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest(properties = "spring.jpa.hibernate.ddl-auto=create-drop")
+@Testcontainers
+class SmokeTest {
+
+ @Container
+ @ServiceConnection
+ static MySQLContainer mysql = new MySQLContainer("mysql:8.0");
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
diff --git a/parte_5/ejem4b-haproxy-ssl-passthrough/pom.xml b/parte_5/ejem4b-haproxy-ssl-passthrough/pom.xml
index caf3804..a0e578b 100644
--- a/parte_5/ejem4b-haproxy-ssl-passthrough/pom.xml
+++ b/parte_5/ejem4b-haproxy-ssl-passthrough/pom.xml
@@ -40,6 +40,11 @@
org.springframework.boot
spring-boot-devtools
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/parte_5/ejem4b-haproxy-ssl-passthrough/src/test/java/es/codeurjc/daw/library/SmokeTest.java b/parte_5/ejem4b-haproxy-ssl-passthrough/src/test/java/es/codeurjc/daw/library/SmokeTest.java
new file mode 100644
index 0000000..dc2506d
--- /dev/null
+++ b/parte_5/ejem4b-haproxy-ssl-passthrough/src/test/java/es/codeurjc/daw/library/SmokeTest.java
@@ -0,0 +1,32 @@
+package es.codeurjc.daw.library;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * Comprobacion minima: el contexto arranca y la base de datos responde.
+ */
+@SpringBootTest
+class SmokeTest {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Test
+ void elContextoArranca() {
+ }
+
+ @Test
+ void laBaseDeDatosResponde() throws Exception {
+ try (Connection conexion = dataSource.getConnection()) {
+ assertTrue(conexion.isValid(5));
+ }
+ }
+}
From f06141781a32be0dc9af776cc6f6ced57092357b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Patxi=20Gort=C3=A1zar?=
Date: Thu, 29 Oct 2026 07:43:54 +0100
Subject: [PATCH 12/12] Discover the Maven projects in CI instead of listing
them by hand
The matrix was 86 paths written out one by one, and it went stale as soon
as parte_5 was reorganised: the last run failed on a working directory
that no longer existed, not on any code. A discover job now derives the
list from git ls-files, so moving or adding a project needs no edit here.
Using git ls-files rather than find keeps generated poms under target/
out of the list. It refuses to continue on zero projects, and on more
than 256, which is the matrix limit GitHub enforces.
Two other things were wrong in this file:
- The branch filter was '*', which does not match a branch name with a
slash in it. Pushes to copilot/update-springboot-java-versions never
triggered a run; what did run came in as a pull_request event, whose
filter applies to the base branch. It is '**' now.
- The build ran mvn clean package -DskipTests, so the tests added in the
previous commit would never have run in CI. It is mvn clean verify.
A result job gates the whole matrix, so branch protection has one check
to require instead of 86 names that change.
Added concurrency cancel-in-progress: one push is 86 jobs, and there is
no point finishing a run whose commit is already superseded. Drop that
block if you would rather keep every run.
Verified: the discovery pipeline returns the same 86 projects the hand
written matrix listed.
Co-Authored-By: Claude Opus 5
---
.github/workflows/maven-build.yml | 189 ++++++++++++------------------
1 file changed, 74 insertions(+), 115 deletions(-)
diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-build.yml
index 6eb32f5..9e685be 100644
--- a/.github/workflows/maven-build.yml
+++ b/.github/workflows/maven-build.yml
@@ -2,136 +2,95 @@ name: Maven Package Build
on:
push:
- branches: '*'
+ branches: '**'
pull_request:
- branches: '*'
+ branches: '**'
workflow_dispatch:
+# Cada push lanza un job por proyecto (86 ahora mismo), asi que se cancela
+# la ejecucion anterior de la misma rama cuando llega un commit nuevo.
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
jobs:
+ discover:
+ name: Discover Maven projects
+ runs-on: ubuntu-latest
+
+ outputs:
+ projects: ${{ steps.find.outputs.projects }}
+ count: ${{ steps.find.outputs.count }}
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+
+ - name: Find every pom.xml
+ id: find
+ run: |
+ set -euo pipefail
+
+ # Un proyecto = un directorio con pom.xml versionado. Usar git ls-files
+ # en vez de find deja fuera cualquier pom generado (target/, etc.).
+ projects=$(git ls-files '*pom.xml' \
+ | sed -e 's|/pom.xml$||' -e 's|^pom.xml$|.|' \
+ | sort \
+ | jq -R -s -c 'split("\n") | map(select(length > 0))')
+
+ count=$(printf '%s' "$projects" | jq 'length')
+
+ if [ "$count" -eq 0 ]; then
+ echo "No se ha encontrado ningun pom.xml" >&2
+ exit 1
+ fi
+
+ # El limite de GitHub Actions es de 256 jobs por matriz.
+ if [ "$count" -gt 256 ]; then
+ echo "Hay $count proyectos y la matriz admite 256 como maximo" >&2
+ exit 1
+ fi
+
+ echo "projects=$projects" >> "$GITHUB_OUTPUT"
+ echo "count=$count" >> "$GITHUB_OUTPUT"
+
+ echo "Proyectos detectados: $count" >> "$GITHUB_STEP_SUMMARY"
+ printf '%s' "$projects" | jq -r '.[]' | sed 's/^/- /' >> "$GITHUB_STEP_SUMMARY"
+
build:
+ name: Build - ${{ matrix.project }}
+ needs: discover
runs-on: ubuntu-latest
-
+
strategy:
- matrix:
- project:
- # Parte 2 - Web Projects
- - 'parte_2/tema_2.2_web/web_ejem1'
- - 'parte_2/tema_2.2_web/web_ejem2'
- - 'parte_2/tema_2.2_web/web_ejem3'
- - 'parte_2/tema_2.2_web/web_ejem4'
- - 'parte_2/tema_2.2_web/web_ejem5'
- - 'parte_2/tema_2.2_web/web_ejem6'
- - 'parte_2/tema_2.2_web/web_ejem7'
- - 'parte_2/tema_2.2_web/web_ejem8'
- - 'parte_2/tema_2.2_web/web_ejem8b'
- - 'parte_2/tema_2.2_web/web_ejer1'
- - 'parte_2/tema_2.2_web/web_ejer1b'
- - 'parte_2/tema_2.2_web/web_ejer2'
- - 'parte_2/tema_2.2_web/web_ejer3'
- - 'parte_2/tema_2.2_web/web_ejer3_devtools'
- - 'parte_2/tema_2.2_web/web_ejer4'
- - 'parte_2/tema_2.2_web/web_ejer5'
- - 'parte_2/tema_2.2_web/web_ejer6'
- - 'parte_2/tema_2.2_web/web_ejer7'
-
- # Parte 2 - REST Projects
- - 'parte_2/tema_2.3_rest/rest_ejem1'
- - 'parte_2/tema_2.3_rest/rest_ejem2'
- - 'parte_2/tema_2.3_rest/rest_ejem3'
- - 'parte_2/tema_2.3_rest/rest_ejem4'
- - 'parte_2/tema_2.3_rest/rest_ejem5'
- - 'parte_2/tema_2.3_rest/rest_ejem6'
- - 'parte_2/tema_2.3_rest/rest_ejem7'
- - 'parte_2/tema_2.3_rest/rest_ejem8'
- - 'parte_2/tema_2.3_rest/rest_ejem9'
- - 'parte_2/tema_2.3_rest/rest_ejem10'
- - 'parte_2/tema_2.3_rest/rest_ejem11'
- - 'parte_2/tema_2.3_rest/rest_ejer1'
-
- # Parte 2 - Database Projects
- - 'parte_2/tema_2.5_db/bd_ejem1'
- - 'parte_2/tema_2.5_db/bd_ejem2'
- - 'parte_2/tema_2.5_db/bd_ejem3'
- - 'parte_2/tema_2.5_db/bd_ejem4'
- - 'parte_2/tema_2.5_db/bd_ejem5'
- - 'parte_2/tema_2.5_db/bd_ejem6'
- - 'parte_2/tema_2.5_db/bd_ejem7'
- - 'parte_2/tema_2.5_db/bd_ejem8'
- - 'parte_2/tema_2.5_db/bd_ejem9'
- - 'parte_2/tema_2.5_db/bd_ejem10'
- - 'parte_2/tema_2.5_db/bd_ejem11'
- - 'parte_2/tema_2.5_db/bd_ejem12'
- - 'parte_2/tema_2.5_db/bd_ejem13'
- - 'parte_2/tema_2.5_db/bd_ejem14'
- - 'parte_2/tema_2.5_db/bd_ejem15'
- - 'parte_2/tema_2.5_db/bd_ejem16'
- - 'parte_2/tema_2.5_db/bd_ejem17'
- - 'parte_2/tema_2.5_db/bd_ejem18'
- - 'parte_2/tema_2.5_db/bd_ejem19'
- - 'parte_2/tema_2.5_db/bd_ejem20'
- - 'parte_2/tema_2.5_db/bd_ejem21'
- - 'parte_2/tema_2.5_db/bd_ejem22'
- - 'parte_2/tema_2.5_db/bd_ejer1'
- - 'parte_2/tema_2.5_db/bd_ejer2'
-
- # Parte 2 - Deployment Examples
- - 'parte_2/tema_2.6_despliegue/despliegue_ejem1'
- - 'parte_2/tema_2.6_despliegue/despliegue_ejem2'
-
- # Parte 3 - RabbitMQ Projects
- - 'parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-consumer'
- - 'parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem1-producer'
- - 'parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-consumer'
- - 'parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem2-producer'
- - 'parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-client'
- - 'parte_3/tema_3.2_colas/comunicacion-rabbitmq-ejem3-service'
-
- # Parte 3 - WebSocket Projects
- - 'parte_3/tema_3.2_websockets/comunicacion-ws-ejem1'
- - 'parte_3/tema_3.2_websockets/comunicacion-ws-ejem2'
-
- # Parte 4 - Testing Projects
- - 'parte_4/tema_4.2/aplicacion-java-enunciado'
- - 'parte_4/tema_4.2/ejemplo-1'
- - 'parte_4/tema_4.2/ejemplo-2'
- - 'parte_4/tema_4.2/ejer4/aplicacion-java-enunciado'
- - 'parte_4/tema_4.2/ejer5/aplicacion-java-enunciado'
- - 'parte_4/tema_4.2/ejer6'
- - 'parte_4/tema_4.2/ejer7'
- - 'parte_4/tema_4.2/ejer8'
-
- # Parte 4 - Docker Projects
- - 'parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-consumer'
- - 'parte_4/tema_4.3/ejemplo-1/comunicacion-rabbitmq-ejem3-producer'
- - 'parte_4/tema_4.3/ejemplo-2'
- - 'parte_4/tema_4.3/ejemplo-3'
- - 'parte_4/tema_4.3/ejercicio-1-enunciado'
- - 'parte_4/tema_4.3/ejercicio-1'
-
- # Parte 5 - Performance Projects
- - 'parte_5/ejem0-jmeter'
- - 'parte_5/ejem1-mysql'
- - 'parte_5/ejem2-cache'
- - 'parte_5/ejem3-cache-distribuida'
- - 'parte_5/ejem3-cache-distribuida2'
- - 'parte_5/ejem4-haproxy'
- - 'parte_5/ejem4b-haproxy-ssl-passthrough'
-
fail-fast: false
-
- name: Build - ${{ matrix.project }}
-
+ matrix:
+ project: ${{ fromJson(needs.discover.outputs.projects) }}
+
steps:
- name: Checkout code
uses: actions/checkout@v4
-
+
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
cache: maven
-
+
- name: Build with Maven
- run: mvn clean package -DskipTests
- working-directory: ${{ matrix.project }}
\ No newline at end of file
+ run: mvn -B -ntp clean verify
+ working-directory: ${{ matrix.project }}
+
+ result:
+ name: All projects built
+ needs: [discover, build]
+ if: always()
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Check the matrix result
+ run: |
+ echo "Proyectos: ${{ needs.discover.outputs.count }}"
+ echo "Resultado de la matriz: ${{ needs.build.result }}"
+ test "${{ needs.build.result }}" = "success"