Object[] parametersValues = new Object[methodInjection.getParameters().size()]; Type[] srcTypes = new Type[methodInjection.getParameters().size()]; for (ThriftParameterInjection parameter : methodInjection.getParameters()) { TypeValue value = data.get(parameter.getId()); if (value != null) { Object[] parametersValues = new Object[builderMethod.getParameters().size()]; for (ThriftParameterInjection parameter : builderMethod.getParameters()) { Object value = data.get(parameter.getId()); parametersValues[parameter.getParameterIndex()] = value;
Object[] parametersValues = new Object[methodInjection.getParameters().size()]; Type[] srcTypes = new Type[methodInjection.getParameters().size()]; for (ThriftParameterInjection parameter : methodInjection.getParameters()) { TypeValue value = data.get(parameter.getName()); if (value != null) { Object[] parametersValues = new Object[builderMethod.getParameters().size()]; for (ThriftParameterInjection parameter : builderMethod.getParameters()) { Object value = data.get(parameter.getName()); parametersValues[parameter.getParameterIndex()] = value;
/** * Defines the code that calls the builder factory method. */ private void invokeFactoryMethod(MethodDefinition read, Map<Short, LocalVariableDefinition> structData, LocalVariableDefinition instance) { if (metadata.getBuilderMethod().isPresent()) { ThriftMethodInjection builderMethod = metadata.getBuilderMethod().get(); read.loadVariable(instance); // push parameters on stack for (ThriftParameterInjection parameter : builderMethod.getParameters()) { read.loadVariable(structData.get(parameter.getId())); } // invoke the method read.invokeVirtual(builderMethod.getMethod()) .storeVariable(instance); } }
Object[] parametersValues = new Object[methodInjection.getParameters().size()]; for (ThriftParameterInjection parameter : methodInjection.getParameters()) { Object value = data.get(parameter.getId()); if (value != null) { Object[] parametersValues = new Object[builderMethod.getParameters().size()]; for (ThriftParameterInjection parameter : builderMethod.getParameters()) { Object value = data.get(parameter.getId()); parametersValues[parameter.getParameterIndex()] = value;
private void injectMethod(MethodDefinition read, ThriftMethodInjection methodInjection, LocalVariableDefinition instance, Map<Short, LocalVariableDefinition> structData) { // if any parameter is non-null, invoke the method String methodName = methodInjection.getMethod().toGenericString(); for (ThriftParameterInjection parameter : methodInjection.getParameters()) { if (!isParameterTypeJavaPrimitive(parameter)) { read.loadVariable(structData.get(parameter.getId())) .ifNotNullGoto("invoke_" + methodName); } else { read.gotoLabel("invoke_" + methodName); } } read.gotoLabel("skip_invoke_" + methodName); // invoke the method read.visitLabel("invoke_" + methodName) .loadVariable(instance); // push parameters on stack for (ThriftParameterInjection parameter : methodInjection.getParameters()) { read.loadVariable(structData.get(parameter.getId())); } // invoke the method read.invokeVirtual(methodInjection.getMethod()); // if method has a return, we need to pop it off the stack if (methodInjection.getMethod().getReturnType() != void.class) { read.pop(); } // skip invocation read.visitLabel("skip_invoke_" + methodName); }