@@ -17,13 +17,12 @@ public override void WriteCodeElement(CodeMethod codeElement, LanguageWriter wri
17
17
if ( codeElement . Parent is not CodeClass parentClass ) throw new InvalidOperationException ( "the parent of a method should be a class" ) ;
18
18
19
19
var returnType = conventions . GetTypeString ( codeElement . ReturnType , codeElement ) ;
20
- WriteMethodDocumentation ( codeElement , writer ) ;
21
20
if ( codeElement . IsAsync &&
22
21
codeElement . IsOfKind ( CodeMethodKind . RequestExecutor ) &&
23
22
returnType . Equals ( "void" , StringComparison . OrdinalIgnoreCase ) )
24
23
returnType = "Void" ; //generic type for the future
25
- writer . WriteLine ( codeElement . ReturnType . IsNullable && ! codeElement . IsAsync ? "@jakarta.annotation.Nullable" : "@jakarta.annotation.Nonnull" ) ;
26
- var signatureReturnType = WriteMethodPrototype ( codeElement , writer , returnType ) ;
24
+ WriteMethodDocumentation ( codeElement , writer , returnType ) ;
25
+ WriteMethodPrototype ( codeElement , writer , returnType ) ;
27
26
writer . IncreaseIndent ( ) ;
28
27
var inherits = parentClass . StartBlock . Inherits != null && ! parentClass . IsErrorDefinition ;
29
28
var requestBodyParam = codeElement . Parameters . OfKind ( CodeParameterKind . RequestBody ) ;
@@ -51,7 +50,7 @@ public override void WriteCodeElement(CodeMethod codeElement, LanguageWriter wri
51
50
WriteGeneratorOrExecutorMethodCall ( codeElement , requestParams , parentClass , writer , "return " , CodeMethodKind . RequestExecutor ) ;
52
51
break ;
53
52
case CodeMethodKind . RequestExecutor when ! codeElement . IsOverload :
54
- WriteRequestExecutorBody ( codeElement , requestParams , parentClass , writer , signatureReturnType ) ;
53
+ WriteRequestExecutorBody ( codeElement , requestParams , parentClass , writer ) ;
55
54
break ;
56
55
case CodeMethodKind . Getter :
57
56
WriteGetterBody ( codeElement , writer , parentClass ) ;
@@ -461,13 +460,10 @@ private void WriteDeserializerBodyForInheritedModel(CodeMethod method, CodeClass
461
460
writer . WriteLine ( $ "return { DeserializerVarName } ;") ;
462
461
}
463
462
private const string FactoryMethodName = "createFromDiscriminatorValue" ;
464
- private const string ExecuterExceptionVar = "executionException" ;
465
- private void WriteRequestExecutorBody ( CodeMethod codeElement , RequestParams requestParams , CodeClass parentClass , LanguageWriter writer , string signatureReturnType )
463
+ private void WriteRequestExecutorBody ( CodeMethod codeElement , RequestParams requestParams , CodeClass parentClass , LanguageWriter writer )
466
464
{
467
465
if ( codeElement . HttpMethod == null ) throw new InvalidOperationException ( "http method cannot be null" ) ;
468
466
var returnType = conventions . GetTypeString ( codeElement . ReturnType , codeElement , false ) ;
469
- writer . WriteLine ( "try {" ) ;
470
- writer . IncreaseIndent ( ) ;
471
467
WriteGeneratorOrExecutorMethodCall ( codeElement , requestParams , parentClass , writer , $ "final RequestInformation { RequestInfoVarName } = ", CodeMethodKind . RequestGenerator ) ;
472
468
var sendMethodName = GetSendRequestMethodName ( codeElement . ReturnType . IsCollection , returnType , codeElement . ReturnType . AllTypes . First ( ) . TypeDefinition is CodeEnum ) ;
473
469
var errorMappingVarName = "null" ;
@@ -482,12 +478,6 @@ private void WriteRequestExecutorBody(CodeMethod codeElement, RequestParams requ
482
478
}
483
479
var factoryParameter = codeElement . ReturnType is CodeType returnCodeType && returnCodeType . TypeDefinition is CodeClass ? $ "{ returnType } ::{ FactoryMethodName } " : $ "{ returnType } .class";
484
480
writer . WriteLine ( $ "return this.requestAdapter.{ sendMethodName } ({ RequestInfoVarName } , { factoryParameter } , { errorMappingVarName } );") ;
485
- writer . DecreaseIndent ( ) ;
486
- writer . StartBlock ( "} catch (URISyntaxException ex) {" ) ;
487
- writer . WriteLine ( $ "final java.util.concurrent.CompletableFuture<{ signatureReturnType } > { ExecuterExceptionVar } = new java.util.concurrent.CompletableFuture<{ signatureReturnType } >();") ;
488
- writer . WriteLine ( $ "{ ExecuterExceptionVar } .completeExceptionally(ex);") ;
489
- writer . WriteLine ( $ "return { ExecuterExceptionVar } ;") ;
490
- writer . CloseBlock ( ) ;
491
481
}
492
482
private string GetSendRequestMethodName ( bool isCollection , string returnType , bool isEnum )
493
483
{
@@ -661,7 +651,7 @@ private void WriteSerializationMethodCall(CodeProperty otherProp, CodeMethod met
661
651
writer . WriteLine ( $ "writer.{ GetSerializationMethodName ( otherProp . Type , method ) } ({ serializationKey } , { dataToSerialize } );") ;
662
652
}
663
653
private static readonly BaseCodeParameterOrderComparer parameterOrderComparer = new ( ) ;
664
- private string WriteMethodPrototype ( CodeMethod code , LanguageWriter writer , string returnType )
654
+ private void WriteMethodPrototype ( CodeMethod code , LanguageWriter writer , string returnType )
665
655
{
666
656
var accessModifier = conventions . GetAccessModifier ( code . Access ) ;
667
657
var returnTypeAsyncPrefix = code . IsAsync ? "java.util.concurrent.CompletableFuture<" : string . Empty ;
@@ -673,35 +663,32 @@ private string WriteMethodPrototype(CodeMethod code, LanguageWriter writer, stri
673
663
_ => code . Name . ToFirstCharacterLowerCase ( )
674
664
} ;
675
665
var parameters = string . Join ( ", " , code . Parameters . OrderBy ( static x => x , parameterOrderComparer ) . Select ( p => conventions . GetParameterSignature ( p , code ) ) ) ;
676
- var throwableDeclarations = code . Kind switch
677
- {
678
- CodeMethodKind . RequestGenerator => "throws URISyntaxException " ,
679
- _ => string . Empty
680
- } ;
681
666
var collectionCorrectedReturnType = code . ReturnType . IsArray && code . IsOfKind ( CodeMethodKind . RequestExecutor ) ?
682
667
$ "Iterable<{ returnType . StripArraySuffix ( ) } >" :
683
668
returnType ;
684
669
var finalReturnType = isConstructor ? string . Empty : $ " { returnTypeAsyncPrefix } { collectionCorrectedReturnType } { returnTypeAsyncSuffix } ";
685
670
var staticModifier = code . IsStatic ? " static" : string . Empty ;
686
671
conventions . WriteDeprecatedAnnotation ( code , writer ) ;
687
- writer . WriteLine ( $ "{ accessModifier } { staticModifier } { finalReturnType } { methodName } ({ parameters } ) { throwableDeclarations } {{") ;
688
- return collectionCorrectedReturnType ;
672
+ writer . WriteLine ( $ "{ accessModifier } { staticModifier } { finalReturnType } { methodName } ({ parameters } ) {{") ;
689
673
}
690
- private void WriteMethodDocumentation ( CodeMethod code , LanguageWriter writer )
674
+ private void WriteMethodDocumentation ( CodeMethod code , LanguageWriter writer , string returnType )
691
675
{
692
- var returnRemark = code . IsAsync switch
676
+ var returnVoid = returnType . Equals ( "void" , StringComparison . OrdinalIgnoreCase ) ;
677
+ // Void returns, this includes constructors, should not have a return statement in the JavaDocs.
678
+ var returnRemark = returnVoid ? string . Empty : ( code . IsAsync switch
693
679
{
694
680
true => $ "@return a CompletableFuture of { code . ReturnType . Name } ",
695
681
false => $ "@return a { code . ReturnType . Name } ",
696
- } ;
682
+ } ) ;
697
683
conventions . WriteLongDescription ( code ,
698
684
writer ,
699
685
code . Parameters
700
686
. Where ( static x => x . Documentation . DescriptionAvailable )
701
687
. OrderBy ( static x => x . Name , StringComparer . OrdinalIgnoreCase )
702
688
. Select ( x => $ "@param { x . Name } { JavaConventionService . RemoveInvalidDescriptionCharacters ( x . Documentation . Description ) } ")
703
689
. Union ( new [ ] { returnRemark } ) ) ;
704
-
690
+ if ( ! returnVoid ) //Nullable/Nonnull annotations for returns are a part of Method Documentation
691
+ writer . WriteLine ( code . ReturnType . IsNullable && ! code . IsAsync ? "@jakarta.annotation.Nullable" : "@jakarta.annotation.Nonnull" ) ;
705
692
}
706
693
private string GetDeserializationMethodName ( CodeTypeBase propType , CodeMethod method )
707
694
{
0 commit comments