#130 imported the new version of metamorphosis lib and reverted the conversion service

This commit is contained in:
Fabio Formosa
2026-05-09 15:54:43 +02:00
parent 2a20b930f0
commit 29fff2a6cd
8 changed files with 18 additions and 54 deletions

View File

@@ -41,7 +41,7 @@
</developers>
<properties>
<java.version>17</java.version>
<java.version>21</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<org.projectlombok.version>1.18.42</org.projectlombok.version>
<maven-surefire-plugin.version>3.5.4</maven-surefire-plugin.version>

View File

@@ -19,7 +19,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<springdoc-openapi.version>3.0.3</springdoc-openapi.version>
<java.version>17</java.version>
<java.version>21</java.version>
<sonar.exclusions>**/QuartManagerApplicationTests.java, **/OpenApiConfig.java</sonar.exclusions>
</properties>
@@ -89,7 +89,7 @@
<dependency>
<groupId>it.fabioformosa</groupId>
<artifactId>metamorphosis-core</artifactId>
<version>3.0.0</version>
<version>4.0.2</version>
</dependency>
<dependency>
<groupId>org.reflections</groupId>

View File

@@ -1,38 +1,9 @@
package it.fabioformosa.quartzmanager.api.configuration;
import it.fabioformosa.metamorphosis.core.converters.AbstractBaseConverter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.ConversionService;
import org.springframework.core.convert.converter.Converter;
import org.springframework.core.convert.support.DefaultConversionService;
import java.lang.reflect.Field;
import java.util.List;
@ComponentScan(basePackages = {"it.fabioformosa.quartzmanager.api"})
@Configuration
public class QuartzManagerApiConfig {
@Bean
public ConversionService conversionService(List<Converter<?, ?>> converters) {
DefaultConversionService conversionService = new DefaultConversionService();
converters.forEach(conversionService::addConverter);
converters.stream()
.filter(AbstractBaseConverter.class::isInstance)
.map(AbstractBaseConverter.class::cast)
.forEach(converter -> setConversionService(converter, conversionService));
return conversionService;
}
private void setConversionService(AbstractBaseConverter<?, ?> converter, ConversionService conversionService) {
try {
Field conversionServiceField = AbstractBaseConverter.class.getDeclaredField("conversionService");
conversionServiceField.setAccessible(true);
conversionServiceField.set(converter, conversionService);
} catch (NoSuchFieldException | IllegalAccessException e) {
throw new IllegalStateException("Unable to initialize Quartz Manager converters", e);
}
}
}

View File

@@ -8,23 +8,15 @@ import it.fabioformosa.quartzmanager.api.dto.TriggerKeyDTO;
import org.quartz.JobKey;
import org.quartz.Trigger;
import org.quartz.TriggerKey;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
public abstract class TriggerToTriggerDTO<S extends Trigger, T extends TriggerDTO> extends AbstractBaseConverter<S, T> {
@Autowired
private TriggerKeyToTriggerKeyDTO triggerKeyToTriggerKeyDTO;
@Autowired
private JobKeyToJobKeyDTO jobKeyToJobKeyDTO;
@Autowired
private JobKeyToJobDetailDTO jobKeyToJobDetailDTO;
@Component
public class TriggerToTriggerDTO<S extends Trigger, T extends TriggerDTO> extends AbstractBaseConverter<S, T> {
@Override
protected void convert(S source, T target) {
TriggerKey triggerKey = source.getKey();
TriggerKeyDTO triggerKeyDTO = triggerKeyToTriggerKeyDTO.convert(triggerKey);
TriggerKeyDTO triggerKeyDTO = conversionService.convert(triggerKey, TriggerKeyDTO.class);
target.setTriggerKeyDTO(triggerKeyDTO);
target.setStartTime(source.getStartTime());
@@ -37,15 +29,16 @@ public abstract class TriggerToTriggerDTO<S extends Trigger, T extends TriggerDT
target.setMayFireAgain(source.mayFireAgain());
JobKey jobKey = source.getJobKey();
if (jobKey == null) {
return;
}
JobKeyDTO jobKeyDTO = jobKeyToJobKeyDTO.convert(jobKey);
JobKeyDTO jobKeyDTO = conversionService.convert(jobKey, JobKeyDTO.class);
target.setJobKeyDTO(jobKeyDTO);
JobDetailDTO jobDetailDTO = jobKeyToJobDetailDTO.convert(jobKey);
JobDetailDTO jobDetailDTO = conversionService.convert(jobKey, JobDetailDTO.class);
target.setJobDetailDTO(jobDetailDTO);
}
@Override
protected T createOrRetrieveTarget(S source) {
return (T) new TriggerDTO();
}
}

View File

@@ -16,7 +16,7 @@
<main.basedir>${basedir}/../..</main.basedir>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>17</java.version>
<java.version>21</java.version>
</properties>
<dependencies>

View File

@@ -17,7 +17,7 @@
<main.basedir>${basedir}/../..</main.basedir>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>17</java.version>
<java.version>21</java.version>
<springdoc-openapi.version>3.0.3</springdoc-openapi.version>
<sonar.exclusions>**/SpringApplicationTest.java</sonar.exclusions>
</properties>

View File

@@ -17,7 +17,7 @@
<main.basedir>${basedir}/../..</main.basedir>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>17</java.version>
<java.version>21</java.version>
<frontend.folderName>quartz-manager-frontend</frontend.folderName>
<node.version>v16.14.1</node.version>
<npm.version>8.19.3</npm.version>

View File

@@ -19,7 +19,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<springdoc-openapi.version>3.0.3</springdoc-openapi.version>
<java.version>17</java.version>
<java.version>21</java.version>
</properties>
<dependencies>