<workflowRun _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><action _class='hudson.model.CauseAction'><cause _class='com.cloudbees.jenkins.GitHubPushCause'><shortDescription>Started by GitHub push by jslg99</shortDescription></cause></action><action></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>1</buildableTimeMillis><buildingDurationMillis>34909</buildingDurationMillis><executingTimeMillis>33563</executingTimeMillis><executorUtilization>0.96</executorUtilization><queuingDurationMillis>5655</queuingDurationMillis><queuingTimeMillis>5658</queuingTimeMillis><subTaskCount>1</subTaskCount><totalDurationMillis>40564</totalDurationMillis><waitingDurationMillis>5653</waitingDurationMillis><waitingTimeMillis>5653</waitingTimeMillis></action><action _class='org.jenkinsci.plugins.workflow.libs.LibrariesAction'></action><action></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>27</buildNumber><marked><SHA1>134a29fb26999a672c3837bd3d0b1e845d01c0c4</SHA1><branch><SHA1>134a29fb26999a672c3837bd3d0b1e845d01c0c4</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>134a29fb26999a672c3837bd3d0b1e845d01c0c4</SHA1><branch><SHA1>134a29fb26999a672c3837bd3d0b1e845d01c0c4</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>134a29fb26999a672c3837bd3d0b1e845d01c0c4</SHA1><branch><SHA1>134a29fb26999a672c3837bd3d0b1e845d01c0c4</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UDFJDC-ModelosProgramacion/MP_202610_G81_E4_Back</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.workflow.cps.EnvActionImpl'><environment></environment></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'><artifactsUrl>http://200.69.103.29:8085/jenkins/job/MP_202610_G81_E4_Back/27/artifact</artifactsUrl><changesUrl>http://200.69.103.29:8085/jenkins/job/MP_202610_G81_E4_Back/changes</changesUrl><displayUrl>http://200.69.103.29:8085/jenkins/job/MP_202610_G81_E4_Back/27/pipeline-graph</displayUrl><testsUrl>http://200.69.103.29:8085/jenkins/job/MP_202610_G81_E4_Back/27/testReport</testsUrl></action><action _class='org.jenkinsci.plugins.pipeline.modeldefinition.actions.RestartDeclarativePipelineAction'><restartEnabled>false</restartEnabled></action><action></action><action _class='org.jenkinsci.plugins.workflow.job.views.FlowGraphAction'><node _class='org.jenkinsci.plugins.workflow.graph.FlowStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.graph.FlowEndNode'></node></action><action></action><action></action><building>false</building><displayName>#27</displayName><duration>34909</duration><estimatedDuration>91558</estimatedDuration><fullDisplayName>MP_202610_G81_E4_Back #27</fullDisplayName><id>27</id><keepLog>false</keepLog><number>27</number><queueId>225</queueId><result>FAILURE</result><timestamp>1776034515426</timestamp><url>http://200.69.103.29:8085/jenkins/job/MP_202610_G81_E4_Back/27/</url><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/co/edu/udistrital/mdp/pets/services/NotificationServiceTest.java</affectedPath><affectedPath>src/test/java/co/edu/udistrital/mdp/pets/services/ShelterServiceTest.java</affectedPath><affectedPath>src/test/java/co/edu/udistrital/mdp/pets/services/MessageServiceTest.java</affectedPath><affectedPath>src/test/java/co/edu/udistrital/mdp/pets/services/VaccineService.java</affectedPath><affectedPath>src/test/java/co/edu/udistrital/mdp/pets/services/AdoptionHistoryServiceTest.java</affectedPath><affectedPath>src/test/java/co/edu/udistrital/mdp/pets/services/VeterinarianServiceTest.java</affectedPath><affectedPath>src/test/java/co/edu/udistrital/mdp/pets/services/DevolutionServiceTest.java</affectedPath><affectedPath>src/test/java/co/edu/udistrital/mdp/pets/services/AdoptionTrackingServiceTest.java</affectedPath><affectedPath>src/test/java/co/edu/udistrital/mdp/pets/services/AdopterServiceTest.java</affectedPath><affectedPath>src/test/java/co/edu/udistrital/mdp/pets/services/VaccinationRecordServiceRequest.java</affectedPath><affectedPath>src/test/java/co/edu/udistrital/mdp/pets/services/ShelterEventServiceTest.java</affectedPath><affectedPath>src/test/java/co/edu/udistrital/mdp/pets/services/ReportServiceTest.java</affectedPath><commitId>eea367d1883cea6eb67878b1fd697994f3196fba</commitId><timestamp>1776034208000</timestamp><author><absoluteUrl>http://200.69.103.29:8085/jenkins/user/scastanedab</absoluteUrl><fullName>scastanedab</fullName></author><authorEmail>scastanedab@udistrital.edu.co</authorEmail><comment>correcion de errores de mantenibilidad de peso medio marcados por sonar
</comment><date>2026-04-12 17:50:08 -0500</date><id>eea367d1883cea6eb67878b1fd697994f3196fba</id><msg>correcion de errores de mantenibilidad de peso medio marcados por sonar</msg><path><editType>edit</editType><file>src/test/java/co/edu/udistrital/mdp/pets/services/ShelterServiceTest.java</file></path><path><editType>edit</editType><file>src/test/java/co/edu/udistrital/mdp/pets/services/AdopterServiceTest.java</file></path><path><editType>edit</editType><file>src/test/java/co/edu/udistrital/mdp/pets/services/NotificationServiceTest.java</file></path><path><editType>edit</editType><file>src/test/java/co/edu/udistrital/mdp/pets/services/ShelterEventServiceTest.java</file></path><path><editType>edit</editType><file>src/test/java/co/edu/udistrital/mdp/pets/services/ReportServiceTest.java</file></path><path><editType>edit</editType><file>src/test/java/co/edu/udistrital/mdp/pets/services/VaccinationRecordServiceRequest.java</file></path><path><editType>edit</editType><file>src/test/java/co/edu/udistrital/mdp/pets/services/DevolutionServiceTest.java</file></path><path><editType>edit</editType><file>src/test/java/co/edu/udistrital/mdp/pets/services/MessageServiceTest.java</file></path><path><editType>edit</editType><file>src/test/java/co/edu/udistrital/mdp/pets/services/VeterinarianServiceTest.java</file></path><path><editType>edit</editType><file>src/test/java/co/edu/udistrital/mdp/pets/services/AdoptionTrackingServiceTest.java</file></path><path><editType>edit</editType><file>src/test/java/co/edu/udistrital/mdp/pets/services/VaccineService.java</file></path><path><editType>edit</editType><file>src/test/java/co/edu/udistrital/mdp/pets/services/AdoptionHistoryServiceTest.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>http://200.69.103.29:8085/jenkins/user/scastanedab</absoluteUrl><fullName>scastanedab</fullName><id>scastanedab</id></culprit><inProgress>false</inProgress><nextBuild><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Jose Bocanegra</shortDescription><userId>admin</userId><userName>Jose Bocanegra</userName></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>1</buildableTimeMillis><buildingDurationMillis>34378</buildingDurationMillis><executingTimeMillis>33127</executingTimeMillis><executorUtilization>0.96</executorUtilization><subTaskCount>1</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action _class='org.jenkinsci.plugins.workflow.libs.LibrariesAction'></action><action></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>28</buildNumber><marked><SHA1>134a29fb26999a672c3837bd3d0b1e845d01c0c4</SHA1><branch><SHA1>134a29fb26999a672c3837bd3d0b1e845d01c0c4</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>134a29fb26999a672c3837bd3d0b1e845d01c0c4</SHA1><branch><SHA1>134a29fb26999a672c3837bd3d0b1e845d01c0c4</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>134a29fb26999a672c3837bd3d0b1e845d01c0c4</SHA1><branch><SHA1>134a29fb26999a672c3837bd3d0b1e845d01c0c4</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UDFJDC-ModelosProgramacion/MP_202610_G81_E4_Back</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.workflow.cps.EnvActionImpl'></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><action _class='org.jenkinsci.plugins.pipeline.modeldefinition.actions.RestartDeclarativePipelineAction'></action><action></action><action _class='org.jenkinsci.plugins.workflow.job.views.FlowGraphAction'></action><action></action><action></action><building>false</building><displayName>#28</displayName><duration>34378</duration><estimatedDuration>91558</estimatedDuration><fullDisplayName>MP_202610_G81_E4_Back #28</fullDisplayName><id>28</id><keepLog>false</keepLog><number>28</number><queueId>227</queueId><result>FAILURE</result><timestamp>1776036134741</timestamp><url>http://200.69.103.29:8085/jenkins/job/MP_202610_G81_E4_Back/28/</url><culprit><absoluteUrl>http://200.69.103.29:8085/jenkins/user/scastanedab</absoluteUrl><fullName>scastanedab</fullName></culprit><inProgress>false</inProgress><nextBuild><number>29</number><url>http://200.69.103.29:8085/jenkins/job/MP_202610_G81_E4_Back/29/</url></nextBuild><previousBuild><number>27</number><url>http://200.69.103.29:8085/jenkins/job/MP_202610_G81_E4_Back/27/</url></previousBuild></nextBuild><previousBuild><action _class='hudson.model.CauseAction'><cause _class='com.cloudbees.jenkins.GitHubPushCause'><shortDescription>Started by GitHub push by jslg99</shortDescription></cause></action><action></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>1</buildableTimeMillis><buildingDurationMillis>88938</buildingDurationMillis><executingTimeMillis>87456</executingTimeMillis><executorUtilization>0.98</executorUtilization><subTaskCount>1</subTaskCount><waitingDurationMillis>5603</waitingDurationMillis><waitingTimeMillis>5603</waitingTimeMillis></action><action _class='org.jenkinsci.plugins.workflow.libs.LibrariesAction'></action><action></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>26</buildNumber><marked><SHA1>14d72877ffee5027e138725ff11e38376ee878dc</SHA1><branch><SHA1>14d72877ffee5027e138725ff11e38376ee878dc</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>14d72877ffee5027e138725ff11e38376ee878dc</SHA1><branch><SHA1>14d72877ffee5027e138725ff11e38376ee878dc</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>14d72877ffee5027e138725ff11e38376ee878dc</SHA1><branch><SHA1>14d72877ffee5027e138725ff11e38376ee878dc</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UDFJDC-ModelosProgramacion/MP_202610_G81_E4_Back</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.workflow.cps.EnvActionImpl'></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><action _class='org.jenkinsci.plugins.pipeline.modeldefinition.actions.RestartDeclarativePipelineAction'></action><action></action><action _class='org.jenkinsci.plugins.workflow.job.views.FlowGraphAction'></action><action></action><action></action><building>false</building><displayName>#26</displayName><duration>88938</duration><estimatedDuration>91558</estimatedDuration><fullDisplayName>MP_202610_G81_E4_Back #26</fullDisplayName><id>26</id><keepLog>false</keepLog><number>26</number><queueId>223</queueId><result>SUCCESS</result><timestamp>1776030195319</timestamp><url>http://200.69.103.29:8085/jenkins/job/MP_202610_G81_E4_Back/26/</url><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/co/edu/udistrital/mdp/pets/services/AdopterServiceTest.java</affectedPath><affectedPath>src/main/java/co/edu/udistrital/mdp/pets/services/AdoptionService.java</affectedPath><affectedPath>src/main/java/co/edu/udistrital/mdp/pets/controllers/ShelterEventController.java</affectedPath><affectedPath>src/main/java/co/edu/udistrital/mdp/pets/controllers/MessageController.java</affectedPath><affectedPath>src/main/java/co/edu/udistrital/mdp/pets/controllers/AdoptionController.java</affectedPath><commitId>74b4994fa3de19c4dc4c2529726701eeea5fd19d</commitId><timestamp>1776030076000</timestamp><author><absoluteUrl>http://200.69.103.29:8085/jenkins/user/juslopezg</absoluteUrl><fullName>juslopezg</fullName></author><authorEmail>juslopezg@udistrital.edu.co</authorEmail><comment>Improve adoption flow &amp; message DTO handling

Refactor controllers and service to improve null-safety, validation and logging:

- AdoptionController: compacted DTO mapping to a single stream expression and removed unused import.
- MessageController: fixed method indentation, made toEntity null-safe, normalized isRead via Boolean.TRUE.equals(...), and ensured default timestamp handling.
- ShelterEventController: removed unused stream import.
- AdoptionService: added more descriptive logs, tightened pet availability check (includes pet ID in message), added IllegalOperationException to update/delete flows to prevent modifying/deleting FINISHED adoptions, added guards and warnings on delete, and minor formatting adjustments.
- AdopterServiceTest: removed an unused import.

These changes enforce business rules (cannot change/delete finished adoptions), improve robust handling of DTOs, and add clearer logging for troubleshooting.
</comment><date>2026-04-12 16:41:16 -0500</date><id>74b4994fa3de19c4dc4c2529726701eeea5fd19d</id><msg>Improve adoption flow &amp; message DTO handling</msg><path><editType>edit</editType><file>src/main/java/co/edu/udistrital/mdp/pets/controllers/AdoptionController.java</file></path><path><editType>edit</editType><file>src/main/java/co/edu/udistrital/mdp/pets/controllers/ShelterEventController.java</file></path><path><editType>edit</editType><file>src/test/java/co/edu/udistrital/mdp/pets/services/AdopterServiceTest.java</file></path><path><editType>edit</editType><file>src/main/java/co/edu/udistrital/mdp/pets/controllers/MessageController.java</file></path><path><editType>edit</editType><file>src/main/java/co/edu/udistrital/mdp/pets/services/AdoptionService.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>http://200.69.103.29:8085/jenkins/user/juslopezg</absoluteUrl><fullName>juslopezg</fullName></culprit><inProgress>false</inProgress><nextBuild><number>27</number><url>http://200.69.103.29:8085/jenkins/job/MP_202610_G81_E4_Back/27/</url></nextBuild><previousBuild><number>25</number><url>http://200.69.103.29:8085/jenkins/job/MP_202610_G81_E4_Back/25/</url></previousBuild></previousBuild></workflowRun>