2222import com .github .benmanes .caffeine .cache .Ticker ;
2323import com .google .common .base .CaseFormat ;
2424import com .google .common .collect .ImmutableMap ;
25- import com .google .common .collect .Maps ;
2625import com .samskivert .mustache .Mustache ;
2726import com .samskivert .mustache .Mustache .Compiler ;
2827import com .samskivert .mustache .Mustache .Lambda ;
@@ -4447,26 +4446,17 @@ public List<CodegenSecurity> fromSecurity(Map<String, SecurityScheme> securitySc
44474446 List <CodegenSecurity > codegenSecurities = new ArrayList <CodegenSecurity >(securitySchemeMap .size ());
44484447 for (String key : securitySchemeMap .keySet ()) {
44494448 final SecurityScheme securityScheme = securitySchemeMap .get (key );
4450-
4451- CodegenSecurity cs = CodegenModelFactory .newInstance (CodegenModelType .SECURITY );
4452- cs .name = key ;
4453- cs .type = securityScheme .getType ().toString ();
4454- cs .isCode = cs .isPassword = cs .isApplication = cs .isImplicit = false ;
4455- cs .isHttpSignature = false ;
4456- cs .isBasicBasic = cs .isBasicBearer = false ;
4457- cs .scheme = securityScheme .getScheme ();
4458- if (securityScheme .getExtensions () != null ) {
4459- cs .vendorExtensions .putAll (securityScheme .getExtensions ());
4460- }
4461-
44624449 if (SecurityScheme .Type .APIKEY .equals (securityScheme .getType ())) {
4450+ final CodegenSecurity cs = defaultCodegenSecurity (key , securityScheme );
44634451 cs .isBasic = cs .isOAuth = false ;
44644452 cs .isApiKey = true ;
44654453 cs .keyParamName = securityScheme .getName ();
44664454 cs .isKeyInHeader = securityScheme .getIn () == SecurityScheme .In .HEADER ;
44674455 cs .isKeyInQuery = securityScheme .getIn () == SecurityScheme .In .QUERY ;
44684456 cs .isKeyInCookie = securityScheme .getIn () == SecurityScheme .In .COOKIE ; //it assumes a validation step prior to generation. (cookie-auth supported from OpenAPI 3.0.0)
4457+ codegenSecurities .add (cs );
44694458 } else if (SecurityScheme .Type .HTTP .equals (securityScheme .getType ())) {
4459+ final CodegenSecurity cs = defaultCodegenSecurity (key , securityScheme );
44704460 cs .isKeyInHeader = cs .isKeyInQuery = cs .isKeyInCookie = cs .isApiKey = cs .isOAuth = false ;
44714461 cs .isBasic = true ;
44724462 if ("basic" .equals (securityScheme .getScheme ())) {
@@ -4483,35 +4473,41 @@ public List<CodegenSecurity> fromSecurity(Map<String, SecurityScheme> securitySc
44834473 cs .isHttpSignature = true ;
44844474 once (LOGGER ).warn ("Security scheme 'HTTP signature' is a draft IETF RFC and subject to change." );
44854475 }
4476+ codegenSecurities .add (cs );
44864477 } else if (SecurityScheme .Type .OAUTH2 .equals (securityScheme .getType ())) {
4487- cs .isKeyInHeader = cs .isKeyInQuery = cs .isKeyInCookie = cs .isApiKey = cs .isBasic = false ;
4488- cs .isOAuth = true ;
44894478 final OAuthFlows flows = securityScheme .getFlows ();
44904479 if (securityScheme .getFlows () == null ) {
4491- throw new RuntimeException ("missing oauth flow in " + cs . name );
4480+ throw new RuntimeException ("missing oauth flow in " + key );
44924481 }
44934482 if (flows .getPassword () != null ) {
4483+ final CodegenSecurity cs = defaultOauthCodegenSecurity (key , securityScheme );
44944484 setOauth2Info (cs , flows .getPassword ());
44954485 cs .isPassword = true ;
44964486 cs .flow = "password" ;
4497- } else if (flows .getImplicit () != null ) {
4487+ codegenSecurities .add (cs );
4488+ }
4489+ if (flows .getImplicit () != null ) {
4490+ final CodegenSecurity cs = defaultOauthCodegenSecurity (key , securityScheme );
44984491 setOauth2Info (cs , flows .getImplicit ());
44994492 cs .isImplicit = true ;
45004493 cs .flow = "implicit" ;
4501- } else if (flows .getClientCredentials () != null ) {
4494+ codegenSecurities .add (cs );
4495+ }
4496+ if (flows .getClientCredentials () != null ) {
4497+ final CodegenSecurity cs = defaultOauthCodegenSecurity (key , securityScheme );
45024498 setOauth2Info (cs , flows .getClientCredentials ());
45034499 cs .isApplication = true ;
45044500 cs .flow = "application" ;
4505- } else if (flows .getAuthorizationCode () != null ) {
4501+ codegenSecurities .add (cs );
4502+ }
4503+ if (flows .getAuthorizationCode () != null ) {
4504+ final CodegenSecurity cs = defaultOauthCodegenSecurity (key , securityScheme );
45064505 setOauth2Info (cs , flows .getAuthorizationCode ());
45074506 cs .isCode = true ;
45084507 cs .flow = "accessCode" ;
4509- } else {
4510- throw new RuntimeException ("Could not identify any oauth2 flow in " + cs .name );
4508+ codegenSecurities .add (cs );
45114509 }
45124510 }
4513-
4514- codegenSecurities .add (cs );
45154511 }
45164512
45174513 // sort auth methods to maintain the same order
@@ -4531,6 +4527,27 @@ public int compare(CodegenSecurity one, CodegenSecurity another) {
45314527 return codegenSecurities ;
45324528 }
45334529
4530+ private CodegenSecurity defaultCodegenSecurity (String key , SecurityScheme securityScheme ) {
4531+ final CodegenSecurity cs = CodegenModelFactory .newInstance (CodegenModelType .SECURITY );
4532+ cs .name = key ;
4533+ cs .type = securityScheme .getType ().toString ();
4534+ cs .isCode = cs .isPassword = cs .isApplication = cs .isImplicit = false ;
4535+ cs .isHttpSignature = false ;
4536+ cs .isBasicBasic = cs .isBasicBearer = false ;
4537+ cs .scheme = securityScheme .getScheme ();
4538+ if (securityScheme .getExtensions () != null ) {
4539+ cs .vendorExtensions .putAll (securityScheme .getExtensions ());
4540+ }
4541+ return cs ;
4542+ }
4543+
4544+ private CodegenSecurity defaultOauthCodegenSecurity (String key , SecurityScheme securityScheme ) {
4545+ final CodegenSecurity cs = defaultCodegenSecurity (key , securityScheme );
4546+ cs .isKeyInHeader = cs .isKeyInQuery = cs .isKeyInCookie = cs .isApiKey = cs .isBasic = false ;
4547+ cs .isOAuth = true ;
4548+ return cs ;
4549+ }
4550+
45344551 protected void setReservedWordsLowerCase (List <String > words ) {
45354552 reservedWords = new HashSet <String >();
45364553 for (String word : words ) {
0 commit comments