Search in sources :

Example 1 with DynamicInstanceBuilder

use of core.framework.impl.asm.DynamicInstanceBuilder in project core-ng-project by neowu.

the class InsertQuery method paramBuilder.

private Function<T, Object[]> paramBuilder(Class<T> entityClass, List<Field> paramFields) {
    CodeBuilder builder = new CodeBuilder();
    String entityClassLiteral = type(entityClass);
    builder.append("public Object apply(Object value) {\n").indent(1).append("{} entity = ({}) value;", entityClassLiteral, entityClassLiteral).indent(1).append("Object[] params = new Object[{}];\n", paramFields.size());
    int index = 0;
    for (Field paramField : paramFields) {
        builder.indent(1).append("params[{}] = entity.{};\n", index, paramField.getName());
        index++;
    }
    builder.append("return params;\n").append("}");
    DynamicInstanceBuilder<Function<T, Object[]>> dynamicInstanceBuilder = new DynamicInstanceBuilder<>(Function.class, InsertQuery.class.getCanonicalName() + "$" + entityClass.getSimpleName() + "$InsertQueryParamBuilder");
    dynamicInstanceBuilder.addMethod(builder.build());
    return dynamicInstanceBuilder.build();
}
Also used : Field(java.lang.reflect.Field) Function(java.util.function.Function) DynamicInstanceBuilder(core.framework.impl.asm.DynamicInstanceBuilder) CodeBuilder(core.framework.impl.asm.CodeBuilder)

Aggregations

CodeBuilder (core.framework.impl.asm.CodeBuilder)1 DynamicInstanceBuilder (core.framework.impl.asm.DynamicInstanceBuilder)1 Field (java.lang.reflect.Field)1 Function (java.util.function.Function)1