Example usage for com.google.gwt.core.ext.typeinfo JAbstractMethod isConstructor

List of usage examples for com.google.gwt.core.ext.typeinfo JAbstractMethod isConstructor

Introduction

In this page you can find the example usage for com.google.gwt.core.ext.typeinfo JAbstractMethod isConstructor.

Prototype

JConstructor isConstructor();

Source Link

Usage

From source file:com.github.nmorel.gwtjackson.rebind.BeanJsonDeserializerCreator.java

License:Apache License

private MethodSpec buildInstanceBuilderCreateMethod() {
    JAbstractMethod method = beanInfo.getCreatorMethod().get();

    MethodSpec.Builder builder = MethodSpec.methodBuilder("create").addModifiers(Modifier.PRIVATE)
            .returns(typeName(beanInfo.getType()));

    StringBuilder parametersNameBuilder = new StringBuilder();
    int index = 0;
    for (Map.Entry<String, JParameter> parameterEntry : beanInfo.getCreatorParameters().entrySet()) {
        if (index > 0) {
            parametersNameBuilder.append(", ");
        }/*from   w  w  w. j  a  va  2 s.co m*/
        PropertyInfo property = properties.get(parameterEntry.getKey());

        String variableName = String.format(INSTANCE_BUILDER_VARIABLE_FORMAT, index++);
        builder.addParameter(typeName(property.getType()), variableName);
        parametersNameBuilder.append(variableName);
    }
    String parametersName = parametersNameBuilder.toString();

    if (method.isPrivate() || (!method.isPublic() && !mapperInfo.isSamePackage())) {
        // private method, we use jsni
        builder.addModifiers(Modifier.NATIVE);
        builder.addCode(JsniCodeBlockBuilder.builder()
                .addStatement("return $L($L)", method.getJsniSignature(), parametersName).build());
    } else {
        if (null != method.isConstructor()) {
            builder.addStatement("return new $T($L)", typeName(beanInfo.getType()), parametersName);
        } else {
            builder.addStatement("return $T.$L($L)", typeName(beanInfo.getType()), method.getName(),
                    parametersName);
        }
    }

    return builder.build();
}