Index: mojo/public/tools/bindings/generators/java_templates/java_macros.tmpl |
diff --git a/mojo/public/tools/bindings/generators/java_templates/java_macros.tmpl b/mojo/public/tools/bindings/generators/java_templates/java_macros.tmpl |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b9ce0991daf8d7eee4245f81c9a6bd1d933b195b |
--- /dev/null |
+++ b/mojo/public/tools/bindings/generators/java_templates/java_macros.tmpl |
@@ -0,0 +1,25 @@ |
+{% macro set_default(variable, module, kind, value, depth=0) %} |
+{% if kind|is_string_kind %} |
+{{variable}} = {{value|expression_to_text(module)}}; |
+{% elif kind|is_array_kind %} |
+{% set _ = value|verify_token_type("ARRAY") %} |
+{{variable}} = {{kind|new_array(value[1]|length)}}; |
+{% for element in value[1] -%} |
+{{set_default(variable~'['~loop.index0~']', module, kind.kind, element, depth+1)}} |
+{%- endfor %} |
+{% elif kind|is_object_kind %} |
+{% set _ = value|verify_token_type("OBJECT") %} |
+{{kind|java_type}}.Builder tmp{{depth}} = {{kind|java_type}}.newBuilder(); |
+{% for element in value[1] %} |
+{% set subfield = kind.fields[loop.index0] %} |
+{ |
+ {{subfield.kind|java_type}} tmp{{depth+1}}; |
+ {{set_default('tmp'~(depth+1), module, subfield.kind, element, depth+2)|indent(4)}} |
+ tmp{{depth}}.set{{subfield.name|camelcase|capitalize_first}}(tmp{{depth+1}}); |
+} |
+{% endfor %} |
+{{variable}} = tmp{{depth}}.build(); |
+{% else %} |
+{{variable}} = ({{kind|java_type}}) {{value|expression_to_text(module)}}; |
+{% endif %} |
+{% endmacro %} |