[ALL][CLIENT] Fix serialization for query params specified by ref - #11864

Closed
sorin-florea wants to merge 5 commits into
OpenAPITools:masterfrom
sorin-florea:sorin/fix-ref-query-param-explode
Closed

[ALL][CLIENT] Fix serialization for query params specified by ref#11864
sorin-florea wants to merge 5 commits into
OpenAPITools:masterfrom
sorin-florea:sorin/fix-ref-query-param-explode

Conversation

@sorin-florea

Copy link
Copy Markdown
Contributor

Fixes#907

PR checklist

  • Read the contribution guidelines.
  • Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community.
  • Run the following to build the project and update samples:
    ./mvnw clean package ./bin/generate-samples.sh
    ./bin/utils/export_docs_generators.sh
    
    Commit all changed files.
    This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
    These must match the expectations made by your contribution.
    You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example ./bin/generate-samples.sh bin/configs/java*.
    For Windows users, please run the script in Git BASH.
  • File the PR against the correct branch: master (5.3.0), 6.0.x
  • If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request.

@sorin-florea

Copy link
Copy Markdown
ContributorAuthor

@wing328

@sorin-florea
sorin-floreaforce-pushed the sorin/fix-ref-query-param-explode branch from 2f060f2 to 486e7cdCompareMarch 14, 2022 09:52
@sorin-florea

Copy link
Copy Markdown
ContributorAuthor

@wing328 pinging you again

@sorin-florea
sorin-floreaforce-pushed the sorin/fix-ref-query-param-explode branch 2 times, most recently from 89c0ac8 to fee81a3CompareApril 8, 2022 13:57
@sorin-florea

sorin-florea commented Apr 8, 2022

Copy link
Copy Markdown
ContributorAuthor

@guylabs

Copy link
Copy Markdown

Hi,

Any update on this pull request? Would it be possible to add it to another upcoming 6.0.0 beta release?

Thanks and regards.

@wing328

Copy link
Copy Markdown
Member

@sorin-florea thanks for the PR. Please resolve the merge conflicts when you've time.

@sorin-florea
sorin-floreaforce-pushed the sorin/fix-ref-query-param-explode branch from 1d2438b to ef29bd6CompareMay 10, 2022 08:56
@wing328

Copy link
Copy Markdown
Member

Please also merge the latest master into your branch when you've time. Thank you.

…-param-explode
* origin/master:
Add martindelille to code owners (OpenAPITools#12328)
add tests to set httpUserAgent in r client (OpenAPITools#12321)
better error messages for oneOf in java okhttp-gson (OpenAPITools#12311)
[Inline model resolver] various improvements (OpenAPITools#12293)
@sorin-florea
sorin-florea requested a review from wing328May 10, 2022 10:38
@sorin-florea

Copy link
Copy Markdown
ContributorAuthor

@wing328 done. Can you please re-review it?

@wing328

wing328 commented May 13, 2022

Copy link
Copy Markdown
Member

@sorin-florea I tested with modules/openapi-generator/src/test/resources/3_0/issue907.yaml and noticed the following changes in openapi.yaml:

diff --git a/api/openapi.yaml b/api/openapi.yaml
index 998b576..cba8256 100644
--- a/api/openapi.yaml+++ b/api/openapi.yaml@@ -17,12 +17,33 @@ paths:
schema:
type: string
style: simple
- - explode: true+ - $ref: '#/components/schemas/BuildQuery'+ explode: true
in: query
name: BuildQuery
required: false
schema:
- $ref: '#/components/schemas/BuildQuery'+ properties:+ integerProp:+ format: int32+ minimum: 0+ type: integer+ stringProp:+ minLength: 1+ type: string+ booleanProp:+ type: boolean+ arrayProp:+ items:+ minLength: 1+ type: string+ type: array+ objectProp:+ type: object+ numberProp:+ minimum: 0+ type: number+ type: object
style: form
responses:
"200":

In the past few days, we've merged a few PRs to improve the inline model resolver that are doing it the other way around by creating the inline schemas separately and referencing it instead.

Can we keep $ref as it's instead expanding it into the actual schema?

(I'm working on a PR to improve the inline model resolver so that inline schemas defined in the parameters are created separately and referenced using $ref instead)

I'm free in the afternoon (next couple of hours) so feel free to DM me via Slack to discuss this further.

Thanks again for the PR.

Inline model resolver-related PRs merged recently:

@wing328

Copy link
Copy Markdown
Member

One more thing to add is that I don't see changes to the Java classes that fix the serialization for query parameter issue:

➜ java-query git:(master) ✗ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .openapi-generator/FILES
modified: README.md
modified: api/openapi.yaml
modified: docs/DefaultApi.md
modified: src/main/java/org/openapitools/client/ApiException.java
modified: src/main/java/org/openapitools/client/Configuration.java
modified: src/main/java/org/openapitools/client/Pair.java
modified: src/main/java/org/openapitools/client/StringUtil.java
modified: src/main/java/org/openapitools/client/auth/ApiKeyAuth.java
modified: src/main/java/org/openapitools/client/auth/HttpBearerAuth.java
modified: src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java
modified: src/main/java/org/openapitools/client/model/BuildQuery.java
modified: src/main/java/org/openapitools/client/model/SomeReturnValue.java

All the changes to the Java files are due to timestamps change, e.g.

diff --git a/src/main/java/org/openapitools/client/model/BuildQuery.java b/src/main/java/org/openapitools/client/model/BuildQuery.java
index f6fd90d..518a520 100644
--- a/src/main/java/org/openapitools/client/model/BuildQuery.java+++ b/src/main/java/org/openapitools/client/model/BuildQuery.java@@ -50,7 +50,7 @@ import org.openapitools.client.JSON;
/**
* BuildQuery
*/
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2022-05-13T13:18:02.304890+08:00[Asia/Hong_Kong]")+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2022-05-13T13:21:16.933465+08:00[Asia/Hong_Kong]")
public class BuildQuery {
public static final String SERIALIZED_NAME_INTEGER_PROP = "integerProp";
@SerializedName(SERIALIZED_NAME_INTEGER_PROP)

@wing328

Copy link
Copy Markdown
Member

FYI. The issue is addressed by #12369 instead.

@newmen

newmen commented Mar 6, 2024

Copy link
Copy Markdown

As I see, the original PR from @sorin-florea was not merged.
Instead, you referred to #12369, which is clearly not exactly the same as what @sorin-florea did. For example, I don't see the test that was added in #11864 (for issue 907) and nothing same in the master.

@wing328 could you please , instead of an incomprehensible link to another PR, somehow summarize the decision on this fix? Which version contains similar one?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Java] Codegen Bad object serialization when query parameter is Object

4 participants

@sorin-florea@guylabs@wing328@newmen
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

[ALL][CLIENT] Fix serialization for query params specified by ref - #11864

Closed
sorin-florea wants to merge 5 commits into
OpenAPITools:masterfrom
sorin-florea:sorin/fix-ref-query-param-explode
Closed

[ALL][CLIENT] Fix serialization for query params specified by ref#11864
sorin-florea wants to merge 5 commits into
OpenAPITools:masterfrom
sorin-florea:sorin/fix-ref-query-param-explode

Conversation

@sorin-florea

Copy link
Copy Markdown
Contributor

Fixes#907

PR checklist

  • Read the contribution guidelines.
  • Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community.
  • Run the following to build the project and update samples:
    ./mvnw clean package ./bin/generate-samples.sh
    ./bin/utils/export_docs_generators.sh
    
    Commit all changed files.
    This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
    These must match the expectations made by your contribution.
    You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example ./bin/generate-samples.sh bin/configs/java*.
    For Windows users, please run the script in Git BASH.
  • File the PR against the correct branch: master (5.3.0), 6.0.x
  • If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request.

@sorin-florea

Copy link
Copy Markdown
ContributorAuthor

@wing328

@sorin-florea
sorin-floreaforce-pushed the sorin/fix-ref-query-param-explode branch from 2f060f2 to 486e7cdCompareMarch 14, 2022 09:52
@sorin-florea

Copy link
Copy Markdown
ContributorAuthor

@wing328 pinging you again

@sorin-florea
sorin-floreaforce-pushed the sorin/fix-ref-query-param-explode branch 2 times, most recently from 89c0ac8 to fee81a3CompareApril 8, 2022 13:57
@sorin-florea

sorin-florea commented Apr 8, 2022

Copy link
Copy Markdown
ContributorAuthor

@guylabs

Copy link
Copy Markdown

Hi,

Any update on this pull request? Would it be possible to add it to another upcoming 6.0.0 beta release?

Thanks and regards.

@wing328

Copy link
Copy Markdown
Member

@sorin-florea thanks for the PR. Please resolve the merge conflicts when you've time.

@sorin-florea
sorin-floreaforce-pushed the sorin/fix-ref-query-param-explode branch from 1d2438b to ef29bd6CompareMay 10, 2022 08:56
@wing328

Copy link
Copy Markdown
Member

Please also merge the latest master into your branch when you've time. Thank you.

…-param-explode
* origin/master:
Add martindelille to code owners (OpenAPITools#12328)
add tests to set httpUserAgent in r client (OpenAPITools#12321)
better error messages for oneOf in java okhttp-gson (OpenAPITools#12311)
[Inline model resolver] various improvements (OpenAPITools#12293)
@sorin-florea
sorin-florea requested a review from wing328May 10, 2022 10:38
@sorin-florea

Copy link
Copy Markdown
ContributorAuthor

@wing328 done. Can you please re-review it?

@wing328

wing328 commented May 13, 2022

Copy link
Copy Markdown
Member

@sorin-florea I tested with modules/openapi-generator/src/test/resources/3_0/issue907.yaml and noticed the following changes in openapi.yaml:

diff --git a/api/openapi.yaml b/api/openapi.yaml
index 998b576..cba8256 100644
--- a/api/openapi.yaml+++ b/api/openapi.yaml@@ -17,12 +17,33 @@ paths:
schema:
type: string
style: simple
- - explode: true+ - $ref: '#/components/schemas/BuildQuery'+ explode: true
in: query
name: BuildQuery
required: false
schema:
- $ref: '#/components/schemas/BuildQuery'+ properties:+ integerProp:+ format: int32+ minimum: 0+ type: integer+ stringProp:+ minLength: 1+ type: string+ booleanProp:+ type: boolean+ arrayProp:+ items:+ minLength: 1+ type: string+ type: array+ objectProp:+ type: object+ numberProp:+ minimum: 0+ type: number+ type: object
style: form
responses:
"200":

In the past few days, we've merged a few PRs to improve the inline model resolver that are doing it the other way around by creating the inline schemas separately and referencing it instead.

Can we keep $ref as it's instead expanding it into the actual schema?

(I'm working on a PR to improve the inline model resolver so that inline schemas defined in the parameters are created separately and referenced using $ref instead)

I'm free in the afternoon (next couple of hours) so feel free to DM me via Slack to discuss this further.

Thanks again for the PR.

Inline model resolver-related PRs merged recently:

@wing328

Copy link
Copy Markdown
Member

One more thing to add is that I don't see changes to the Java classes that fix the serialization for query parameter issue:

➜ java-query git:(master) ✗ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .openapi-generator/FILES
modified: README.md
modified: api/openapi.yaml
modified: docs/DefaultApi.md
modified: src/main/java/org/openapitools/client/ApiException.java
modified: src/main/java/org/openapitools/client/Configuration.java
modified: src/main/java/org/openapitools/client/Pair.java
modified: src/main/java/org/openapitools/client/StringUtil.java
modified: src/main/java/org/openapitools/client/auth/ApiKeyAuth.java
modified: src/main/java/org/openapitools/client/auth/HttpBearerAuth.java
modified: src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java
modified: src/main/java/org/openapitools/client/model/BuildQuery.java
modified: src/main/java/org/openapitools/client/model/SomeReturnValue.java

All the changes to the Java files are due to timestamps change, e.g.

diff --git a/src/main/java/org/openapitools/client/model/BuildQuery.java b/src/main/java/org/openapitools/client/model/BuildQuery.java
index f6fd90d..518a520 100644
--- a/src/main/java/org/openapitools/client/model/BuildQuery.java+++ b/src/main/java/org/openapitools/client/model/BuildQuery.java@@ -50,7 +50,7 @@ import org.openapitools.client.JSON;
/**
* BuildQuery
*/
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2022-05-13T13:18:02.304890+08:00[Asia/Hong_Kong]")+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2022-05-13T13:21:16.933465+08:00[Asia/Hong_Kong]")
public class BuildQuery {
public static final String SERIALIZED_NAME_INTEGER_PROP = "integerProp";
@SerializedName(SERIALIZED_NAME_INTEGER_PROP)

@wing328

Copy link
Copy Markdown
Member

FYI. The issue is addressed by #12369 instead.

@newmen

newmen commented Mar 6, 2024

Copy link
Copy Markdown

As I see, the original PR from @sorin-florea was not merged.
Instead, you referred to #12369, which is clearly not exactly the same as what @sorin-florea did. For example, I don't see the test that was added in #11864 (for issue 907) and nothing same in the master.

@wing328 could you please , instead of an incomprehensible link to another PR, somehow summarize the decision on this fix? Which version contains similar one?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Java] Codegen Bad object serialization when query parameter is Object

4 participants

@sorin-florea@guylabs@wing328@newmen
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[ALL][CLIENT] Fix serialization for query params specified by ref - #11864

Closed
sorin-florea wants to merge 5 commits into
OpenAPITools:masterfrom
sorin-florea:sorin/fix-ref-query-param-explode
Closed

[ALL][CLIENT] Fix serialization for query params specified by ref#11864
sorin-florea wants to merge 5 commits into
OpenAPITools:masterfrom
sorin-florea:sorin/fix-ref-query-param-explode

Conversation

@sorin-florea

Copy link
Copy Markdown
Contributor

Fixes#907

PR checklist

  • Read the contribution guidelines.
  • Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community.
  • Run the following to build the project and update samples:
    ./mvnw clean package ./bin/generate-samples.sh
    ./bin/utils/export_docs_generators.sh
    
    Commit all changed files.
    This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
    These must match the expectations made by your contribution.
    You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example ./bin/generate-samples.sh bin/configs/java*.
    For Windows users, please run the script in Git BASH.
  • File the PR against the correct branch: master (5.3.0), 6.0.x
  • If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request.

@sorin-florea

Copy link
Copy Markdown
ContributorAuthor

@wing328

@sorin-florea
sorin-floreaforce-pushed the sorin/fix-ref-query-param-explode branch from 2f060f2 to 486e7cdCompareMarch 14, 2022 09:52
@sorin-florea

Copy link
Copy Markdown
ContributorAuthor

@wing328 pinging you again

@sorin-florea
sorin-floreaforce-pushed the sorin/fix-ref-query-param-explode branch 2 times, most recently from 89c0ac8 to fee81a3CompareApril 8, 2022 13:57
@sorin-florea

sorin-florea commented Apr 8, 2022

Copy link
Copy Markdown
ContributorAuthor

@guylabs

Copy link
Copy Markdown

Hi,

Any update on this pull request? Would it be possible to add it to another upcoming 6.0.0 beta release?

Thanks and regards.

@wing328

Copy link
Copy Markdown
Member

@sorin-florea thanks for the PR. Please resolve the merge conflicts when you've time.

@sorin-florea
sorin-floreaforce-pushed the sorin/fix-ref-query-param-explode branch from 1d2438b to ef29bd6CompareMay 10, 2022 08:56
@wing328

Copy link
Copy Markdown
Member

Please also merge the latest master into your branch when you've time. Thank you.

…-param-explode
* origin/master:
Add martindelille to code owners (OpenAPITools#12328)
add tests to set httpUserAgent in r client (OpenAPITools#12321)
better error messages for oneOf in java okhttp-gson (OpenAPITools#12311)
[Inline model resolver] various improvements (OpenAPITools#12293)
@sorin-florea
sorin-florea requested a review from wing328May 10, 2022 10:38
@sorin-florea

Copy link
Copy Markdown
ContributorAuthor

@wing328 done. Can you please re-review it?

@wing328

wing328 commented May 13, 2022

Copy link
Copy Markdown
Member

@sorin-florea I tested with modules/openapi-generator/src/test/resources/3_0/issue907.yaml and noticed the following changes in openapi.yaml:

diff --git a/api/openapi.yaml b/api/openapi.yaml
index 998b576..cba8256 100644
--- a/api/openapi.yaml+++ b/api/openapi.yaml@@ -17,12 +17,33 @@ paths:
schema:
type: string
style: simple
- - explode: true+ - $ref: '#/components/schemas/BuildQuery'+ explode: true
in: query
name: BuildQuery
required: false
schema:
- $ref: '#/components/schemas/BuildQuery'+ properties:+ integerProp:+ format: int32+ minimum: 0+ type: integer+ stringProp:+ minLength: 1+ type: string+ booleanProp:+ type: boolean+ arrayProp:+ items:+ minLength: 1+ type: string+ type: array+ objectProp:+ type: object+ numberProp:+ minimum: 0+ type: number+ type: object
style: form
responses:
"200":

In the past few days, we've merged a few PRs to improve the inline model resolver that are doing it the other way around by creating the inline schemas separately and referencing it instead.

Can we keep $ref as it's instead expanding it into the actual schema?

(I'm working on a PR to improve the inline model resolver so that inline schemas defined in the parameters are created separately and referenced using $ref instead)

I'm free in the afternoon (next couple of hours) so feel free to DM me via Slack to discuss this further.

Thanks again for the PR.

Inline model resolver-related PRs merged recently:

@wing328

Copy link
Copy Markdown
Member

One more thing to add is that I don't see changes to the Java classes that fix the serialization for query parameter issue:

➜ java-query git:(master) ✗ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .openapi-generator/FILES
modified: README.md
modified: api/openapi.yaml
modified: docs/DefaultApi.md
modified: src/main/java/org/openapitools/client/ApiException.java
modified: src/main/java/org/openapitools/client/Configuration.java
modified: src/main/java/org/openapitools/client/Pair.java
modified: src/main/java/org/openapitools/client/StringUtil.java
modified: src/main/java/org/openapitools/client/auth/ApiKeyAuth.java
modified: src/main/java/org/openapitools/client/auth/HttpBearerAuth.java
modified: src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java
modified: src/main/java/org/openapitools/client/model/BuildQuery.java
modified: src/main/java/org/openapitools/client/model/SomeReturnValue.java

All the changes to the Java files are due to timestamps change, e.g.

diff --git a/src/main/java/org/openapitools/client/model/BuildQuery.java b/src/main/java/org/openapitools/client/model/BuildQuery.java
index f6fd90d..518a520 100644
--- a/src/main/java/org/openapitools/client/model/BuildQuery.java+++ b/src/main/java/org/openapitools/client/model/BuildQuery.java@@ -50,7 +50,7 @@ import org.openapitools.client.JSON;
/**
* BuildQuery
*/
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2022-05-13T13:18:02.304890+08:00[Asia/Hong_Kong]")+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2022-05-13T13:21:16.933465+08:00[Asia/Hong_Kong]")
public class BuildQuery {
public static final String SERIALIZED_NAME_INTEGER_PROP = "integerProp";
@SerializedName(SERIALIZED_NAME_INTEGER_PROP)

@wing328

Copy link
Copy Markdown
Member

FYI. The issue is addressed by #12369 instead.

@newmen

newmen commented Mar 6, 2024

Copy link
Copy Markdown

As I see, the original PR from @sorin-florea was not merged.
Instead, you referred to #12369, which is clearly not exactly the same as what @sorin-florea did. For example, I don't see the test that was added in #11864 (for issue 907) and nothing same in the master.

@wing328 could you please , instead of an incomprehensible link to another PR, somehow summarize the decision on this fix? Which version contains similar one?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Java] Codegen Bad object serialization when query parameter is Object

4 participants

@sorin-florea@guylabs@wing328@newmen
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[ALL][CLIENT] Fix serialization for query params specified by ref - #11864

Closed
sorin-florea wants to merge 5 commits into
OpenAPITools:masterfrom
sorin-florea:sorin/fix-ref-query-param-explode
Closed

[ALL][CLIENT] Fix serialization for query params specified by ref#11864
sorin-florea wants to merge 5 commits into
OpenAPITools:masterfrom
sorin-florea:sorin/fix-ref-query-param-explode

Conversation

@sorin-florea

Copy link
Copy Markdown
Contributor

Fixes#907

PR checklist

  • Read the contribution guidelines.
  • Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community.
  • Run the following to build the project and update samples:
    ./mvnw clean package ./bin/generate-samples.sh
    ./bin/utils/export_docs_generators.sh
    
    Commit all changed files.
    This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
    These must match the expectations made by your contribution.
    You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example ./bin/generate-samples.sh bin/configs/java*.
    For Windows users, please run the script in Git BASH.
  • File the PR against the correct branch: master (5.3.0), 6.0.x
  • If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request.

@sorin-florea

Copy link
Copy Markdown
ContributorAuthor

@wing328

@sorin-florea
sorin-floreaforce-pushed the sorin/fix-ref-query-param-explode branch from 2f060f2 to 486e7cdCompareMarch 14, 2022 09:52
@sorin-florea

Copy link
Copy Markdown
ContributorAuthor

@wing328 pinging you again

@sorin-florea
sorin-floreaforce-pushed the sorin/fix-ref-query-param-explode branch 2 times, most recently from 89c0ac8 to fee81a3CompareApril 8, 2022 13:57
@sorin-florea

sorin-florea commented Apr 8, 2022

Copy link
Copy Markdown
ContributorAuthor

@guylabs

Copy link
Copy Markdown

Hi,

Any update on this pull request? Would it be possible to add it to another upcoming 6.0.0 beta release?

Thanks and regards.

@wing328

Copy link
Copy Markdown
Member

@sorin-florea thanks for the PR. Please resolve the merge conflicts when you've time.

@sorin-florea
sorin-floreaforce-pushed the sorin/fix-ref-query-param-explode branch from 1d2438b to ef29bd6CompareMay 10, 2022 08:56
@wing328

Copy link
Copy Markdown
Member

Please also merge the latest master into your branch when you've time. Thank you.

…-param-explode
* origin/master:
Add martindelille to code owners (OpenAPITools#12328)
add tests to set httpUserAgent in r client (OpenAPITools#12321)
better error messages for oneOf in java okhttp-gson (OpenAPITools#12311)
[Inline model resolver] various improvements (OpenAPITools#12293)
@sorin-florea
sorin-florea requested a review from wing328May 10, 2022 10:38
@sorin-florea

Copy link
Copy Markdown
ContributorAuthor

@wing328 done. Can you please re-review it?

@wing328

wing328 commented May 13, 2022

Copy link
Copy Markdown
Member

@sorin-florea I tested with modules/openapi-generator/src/test/resources/3_0/issue907.yaml and noticed the following changes in openapi.yaml:

diff --git a/api/openapi.yaml b/api/openapi.yaml
index 998b576..cba8256 100644
--- a/api/openapi.yaml+++ b/api/openapi.yaml@@ -17,12 +17,33 @@ paths:
schema:
type: string
style: simple
- - explode: true+ - $ref: '#/components/schemas/BuildQuery'+ explode: true
in: query
name: BuildQuery
required: false
schema:
- $ref: '#/components/schemas/BuildQuery'+ properties:+ integerProp:+ format: int32+ minimum: 0+ type: integer+ stringProp:+ minLength: 1+ type: string+ booleanProp:+ type: boolean+ arrayProp:+ items:+ minLength: 1+ type: string+ type: array+ objectProp:+ type: object+ numberProp:+ minimum: 0+ type: number+ type: object
style: form
responses:
"200":

In the past few days, we've merged a few PRs to improve the inline model resolver that are doing it the other way around by creating the inline schemas separately and referencing it instead.

Can we keep $ref as it's instead expanding it into the actual schema?

(I'm working on a PR to improve the inline model resolver so that inline schemas defined in the parameters are created separately and referenced using $ref instead)

I'm free in the afternoon (next couple of hours) so feel free to DM me via Slack to discuss this further.

Thanks again for the PR.

Inline model resolver-related PRs merged recently:

@wing328

Copy link
Copy Markdown
Member

One more thing to add is that I don't see changes to the Java classes that fix the serialization for query parameter issue:

➜ java-query git:(master) ✗ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .openapi-generator/FILES
modified: README.md
modified: api/openapi.yaml
modified: docs/DefaultApi.md
modified: src/main/java/org/openapitools/client/ApiException.java
modified: src/main/java/org/openapitools/client/Configuration.java
modified: src/main/java/org/openapitools/client/Pair.java
modified: src/main/java/org/openapitools/client/StringUtil.java
modified: src/main/java/org/openapitools/client/auth/ApiKeyAuth.java
modified: src/main/java/org/openapitools/client/auth/HttpBearerAuth.java
modified: src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java
modified: src/main/java/org/openapitools/client/model/BuildQuery.java
modified: src/main/java/org/openapitools/client/model/SomeReturnValue.java

All the changes to the Java files are due to timestamps change, e.g.

diff --git a/src/main/java/org/openapitools/client/model/BuildQuery.java b/src/main/java/org/openapitools/client/model/BuildQuery.java
index f6fd90d..518a520 100644
--- a/src/main/java/org/openapitools/client/model/BuildQuery.java+++ b/src/main/java/org/openapitools/client/model/BuildQuery.java@@ -50,7 +50,7 @@ import org.openapitools.client.JSON;
/**
* BuildQuery
*/
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2022-05-13T13:18:02.304890+08:00[Asia/Hong_Kong]")+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2022-05-13T13:21:16.933465+08:00[Asia/Hong_Kong]")
public class BuildQuery {
public static final String SERIALIZED_NAME_INTEGER_PROP = "integerProp";
@SerializedName(SERIALIZED_NAME_INTEGER_PROP)

@wing328

Copy link
Copy Markdown
Member

FYI. The issue is addressed by #12369 instead.

@newmen

newmen commented Mar 6, 2024

Copy link
Copy Markdown

As I see, the original PR from @sorin-florea was not merged.
Instead, you referred to #12369, which is clearly not exactly the same as what @sorin-florea did. For example, I don't see the test that was added in #11864 (for issue 907) and nothing same in the master.

@wing328 could you please , instead of an incomprehensible link to another PR, somehow summarize the decision on this fix? Which version contains similar one?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Java] Codegen Bad object serialization when query parameter is Object

4 participants

@sorin-florea@guylabs@wing328@newmen
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

[ALL][CLIENT] Fix serialization for query params specified by ref - #11864

Closed
sorin-florea wants to merge 5 commits into
OpenAPITools:masterfrom
sorin-florea:sorin/fix-ref-query-param-explode
Closed

[ALL][CLIENT] Fix serialization for query params specified by ref#11864
sorin-florea wants to merge 5 commits into
OpenAPITools:masterfrom
sorin-florea:sorin/fix-ref-query-param-explode

Conversation

@sorin-florea

Copy link
Copy Markdown
Contributor

Fixes#907

PR checklist

  • Read the contribution guidelines.
  • Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community.
  • Run the following to build the project and update samples:
    ./mvnw clean package ./bin/generate-samples.sh
    ./bin/utils/export_docs_generators.sh
    
    Commit all changed files.
    This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
    These must match the expectations made by your contribution.
    You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example ./bin/generate-samples.sh bin/configs/java*.
    For Windows users, please run the script in Git BASH.
  • File the PR against the correct branch: master (5.3.0), 6.0.x
  • If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request.

@sorin-florea

Copy link
Copy Markdown
ContributorAuthor

@wing328

@sorin-florea
sorin-floreaforce-pushed the sorin/fix-ref-query-param-explode branch from 2f060f2 to 486e7cdCompareMarch 14, 2022 09:52
@sorin-florea

Copy link
Copy Markdown
ContributorAuthor

@wing328 pinging you again

@sorin-florea
sorin-floreaforce-pushed the sorin/fix-ref-query-param-explode branch 2 times, most recently from 89c0ac8 to fee81a3CompareApril 8, 2022 13:57
@sorin-florea

sorin-florea commented Apr 8, 2022

Copy link
Copy Markdown
ContributorAuthor

@guylabs

Copy link
Copy Markdown

Hi,

Any update on this pull request? Would it be possible to add it to another upcoming 6.0.0 beta release?

Thanks and regards.

@wing328

Copy link
Copy Markdown
Member

@sorin-florea thanks for the PR. Please resolve the merge conflicts when you've time.

@sorin-florea
sorin-floreaforce-pushed the sorin/fix-ref-query-param-explode branch from 1d2438b to ef29bd6CompareMay 10, 2022 08:56
@wing328

Copy link
Copy Markdown
Member

Please also merge the latest master into your branch when you've time. Thank you.

…-param-explode
* origin/master:
Add martindelille to code owners (OpenAPITools#12328)
add tests to set httpUserAgent in r client (OpenAPITools#12321)
better error messages for oneOf in java okhttp-gson (OpenAPITools#12311)
[Inline model resolver] various improvements (OpenAPITools#12293)
@sorin-florea
sorin-florea requested a review from wing328May 10, 2022 10:38
@sorin-florea

Copy link
Copy Markdown
ContributorAuthor

@wing328 done. Can you please re-review it?

@wing328

wing328 commented May 13, 2022

Copy link
Copy Markdown
Member

@sorin-florea I tested with modules/openapi-generator/src/test/resources/3_0/issue907.yaml and noticed the following changes in openapi.yaml:

diff --git a/api/openapi.yaml b/api/openapi.yaml
index 998b576..cba8256 100644
--- a/api/openapi.yaml+++ b/api/openapi.yaml@@ -17,12 +17,33 @@ paths:
schema:
type: string
style: simple
- - explode: true+ - $ref: '#/components/schemas/BuildQuery'+ explode: true
in: query
name: BuildQuery
required: false
schema:
- $ref: '#/components/schemas/BuildQuery'+ properties:+ integerProp:+ format: int32+ minimum: 0+ type: integer+ stringProp:+ minLength: 1+ type: string+ booleanProp:+ type: boolean+ arrayProp:+ items:+ minLength: 1+ type: string+ type: array+ objectProp:+ type: object+ numberProp:+ minimum: 0+ type: number+ type: object
style: form
responses:
"200":

In the past few days, we've merged a few PRs to improve the inline model resolver that are doing it the other way around by creating the inline schemas separately and referencing it instead.

Can we keep $ref as it's instead expanding it into the actual schema?

(I'm working on a PR to improve the inline model resolver so that inline schemas defined in the parameters are created separately and referenced using $ref instead)

I'm free in the afternoon (next couple of hours) so feel free to DM me via Slack to discuss this further.

Thanks again for the PR.

Inline model resolver-related PRs merged recently:

@wing328

Copy link
Copy Markdown
Member

One more thing to add is that I don't see changes to the Java classes that fix the serialization for query parameter issue:

➜ java-query git:(master) ✗ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .openapi-generator/FILES
modified: README.md
modified: api/openapi.yaml
modified: docs/DefaultApi.md
modified: src/main/java/org/openapitools/client/ApiException.java
modified: src/main/java/org/openapitools/client/Configuration.java
modified: src/main/java/org/openapitools/client/Pair.java
modified: src/main/java/org/openapitools/client/StringUtil.java
modified: src/main/java/org/openapitools/client/auth/ApiKeyAuth.java
modified: src/main/java/org/openapitools/client/auth/HttpBearerAuth.java
modified: src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java
modified: src/main/java/org/openapitools/client/model/BuildQuery.java
modified: src/main/java/org/openapitools/client/model/SomeReturnValue.java

All the changes to the Java files are due to timestamps change, e.g.

diff --git a/src/main/java/org/openapitools/client/model/BuildQuery.java b/src/main/java/org/openapitools/client/model/BuildQuery.java
index f6fd90d..518a520 100644
--- a/src/main/java/org/openapitools/client/model/BuildQuery.java+++ b/src/main/java/org/openapitools/client/model/BuildQuery.java@@ -50,7 +50,7 @@ import org.openapitools.client.JSON;
/**
* BuildQuery
*/
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2022-05-13T13:18:02.304890+08:00[Asia/Hong_Kong]")+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2022-05-13T13:21:16.933465+08:00[Asia/Hong_Kong]")
public class BuildQuery {
public static final String SERIALIZED_NAME_INTEGER_PROP = "integerProp";
@SerializedName(SERIALIZED_NAME_INTEGER_PROP)

@wing328

Copy link
Copy Markdown
Member

FYI. The issue is addressed by #12369 instead.

@newmen

newmen commented Mar 6, 2024

Copy link
Copy Markdown

As I see, the original PR from @sorin-florea was not merged.
Instead, you referred to #12369, which is clearly not exactly the same as what @sorin-florea did. For example, I don't see the test that was added in #11864 (for issue 907) and nothing same in the master.

@wing328 could you please , instead of an incomprehensible link to another PR, somehow summarize the decision on this fix? Which version contains similar one?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Java] Codegen Bad object serialization when query parameter is Object

4 participants

@sorin-florea@guylabs@wing328@newmen
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[ALL][CLIENT] Fix serialization for query params specified by ref - #11864

Closed
sorin-florea wants to merge 5 commits into
OpenAPITools:masterfrom
sorin-florea:sorin/fix-ref-query-param-explode
Closed

[ALL][CLIENT] Fix serialization for query params specified by ref#11864
sorin-florea wants to merge 5 commits into
OpenAPITools:masterfrom
sorin-florea:sorin/fix-ref-query-param-explode

Conversation

@sorin-florea

Copy link
Copy Markdown
Contributor

Fixes#907

PR checklist

  • Read the contribution guidelines.
  • Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community.
  • Run the following to build the project and update samples:
    ./mvnw clean package ./bin/generate-samples.sh
    ./bin/utils/export_docs_generators.sh
    
    Commit all changed files.
    This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
    These must match the expectations made by your contribution.
    You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example ./bin/generate-samples.sh bin/configs/java*.
    For Windows users, please run the script in Git BASH.
  • File the PR against the correct branch: master (5.3.0), 6.0.x
  • If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request.

@sorin-florea

Copy link
Copy Markdown
ContributorAuthor

@wing328

@sorin-florea
sorin-floreaforce-pushed the sorin/fix-ref-query-param-explode branch from 2f060f2 to 486e7cdCompareMarch 14, 2022 09:52
@sorin-florea

Copy link
Copy Markdown
ContributorAuthor

@wing328 pinging you again

@sorin-florea
sorin-floreaforce-pushed the sorin/fix-ref-query-param-explode branch 2 times, most recently from 89c0ac8 to fee81a3CompareApril 8, 2022 13:57
@sorin-florea

sorin-florea commented Apr 8, 2022

Copy link
Copy Markdown
ContributorAuthor

@guylabs

Copy link
Copy Markdown

Hi,

Any update on this pull request? Would it be possible to add it to another upcoming 6.0.0 beta release?

Thanks and regards.

@wing328

Copy link
Copy Markdown
Member

@sorin-florea thanks for the PR. Please resolve the merge conflicts when you've time.

@sorin-florea
sorin-floreaforce-pushed the sorin/fix-ref-query-param-explode branch from 1d2438b to ef29bd6CompareMay 10, 2022 08:56
@wing328

Copy link
Copy Markdown
Member

Please also merge the latest master into your branch when you've time. Thank you.

…-param-explode
* origin/master:
Add martindelille to code owners (OpenAPITools#12328)
add tests to set httpUserAgent in r client (OpenAPITools#12321)
better error messages for oneOf in java okhttp-gson (OpenAPITools#12311)
[Inline model resolver] various improvements (OpenAPITools#12293)
@sorin-florea
sorin-florea requested a review from wing328May 10, 2022 10:38
@sorin-florea

Copy link
Copy Markdown
ContributorAuthor

@wing328 done. Can you please re-review it?

@wing328

wing328 commented May 13, 2022

Copy link
Copy Markdown
Member

@sorin-florea I tested with modules/openapi-generator/src/test/resources/3_0/issue907.yaml and noticed the following changes in openapi.yaml:

diff --git a/api/openapi.yaml b/api/openapi.yaml
index 998b576..cba8256 100644
--- a/api/openapi.yaml+++ b/api/openapi.yaml@@ -17,12 +17,33 @@ paths:
schema:
type: string
style: simple
- - explode: true+ - $ref: '#/components/schemas/BuildQuery'+ explode: true
in: query
name: BuildQuery
required: false
schema:
- $ref: '#/components/schemas/BuildQuery'+ properties:+ integerProp:+ format: int32+ minimum: 0+ type: integer+ stringProp:+ minLength: 1+ type: string+ booleanProp:+ type: boolean+ arrayProp:+ items:+ minLength: 1+ type: string+ type: array+ objectProp:+ type: object+ numberProp:+ minimum: 0+ type: number+ type: object
style: form
responses:
"200":

In the past few days, we've merged a few PRs to improve the inline model resolver that are doing it the other way around by creating the inline schemas separately and referencing it instead.

Can we keep $ref as it's instead expanding it into the actual schema?

(I'm working on a PR to improve the inline model resolver so that inline schemas defined in the parameters are created separately and referenced using $ref instead)

I'm free in the afternoon (next couple of hours) so feel free to DM me via Slack to discuss this further.

Thanks again for the PR.

Inline model resolver-related PRs merged recently:

@wing328

Copy link
Copy Markdown
Member

One more thing to add is that I don't see changes to the Java classes that fix the serialization for query parameter issue:

➜ java-query git:(master) ✗ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .openapi-generator/FILES
modified: README.md
modified: api/openapi.yaml
modified: docs/DefaultApi.md
modified: src/main/java/org/openapitools/client/ApiException.java
modified: src/main/java/org/openapitools/client/Configuration.java
modified: src/main/java/org/openapitools/client/Pair.java
modified: src/main/java/org/openapitools/client/StringUtil.java
modified: src/main/java/org/openapitools/client/auth/ApiKeyAuth.java
modified: src/main/java/org/openapitools/client/auth/HttpBearerAuth.java
modified: src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java
modified: src/main/java/org/openapitools/client/model/BuildQuery.java
modified: src/main/java/org/openapitools/client/model/SomeReturnValue.java

All the changes to the Java files are due to timestamps change, e.g.

diff --git a/src/main/java/org/openapitools/client/model/BuildQuery.java b/src/main/java/org/openapitools/client/model/BuildQuery.java
index f6fd90d..518a520 100644
--- a/src/main/java/org/openapitools/client/model/BuildQuery.java+++ b/src/main/java/org/openapitools/client/model/BuildQuery.java@@ -50,7 +50,7 @@ import org.openapitools.client.JSON;
/**
* BuildQuery
*/
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2022-05-13T13:18:02.304890+08:00[Asia/Hong_Kong]")+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2022-05-13T13:21:16.933465+08:00[Asia/Hong_Kong]")
public class BuildQuery {
public static final String SERIALIZED_NAME_INTEGER_PROP = "integerProp";
@SerializedName(SERIALIZED_NAME_INTEGER_PROP)

@wing328

Copy link
Copy Markdown
Member

FYI. The issue is addressed by #12369 instead.

@newmen

newmen commented Mar 6, 2024

Copy link
Copy Markdown

As I see, the original PR from @sorin-florea was not merged.
Instead, you referred to #12369, which is clearly not exactly the same as what @sorin-florea did. For example, I don't see the test that was added in #11864 (for issue 907) and nothing same in the master.

@wing328 could you please , instead of an incomprehensible link to another PR, somehow summarize the decision on this fix? Which version contains similar one?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Java] Codegen Bad object serialization when query parameter is Object

4 participants

@sorin-florea@guylabs@wing328@newmen
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[ALL][CLIENT] Fix serialization for query params specified by ref - #11864

Closed
sorin-florea wants to merge 5 commits into
OpenAPITools:masterfrom
sorin-florea:sorin/fix-ref-query-param-explode
Closed

[ALL][CLIENT] Fix serialization for query params specified by ref#11864
sorin-florea wants to merge 5 commits into
OpenAPITools:masterfrom
sorin-florea:sorin/fix-ref-query-param-explode

Conversation

@sorin-florea

Copy link
Copy Markdown
Contributor

Fixes#907

PR checklist

  • Read the contribution guidelines.
  • Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community.
  • Run the following to build the project and update samples:
    ./mvnw clean package ./bin/generate-samples.sh
    ./bin/utils/export_docs_generators.sh
    
    Commit all changed files.
    This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
    These must match the expectations made by your contribution.
    You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example ./bin/generate-samples.sh bin/configs/java*.
    For Windows users, please run the script in Git BASH.
  • File the PR against the correct branch: master (5.3.0), 6.0.x
  • If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request.

@sorin-florea

Copy link
Copy Markdown
ContributorAuthor

@wing328

@sorin-florea
sorin-floreaforce-pushed the sorin/fix-ref-query-param-explode branch from 2f060f2 to 486e7cdCompareMarch 14, 2022 09:52
@sorin-florea

Copy link
Copy Markdown
ContributorAuthor

@wing328 pinging you again

@sorin-florea
sorin-floreaforce-pushed the sorin/fix-ref-query-param-explode branch 2 times, most recently from 89c0ac8 to fee81a3CompareApril 8, 2022 13:57
@sorin-florea

sorin-florea commented Apr 8, 2022

Copy link
Copy Markdown
ContributorAuthor

@guylabs

Copy link
Copy Markdown

Hi,

Any update on this pull request? Would it be possible to add it to another upcoming 6.0.0 beta release?

Thanks and regards.

@wing328

Copy link
Copy Markdown
Member

@sorin-florea thanks for the PR. Please resolve the merge conflicts when you've time.

@sorin-florea
sorin-floreaforce-pushed the sorin/fix-ref-query-param-explode branch from 1d2438b to ef29bd6CompareMay 10, 2022 08:56
@wing328

Copy link
Copy Markdown
Member

Please also merge the latest master into your branch when you've time. Thank you.

…-param-explode
* origin/master:
Add martindelille to code owners (OpenAPITools#12328)
add tests to set httpUserAgent in r client (OpenAPITools#12321)
better error messages for oneOf in java okhttp-gson (OpenAPITools#12311)
[Inline model resolver] various improvements (OpenAPITools#12293)
@sorin-florea
sorin-florea requested a review from wing328May 10, 2022 10:38
@sorin-florea

Copy link
Copy Markdown
ContributorAuthor

@wing328 done. Can you please re-review it?

@wing328

wing328 commented May 13, 2022

Copy link
Copy Markdown
Member

@sorin-florea I tested with modules/openapi-generator/src/test/resources/3_0/issue907.yaml and noticed the following changes in openapi.yaml:

diff --git a/api/openapi.yaml b/api/openapi.yaml
index 998b576..cba8256 100644
--- a/api/openapi.yaml+++ b/api/openapi.yaml@@ -17,12 +17,33 @@ paths:
schema:
type: string
style: simple
- - explode: true+ - $ref: '#/components/schemas/BuildQuery'+ explode: true
in: query
name: BuildQuery
required: false
schema:
- $ref: '#/components/schemas/BuildQuery'+ properties:+ integerProp:+ format: int32+ minimum: 0+ type: integer+ stringProp:+ minLength: 1+ type: string+ booleanProp:+ type: boolean+ arrayProp:+ items:+ minLength: 1+ type: string+ type: array+ objectProp:+ type: object+ numberProp:+ minimum: 0+ type: number+ type: object
style: form
responses:
"200":

In the past few days, we've merged a few PRs to improve the inline model resolver that are doing it the other way around by creating the inline schemas separately and referencing it instead.

Can we keep $ref as it's instead expanding it into the actual schema?

(I'm working on a PR to improve the inline model resolver so that inline schemas defined in the parameters are created separately and referenced using $ref instead)

I'm free in the afternoon (next couple of hours) so feel free to DM me via Slack to discuss this further.

Thanks again for the PR.

Inline model resolver-related PRs merged recently:

@wing328

Copy link
Copy Markdown
Member

One more thing to add is that I don't see changes to the Java classes that fix the serialization for query parameter issue:

➜ java-query git:(master) ✗ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .openapi-generator/FILES
modified: README.md
modified: api/openapi.yaml
modified: docs/DefaultApi.md
modified: src/main/java/org/openapitools/client/ApiException.java
modified: src/main/java/org/openapitools/client/Configuration.java
modified: src/main/java/org/openapitools/client/Pair.java
modified: src/main/java/org/openapitools/client/StringUtil.java
modified: src/main/java/org/openapitools/client/auth/ApiKeyAuth.java
modified: src/main/java/org/openapitools/client/auth/HttpBearerAuth.java
modified: src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java
modified: src/main/java/org/openapitools/client/model/BuildQuery.java
modified: src/main/java/org/openapitools/client/model/SomeReturnValue.java

All the changes to the Java files are due to timestamps change, e.g.

diff --git a/src/main/java/org/openapitools/client/model/BuildQuery.java b/src/main/java/org/openapitools/client/model/BuildQuery.java
index f6fd90d..518a520 100644
--- a/src/main/java/org/openapitools/client/model/BuildQuery.java+++ b/src/main/java/org/openapitools/client/model/BuildQuery.java@@ -50,7 +50,7 @@ import org.openapitools.client.JSON;
/**
* BuildQuery
*/
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2022-05-13T13:18:02.304890+08:00[Asia/Hong_Kong]")+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2022-05-13T13:21:16.933465+08:00[Asia/Hong_Kong]")
public class BuildQuery {
public static final String SERIALIZED_NAME_INTEGER_PROP = "integerProp";
@SerializedName(SERIALIZED_NAME_INTEGER_PROP)

@wing328

Copy link
Copy Markdown
Member

FYI. The issue is addressed by #12369 instead.

@newmen

newmen commented Mar 6, 2024

Copy link
Copy Markdown

As I see, the original PR from @sorin-florea was not merged.
Instead, you referred to #12369, which is clearly not exactly the same as what @sorin-florea did. For example, I don't see the test that was added in #11864 (for issue 907) and nothing same in the master.

@wing328 could you please , instead of an incomprehensible link to another PR, somehow summarize the decision on this fix? Which version contains similar one?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Java] Codegen Bad object serialization when query parameter is Object

4 participants

@sorin-florea@guylabs@wing328@newmen
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

[ALL][CLIENT] Fix serialization for query params specified by ref - #11864

Closed
sorin-florea wants to merge 5 commits into
OpenAPITools:masterfrom
sorin-florea:sorin/fix-ref-query-param-explode
Closed

[ALL][CLIENT] Fix serialization for query params specified by ref#11864
sorin-florea wants to merge 5 commits into
OpenAPITools:masterfrom
sorin-florea:sorin/fix-ref-query-param-explode

Conversation

@sorin-florea

Copy link
Copy Markdown
Contributor

Fixes#907

PR checklist

  • Read the contribution guidelines.
  • Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community.
  • Run the following to build the project and update samples:
    ./mvnw clean package ./bin/generate-samples.sh
    ./bin/utils/export_docs_generators.sh
    
    Commit all changed files.
    This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
    These must match the expectations made by your contribution.
    You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example ./bin/generate-samples.sh bin/configs/java*.
    For Windows users, please run the script in Git BASH.
  • File the PR against the correct branch: master (5.3.0), 6.0.x
  • If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request.

@sorin-florea

Copy link
Copy Markdown
ContributorAuthor

@wing328

@sorin-florea
sorin-floreaforce-pushed the sorin/fix-ref-query-param-explode branch from 2f060f2 to 486e7cdCompareMarch 14, 2022 09:52
@sorin-florea

Copy link
Copy Markdown
ContributorAuthor

@wing328 pinging you again

@sorin-florea
sorin-floreaforce-pushed the sorin/fix-ref-query-param-explode branch 2 times, most recently from 89c0ac8 to fee81a3CompareApril 8, 2022 13:57
@sorin-florea

sorin-florea commented Apr 8, 2022

Copy link
Copy Markdown
ContributorAuthor

@guylabs

Copy link
Copy Markdown

Hi,

Any update on this pull request? Would it be possible to add it to another upcoming 6.0.0 beta release?

Thanks and regards.

@wing328

Copy link
Copy Markdown
Member

@sorin-florea thanks for the PR. Please resolve the merge conflicts when you've time.

@sorin-florea
sorin-floreaforce-pushed the sorin/fix-ref-query-param-explode branch from 1d2438b to ef29bd6CompareMay 10, 2022 08:56
@wing328

Copy link
Copy Markdown
Member

Please also merge the latest master into your branch when you've time. Thank you.

…-param-explode
* origin/master:
Add martindelille to code owners (OpenAPITools#12328)
add tests to set httpUserAgent in r client (OpenAPITools#12321)
better error messages for oneOf in java okhttp-gson (OpenAPITools#12311)
[Inline model resolver] various improvements (OpenAPITools#12293)
@sorin-florea
sorin-florea requested a review from wing328May 10, 2022 10:38
@sorin-florea

Copy link
Copy Markdown
ContributorAuthor

@wing328 done. Can you please re-review it?

@wing328

wing328 commented May 13, 2022

Copy link
Copy Markdown
Member

@sorin-florea I tested with modules/openapi-generator/src/test/resources/3_0/issue907.yaml and noticed the following changes in openapi.yaml:

diff --git a/api/openapi.yaml b/api/openapi.yaml
index 998b576..cba8256 100644
--- a/api/openapi.yaml+++ b/api/openapi.yaml@@ -17,12 +17,33 @@ paths:
schema:
type: string
style: simple
- - explode: true+ - $ref: '#/components/schemas/BuildQuery'+ explode: true
in: query
name: BuildQuery
required: false
schema:
- $ref: '#/components/schemas/BuildQuery'+ properties:+ integerProp:+ format: int32+ minimum: 0+ type: integer+ stringProp:+ minLength: 1+ type: string+ booleanProp:+ type: boolean+ arrayProp:+ items:+ minLength: 1+ type: string+ type: array+ objectProp:+ type: object+ numberProp:+ minimum: 0+ type: number+ type: object
style: form
responses:
"200":

In the past few days, we've merged a few PRs to improve the inline model resolver that are doing it the other way around by creating the inline schemas separately and referencing it instead.

Can we keep $ref as it's instead expanding it into the actual schema?

(I'm working on a PR to improve the inline model resolver so that inline schemas defined in the parameters are created separately and referenced using $ref instead)

I'm free in the afternoon (next couple of hours) so feel free to DM me via Slack to discuss this further.

Thanks again for the PR.

Inline model resolver-related PRs merged recently:

@wing328

Copy link
Copy Markdown
Member

One more thing to add is that I don't see changes to the Java classes that fix the serialization for query parameter issue:

➜ java-query git:(master) ✗ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .openapi-generator/FILES
modified: README.md
modified: api/openapi.yaml
modified: docs/DefaultApi.md
modified: src/main/java/org/openapitools/client/ApiException.java
modified: src/main/java/org/openapitools/client/Configuration.java
modified: src/main/java/org/openapitools/client/Pair.java
modified: src/main/java/org/openapitools/client/StringUtil.java
modified: src/main/java/org/openapitools/client/auth/ApiKeyAuth.java
modified: src/main/java/org/openapitools/client/auth/HttpBearerAuth.java
modified: src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java
modified: src/main/java/org/openapitools/client/model/BuildQuery.java
modified: src/main/java/org/openapitools/client/model/SomeReturnValue.java

All the changes to the Java files are due to timestamps change, e.g.

diff --git a/src/main/java/org/openapitools/client/model/BuildQuery.java b/src/main/java/org/openapitools/client/model/BuildQuery.java
index f6fd90d..518a520 100644
--- a/src/main/java/org/openapitools/client/model/BuildQuery.java+++ b/src/main/java/org/openapitools/client/model/BuildQuery.java@@ -50,7 +50,7 @@ import org.openapitools.client.JSON;
/**
* BuildQuery
*/
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2022-05-13T13:18:02.304890+08:00[Asia/Hong_Kong]")+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2022-05-13T13:21:16.933465+08:00[Asia/Hong_Kong]")
public class BuildQuery {
public static final String SERIALIZED_NAME_INTEGER_PROP = "integerProp";
@SerializedName(SERIALIZED_NAME_INTEGER_PROP)

@wing328

Copy link
Copy Markdown
Member

FYI. The issue is addressed by #12369 instead.

@newmen

newmen commented Mar 6, 2024

Copy link
Copy Markdown

As I see, the original PR from @sorin-florea was not merged.
Instead, you referred to #12369, which is clearly not exactly the same as what @sorin-florea did. For example, I don't see the test that was added in #11864 (for issue 907) and nothing same in the master.

@wing328 could you please , instead of an incomprehensible link to another PR, somehow summarize the decision on this fix? Which version contains similar one?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Java] Codegen Bad object serialization when query parameter is Object

4 participants

@sorin-florea@guylabs@wing328@newmen