diff --git a/src/main/java/org/etsi/osl/tmf/pm628/api/MeasurementCollectionJobApiRouteBuilder.java b/src/main/java/org/etsi/osl/tmf/pm628/api/MeasurementCollectionJobApiRouteBuilder.java index 0e5e1c7d8c6b5588cfdba1fa185b0c3b1bb695fa..a56998cdbca8a1c2e09ecdf3cdb8da56300b4f6e 100644 --- a/src/main/java/org/etsi/osl/tmf/pm628/api/MeasurementCollectionJobApiRouteBuilder.java +++ b/src/main/java/org/etsi/osl/tmf/pm628/api/MeasurementCollectionJobApiRouteBuilder.java @@ -30,7 +30,7 @@ public class MeasurementCollectionJobApiRouteBuilder extends RouteBuilder { private String PM_GET_MEASUREMENT_COLLECTION_JOBS; @Value("${PM_MEASUREMENT_COLLECTION_GET_JOB_BY_ID}") - private String PM_GET_MEASUREMENT_COLLECTION_JOB_BY_ID; + private String PM_MEASUREMENT_COLLECTION_GET_JOB_BY_ID; @Value("${PM_MEASUREMENT_COLLECTION_JOB_ADD}") private String PM_ADD_MEASUREMENT_COLLECTION_JOB; @@ -58,10 +58,10 @@ public class MeasurementCollectionJobApiRouteBuilder extends RouteBuilder { .bean(measurementCollectionJobService, "findAllMeasurementCollectionJobs") .convertBodyTo( String.class ); - from(PM_GET_MEASUREMENT_COLLECTION_JOB_BY_ID) - .log(LoggingLevel.INFO, log, PM_GET_MEASUREMENT_COLLECTION_JOB_BY_ID + " message received!") + from(PM_MEASUREMENT_COLLECTION_GET_JOB_BY_ID) + .log(LoggingLevel.INFO, log, PM_MEASUREMENT_COLLECTION_GET_JOB_BY_ID + " message received!") .to("log:DEBUG?showBody=true&showHeaders=true") - .bean(measurementCollectionJobService, "findMeasurementCollectionJobByUuid") + .bean(measurementCollectionJobService, "findMeasurementCollectionJobByUuidEagerAsString") .convertBodyTo( String.class ); from(PM_ADD_MEASUREMENT_COLLECTION_JOB) diff --git a/src/main/java/org/etsi/osl/tmf/pm628/reposervices/MeasurementCollectionJobService.java b/src/main/java/org/etsi/osl/tmf/pm628/reposervices/MeasurementCollectionJobService.java index af420a7ae9547ea7099e806e22eec4009bc971f1..46960b79cfa350f5ea52192ad1c66cc477a4066a 100755 --- a/src/main/java/org/etsi/osl/tmf/pm628/reposervices/MeasurementCollectionJobService.java +++ b/src/main/java/org/etsi/osl/tmf/pm628/reposervices/MeasurementCollectionJobService.java @@ -6,6 +6,7 @@ import jakarta.validation.Valid; import org.etsi.osl.tmf.pm628.api.MeasurementCollectionJobApiRouteBuilderEvents; import org.etsi.osl.tmf.pm628.model.*; import org.etsi.osl.tmf.pm628.repo.MeasurementCollectionJobRepository; +import org.hibernate.Hibernate; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; @@ -20,6 +21,9 @@ import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.nio.charset.StandardCharsets; import java.util.*; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.hibernate5.jakarta.Hibernate5JakartaModule; @Service @Transactional @@ -277,6 +281,47 @@ public class MeasurementCollectionJobService { return resultList; } + @Transactional + public String findMeasurementCollectionJobByUuidEagerAsString(String uuid) throws JsonProcessingException{ + + MeasurementCollectionJob mcj = findMeasurementCollectionJobByUuidEager(uuid); + ObjectMapper mapper = new ObjectMapper(); + mapper.registerModule(new Hibernate5JakartaModule()); + String res = mapper.writeValueAsString(mcj); + + return res; + + } + + + private MeasurementCollectionJob findMeasurementCollectionJobByUuidEager(String id) { + if ( id == null || id.equals("")) { + return null; + } + Session session = sessionFactory.openSession(); + Transaction tx = session.beginTransaction(); + MeasurementCollectionJob s = null; + try { + s = (MeasurementCollectionJob) session.get(MeasurementCollectionJob.class, id); + if (s == null) { + return this.findMeasurementCollectionJobByUuid(id);// last resort + } + + Hibernate.initialize(s.getDataAccessEndpoint() ); + Hibernate.initialize(s.getFileTransferData() ); + Hibernate.initialize(s.getPerformanceIndicatorGroupSpecification() ); + Hibernate.initialize(s.getPerformanceIndicatorSpecification()); + Hibernate.initialize(s.getScheduleDefinition() ); + Hibernate.initialize(s.getTrackingRecord() ); + + tx.commit(); + } finally { + session.close(); + } + + return s; + } + public MeasurementCollectionJob findMeasurementCollectionJobByUuid(String uuid){ log.debug("MeasurementCollectionJob FIND BY UUID"); Optional<MeasurementCollectionJob> measurementCollectionJob = measurementCollectionJobRepository.findByUuid(uuid); @@ -310,7 +355,9 @@ public class MeasurementCollectionJobService { measurementCollectionJob = this.measurementCollectionJobRepository.save(measurementCollectionJob); // This may be unnecessary since MeasurementCollectionJobMVO doesn't have the executionState attribute - executionStateChanged = !originalExecutionState.equals(measurementCollectionJob.getExecutionState()); + if ( originalExecutionState!=null) { + executionStateChanged = !originalExecutionState.equals(measurementCollectionJob.getExecutionState()); + } if (executionStateChanged) { raiseMCJExecutionStateChangeNotification(measurementCollectionJob);