32 lines
1.2 KiB
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;
|
|
}
|
|
}
|