From 5854e28a9d638de390890863d79dacf9beca58e8 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 11 Mar 2026 00:22:10 +0800 Subject: [PATCH 1/2] minor refactoring in ruby client codegen --- .../codegen/languages/RubyClientCodegen.java | 31 ++++++++----------- .../codegen/ruby/RubyClientCodegenTest.java | 8 ++--- 2 files changed, 16 insertions(+), 23 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java index 1db870ed1b09..bd8595749bb2 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java @@ -295,7 +295,7 @@ public void processOpts() { // for Faraday additionalProperties.put("isHttpx", Boolean.TRUE); } else { - throw new RuntimeException("Invalid HTTP library " + getLibrary() + ". Only faraday, typhoeus and httpx are supported."); + throw new IllegalArgumentException("Invalid HTTP library " + getLibrary() + ". Only faraday, typhoeus and httpx are supported."); } // test files should not be overwritten @@ -469,11 +469,11 @@ public String toModelDocFilename(String name) { public String toApiFilename(final String name) { // replace - with _ e.g. created-at => created_at String filename = name; - if (apiNameSuffix != null && apiNameSuffix.length() > 0) { + if (apiNameSuffix != null && !apiNameSuffix.isEmpty()) { filename = filename + "_" + apiNameSuffix; } - filename = filename.replaceAll("-", "_"); + filename = filename.replace("-", "_"); // e.g. PhoneNumberApi.rb => phone_number_api.rb return underscore(filename); @@ -494,11 +494,6 @@ public String toModelTestFilename(String name) { return toModelFilename(name) + "_spec"; } - @Override - public String toApiName(String name) { - return super.toApiName(name); - } - @Override public String toEnumValue(String value, String datatype) { if ("Integer".equals(datatype) || "Float".equals(datatype)) { @@ -514,16 +509,16 @@ public String toEnumVarName(String name, String datatype) { return enumNameMapping.get(name); } - if (name.length() == 0) { + if (name.isEmpty()) { return "EMPTY"; } // number if ("Integer".equals(datatype) || "Float".equals(datatype)) { String varName = name; - varName = varName.replaceAll("-", "MINUS_"); - varName = varName.replaceAll("\\+", "PLUS_"); - varName = varName.replaceAll("\\.", "_DOT_"); + varName = varName.replace("-", "MINUS_"); + varName = varName.replace("+", "PLUS_"); + varName = varName.replace(".", "_DOT_"); return NUMERIC_ENUM_PREFIX + varName; } @@ -594,7 +589,7 @@ public String toApiImport(String name) { @Override protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) { - final Schema additionalProperties = ModelUtils.getAdditionalProperties(schema); + final Schema additionalProperties = ModelUtils.getAdditionalProperties(schema); if (additionalProperties != null) { codegenModel.additionalPropertiesType = getSchemaType(additionalProperties); @@ -692,7 +687,7 @@ private String constructExampleCode(CodegenParameter codegenParameter, HashMap Date: Wed, 11 Mar 2026 00:29:26 +0800 Subject: [PATCH 2/2] add tests for minus 1 enum value --- .../ruby/petstore-with-fake-endpoints-models-for-testing.yaml | 1 + samples/client/petstore/ruby-faraday/docs/FakeApi.md | 2 +- .../ruby-faraday/lib/petstore/models/outer_enum_integer.rb | 3 ++- samples/client/petstore/ruby-httpx/docs/FakeApi.md | 2 +- .../ruby-httpx/lib/petstore/models/outer_enum_integer.rb | 3 ++- samples/client/petstore/ruby/docs/FakeApi.md | 2 +- .../petstore/ruby/lib/petstore/models/outer_enum_integer.rb | 3 ++- 7 files changed, 10 insertions(+), 6 deletions(-) diff --git a/modules/openapi-generator/src/test/resources/3_0/ruby/petstore-with-fake-endpoints-models-for-testing.yaml b/modules/openapi-generator/src/test/resources/3_0/ruby/petstore-with-fake-endpoints-models-for-testing.yaml index 064862059da5..c269fb4ee300 100644 --- a/modules/openapi-generator/src/test/resources/3_0/ruby/petstore-with-fake-endpoints-models-for-testing.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/ruby/petstore-with-fake-endpoints-models-for-testing.yaml @@ -1936,6 +1936,7 @@ components: OuterEnumInteger: type: integer enum: + - -1 - 0 - 1 - 2 diff --git a/samples/client/petstore/ruby-faraday/docs/FakeApi.md b/samples/client/petstore/ruby-faraday/docs/FakeApi.md index 1e05788c53ab..a64fa0bc4a35 100644 --- a/samples/client/petstore/ruby-faraday/docs/FakeApi.md +++ b/samples/client/petstore/ruby-faraday/docs/FakeApi.md @@ -497,7 +497,7 @@ require 'time' require 'petstore' api_instance = Petstore::FakeApi.new -outer_object_with_enum_property = Petstore::OuterObjectWithEnumProperty.new({value: Petstore::OuterEnumInteger::N0}) # OuterObjectWithEnumProperty | Input enum (int) as post body +outer_object_with_enum_property = Petstore::OuterObjectWithEnumProperty.new({value: Petstore::OuterEnumInteger::NMINUS_1}) # OuterObjectWithEnumProperty | Input enum (int) as post body begin diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer.rb index e26193c5a48f..9373d42c5ccd 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer.rb @@ -15,12 +15,13 @@ module Petstore class OuterEnumInteger + NMINUS_1 = -1.freeze N0 = 0.freeze N1 = 1.freeze N2 = 2.freeze def self.all_vars - @all_vars ||= [N0, N1, N2].freeze + @all_vars ||= [NMINUS_1, N0, N1, N2].freeze end # Builds the enum from string diff --git a/samples/client/petstore/ruby-httpx/docs/FakeApi.md b/samples/client/petstore/ruby-httpx/docs/FakeApi.md index 1e05788c53ab..a64fa0bc4a35 100644 --- a/samples/client/petstore/ruby-httpx/docs/FakeApi.md +++ b/samples/client/petstore/ruby-httpx/docs/FakeApi.md @@ -497,7 +497,7 @@ require 'time' require 'petstore' api_instance = Petstore::FakeApi.new -outer_object_with_enum_property = Petstore::OuterObjectWithEnumProperty.new({value: Petstore::OuterEnumInteger::N0}) # OuterObjectWithEnumProperty | Input enum (int) as post body +outer_object_with_enum_property = Petstore::OuterObjectWithEnumProperty.new({value: Petstore::OuterEnumInteger::NMINUS_1}) # OuterObjectWithEnumProperty | Input enum (int) as post body begin diff --git a/samples/client/petstore/ruby-httpx/lib/petstore/models/outer_enum_integer.rb b/samples/client/petstore/ruby-httpx/lib/petstore/models/outer_enum_integer.rb index e26193c5a48f..9373d42c5ccd 100644 --- a/samples/client/petstore/ruby-httpx/lib/petstore/models/outer_enum_integer.rb +++ b/samples/client/petstore/ruby-httpx/lib/petstore/models/outer_enum_integer.rb @@ -15,12 +15,13 @@ module Petstore class OuterEnumInteger + NMINUS_1 = -1.freeze N0 = 0.freeze N1 = 1.freeze N2 = 2.freeze def self.all_vars - @all_vars ||= [N0, N1, N2].freeze + @all_vars ||= [NMINUS_1, N0, N1, N2].freeze end # Builds the enum from string diff --git a/samples/client/petstore/ruby/docs/FakeApi.md b/samples/client/petstore/ruby/docs/FakeApi.md index 1dff682f9a2d..57de301f727c 100644 --- a/samples/client/petstore/ruby/docs/FakeApi.md +++ b/samples/client/petstore/ruby/docs/FakeApi.md @@ -497,7 +497,7 @@ require 'time' require 'petstore' api_instance = Petstore::FakeApi.new -outer_object_with_enum_property = Petstore::OuterObjectWithEnumProperty.new({value: Petstore::OuterEnumInteger::N0}) # OuterObjectWithEnumProperty | Input enum (int) as post body +outer_object_with_enum_property = Petstore::OuterObjectWithEnumProperty.new({value: Petstore::OuterEnumInteger::NMINUS_1}) # OuterObjectWithEnumProperty | Input enum (int) as post body begin diff --git a/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer.rb b/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer.rb index e26193c5a48f..9373d42c5ccd 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer.rb @@ -15,12 +15,13 @@ module Petstore class OuterEnumInteger + NMINUS_1 = -1.freeze N0 = 0.freeze N1 = 1.freeze N2 = 2.freeze def self.all_vars - @all_vars ||= [N0, N1, N2].freeze + @all_vars ||= [NMINUS_1, N0, N1, N2].freeze end # Builds the enum from string