Support simple generics
This commit is contained in:
parent
a45f1908f1
commit
bda42291c7
|
@ -1,7 +1,32 @@
|
||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator;
|
||||||
|
|
||||||
|
import com.squareup.javapoet.ClassName;
|
||||||
|
import com.squareup.javapoet.ParameterizedTypeName;
|
||||||
|
import com.squareup.javapoet.TypeName;
|
||||||
|
|
||||||
public class CustomTypesConfiguration {
|
public class CustomTypesConfiguration {
|
||||||
|
|
||||||
public String javaClass;
|
private String javaClass;
|
||||||
public String serializer;
|
public String serializer;
|
||||||
|
|
||||||
|
public void setJavaClass(String javaClass) {
|
||||||
|
this.javaClass = javaClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TypeName getJavaClassType() {
|
||||||
|
int indexOfGeneric;
|
||||||
|
if ((indexOfGeneric = javaClass.indexOf("<")) == -1) {
|
||||||
|
return ClassName.bestGuess(javaClass);
|
||||||
|
} else {
|
||||||
|
var rawTypesArray = javaClass.substring(indexOfGeneric + 1, javaClass.length() - 1).split(",");
|
||||||
|
var genericsResult = new TypeName[rawTypesArray.length];
|
||||||
|
int i = 0;
|
||||||
|
for (String rawType : rawTypesArray) {
|
||||||
|
genericsResult[i] = ClassName.bestGuess(rawType);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
var base = ClassName.bestGuess(javaClass.substring(0, indexOfGeneric));
|
||||||
|
return ParameterizedTypeName.get(base, genericsResult);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -724,14 +724,14 @@ public class SourcesGenerator {
|
||||||
.build()
|
.build()
|
||||||
);
|
);
|
||||||
typeMustGenerateSerializer.put(key, false);
|
typeMustGenerateSerializer.put(key, false);
|
||||||
typeTypes.put(key, ClassName.bestGuess(customTypeConfiguration.javaClass));
|
typeTypes.put(key, customTypeConfiguration.getJavaClassType());
|
||||||
typeFamily.put(key, Family.OTHER);
|
typeFamily.put(key, Family.OTHER);
|
||||||
if (nextVersionCustomTypeConfiguration.isPresent()) {
|
if (nextVersionCustomTypeConfiguration.isPresent()) {
|
||||||
nextVersionTypeTypes.put(key, ClassName.bestGuess(nextVersionCustomTypeConfiguration.get().javaClass));
|
nextVersionTypeTypes.put(key, nextVersionCustomTypeConfiguration.get().getJavaClassType());
|
||||||
nextVersionTypeFamily.put(key, Family.OTHER);
|
nextVersionTypeFamily.put(key, Family.OTHER);
|
||||||
}
|
}
|
||||||
|
|
||||||
var arrayClassName = ClassName.bestGuess(customTypeConfiguration.javaClass);
|
var arrayClassName = customTypeConfiguration.getJavaClassType();
|
||||||
var neededTypes = registerNeededTypes(versionConfiguration,
|
var neededTypes = registerNeededTypes(versionConfiguration,
|
||||||
Family.OTHER,
|
Family.OTHER,
|
||||||
key,
|
key,
|
||||||
|
@ -2581,8 +2581,8 @@ public class SourcesGenerator {
|
||||||
HashMap<String, Family> typeFamily,
|
HashMap<String, Family> typeFamily,
|
||||||
@Nullable HashMap<String, TypeName> nextVersionTypeTypes,
|
@Nullable HashMap<String, TypeName> nextVersionTypeTypes,
|
||||||
@Nullable HashMap<String, Family> nextVersionTypeFamily,
|
@Nullable HashMap<String, Family> nextVersionTypeFamily,
|
||||||
Supplier<ClassName> arrayClassName,
|
Supplier<TypeName> arrayClassName,
|
||||||
Supplier<ClassName> nextArrayClassName) {
|
Supplier<TypeName> nextArrayClassName) {
|
||||||
// Check if the nullable type is needed
|
// Check if the nullable type is needed
|
||||||
boolean nullableTypeNeeded = versionConfiguration.classes
|
boolean nullableTypeNeeded = versionConfiguration.classes
|
||||||
.values()
|
.values()
|
||||||
|
|
Loading…
Reference in New Issue