Skip to content

Commit 6eb2762

Browse files
committed
move things around and some minor improvements
1 parent f50e118 commit 6eb2762

47 files changed

Lines changed: 133 additions & 310 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/main/java/it/aboutbits/springboot/toolbox/boot/persistence/AbstractCustomTypeContributor.java renamed to src/main/java/it/aboutbits/springboot/toolbox/autoconfiguration/persistence/AbstractCustomTypeContributor.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package it.aboutbits.springboot.toolbox.boot.persistence;
1+
package it.aboutbits.springboot.toolbox.autoconfiguration.persistence;
22

33
import it.aboutbits.springboot.toolbox.reflection.util.ClassScannerUtil;
44
import lombok.SneakyThrows;
@@ -11,28 +11,27 @@
1111
import java.util.Set;
1212

1313
public abstract class AbstractCustomTypeContributor implements TypeContributor {
14-
private final ClassScannerUtil.ClassScanner classScanner;
14+
@SuppressWarnings("rawtypes")
15+
private final Set<Class<? extends AutoRegisteredJavaType>> relevantTypes;
1516

1617
protected AbstractCustomTypeContributor(String... packageNames) {
17-
classScanner = ClassScannerUtil.getScannerForPackages(packageNames);
18+
var classScanner = ClassScannerUtil.getScannerForPackages(packageNames);
19+
20+
this.relevantTypes = findAllRelevantTypes(classScanner);
1821
}
1922

2023
@SneakyThrows({InstantiationException.class, IllegalAccessException.class, InvocationTargetException.class})
2124
@Override
2225
public void contribute(TypeContributions typeContributions, ServiceRegistry serviceRegistry) {
23-
var types = findAllRelevantTypes();
24-
25-
for (var type : types) {
26+
for (var type : relevantTypes) {
2627
typeContributions.contributeJavaType(
2728
(JavaType<?>) type.getConstructors()[0].newInstance()
2829
);
2930
}
30-
31-
classScanner.close();
3231
}
3332

3433
@SuppressWarnings("rawtypes")
35-
private Set<Class<? extends AutoRegisteredJavaType>> findAllRelevantTypes() {
34+
private static Set<Class<? extends AutoRegisteredJavaType>> findAllRelevantTypes(ClassScannerUtil.ClassScanner classScanner) {
3635
return classScanner.getSubTypesOf(AutoRegisteredJavaType.class);
3736
}
3837
}

src/main/java/it/aboutbits/springboot/toolbox/boot/persistence/AutoRegisteredJavaType.java renamed to src/main/java/it/aboutbits/springboot/toolbox/autoconfiguration/persistence/AutoRegisteredJavaType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package it.aboutbits.springboot.toolbox.boot.persistence;
1+
package it.aboutbits.springboot.toolbox.autoconfiguration.persistence;
22

33
import org.hibernate.type.descriptor.java.JavaType;
44

src/main/java/it/aboutbits/springboot/toolbox/boot/persistence/CustomTypeContributor.java renamed to src/main/java/it/aboutbits/springboot/toolbox/autoconfiguration/persistence/CustomTypeContributor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package it.aboutbits.springboot.toolbox.boot.persistence;
1+
package it.aboutbits.springboot.toolbox.autoconfiguration.persistence;
22

33
public final class CustomTypeContributor extends AbstractCustomTypeContributor {
44
public CustomTypeContributor() {

src/main/java/it/aboutbits/springboot/toolbox/boot/type/swagger/RegisterCustomSwaggerTypes.java renamed to src/main/java/it/aboutbits/springboot/toolbox/autoconfiguration/swagger/RegisterCustomTypesWithSwagger.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
package it.aboutbits.springboot.toolbox.boot.type.swagger;
1+
package it.aboutbits.springboot.toolbox.autoconfiguration.swagger;
22

3+
import it.aboutbits.springboot.toolbox.swagger.CustomTypeModelConverter;
4+
import it.aboutbits.springboot.toolbox.swagger.CustomTypePropertyCustomizer;
35
import org.springframework.context.annotation.Import;
46

57
import java.lang.annotation.ElementType;
@@ -11,9 +13,7 @@
1113
@Retention(RetentionPolicy.RUNTIME)
1214
@Import({
1315
CustomTypeModelConverter.class,
14-
CustomTypePropertyCustomizer.class,
15-
EntityIdModelConverter.class,
16-
EntityIdPropertyCustomizer.class
16+
CustomTypePropertyCustomizer.class
1717
})
18-
public @interface RegisterCustomSwaggerTypes {
18+
public @interface RegisterCustomTypesWithSwagger {
1919
}

src/main/java/it/aboutbits/springboot/toolbox/boot/type/CustomTypeConfiguration.java renamed to src/main/java/it/aboutbits/springboot/toolbox/autoconfiguration/web/CustomTypeConfiguration.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
package it.aboutbits.springboot.toolbox.boot.type;
1+
package it.aboutbits.springboot.toolbox.autoconfiguration.web;
22

3+
import it.aboutbits.springboot.toolbox.jackson.CustomTypeDeserializer;
4+
import it.aboutbits.springboot.toolbox.jackson.CustomTypeSerializer;
5+
import it.aboutbits.springboot.toolbox.mvc.CustomTypePropertyEditor;
36
import it.aboutbits.springboot.toolbox.type.CustomType;
4-
import it.aboutbits.springboot.toolbox.type.jackson.CustomTypeDeserializer;
5-
import it.aboutbits.springboot.toolbox.type.jackson.CustomTypeSerializer;
6-
import it.aboutbits.springboot.toolbox.type.mvc.CustomTypePropertyEditor;
77
import lombok.extern.slf4j.Slf4j;
88
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
99
import org.springframework.context.annotation.Bean;
@@ -23,7 +23,7 @@ public static class CustomTypePropertyBinder {
2323
private final Set<Class<? extends CustomType>> types;
2424

2525
public CustomTypePropertyBinder(CustomTypeScanner configuration) {
26-
this.types = configuration.findAllCustomTypeRecords();
26+
this.types = configuration.getRelevantTypes();
2727
}
2828

2929
@InitBinder
@@ -36,7 +36,7 @@ public void initBinder(WebDataBinder binder) {
3636

3737
@Bean
3838
public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer(CustomTypeScanner configuration) {
39-
var types = configuration.findAllCustomTypeRecords();
39+
var types = configuration.getRelevantTypes();
4040

4141
var deserializers = types.stream()
4242
.map(CustomTypeDeserializer::new)

src/main/java/it/aboutbits/springboot/toolbox/boot/type/CustomTypeScanner.java renamed to src/main/java/it/aboutbits/springboot/toolbox/autoconfiguration/web/CustomTypeScanner.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,23 @@
1-
package it.aboutbits.springboot.toolbox.boot.type;
1+
package it.aboutbits.springboot.toolbox.autoconfiguration.web;
22

33
import it.aboutbits.springboot.toolbox.reflection.util.ClassScannerUtil;
44
import it.aboutbits.springboot.toolbox.type.CustomType;
5-
import jakarta.annotation.PostConstruct;
5+
import lombok.Getter;
66
import lombok.extern.slf4j.Slf4j;
77

88
import java.util.ArrayList;
99
import java.util.Arrays;
10+
import java.util.HashSet;
1011
import java.util.Set;
1112
import java.util.stream.Collectors;
1213

1314
@Slf4j
15+
@Getter
1416
public class CustomTypeScanner {
15-
public static final String LIBRARY_BASE_PACKAGE_NAME = "it.aboutbits.springboot.toolbox";
17+
private static final String LIBRARY_BASE_PACKAGE_NAME = "it.aboutbits.springboot.toolbox";
1618

17-
private String[] packageNamesToScan;
18-
private ClassScannerUtil.ClassScanner classScanner;
19+
@SuppressWarnings("rawtypes")
20+
private Set<Class<? extends CustomType>> relevantTypes = new HashSet<>();
1921

2022
public void setAdditionalTypePackages(String[] additionalTypePackages) {
2123
var tmp = new ArrayList<String>();
@@ -24,20 +26,18 @@ public void setAdditionalTypePackages(String[] additionalTypePackages) {
2426
.filter(item -> !item.isBlank())
2527
.collect(Collectors.toSet()));
2628

27-
this.packageNamesToScan = tmp.toArray(new String[0]);
28-
29-
classScanner = ClassScannerUtil.getScannerForPackages(packageNamesToScan);
30-
}
29+
var packageNamesToScan = tmp.toArray(new String[0]);
3130

32-
@PostConstruct
33-
public void init() {
3431
log.info("CustomTypeConfiguration enabled. Scanning: {}", Arrays.toString(packageNamesToScan));
32+
var classScanner = ClassScannerUtil.getScannerForPackages(packageNamesToScan);
33+
34+
this.relevantTypes = findAllCustomTypeRecords(classScanner);
3535
}
3636

3737
@SuppressWarnings("rawtypes")
38-
public Set<Class<? extends CustomType>> findAllCustomTypeRecords() {
38+
public static Set<Class<? extends CustomType>> findAllCustomTypeRecords(ClassScannerUtil.ClassScanner classScanner) {
3939
return classScanner.getSubTypesOf(CustomType.class).stream()
4040
.filter(Record.class::isAssignableFrom)
41-
.collect(Collectors.toSet());
41+
.collect(Collectors.toSet()); //TODO: ttp://
4242
}
4343
}

src/main/java/it/aboutbits/springboot/toolbox/boot/type/CustomTypeConfigurationRegistrar.java renamed to src/main/java/it/aboutbits/springboot/toolbox/autoconfiguration/web/CustomTypeScannerRegistrar.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package it.aboutbits.springboot.toolbox.boot.type;
1+
package it.aboutbits.springboot.toolbox.autoconfiguration.web;
22

33
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
44
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
@@ -8,14 +8,19 @@
88

99
import java.util.Objects;
1010

11-
public class CustomTypeConfigurationRegistrar implements ImportBeanDefinitionRegistrar {
11+
public class CustomTypeScannerRegistrar implements ImportBeanDefinitionRegistrar {
1212

13+
/**
14+
* We use this to register a new bean with actual configuration parameters coming from an annotation.
15+
* That way we can use @RegisterCustomTypesWithJacksonAndMvc and take the parameter "additionalTypePackages" to
16+
* scan packages.
17+
*/
1318
@Override
1419
public void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionRegistry registry) {
1520
var attributes = new AnnotationAttributes(
1621
Objects.requireNonNull(
1722
metadata.getAnnotationAttributes(
18-
RegisterCustomTypes.class.getName()
23+
RegisterCustomTypesWithJacksonAndMvc.class.getName()
1924
)
2025
)
2126
);

src/main/java/it/aboutbits/springboot/toolbox/boot/type/RegisterCustomTypes.java renamed to src/main/java/it/aboutbits/springboot/toolbox/autoconfiguration/web/RegisterCustomTypesWithJacksonAndMvc.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package it.aboutbits.springboot.toolbox.boot.type;
1+
package it.aboutbits.springboot.toolbox.autoconfiguration.web;
22

33
import org.springframework.context.annotation.Import;
44

@@ -9,7 +9,7 @@
99

1010
@Target({ElementType.TYPE})
1111
@Retention(RetentionPolicy.RUNTIME)
12-
@Import({CustomTypeConfigurationRegistrar.class, CustomTypeConfiguration.class})
13-
public @interface RegisterCustomTypes {
12+
@Import({CustomTypeScannerRegistrar.class, CustomTypeConfiguration.class})
13+
public @interface RegisterCustomTypesWithJacksonAndMvc {
1414
String[] additionalTypePackages() default "";
1515
}

src/main/java/it/aboutbits/springboot/toolbox/boot/type/swagger/EntityIdModelConverter.java

Lines changed: 0 additions & 64 deletions
This file was deleted.

src/main/java/it/aboutbits/springboot/toolbox/boot/type/swagger/EntityIdPropertyCustomizer.java

Lines changed: 0 additions & 126 deletions
This file was deleted.

0 commit comments

Comments
 (0)