@@ -2548,33 +2548,31 @@ fn render_render_assertions_java(
25482548/// Java types implemented as records (use field-name accessors, not getters).
25492549///
25502550/// Records use `fieldName()` style accessors instead of `getFieldName()`.
2551- const JAVA_RECORD_TYPES : & [ & str ] = & [
2552- "PdfAnnotation" ,
2553- "Table" ,
2554- "BoundingBox" ,
2555- "Keyword" ,
2556- "Uri" ,
2557- "ArchiveEntry" ,
2558- "ProcessingWarning" ,
2559- ] ;
2551+ /// NOTE: Only include types that are actual Java records. Types implemented as
2552+ /// regular classes with getX()/isX() methods must NOT be listed here.
2553+ const JAVA_RECORD_TYPES : & [ & str ] = & [ ] ;
25602554
25612555/// Special field name mappings for Java (manifest field name -> Java accessor name).
25622556fn java_field_override ( type_name : & str , field_name : & str ) -> Option < String > {
25632557 match ( type_name, field_name) {
25642558 ( "ExtractionResult" , "document" ) => Some ( "getDocumentStructure" . to_string ( ) ) ,
2565- ( "ExtractionConfig" , "enable_quality_processing" ) => Some ( "isEnableQualityProcessing" . to_string ( ) ) ,
25662559 _ => None ,
25672560 }
25682561}
25692562
25702563/// Return the correct Java accessor for a field, respecting records vs classes
25712564/// and any per-field overrides.
2572- fn to_java_accessor ( type_name : & str , field_name : & str ) -> String {
2565+ ///
2566+ /// When `json_type` is `"boolean"`, non-record types use the `isFieldName()`
2567+ /// convention instead of `getFieldName()`.
2568+ fn to_java_accessor_with_type ( type_name : & str , field_name : & str , json_type : Option < & str > ) -> String {
25732569 if let Some ( override_name) = java_field_override ( type_name, field_name) {
25742570 return override_name;
25752571 }
25762572 if JAVA_RECORD_TYPES . contains ( & type_name) {
25772573 parity:: to_camel_case ( field_name)
2574+ } else if json_type == Some ( "boolean" ) {
2575+ format ! ( "is{}" , parity:: to_pascal_case( field_name) )
25782576 } else {
25792577 format ! ( "get{}" , parity:: to_pascal_case( field_name) )
25802578 }
@@ -2636,11 +2634,21 @@ pub fn generate_parity(manifest: &ParityManifest, output_root: &Utf8Path) -> Res
26362634 let required_fields: Vec < ( & String , String ) > = fields
26372635 . iter ( )
26382636 . filter ( |( _, f) | f. required )
2639- . map ( |( name, _) | ( name, to_java_accessor ( "ExtractionResult" , name) ) )
2637+ . map ( |( name, f) | {
2638+ (
2639+ name,
2640+ to_java_accessor_with_type ( "ExtractionResult" , name, Some ( & f. json_type ) ) ,
2641+ )
2642+ } )
26402643 . collect ( ) ;
26412644 let all_fields: Vec < ( & String , String ) > = fields
2642- . keys ( )
2643- . map ( |name| ( name, to_java_accessor ( "ExtractionResult" , name) ) )
2645+ . iter ( )
2646+ . map ( |( name, f) | {
2647+ (
2648+ name,
2649+ to_java_accessor_with_type ( "ExtractionResult" , name, Some ( & f. json_type ) ) ,
2650+ )
2651+ } )
26442652 . collect ( ) ;
26452653
26462654 writeln ! ( buffer) ?;
@@ -2694,8 +2702,13 @@ pub fn generate_parity(manifest: &ParityManifest, output_root: &Utf8Path) -> Res
26942702 // ExtractionConfig parity
26952703 if let Some ( fields) = parity:: fields_for_type_and_lang ( manifest, "ExtractionConfig" , lang) {
26962704 let all_fields: Vec < ( & String , String ) > = fields
2697- . keys ( )
2698- . map ( |name| ( name, to_java_accessor ( "ExtractionConfig" , name) ) )
2705+ . iter ( )
2706+ . map ( |( name, f) | {
2707+ (
2708+ name,
2709+ to_java_accessor_with_type ( "ExtractionConfig" , name, Some ( & f. json_type ) ) ,
2710+ )
2711+ } )
26992712 . collect ( ) ;
27002713
27012714 writeln ! ( buffer) ?;
@@ -2732,8 +2745,8 @@ pub fn generate_parity(manifest: &ParityManifest, output_root: &Utf8Path) -> Res
27322745 }
27332746
27342747 let all_fields: Vec < ( & String , String ) > = fields
2735- . keys ( )
2736- . map ( |name| ( name, to_java_accessor ( type_name, name) ) )
2748+ . iter ( )
2749+ . map ( |( name, f ) | ( name, to_java_accessor_with_type ( type_name, name, Some ( & f . json_type ) ) ) )
27372750 . collect ( ) ;
27382751
27392752 let method_name = format ! ( "test{}AllGetters" , type_name) ;
0 commit comments