Skip to content

Tidy generator internals, remove unused methods and format only #223

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ final class AdapterName {
final String fullName;

AdapterName(TypeElement origin) {

String originName = origin.getQualifiedName().toString();
String name = origin.getSimpleName().toString();
String originPackage = ProcessorUtils.packageOf(originName);
Expand All @@ -23,8 +22,7 @@ final class AdapterName {
if ("".equals(originPackage)) {
this.adapterPackage = "valid";
} else {
this.adapterPackage =
ProcessingContext.isImported(origin) ? originPackage + ".valid" : originPackage;
this.adapterPackage = ProcessingContext.isImported(origin) ? originPackage + ".valid" : originPackage;
}
this.fullName = adapterPackage + "." + shortName + "ValidationAdapter";
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import java.util.Set;

import javax.lang.model.element.Element;
import javax.lang.model.element.Modifier;

final class FieldReader {

Expand Down Expand Up @@ -66,14 +65,6 @@ private String initShortName() {
return Util.initLower(fieldName) + "ValidationAdapter";
}

static String trimAnnotations(String type) {
final int pos = type.indexOf("@");
if (pos == -1) {
return type;
}
return type.substring(0, pos) + type.substring(type.lastIndexOf(' ') + 1);
}

String fieldName() {
return fieldName;
}
Expand All @@ -82,16 +73,10 @@ boolean typeObjectBooleanWithIsPrefix() {
return nameHasIsPrefix() && "java.lang.Boolean".equals(genericType.mainType());
}

boolean typeBooleanWithIsPrefix() {
return nameHasIsPrefix()
&& ("boolean".equals(genericType.mainType())
|| "java.lang.Boolean".equals(genericType.mainType()));
}

private boolean nameHasIsPrefix() {
return fieldName.length() > 2
&& fieldName.startsWith("is")
&& Character.isUpperCase(fieldName.charAt(2));
&& fieldName.startsWith("is")
&& Character.isUpperCase(fieldName.charAt(2));
}

void addImports(Set<String> importTypes) {
Expand Down Expand Up @@ -123,10 +108,6 @@ boolean isPublicField() {
return publicField;
}

String adapterShortType() {
return genericType.shortWithoutAnnotations();
}

void writeField(Append writer) {
writer.append(" private final %s %s;", adapterShortType, adapterFieldName).eol();
}
Expand All @@ -139,11 +120,7 @@ private void writeGetValue(Append writer, String suffix) {
} else if (publicField) {
writer.append("value.%s%s", fieldName, suffix);
} else {
logError(
element,
"Field"
+ fieldName
+ " is inaccessible. Add a getter or make the field package-private/public.");
logError(element, "Field" + fieldName + " is inaccessible. Add a getter or make the field package-private/public.");
}
}

Expand Down Expand Up @@ -178,11 +155,7 @@ public String toString() {
return fieldName;
}

public UType type() {
return genericType;
}

public void writeConstructor(Append writer) {
void writeConstructor(Append writer) {
writer.append(" this.%s = ", adapterFieldName).eol();

new AdapterHelper(
Expand All @@ -197,11 +170,11 @@ public void writeConstructor(Append writer) {
writer.append(";").eol().eol();
}

public boolean isClassLvl() {
boolean isClassLvl() {
return classLevel;
}

public boolean hasConstraints() {
boolean hasConstraints() {
return !elementAnnotations.isEmpty();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,14 @@

final class Util {

static final Pattern mapSplitString = Pattern.compile("\\s[A-Za-z0-9]+,|,");
static final Set<String> BASIC_TYPES = Set.of("java.lang.String", "java.math.BigDecimal");

private Util() {}

static boolean isValid(Element e) {
return AvajeValidPrism.isPresent(e)
|| JavaxValidPrism.isPresent(e)
|| JakartaValidPrism.isPresent(e);
|| JavaxValidPrism.isPresent(e)
|| JakartaValidPrism.isPresent(e);
}

/** Return true if the element has a Nullable annotation. */
Expand All @@ -40,8 +39,8 @@ public static boolean isNullable(Element p) {

static boolean validImportType(String type) {
return type.indexOf('.') > 0 && !type.startsWith("java.lang.")
|| (type.startsWith("java.lang.")
&& type.replace("java.lang.", "").transform(s -> s.contains(".")));
|| (type.startsWith("java.lang.")
&& type.replace("java.lang.", "").transform(s -> s.contains(".")));
}

static String shortName(String fullType) {
Expand All @@ -52,21 +51,13 @@ static String shortName(String fullType) {
return fullType.substring(p + 1);
}

static String stripBrackets(String fullType) {
return fullType.substring(1, fullType.length() - 1);
}

static String initCap(String input) {
if (input.length() < 2) {
return input.toUpperCase();
}
return Character.toUpperCase(input.charAt(0)) + input.substring(1);
}

static String escapeQuotes(String input) {
return input.replaceAll("^\"|\"$", "\\\\\"");
}

static String initLower(String name) {
final StringBuilder sb = new StringBuilder(name.length());
boolean toLower = true;
Expand Down Expand Up @@ -95,72 +86,58 @@ static String baseTypeOfAdapter(String adapterFullName) {
}

static String baseTypeOfAdapter(TypeElement element) {

return Optional.of(element.getSuperclass())
.filter(
t ->
t.toString().contains("io.avaje.validation.adapter.AbstractConstraintAdapter")
|| t.toString().contains("io.avaje.validation.adapter.PrimitiveAdapter"))
.or(validationAdapter(element))
.map(UType::parse)
.map(UType::param0)
.map(UType::fullWithoutAnnotations)
.map(ProcessorUtils::extractEnclosingFQN)
.orElseGet(
() -> {
logError(
element,
"Custom Constraint adapters must extend AbstractConstraintAdapter or implement ValidationAdapter");
return "Invalid";
});
.filter(t ->
t.toString().contains("io.avaje.validation.adapter.AbstractConstraintAdapter")
|| t.toString().contains("io.avaje.validation.adapter.PrimitiveAdapter"))
.or(validationAdapter(element))
.map(UType::parse)
.map(UType::param0)
.map(UType::fullWithoutAnnotations)
.map(ProcessorUtils::extractEnclosingFQN)
.orElseGet(() -> {
logError(element, "Custom Constraint adapters must extend AbstractConstraintAdapter or implement ValidationAdapter");
return "Invalid";
});
}

static boolean isPrimitiveAdapter(TypeElement element) {

return Optional.of(element.getSuperclass())
.filter(t -> t.toString().contains("io.avaje.validation.adapter.PrimitiveAdapter"))
.or(primitiveAdapter(element))
.isPresent();
.filter(t -> t.toString().contains("io.avaje.validation.adapter.PrimitiveAdapter"))
.or(primitiveAdapter(element))
.isPresent();
}

private static Supplier<Optional<? extends TypeMirror>> validationAdapter(TypeElement element) {
return () ->
element.getInterfaces().stream()
.filter(
t ->
t.toString().contains("io.avaje.validation.adapter.ValidationAdapter")
|| t.toString()
.contains("io.avaje.validation.adapter.ValidationAdapter.Primitive"))
.findFirst();
return () -> element.getInterfaces().stream()
.filter(t ->
t.toString().contains("io.avaje.validation.adapter.ValidationAdapter")
|| t.toString()
.contains("io.avaje.validation.adapter.ValidationAdapter.Primitive"))
.findFirst();
}

private static Supplier<Optional<? extends TypeMirror>> primitiveAdapter(TypeElement element) {
return () ->
element.getInterfaces().stream()
.filter(
t ->
t.toString()
.contains("io.avaje.validation.adapter.ValidationAdapter.Primitive"))
.findFirst();
return () -> element.getInterfaces().stream()
.filter(t -> t.toString().contains("io.avaje.validation.adapter.ValidationAdapter.Primitive"))
.findFirst();
}

static boolean isBasicType(final String topType) {
return BASIC_TYPES.contains(topType)
|| topType.startsWith("java.time.")
|| GenericTypeMap.typeOfRaw(topType) != null;
|| topType.startsWith("java.time.")
|| GenericTypeMap.typeOfRaw(topType) != null;
}

static boolean isPublic(Element element) {
var mods = element.getModifiers();

if (mods.contains(Modifier.PUBLIC)) {
return true;
}
if (mods.contains(Modifier.PRIVATE) || mods.contains(Modifier.PROTECTED)) {
return false;
}
var isImported = ProcessingContext.isImported(element);

return !isImported;
}
}
Loading