diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java index 975b1dc24e0..f675c9a9c3f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java @@ -67,6 +67,7 @@ public class JavaClientCodegen extends AbstractJavaCodegen public static final String SUPPORT_STREAMING = "supportStreaming"; public static final String GRADLE_PROPERTIES= "gradleProperties"; public static final String ERROR_OBJECT_TYPE= "errorObjectType"; + public static final String ERROR_OBJECT_SUBTYPE= "errorObjectSubtype"; public static final String PLAY_24 = "play24"; public static final String PLAY_25 = "play25"; @@ -120,6 +121,7 @@ public class JavaClientCodegen extends AbstractJavaCodegen protected boolean supportStreaming = false; protected String gradleProperties; protected String errorObjectType; + protected List errorObjectSubtype; protected String authFolder; protected String serializationLibrary = null; @@ -351,6 +353,11 @@ public class JavaClientCodegen extends AbstractJavaCodegen } additionalProperties.put(ERROR_OBJECT_TYPE, errorObjectType); + if (additionalProperties.containsKey(ERROR_OBJECT_SUBTYPE)) { + this.setErrorObjectSubtype((List)additionalProperties.get(ERROR_OBJECT_SUBTYPE)); + } + additionalProperties.put(ERROR_OBJECT_SUBTYPE, errorObjectSubtype); + final String invokerFolder = (sourceFolder + '/' + invokerPackage).replace(".", "/"); final String apiFolder = (sourceFolder + '/' + apiPackage).replace(".", "/"); final String modelsFolder = (sourceFolder + File.separator + modelPackage().replace('.', File.separatorChar)).replace('/', File.separatorChar); @@ -1042,6 +1049,10 @@ public class JavaClientCodegen extends AbstractJavaCodegen this.errorObjectType= errorObjectType; } + public void setErrorObjectSubtype(final List errorObjectSubtype) { + this.errorObjectSubtype= errorObjectSubtype; + } + /** * Serialization library. * diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson-nextgen/api_doc.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson-nextgen/api_doc.mustache index 5a4e3969c93..616ad65a5ac 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson-nextgen/api_doc.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson-nextgen/api_doc.mustache @@ -63,11 +63,23 @@ public class Example { .execute();{{/vendorExtensions.x-group-parameters}}{{#returnType}} System.out.println(result);{{/returnType}} } catch (ApiException e) { - System.err.println("Exception when calling {{{classname}}}#{{{operationId}}}"); - System.err.println("Status code: " + e.getCode()); - System.err.println("Reason: " + e.getResponseBody()); - System.err.println("Response headers: " + e.getResponseHeaders()); - e.printStackTrace(); + {{=< >=}} + <#errorObjectSubtype> + <^-first>} else if (e.getErrorObject() instanceof <&.>) { + // do something here + <#-last> + } else { + // something else happened + System.err.println("Exception when calling {{{classname}}}#{{{operationId}}}"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + + + <={{ }}=> + } } }