Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Steps required for migration

General: 

Replace io.vertx.core.json.JsonObject and io.vertx.core.json.JsonArray with another classes (for example, https://github.com/stleary/JSON-java, or https://github.com/google/gson) 

(at the grooming session it was decided not to use Json, but DTO)


Replace constants from org.folio.rest.RestVerticle.* (domain-models-runtime library) with constants from another class (or create such constants) 

...

Create required spring controllers 

Remove ramls package 

Create system user permissions if needed  (at the grooming session it was decided that system user is not needed because Kafka will not be used in the project)

Create DTO if needed 

 

org.folio.service.export: 

Remove io.vertx.core.Future or replace with java.util.concurrent.CompletableFuture Future from the org.folio.service.export.storage.ExportStorageService interface. 

...

Remove io.vertx.core.Future or replace with java.util.concurrent.CompletableFuture Future from the org.folio.service.file.cleanup.StorageCleanupService interface. 

Remove io.vertx.core.Future or replace with java.util.concurrent.CompletableFuture Future from the org.folio.service.file.definition.FileDefinitionService interface. 

Remove io.vertx.core.Future or replace with java.util.concurrent.CompletableFuture Future from the org.folio.service.file.storage.FileStorage interface. 

Remove io.vertx.core.Future or replace with java.util.concurrent.CompletableFuture Future from the org.folio.service.file.upload.FileUploadService interface. 

...

Remove io.vertx.core.Future or replace with java.util.concurrent.CompletableFuture Future from the org.folio.service.job.JobExecutionService interface. 

...

Remove io.vertx.core.Future or replace with java.util.concurrent.CompletableFuture Future from the org.folio.service.logs.ErrorLogService interface. 

...

Remove io.vertx.core.Future or replace with java.util.concurrent.CompletableFuture Future from the org.folio.service.profiles.jobprofile.JobProfileService interface 

Remove io.vertx.core.Future or replace with java.util.concurrent.CompletableFuture Future from the org.folio.service.profiles.mappingprofile.MappingProfileService interface 

...

Remove io.vertx.core.Future or replace with java.util.concurrent.CompletableFuture Future from the org.folio.service.transformationfields.TransformationFieldsService interface. 

...

Remove org.folio.rest.impl.InitAPIImpl class 

Remove io.vertx.core.Future or replace with java.util.concurrent.CompletableFuture Future from the org.folio.rest.impl.DataExportHelper class. 

...

Remove io.vertx.core.Future or replace with java.util.concurrent.CompletableFuture Future from the org.folio.dao.ErrorLogDao interface. 

Remove io.vertx.core.Future or replace with java.util.concurrent.CompletableFuture Future from the org.folio.dao.FileDefinitionDao interface. 

Remove io.vertx.core.Future or replace with java.util.concurrent.CompletableFuture Future from the org.folio.dao.JobExecutionDao interface. 

Remove io.vertx.core.Future or replace with java.util.concurrent.CompletableFuture Future from the org.folio.dao.JobProfileDao interface. 

Remove io.vertx.core.Future or replace with java.util.concurrent.CompletableFuture Future from the org.folio.dao.MappingProfileDao interface. 

...

Remove io.vertx.core.Future or replace with java.util.concurrent.CompletableFuture Future from the org.folio.clients.ClientUtilAsync class and modify getRequest method. 

...

Remove io.vertx.core.Future or replace with java.util.concurrent.CompletableFuture Future from the org.folio.clients.UsersClient class and modify getUserInfoAsync method. 

...

Risk: asynchronous calls  

Mitigation: usage of @Async annotation in Spring Spring all asynchronous calls should be removed from the project; use existing internal Spring mechanisms to handle such calls

 

Risk: removing proxy services based on the Vert.x library 

...

Risk: possible issues in case of changing the structure of the project based on the Spring 

Mitigation: remove only Vert.x and domain-models-runtime libraries, do not restructure the whole project  at the grooming session we decided that migration to Spring has mostly long-term perspective and simplification of the code along with the increasing the readability is more preferable than the simplification of migration on its own


Risk: removing domain-models-runtime library might require an additional effort to change existing Postgres client, Tenant tool and RAMLs

Mitigation: use folio-spring-base library, create JPA repositories, use Swagger API


*at the grooming session we decided not to use Future approach at all, but to prove that, this story needs to be completed