diff --git a/digma-otel-agent-extension.jar b/digma-otel-agent-extension.jar deleted file mode 100644 index 366f6c05a..000000000 Binary files a/digma-otel-agent-extension.jar and /dev/null differ diff --git a/observability/digma-otel-agent-extension.jar b/observability/digma-otel-agent-extension.jar deleted file mode 100644 index 366f6c05a..000000000 Binary files a/observability/digma-otel-agent-extension.jar and /dev/null differ diff --git a/observability/opentelemetry-javaagent.jar b/observability/opentelemetry-javaagent.jar deleted file mode 100644 index 6325d4939..000000000 Binary files a/observability/opentelemetry-javaagent.jar and /dev/null differ diff --git a/otel/digma-otel-agent-extension.jar b/otel/digma-otel-agent-extension.jar deleted file mode 100644 index a4a9ba051..000000000 Binary files a/otel/digma-otel-agent-extension.jar and /dev/null differ diff --git a/otel/opentelemetry-javaagent.jar b/otel/opentelemetry-javaagent.jar deleted file mode 100644 index de24faaee..000000000 Binary files a/otel/opentelemetry-javaagent.jar and /dev/null differ diff --git a/src/main/java/org/springframework/samples/petclinic/adapters/PetVaccinationService.java b/src/main/java/org/springframework/samples/petclinic/adapters/PetVaccinationService.java index 5aa3c9b2d..33d4ef54f 100644 --- a/src/main/java/org/springframework/samples/petclinic/adapters/PetVaccinationService.java +++ b/src/main/java/org/springframework/samples/petclinic/adapters/PetVaccinationService.java @@ -8,7 +8,7 @@ import java.io.IOException; public interface PetVaccinationService { @WithSpan - VaccinnationRecord[] AllVaccines() throws JSONException, IOException; + VaccinnationRecord[] allVaccines() throws JSONException, IOException; @WithSpan VaccinnationRecord VaccineRecord(int vaccinationRecordId) throws JSONException, IOException; diff --git a/src/main/java/org/springframework/samples/petclinic/adapters/PetVaccinationServiceFacade.java b/src/main/java/org/springframework/samples/petclinic/adapters/PetVaccinationServiceFacade.java index b65176313..078c039e4 100644 --- a/src/main/java/org/springframework/samples/petclinic/adapters/PetVaccinationServiceFacade.java +++ b/src/main/java/org/springframework/samples/petclinic/adapters/PetVaccinationServiceFacade.java @@ -12,7 +12,6 @@ import org.springframework.stereotype.Component; import java.io.IOException; import java.time.Instant; -import java.time.LocalDate; import java.util.ArrayList; @Component @@ -20,7 +19,7 @@ public class PetVaccinationServiceFacade implements PetVaccinationService { public static final String VACCINES_RECORDS_URL = "https://647f4bb4c246f166da9084c7.mockapi.io/api/vetcheck/vaccines"; - private String MakeHttpCall(String url) throws IOException { + private String makeHttpCall(String url) throws IOException { Request getAllVaccinesRequest = new Request.Builder().url(url).build(); OkHttpClient client = new OkHttpClient(); @@ -30,9 +29,9 @@ public class PetVaccinationServiceFacade implements PetVaccinationService { @Override @WithSpan - public VaccinnationRecord[] AllVaccines() throws JSONException, IOException { + public VaccinnationRecord[] allVaccines() throws JSONException, IOException { - var vaccineListString = MakeHttpCall(VACCINES_RECORDS_URL); + var vaccineListString = makeHttpCall(VACCINES_RECORDS_URL); JSONArray jArr = new JSONArray(vaccineListString); var vaccinnationRecords = new ArrayList(); @@ -52,7 +51,7 @@ public class PetVaccinationServiceFacade implements PetVaccinationService { var idUrl = VACCINES_RECORDS_URL + "/" + vaccinationRecordId; - var vaccineListString = MakeHttpCall(idUrl); + var vaccineListString = makeHttpCall(idUrl); JSONObject vaccineJson = new JSONObject(vaccineListString); return parseVaccinationRecord(vaccineJson); diff --git a/src/main/java/org/springframework/samples/petclinic/domain/PetVaccinationStatusService.java b/src/main/java/org/springframework/samples/petclinic/domain/PetVaccinationStatusService.java index 12cbe425b..289df3dcf 100644 --- a/src/main/java/org/springframework/samples/petclinic/domain/PetVaccinationStatusService.java +++ b/src/main/java/org/springframework/samples/petclinic/domain/PetVaccinationStatusService.java @@ -5,7 +5,6 @@ import io.opentelemetry.instrumentation.annotations.WithSpan; import org.json.JSONException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.samples.petclinic.adapters.PetVaccinationService; -import org.springframework.samples.petclinic.adapters.PetVaccinationServiceFacade; import org.springframework.samples.petclinic.adapters.VaccinnationRecord; import org.springframework.samples.petclinic.owner.Pet; import org.springframework.samples.petclinic.owner.PetVaccine; @@ -21,12 +20,13 @@ public class PetVaccinationStatusService { @Autowired private PetVaccinationService adapter; + @WithSpan public void UpdateVaccinationStatus(Pet[] pets) { for (Pet pet : pets) { try { - var vaccinationRecords = this.adapter.AllVaccines(); + var vaccinationRecords = this.adapter.allVaccines(); for (VaccinnationRecord record : vaccinationRecords) { var recordInfo = this.adapter.VaccineRecord(record.recordId()); diff --git a/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java b/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java index c9684c751..1e3fc149e 100644 --- a/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java +++ b/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java @@ -17,6 +17,8 @@ package org.springframework.samples.petclinic.owner; import java.util.List; import java.util.Map; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; import io.opentelemetry.instrumentation.annotations.WithSpan; import org.springframework.data.domain.Page; @@ -54,14 +56,15 @@ class OwnerController { private OwnerValidation validator; + public OwnerController(OwnerRepository clinicService) { this.owners = clinicService; var otelTracer = getTracer("OwnerController"); - validator = new OwnerValidation(otelTracer); } + @InitBinder public void setAllowedFields(WebDataBinder dataBinder) { dataBinder.setDisallowedFields("id"); @@ -72,6 +75,7 @@ class OwnerController { return ownerId == null ? new Owner() : this.owners.findById(ownerId); } + @GetMapping("/owners/new") public String initCreationForm(Map model) { @@ -106,7 +110,7 @@ class OwnerController { Model model) { validator.ValidateUserAccess("admin", "pwd", "fullaccess"); - // allow parameterless GET request for /owners to return all records + // allow parameterless GET request for /owners to return all records if (owner.getLastName() == null) { owner.setLastName(""); // empty string signifies broadest possible search } diff --git a/src/main/java/org/springframework/samples/petclinic/owner/PetController.java b/src/main/java/org/springframework/samples/petclinic/owner/PetController.java index ac76af0a1..7c6c3178b 100644 --- a/src/main/java/org/springframework/samples/petclinic/owner/PetController.java +++ b/src/main/java/org/springframework/samples/petclinic/owner/PetController.java @@ -16,7 +16,10 @@ package org.springframework.samples.petclinic.owner; import java.util.Collection; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.samples.petclinic.domain.PetVaccinationStatusService; import org.springframework.stereotype.Controller; @@ -40,7 +43,7 @@ import jakarta.validation.Valid; */ @Controller @RequestMapping("/owners/{ownerId}") -class PetController { +class PetController implements InitializingBean { private static final String VIEWS_PETS_CREATE_OR_UPDATE_FORM = "pets/createOrUpdatePetForm"; @@ -49,10 +52,14 @@ class PetController { @Autowired private PetVaccinationStatusService petVaccinationStatus; + private ExecutorService executorService; + + public PetController(OwnerRepository owners) { this.owners = owners; } + @ModelAttribute("types") public Collection populatePetTypes() { return this.owners.findPetTypes(); @@ -80,7 +87,7 @@ class PetController { } @GetMapping("/pets/new") - public String initCreationForm(Owner owner, ModelMap model) { + public String initCreationForm(Owner owner, ModelMap model) { Pet pet = new Pet(); owner.addPet(pet); model.put("pet", pet); @@ -101,7 +108,9 @@ class PetController { this.owners.save(owner); - petVaccinationStatus.UpdateVaccinationStatus(owner.getPets().toArray(Pet[]::new)); + this.executorService.submit(() -> { + petVaccinationStatus.UpdateVaccinationStatus(owner.getPets().toArray(Pet[]::new)); + }); return "redirect:/owners/{ownerId}"; } @@ -125,4 +134,9 @@ class PetController { return "redirect:/owners/{ownerId}"; } + @Override + public void afterPropertiesSet() throws Exception { + this.executorService = Executors.newFixedThreadPool(5); + + } } diff --git a/src/test/java/org/springframework/samples/petclinic/integration/OwnerControllerTests.java b/src/test/java/org/springframework/samples/petclinic/integration/OwnerControllerTests.java index b7b35a3fe..78f76523c 100644 --- a/src/test/java/org/springframework/samples/petclinic/integration/OwnerControllerTests.java +++ b/src/test/java/org/springframework/samples/petclinic/integration/OwnerControllerTests.java @@ -73,32 +73,24 @@ public class OwnerControllerTests { Owner owner = CreateOwner(); - for (int i = 0; i < 3; i++) { - String newPetName = faker.dog().name(); - given().contentType("multipart/form-data") - .multiPart("id", "") - .multiPart("birthDate", "0222-02-02") - .multiPart("name", newPetName) - .multiPart("type", "dog") - .when() - .post(String.format("/owners/%s/pets/new", owner.getId())) - .then() - .statusCode(Matchers.not(Matchers.greaterThan(499))); - try { - Thread.sleep(800); - } - catch (InterruptedException e) { - throw new RuntimeException(e); - } + String newPetName = faker.dog().name(); + given().contentType("multipart/form-data") + .multiPart("id", "") + .multiPart("birthDate", "0222-02-02") + .multiPart("name", newPetName) + .multiPart("type", "dog") + .when() + .post(String.format("/owners/%s/pets/new", owner.getId())) + .then() + .statusCode(Matchers.not(Matchers.greaterThan(499))); - } - // var updatedOwner = ownerRepository.findById(owner.getId()); - // assertThat(updatedOwner.getPets()) - // .hasSize(2) - // .extracting(Pet::getName) - // .contains(newPetName); + var updatedOwner = ownerRepository.findById(owner.getId()); + assertThat(updatedOwner.getPets()) + .hasSize(2) + .extracting(Pet::getName) + .contains(newPetName); }