Dieser Commit ist enthalten in:
Ursprung
067acf5f62
Commit
f161379b62
@ -38,6 +38,7 @@ import javax.tools.Diagnostic;
|
|||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.io.Writer;
|
import java.io.Writer;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.function.Consumer;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
@ -185,7 +186,9 @@ public class LinkageProcessor extends AbstractProcessor {
|
|||||||
TypeElement fieldType = (TypeElement) ((DeclaredType) variableElement.asType()).asElement();
|
TypeElement fieldType = (TypeElement) ((DeclaredType) variableElement.asType()).asElement();
|
||||||
neededFields.put(fieldType.getQualifiedName().toString(), fieldType);
|
neededFields.put(fieldType.getQualifiedName().toString(), fieldType);
|
||||||
|
|
||||||
|
specialElements(typeElement, buildPlan, buildPlan::addStaticLine, () -> {
|
||||||
buildPlan.addStaticLine(getElement(typeElement, neededFields) + "." + variableElement.getSimpleName().toString() + " = " + getElement((TypeElement) ((DeclaredType) variableElement.asType()).asElement(), neededFields) + ";");
|
buildPlan.addStaticLine(getElement(typeElement, neededFields) + "." + variableElement.getSimpleName().toString() + " = " + getElement((TypeElement) ((DeclaredType) variableElement.asType()).asElement(), neededFields) + ";");
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
neededFields.forEach((s, typeElement) -> {
|
neededFields.forEach((s, typeElement) -> {
|
||||||
@ -194,9 +197,11 @@ public class LinkageProcessor extends AbstractProcessor {
|
|||||||
|
|
||||||
MethodBuilder initializer = new MethodBuilder(typeElement.getSimpleName().toString(), typeElement.getSimpleName().toString());
|
MethodBuilder initializer = new MethodBuilder(typeElement.getSimpleName().toString(), typeElement.getSimpleName().toString());
|
||||||
initializer.setPrivate(true);
|
initializer.setPrivate(true);
|
||||||
|
specialElements(typeElement, buildPlan, initializer::addLine, () -> {
|
||||||
initializer.addLine("if (" + typeElement.getSimpleName().toString() + " == null) {");
|
initializer.addLine("if (" + typeElement.getSimpleName().toString() + " == null) {");
|
||||||
initializer.addLine(" " + typeElement.getSimpleName().toString() + " = new " + typeElement.getSimpleName().toString() + "();");
|
initializer.addLine(" " + typeElement.getSimpleName().toString() + " = new " + typeElement.getSimpleName().toString() + "();");
|
||||||
initializer.addLine("}");
|
initializer.addLine("}");
|
||||||
|
});
|
||||||
initializer.addLine("return " + typeElement.getSimpleName().toString() + ";");
|
initializer.addLine("return " + typeElement.getSimpleName().toString() + ";");
|
||||||
buildPlan.addMethod(initializer);
|
buildPlan.addMethod(initializer);
|
||||||
});
|
});
|
||||||
@ -207,7 +212,6 @@ public class LinkageProcessor extends AbstractProcessor {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
TypeElement typeElement = (TypeElement) element;
|
TypeElement typeElement = (TypeElement) element;
|
||||||
MinVersion minVersion = element.getAnnotation(MinVersion.class);
|
|
||||||
|
|
||||||
System.out.println("Found element: " + typeElement.getQualifiedName().toString());
|
System.out.println("Found element: " + typeElement.getQualifiedName().toString());
|
||||||
element.getAnnotationMirrors().stream()
|
element.getAnnotationMirrors().stream()
|
||||||
@ -265,13 +269,9 @@ public class LinkageProcessor extends AbstractProcessor {
|
|||||||
buildPlan.addMethod(methodBuilder);
|
buildPlan.addMethod(methodBuilder);
|
||||||
return methodBuilder;
|
return methodBuilder;
|
||||||
});
|
});
|
||||||
if (context == LinkageType.Context.SPIGOT && minVersion != null) {
|
specialElements(typeElement, buildPlan, method::addLine, () -> {
|
||||||
method.addLine("if (de.steamwar.core.Core.getVersion() >= " + minVersion.value() + ") {");
|
|
||||||
}
|
|
||||||
type.generateCode(buildPlan, method, getElement(typeElement, neededFields), typeElement);
|
type.generateCode(buildPlan, method, getElement(typeElement, neededFields), typeElement);
|
||||||
if (context == LinkageType.Context.SPIGOT && minVersion != null) {
|
});
|
||||||
method.addLine("}");
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -287,4 +287,18 @@ public class LinkageProcessor extends AbstractProcessor {
|
|||||||
}
|
}
|
||||||
return "new " + typeElement.getQualifiedName().toString() + "()";
|
return "new " + typeElement.getQualifiedName().toString() + "()";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void specialElements(TypeElement typeElement, BuildPlan buildPlan, Consumer<String> stringConsumer, Runnable inner) {
|
||||||
|
if (context == LinkageType.Context.SPIGOT) {
|
||||||
|
MinVersion minVersion = typeElement.getAnnotation(MinVersion.class);
|
||||||
|
if (minVersion != null) {
|
||||||
|
buildPlan.addImport("de.steamwar.core.Core");
|
||||||
|
stringConsumer.accept("if (Core.getVersion() >= " + minVersion.value() + ") {");
|
||||||
|
}
|
||||||
|
inner.run();
|
||||||
|
if (minVersion != null) stringConsumer.accept("}");
|
||||||
|
} else {
|
||||||
|
inner.run();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren