gson-compile/gson-compile-processor/src/main/java/io/gitlab/jfronny/gson/compile/processor/adapter/ReflectAdapter.java

32 lines
1.2 KiB
Java

package io.gitlab.jfronny.gson.compile.processor.adapter;
import com.squareup.javapoet.*;
import io.gitlab.jfronny.gson.compile.processor.Const;
import javax.lang.model.element.Modifier;
import javax.tools.Diagnostic;
public class ReflectAdapter extends AdapterAdapter {
@Override
public boolean applies() {
return !options.containsKey("gsonCompileNoReflect");
}
@Override
protected String createAdapter(String typeAdapterName) {
message.printMessage(Diagnostic.Kind.WARNING, "Falling back to adapter detection for unsupported type " + type, property.getElement());
TypeName typeAdapterType = ParameterizedTypeName.get(Const.TYPE_ADAPTER, typeName);
CodeBlock.Builder block = CodeBlock.builder();
block.add("$T.HOLDER.getGson().getAdapter(", Const.CCORE);
appendFieldTypeToken(true);
block.add(")");
klazz.addField(
FieldSpec.builder(typeAdapterType, typeAdapterName)
.addModifiers(Modifier.PRIVATE, Modifier.STATIC, Modifier.FINAL)
.initializer(block.build())
.build()
);
return typeAdapterName;
}
}