File tree Expand file tree Collapse file tree
modules/openapi-generator/src
main/resources/Java/libraries/okhttp-gson
java/org/openapitools/codegen/java
okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client
okhttp-gson/src/main/java/org/openapitools/client
okhttp-gson-oneOf-array/src/main/java/org/openapitools/client
okhttp-gson-oneOf/src/main/java/org/openapitools/client
okhttp-gson-streaming/src/main/java/org/openapitools/client
okhttp-gson-3.1-duplicated-operationid/src/main/java/org/openapitools/client
okhttp-gson-3.1/src/main/java/org/openapitools/client
okhttp-gson-awsv4signature/src/main/java/org/openapitools/client
okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client
okhttp-gson-group-parameter/src/main/java/org/openapitools/client
okhttp-gson-nullable-required/src/main/java/org/openapitools/client
okhttp-gson-parcelableModel/src/main/java/org/openapitools/client
okhttp-gson-swagger1/src/main/java/org/openapitools/client
okhttp-gson-swagger2/src/main/java/org/openapitools/client
okhttp-gson/src/main/java/org/openapitools/client
wildcard-accept-header/java/src/main/java/org/openapitools/client Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -920,9 +920,20 @@ public class ApiClient {
920920 */
921921 public String parameterToJsonString(Object param) {
922922 String json = JSON.serialize(param);
923- StringBuilder escaped = new StringBuilder(json.length());
924-
923+ int firstUnsafe = -1;
925924 for (int i = 0; i < json.length(); i++) {
925+ if (json.charAt(i) >= 0x7f) {
926+ firstUnsafe = i;
927+ break;
928+ }
929+ }
930+ if (firstUnsafe == -1) {
931+ return json;
932+ }
933+
934+ StringBuilder escaped = new StringBuilder(json.length());
935+ escaped.append(json, 0, firstUnsafe);
936+ for (int i = firstUnsafe; i < json.length(); i++) {
926937 char c = json.charAt(i);
927938 if (c >= 0x7f) {
928939 escaped.append(" \\u" );
@@ -1980,7 +1991,11 @@ public class ApiClient {
19801991 }
19811992 break;
19821993 case "header":
1983- headerParams.put(param.getName(), parameterToString(value));
1994+ if (param.getContent() != null && param.getContent().containsKey("application/json")) {
1995+ headerParams.put(param.getName(), parameterToJsonString(value));
1996+ } else {
1997+ headerParams.put(param.getName(), parameterToString(value));
1998+ }
19841999 break;
19852000 case "cookie":
19862001 cookieParams.put(param.getName(), parameterToString(value));
Original file line number Diff line number Diff line change @@ -615,6 +615,32 @@ public void testJsonContentHeaderUsesJsonSerialization() {
615615 );
616616 }
617617
618+ @ Test
619+ public void testDynamicJsonContentHeaderUsesJsonSerialization () {
620+ final Path output = newTempFolder ();
621+ final CodegenConfigurator configurator = new CodegenConfigurator ()
622+ .setGeneratorName (JAVA_GENERATOR )
623+ .setLibrary (JavaClientCodegen .OKHTTP_GSON )
624+ .setInputSpec ("src/test/resources/3_1/java/json-header-content.yaml" )
625+ .addAdditionalProperty ("dynamicOperations" , true )
626+ .setOutputDir (output .toString ().replace ("\\ " , "/" ));
627+
628+ List <File > files = new DefaultGenerator ().opts (configurator .toClientOptInput ()).generate ();
629+
630+ validateJavaSourceFiles (files );
631+
632+ assertThat (output .resolve ("src/main/java/org/openapitools/client/ApiClient.java" ))
633+ .content ()
634+ .contains ("if (param.getContent() != null && param.getContent().containsKey(\" application/json\" )) {" )
635+ .contains ("headerParams.put(param.getName(), parameterToJsonString(value));" )
636+ .contains ("headerParams.put(param.getName(), parameterToString(value));" );
637+
638+ assertThat (output .resolve ("src/main/java/org/openapitools/client/api/DefaultApi.java" ))
639+ .content ()
640+ .contains ("paramMap.put(\" X-Json-Arg\" , xJsonArg);" )
641+ .contains ("paramMap.put(\" X-Plain-Arg\" , xPlainArg);" );
642+ }
643+
618644 @ Test
619645 public void testGeneratePingSomeObj () {
620646 final Path output = newTempFolder ();
Original file line number Diff line number Diff line change @@ -16,6 +16,10 @@ paths:
1616 application/json :
1717 schema :
1818 $ref : ' #/components/schemas/HeaderArg'
19+ - name : X-Plain-Arg
20+ in : header
21+ schema :
22+ type : string
1923 responses :
2024 ' 204 ' :
2125 description : OK
Original file line number Diff line number Diff line change @@ -801,9 +801,20 @@ public String parameterToString(Object param) {
801801 */
802802 public String parameterToJsonString (Object param ) {
803803 String json = JSON .serialize (param );
804- StringBuilder escaped = new StringBuilder (json .length ());
805-
804+ int firstUnsafe = -1 ;
806805 for (int i = 0 ; i < json .length (); i ++) {
806+ if (json .charAt (i ) >= 0x7f ) {
807+ firstUnsafe = i ;
808+ break ;
809+ }
810+ }
811+ if (firstUnsafe == -1 ) {
812+ return json ;
813+ }
814+
815+ StringBuilder escaped = new StringBuilder (json .length ());
816+ escaped .append (json , 0 , firstUnsafe );
817+ for (int i = firstUnsafe ; i < json .length (); i ++) {
807818 char c = json .charAt (i );
808819 if (c >= 0x7f ) {
809820 escaped .append ("\\ u" );
Original file line number Diff line number Diff line change @@ -731,9 +731,20 @@ public String parameterToString(Object param) {
731731 */
732732 public String parameterToJsonString (Object param ) {
733733 String json = JSON .serialize (param );
734- StringBuilder escaped = new StringBuilder (json .length ());
735-
734+ int firstUnsafe = -1 ;
736735 for (int i = 0 ; i < json .length (); i ++) {
736+ if (json .charAt (i ) >= 0x7f ) {
737+ firstUnsafe = i ;
738+ break ;
739+ }
740+ }
741+ if (firstUnsafe == -1 ) {
742+ return json ;
743+ }
744+
745+ StringBuilder escaped = new StringBuilder (json .length ());
746+ escaped .append (json , 0 , firstUnsafe );
747+ for (int i = firstUnsafe ; i < json .length (); i ++) {
737748 char c = json .charAt (i );
738749 if (c >= 0x7f ) {
739750 escaped .append ("\\ u" );
Original file line number Diff line number Diff line change @@ -705,9 +705,20 @@ public String parameterToString(Object param) {
705705 */
706706 public String parameterToJsonString (Object param ) {
707707 String json = JSON .serialize (param );
708- StringBuilder escaped = new StringBuilder (json .length ());
709-
708+ int firstUnsafe = -1 ;
710709 for (int i = 0 ; i < json .length (); i ++) {
710+ if (json .charAt (i ) >= 0x7f ) {
711+ firstUnsafe = i ;
712+ break ;
713+ }
714+ }
715+ if (firstUnsafe == -1 ) {
716+ return json ;
717+ }
718+
719+ StringBuilder escaped = new StringBuilder (json .length ());
720+ escaped .append (json , 0 , firstUnsafe );
721+ for (int i = firstUnsafe ; i < json .length (); i ++) {
711722 char c = json .charAt (i );
712723 if (c >= 0x7f ) {
713724 escaped .append ("\\ u" );
Original file line number Diff line number Diff line change @@ -705,9 +705,20 @@ public String parameterToString(Object param) {
705705 */
706706 public String parameterToJsonString (Object param ) {
707707 String json = JSON .serialize (param );
708- StringBuilder escaped = new StringBuilder (json .length ());
709-
708+ int firstUnsafe = -1 ;
710709 for (int i = 0 ; i < json .length (); i ++) {
710+ if (json .charAt (i ) >= 0x7f ) {
711+ firstUnsafe = i ;
712+ break ;
713+ }
714+ }
715+ if (firstUnsafe == -1 ) {
716+ return json ;
717+ }
718+
719+ StringBuilder escaped = new StringBuilder (json .length ());
720+ escaped .append (json , 0 , firstUnsafe );
721+ for (int i = firstUnsafe ; i < json .length (); i ++) {
711722 char c = json .charAt (i );
712723 if (c >= 0x7f ) {
713724 escaped .append ("\\ u" );
Original file line number Diff line number Diff line change @@ -705,9 +705,20 @@ public String parameterToString(Object param) {
705705 */
706706 public String parameterToJsonString (Object param ) {
707707 String json = JSON .serialize (param );
708- StringBuilder escaped = new StringBuilder (json .length ());
709-
708+ int firstUnsafe = -1 ;
710709 for (int i = 0 ; i < json .length (); i ++) {
710+ if (json .charAt (i ) >= 0x7f ) {
711+ firstUnsafe = i ;
712+ break ;
713+ }
714+ }
715+ if (firstUnsafe == -1 ) {
716+ return json ;
717+ }
718+
719+ StringBuilder escaped = new StringBuilder (json .length ());
720+ escaped .append (json , 0 , firstUnsafe );
721+ for (int i = firstUnsafe ; i < json .length (); i ++) {
711722 char c = json .charAt (i );
712723 if (c >= 0x7f ) {
713724 escaped .append ("\\ u" );
Original file line number Diff line number Diff line change @@ -801,9 +801,20 @@ public String parameterToString(Object param) {
801801 */
802802 public String parameterToJsonString (Object param ) {
803803 String json = JSON .serialize (param );
804- StringBuilder escaped = new StringBuilder (json .length ());
805-
804+ int firstUnsafe = -1 ;
806805 for (int i = 0 ; i < json .length (); i ++) {
806+ if (json .charAt (i ) >= 0x7f ) {
807+ firstUnsafe = i ;
808+ break ;
809+ }
810+ }
811+ if (firstUnsafe == -1 ) {
812+ return json ;
813+ }
814+
815+ StringBuilder escaped = new StringBuilder (json .length ());
816+ escaped .append (json , 0 , firstUnsafe );
817+ for (int i = firstUnsafe ; i < json .length (); i ++) {
807818 char c = json .charAt (i );
808819 if (c >= 0x7f ) {
809820 escaped .append ("\\ u" );
Original file line number Diff line number Diff line change @@ -801,9 +801,20 @@ public String parameterToString(Object param) {
801801 */
802802 public String parameterToJsonString (Object param ) {
803803 String json = JSON .serialize (param );
804- StringBuilder escaped = new StringBuilder (json .length ());
805-
804+ int firstUnsafe = -1 ;
806805 for (int i = 0 ; i < json .length (); i ++) {
806+ if (json .charAt (i ) >= 0x7f ) {
807+ firstUnsafe = i ;
808+ break ;
809+ }
810+ }
811+ if (firstUnsafe == -1 ) {
812+ return json ;
813+ }
814+
815+ StringBuilder escaped = new StringBuilder (json .length ());
816+ escaped .append (json , 0 , firstUnsafe );
817+ for (int i = firstUnsafe ; i < json .length (); i ++) {
807818 char c = json .charAt (i );
808819 if (c >= 0x7f ) {
809820 escaped .append ("\\ u" );
You can’t perform that action at this time.
0 commit comments