diff --git a/README.md b/README.md
index 9447619..ee2407c 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
# Java Programs
-## by Antonio Maulucci
+## by [Antonio Maulucci](https://sites.google.com/view/antomau "Antonio Maulucci")
-
+
In this repo you can find my programs written in Java. You can use it to learn Java or to know how to program it.
@@ -18,22 +18,47 @@ In this repo you can find my programs written in Java. You can use it to learn J
----------
-|  | See the **java-master.zip** file to have more programs! |
+|
| See the **java-master.zip** file to have more programs! |
|--|--|
+
----------
+## Compile manually...
+
+directory:
+
+
+
+`$ cd {path}/directory `
+
+```bash
+javac -cp .\src\ .\src\MyMauloJ\Objects\Pollo.java
+javac -cp .\src\ .\src\MyMauloJ\Classes\Main.java
+cd src
+
+java -cp . MyMauloJ.Classes.Main
+```
+
+where **main.java** is:
+```java
+package MyMauloJ.Classes;
+//...
+//...
+```
+
+------------
+
+
### How to edit *.md files
to edit *.md files you can use:
+[Pandao](https://pandao.github.io/)
[Classeur](https://app.classeur.io)
-
[StackEdit](https://stackedit.io)
-
[Dillinger](http://dillinger.io/)
[Dillinger CheatSheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet)
-
[LearnXinYminutes](https://learnxinyminutes.com/docs/it-it/markdown/)
diff --git a/java_quarkus_api/A.java b/java_quarkus_api/A.java
new file mode 100644
index 0000000..d5329ba
--- /dev/null
+++ b/java_quarkus_api/A.java
@@ -0,0 +1,28 @@
+import javax.inject.Inject;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.MediaType;
+
+@Path("/api/a")
+public class ClassAController {
+
+ @Inject
+ ClassBService classBService;
+
+ @POST
+ @Path("/callB")
+ @Consumes(MediaType.TEXT_PLAIN)
+ public String callClassB(String request) {
+ // Chiamare il servizio della Classe B
+ return "Response from Class B: " + classBService.callClassA(request);
+ }
+
+ @POST
+ @Path("/postMethod")
+ @Consumes(MediaType.TEXT_PLAIN)
+ public String postMethod(String data) {
+ return "Class A received POST request with data: " + data;
+ }
+}
+
diff --git a/java_quarkus_api/B.java b/java_quarkus_api/B.java
new file mode 100644
index 0000000..9eac434
--- /dev/null
+++ b/java_quarkus_api/B.java
@@ -0,0 +1,28 @@
+import javax.inject.Inject;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.MediaType;
+
+@Path("/api/b")
+public class ClassBController {
+
+ @Inject
+ ClassAService classAService;
+
+ @POST
+ @Path("/callA")
+ @Consumes(MediaType.TEXT_PLAIN)
+ public String callClassA(String request) {
+ // Chiamare il servizio della Classe A
+ return "Response from Class A: " + classAService.callClassB(request);
+ }
+
+ @POST
+ @Path("/postMethod")
+ @Consumes(MediaType.TEXT_PLAIN)
+ public String postMethod(String data) {
+ return "Class B received POST request with data: " + data;
+ }
+}
+
diff --git a/java_quarkus_api/ClassAservice.java b/java_quarkus_api/ClassAservice.java
new file mode 100644
index 0000000..ddc85e5
--- /dev/null
+++ b/java_quarkus_api/ClassAservice.java
@@ -0,0 +1,15 @@
+import javax.enterprise.context.ApplicationScoped;
+
+@ApplicationScoped
+public class ClassAService {
+
+ public String callClassB(String request) {
+ // Implementa la logica e chiamata dell'endpoint della Classe B
+ return "Response from Class B Service: " + request;
+ }
+
+ public String postMethod(String data) {
+ return "Class A Service received POST request with data: " + data;
+ }
+}
+
diff --git a/java_quarkus_api/ClassBService.java b/java_quarkus_api/ClassBService.java
new file mode 100644
index 0000000..78f21f6
--- /dev/null
+++ b/java_quarkus_api/ClassBService.java
@@ -0,0 +1,15 @@
+import javax.enterprise.context.ApplicationScoped;
+
+@ApplicationScoped
+public class ClassBService {
+
+ public String callClassA(String request) {
+ // Implementa la logica e chiamata dell'endpoint della Classe A
+ return "Response from Class A Service: " + request;
+ }
+
+ public String postMethod(String data) {
+ return "Class B Service received POST request with data: " + data;
+ }
+}
+
diff --git a/java_quarkus_api/chiamate.sh b/java_quarkus_api/chiamate.sh
new file mode 100644
index 0000000..eed2156
--- /dev/null
+++ b/java_quarkus_api/chiamate.sh
@@ -0,0 +1,6 @@
+# Esempio di richiesta POST a Class A postMethod
+curl -X POST -H "Content-Type: text/plain" -d "Data for POST" http://localhost:8080/api/a/postMethod
+
+# Esempio di richiesta POST a Class B postMethod
+curl -X POST -H "Content-Type: text/plain" -d "Data for POST" http://localhost:8080/api/b/postMethod
+
diff --git a/java_quarkus_api/full/appA/ClassAClient.java b/java_quarkus_api/full/appA/ClassAClient.java
new file mode 100644
index 0000000..f040fa7
--- /dev/null
+++ b/java_quarkus_api/full/appA/ClassAClient.java
@@ -0,0 +1,17 @@
+import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
+@RegisterRestClient
+public interface ClassAClient {
+
+ @POST
+ @Path("/api/a/postFromB")
+ @Consumes(MediaType.TEXT_PLAIN)
+ @Produces(MediaType.TEXT_PLAIN)
+ String postFromBToA(String data);
+}
+
diff --git a/java_quarkus_api/full/appA/ClassAController.java b/java_quarkus_api/full/appA/ClassAController.java
new file mode 100644
index 0000000..d80c436
--- /dev/null
+++ b/java_quarkus_api/full/appA/ClassAController.java
@@ -0,0 +1,37 @@
+import javax.inject.Inject;
+import javax.ws.rs.*;
+import javax.ws.rs.core.MediaType;
+
+@Path("/api/a")
+public class ClassAController {
+
+ @Inject
+ ClassBClient classBClient;
+
+ @GET
+ @Path("/getFromB")
+ @Produces(MediaType.TEXT_PLAIN)
+ public String getFromB() {
+ // Chiamata GET a ClassB
+ return "Response from ClassB: " + classBClient.getDataFromB();
+ }
+
+ @POST
+ @Path("/postToB")
+ @Consumes(MediaType.TEXT_PLAIN)
+ @Produces(MediaType.TEXT_PLAIN)
+ public String postToB(String data) {
+ // Chiamata POST a ClassB
+ return "Response from ClassB: " + classBClient.postDataToB(data);
+ }
+
+ @POST
+ @Path("/postFromB")
+ @Consumes(MediaType.TEXT_PLAIN)
+ @Produces(MediaType.TEXT_PLAIN)
+ public String postFromB(String data) {
+ // Metodo POST chiamato da ClassB
+ return "Received POST request from ClassB with data: " + data;
+ }
+}
+
diff --git a/java_quarkus_api/full/appB/ClassBController.java b/java_quarkus_api/full/appB/ClassBController.java
new file mode 100644
index 0000000..0922238
--- /dev/null
+++ b/java_quarkus_api/full/appB/ClassBController.java
@@ -0,0 +1,37 @@
+import javax.inject.Inject;
+import javax.ws.rs.*;
+import javax.ws.rs.core.MediaType;
+
+@Path("/api/b")
+public class ClassBController {
+
+ @Inject
+ ClassAClient classAClient;
+
+ @GET
+ @Path("/getFromA")
+ @Produces(MediaType.TEXT_PLAIN)
+ public String getFromA() {
+ // Chiamata GET a ClassA
+ return "Response from ClassA: " + classAClient.getDataFromA();
+ }
+
+ @POST
+ @Path("/postToA")
+ @Consumes(MediaType.TEXT_PLAIN)
+ @Produces(MediaType.TEXT_PLAIN)
+ public String postToA(String data) {
+ // Chiamata POST a ClassA
+ return "Response from ClassA: " + classAClient.postDataToA(data);
+ }
+
+ @POST
+ @Path("/postToAFromB")
+ @Consumes(MediaType.TEXT_PLAIN)
+ @Produces(MediaType.TEXT_PLAIN)
+ public String postToAFromB(String data) {
+ // Chiamata POST a ClassA dal metodo di ClassB
+ return "Response from ClassA: " + classAClient.postFromBToA(data);
+ }
+}
+
diff --git a/java_quarkus_api/full/call.sh b/java_quarkus_api/full/call.sh
new file mode 100644
index 0000000..f6cc9d6
--- /dev/null
+++ b/java_quarkus_api/full/call.sh
@@ -0,0 +1,2 @@
+curl -X POST -H "Content-Type: text/plain" -d "Data from ClassB to ClassA" http://localhost:8081/api/b/postToAFromB
+
diff --git a/java_springboot_api/A.java b/java_springboot_api/A.java
new file mode 100644
index 0000000..e73b1c4
--- /dev/null
+++ b/java_springboot_api/A.java
@@ -0,0 +1,23 @@
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.RestTemplate;
+
+@RestController
+@RequestMapping("/api/a")
+public class ClassAController {
+
+ @Autowired
+ private RestTemplate restTemplate;
+
+ @PostMapping("/callB")
+ public String callClassB(@RequestBody String request) {
+ // Chiamare l'endpoint della Classe B tramite POST
+ ResponseEntity responseFromB = restTemplate.postForEntity("http://localhost:8080/api/b/callA", request, String.class);
+ return "Response from Class B: " + responseFromB.getBody();
+ }
+}
+
diff --git a/java_springboot_api/B.java b/java_springboot_api/B.java
new file mode 100644
index 0000000..a20e44f
--- /dev/null
+++ b/java_springboot_api/B.java
@@ -0,0 +1,22 @@
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.RestTemplate;
+
+@RestController
+@RequestMapping("/api/b")
+public class ClassBController {
+
+ @Autowired
+ private RestTemplate restTemplate;
+
+ @PostMapping("/callA")
+ public String callClassA(@RequestBody String request) {
+ // Chiamare l'endpoint della Classe A tramite POST
+ String responseFromA = restTemplate.postForObject("http://localhost:8080/api/a/callB", request, String.class);
+ return "Response from Class A: " + responseFromA;
+ }
+}
+
diff --git a/java_springboot_api/Main.java b/java_springboot_api/Main.java
new file mode 100644
index 0000000..12a8813
--- /dev/null
+++ b/java_springboot_api/Main.java
@@ -0,0 +1,23 @@
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.client.RestTemplate;
+
+@SpringBootApplication
+public class RestCallingApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(RestCallingApplication.class, args);
+ }
+
+ @Configuration
+ public static class AppConfig {
+
+ @Bean
+ public RestTemplate restTemplate() {
+ return new RestTemplate();
+ }
+ }
+}
+
diff --git a/java_springboot_api/pom.xml b/java_springboot_api/pom.xml
new file mode 100644
index 0000000..37e6e5e
--- /dev/null
+++ b/java_springboot_api/pom.xml
@@ -0,0 +1,5 @@
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
diff --git a/readme/null b/readme/null
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/readme/null
@@ -0,0 +1 @@
+
diff --git a/readme/z1.jpg b/readme/z1.jpg
new file mode 100644
index 0000000..b258e58
Binary files /dev/null and b/readme/z1.jpg differ