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

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

Introduction

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

Prototype

String getJsniSignature();

Source Link

Document

Returns a string contating a JSNI reference to the method.

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  av  a 2s  .c  om*/
        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();
}