@@ -224,12 +224,17 @@ def begin_class(
224224
225225package {package};
226226
227+ import {package}.utils.LoadingOptions;
227228import {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