Skip to content

Commit d38605a

Browse files
committed
java: populate extensionFields; add public access to the LoadingOptions
1 parent 79fc273 commit d38605a

File tree

1 file changed

+23
-4
lines changed

1 file changed

+23
-4
lines changed

schema_salad/java_codegen.py

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -224,12 +224,17 @@ def begin_class(
224224
225225
package {package};
226226
227+
import {package}.utils.LoadingOptions;
227228
import {package}.utils.Saveable;
228229
229230
/**
230231
{interface_doc_str}
231232
*/
232-
public interface {cls} {ext} {{""".format(
233+
public interface {cls} {ext} {{
234+
235+
java.util.Map<String, Object> getExtensionFields();
236+
LoadingOptions getLoadingOptions();
237+
""".format(
233238
package=self.package,
234239
cls=cls,
235240
ext=ext,
@@ -283,6 +288,9 @@ def begin_class(
283288
private LoadingOptions loadingOptions_ = new LoadingOptionsBuilder().build();
284289
private java.util.Map<String, Object> extensionFields_ =
285290
new java.util.HashMap<String, Object>();
291+
public LoadingOptions getLoadingOptions() {{
292+
return this.loadingOptions_;
293+
}}
286294
public java.util.Map<String, Object> getExtensionFields() {{
287295
return this.extensionFields_;
288296
}}
@@ -356,7 +364,17 @@ def end_class(self, classname: str, field_names: list[str]) -> None:
356364
safename=self.safe_name(fieldname), type=fieldtype.instance_type
357365
)
358366
)
359-
367+
self.current_loader.write(
368+
""" for (String field:__doc.keySet()) {
369+
if (!attrs.contains(field)) {
370+
if (field.contains(":")) {
371+
String expanded_field = __loadingOptions.expandUrl(field, "", false, false, null);
372+
extensionFields_.put(expanded_field, __doc.get(field));
373+
}
374+
}
375+
}
376+
"""
377+
)
360378
self.current_loader.write(""" }""")
361379
target = self.main_src_dir / f"{self.current_class}Impl.java"
362380
with open(
@@ -366,8 +384,9 @@ def end_class(self, classname: str, field_names: list[str]) -> None:
366384
f.write(self.current_fields.getvalue())
367385
f.write(self.current_loader.getvalue())
368386
f.write(
369-
"""
370-
}
387+
f"""
388+
private java.util.List<String> attrs = java.util.Arrays.asList("{'", "'.join(field_names)}");
389+
}}
371390
"""
372391
)
373392

0 commit comments

Comments
 (0)