| react-profiling | 0 |
| react-import-map | react,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf |
| route-pattern | /_view_fragments/voltron/pull_requests/show/:user_id/:repository/:id/pull_request_layout(.:format) |
| route-controller | voltron_pull_requests_fragments |
| route-action | pull_request_layout |
| fetch-nonce | v2:80f66f0f-c840-a209-4cc9-da0eb40312b9 |
| current-catalog-service-hash | ae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b |
| request-id | 96D6:3F64F:74E3C7:97AD24:6AED315A |
| html-safe-nonce | 251f2badb2f03343008a1875589b4fa0b550f8e31456f0d197058064ed2f9ebd |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5NkQ2OjNGNjRGOjc0RTNDNzo5N0FEMjQ6NkFFRDMxNUEiLCJ2aXNpdG9yX2lkIjoiMzYzMzEwOTAwMjA3NDUzNDIzNCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 86f6061257f8997b457d2de427d0f0c2e2aab0873a3220b7a9d07bceaecd5263 |
| hovercard-subject-tag | pull_request:3730664468 |
| github-keyboard-shortcuts | repository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | ///voltron/pull_requests_fragments/pull_request_layout |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/voltron/pull_requests/show/extenda/openapi-httpserver-java/97/pull_request_layout |
| twitter:image | https://opengraph.githubassets.com/5cc3e663524a7a583dd23d50bebf3d3ce2f5ba4dea5604cd610b5386a1ef638e/extenda/openapi-httpserver-java/pull/97 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/5cc3e663524a7a583dd23d50bebf3d3ce2f5ba4dea5604cd610b5386a1ef638e/extenda/openapi-httpserver-java/pull/97 |
| og:image:alt | Summary
Adds OpenApiServer.Builder.addSpec(spec, handlers, validators) so one server can host multiple OpenAPI specs (e.g. v1/v2 side-by-side or public + admin in one process)
Each spec is mounted... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | thced |
| hostname | github.com |
| expected-hostname | github.com |
| None | e51d0b7b5ab34b1688c05b54c3ed17b8658b2fa9bca973a9c740683ccb12cf4a |
| turbo-cache-control | no-cache |
| go-import | github.com/extenda/openapi-httpserver-java git https://github.com/extenda/openapi-httpserver-java.git |
| octolytics-dimension-user_id | 5753979 |
| octolytics-dimension-user_login | extenda |
| octolytics-dimension-repository_id | 882991450 |
| octolytics-dimension-repository_nwo | extenda/openapi-httpserver-java |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 882991450 |
| octolytics-dimension-repository_network_root_nwo | extenda/openapi-httpserver-java |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 59ebb7b901cc154ecc179a44f266fcf69f343b30 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
| react-app-name | pull-requests |
| Skip to content | https://github.com/extenda/openapi-httpserver-java/pull/97#start-of-content |
| https://github.com/ |
| Sign in | https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fextenda%2Fopenapi-httpserver-java%2Fpull%2F97 |
| GitHubRepository hosting, code review, and collaboration | https://github.com/platform |
| CopilotAI coding agent for tasks, projects, and automated work | https://github.com/features/copilot |
| ActionsCI/CD and automation | https://github.com/features/actions |
| Code QualityQuality analysis, fixes, and enforcement | https://github.com/features/code-quality |
| CodespacesCloud development environments | https://github.com/features/codespaces |
| Code SecurityVulnerability detection and remediation | https://github.com/security/advanced-security/code-security |
| Secret ProtectionSecret scanning and leak prevention | https://github.com/security/advanced-security/secret-protection |
| All Features | https://github.com/features |
| Documentation | https://docs.github.com/en |
| Training | https://learn.github.com/skills |
| Certifications | https://learn.github.com/credentials |
| Build with Copilot | https://github.com/features/ai |
| Customize Copilot | https://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/customize-copilot-overview |
| Integrations | https://github.com/marketplace |
| Trending repos | https://github.com/trending |
| GitHub Sponsors | https://github.com/open-source/sponsors |
| Developer articles | https://github.com/resources/articles |
| ChangelogYour source for the latest features, improvements, and fixes across GitHub products, all in one place. | https://github.blog/changelog/ |
| Enterprises | https://github.com/enterprise |
| Team | https://github.com/team |
| Startups | https://github.com/enterprise/startups |
| Nonprofits | https://github.com/solutions/industry/nonprofits |
| Healthcare | https://github.com/solutions/industry/healthcare |
| Financial services | https://github.com/solutions/industry/financial-services |
| Manufacturing | https://github.com/solutions/industry/manufacturing |
| Government | https://github.com/solutions/industry/government |
| See all industries | https://github.com/solutions/industry |
| Why GitHub | https://github.com/why-github |
| Customer Stories | https://github.com/customer-stories |
| Business insights | https://github.com/solutions/executive-insights |
| Trust Center | https://github.com/trust-center |
| GitHub Advanced SecurityEnterprise-grade code security | https://github.com/security/advanced-security |
| Copilot for businessEnterprise-grade AI features | https://github.com/features/copilot/copilot-business |
| Premium SupportEnterprise-grade 24/7 support | https://github.com/enterprise/premium-support |
| Documentation | https://docs.github.com/en |
| Resource center | https://github.com/resources |
| Blog | https://github.blog/ |
| Events & webinars | https://github.com/resources/events |
| Community Forum | https://github.com/orgs/community/discussions |
| Customer Stories | https://github.com/customer-stories |
| Integrations | https://github.com/marketplace |
| Customer support | https://help.github.com/ |
| Training | https://learn.github.com/skills |
| GitHub Status | https://www.githubstatus.com/ |
| About | https://github.com/about |
| Partners | https://github.com/partners |
| Changelog | https://github.blog/changelog/ |
| GitHub UniverseThe event for developers, by developers — talks, workshops, and what’s next for GitHub. | https://githubuniverse.com/ |
| Pricing | https://github.com/pricing |
| Sign in | https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fextenda%2Fopenapi-httpserver-java%2Fpull%2F97 |
| Sign up | https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fpull_requests_fragments%2Fpull_request_layout&source=header-repo&source_repo=extenda%2Fopenapi-httpserver-java |
| Reload | https://github.com/extenda/openapi-httpserver-java/pull/97 |
| Reload | https://github.com/extenda/openapi-httpserver-java/pull/97 |
| Reload | https://github.com/extenda/openapi-httpserver-java/pull/97 |
| extenda | https://github.com/extenda |
| openapi-httpserver-java | https://github.com/extenda/openapi-httpserver-java |
| Code | https://github.com/extenda/openapi-httpserver-java |
| Issues | https://github.com/extenda/openapi-httpserver-java/issues |
| Pull requests2 (2) | https://github.com/extenda/openapi-httpserver-java/pulls |
| Actions | https://github.com/extenda/openapi-httpserver-java/actions |
| Security and quality | https://github.com/extenda/openapi-httpserver-java/security |
| Insights | https://github.com/extenda/openapi-httpserver-java/pulse |
| https://github.com/extenda/openapi-httpserver-java |
| thced | https://github.com/thced |
| master | https://github.com/extenda/openapi-httpserver-java/tree/master |
| feat/multiple-specs | https://github.com/extenda/openapi-httpserver-java/tree/feat/multiple-specs |
| Conversation | https://github.com/extenda/openapi-httpserver-java/pull/97 |
| Commits18 (18) | https://github.com/extenda/openapi-httpserver-java/pull/97/commits |
| Checks | https://github.com/extenda/openapi-httpserver-java/pull/97/checks |
| Files changed | https://github.com/extenda/openapi-httpserver-java/pull/97/files |
| feat: Support multiple OpenAPI specs per server | https://github.com/extenda/openapi-httpserver-java/pull/97#top |
| thced | https://github.com/thced |
| master | https://github.com/extenda/openapi-httpserver-java/tree/master |
| feat/multiple-specs | https://github.com/extenda/openapi-httpserver-java/tree/feat/multiple-specs |
|
| https://github.com/thced |
| thced | https://github.com/thced |
| May 22, 2026 | https://github.com/extenda/openapi-httpserver-java/pull/97#issue-4503037292 |
| docs/superpowers/specs/2026-05-22-multiple-specs-design.md | https://github.com/extenda/openapi-httpserver-java/pull/docs/superpowers/specs/2026-05-22-multiple-specs-design.md |
| docs/superpowers/plans/2026-05-22-multiple-specs.md | https://github.com/extenda/openapi-httpserver-java/pull/docs/superpowers/plans/2026-05-22-multiple-specs.md |
| Please reload this page | https://github.com/extenda/openapi-httpserver-java/pull/97 |
| thced | https://github.com/thced |
| May 22, 2026 15:11 | https://github.com/extenda/openapi-httpserver-java/pull/97#commits-pushed-d5a3e31 |
|
| https://github.com/thced |
| docs: Design spec for multiple OpenAPI specs per server | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/d5a3e3154df34c10a7fe15db9420531d35d34246 |
| d5a3e31 | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/d5a3e3154df34c10a7fe15db9420531d35d34246 |
|
| https://github.com/thced |
| docs: Implementation plan for multiple OpenAPI specs per server | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/901c7832994f61574716fa869fe59a346d0c1f7c |
| 901c783 | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/901c7832994f61574716fa869fe59a346d0c1f7c |
|
| https://github.com/thced |
| refactor: Add SpecBinding record for per-spec server state | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/a73b4c39a7a0e54c6140ae49611634b589f12500 |
| a73b4c3 | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/a73b4c39a7a0e54c6140ae49611634b589f12500 |
|
| https://github.com/thced |
| docs: Check off Task 1 completion in plan | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/2bbf9be1da9995e56db81318624379c5a2fcdd9e |
| 2bbf9be | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/2bbf9be1da9995e56db81318624379c5a2fcdd9e |
|
| https://github.com/thced |
| refactor: Drive OpenApiServer from a list of SpecBinding | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/edce6b03af213371e6703d5a97b73a2935629ad0 |
| edce6b0 | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/edce6b03af213371e6703d5a97b73a2935629ad0 |
|
| https://github.com/thced |
| style: Use imported List name in OpenApiServer constructor | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/e1a5790e7852c6f5301cf5985c6acd9be3ec426c |
| e1a5790 | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/e1a5790e7852c6f5301cf5985c6acd9be3ec426c |
|
| https://github.com/thced |
| test: Add SpecFixtures helper to derive multiple specs from one fixture | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/c7894673f3e7e8750be3043a896e636cb3625a1a |
| c789467 | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/c7894673f3e7e8750be3043a896e636cb3625a1a |
|
| https://github.com/thced |
| style: Drop unneeded SuppressWarnings on deepClone | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/b6ad61c1051446bc5bb17149b886309a4f5c4cf0 |
| b6ad61c | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/b6ad61c1051446bc5bb17149b886309a4f5c4cf0 |
|
| https://github.com/thced |
| docs: Mark Task 3 steps complete in plan | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/cdd7b0d9e09beb52b0cda51a80d1fa644d559b62 |
| cdd7b0d | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/cdd7b0d9e09beb52b0cda51a80d1fa644d559b62 |
|
| https://github.com/thced |
| feat: Add addSpec() builder method for multi-spec servers | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/243c57848739e747215d2cc0af2e5f3f3c5c266d |
| 243c578 | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/243c57848739e747215d2cc0af2e5f3f3c5c266d |
|
| https://github.com/thced |
| refactor: Strengthen multi-spec validation messages and tests | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/cf8152db04c3de4d5cd45873af1c571a898ab795 |
| cf8152d | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/cf8152db04c3de4d5cd45873af1c571a898ab795 |
|
| https://github.com/thced |
| test: Cover multi-spec namespacing, conflicts, and mixed builder forms | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/6ef0d94f1afb68f73174cde4c1d4db4b88c66712 |
| 6ef0d94 | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/6ef0d94f1afb68f73174cde4c1d4db4b88c66712 |
|
| https://github.com/thced |
| test: Integration test for multi-spec server under real HttpServer | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/9bda1a61a18b9bb0a96f00344eaa170243e87de9 |
| 9bda1a6 | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/9bda1a61a18b9bb0a96f00344eaa170243e87de9 |
|
| https://github.com/thced |
| docs: Document addSpec() for multi-spec servers | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/0a0e2c727fcf786acf56104b90af3ad6d3c08e99 |
| 0a0e2c7 | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/0a0e2c727fcf786acf56104b90af3ad6d3c08e99 |
|
| https://github.com/thced |
| chore: Check off Task 11 in multi-spec plan | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/10251a849ecc4b41ec16c2c7cad9fc2ed72dd411 |
| 10251a8 | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/10251a849ecc4b41ec16c2c7cad9fc2ed72dd411 |
|
| https://github.com/thced |
| test: Prove multi-spec loading from directory and JAR classpath | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/fd830729f7dfd89520f4902102aed7759a7f17f3 |
| fd83072 | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/fd830729f7dfd89520f4902102aed7759a7f17f3 |
|
| https://github.com/thced |
| refactor: Extract helpers in OpenApiServer to reduce cognitive comple… | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/8b29ab096c94e45e3cadd8946d5afd34beff3db0 |
| 8b29ab0 | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/8b29ab096c94e45e3cadd8946d5afd34beff3db0 |
|
| https://github.com/thced |
| refactor: Hoist builder setup out of assertThatThrownBy lambdas | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/966827e814e425071a506351e79c6bfdbf8c8ff7 |
| 966827e | https://github.com/extenda/openapi-httpserver-java/pull/97/commits/966827e814e425071a506351e79c6bfdbf8c8ff7 |
| https://github.com/apps/sonarqubecloud |
| sonarqubecloud | https://github.com/apps/sonarqubecloud |
| May 22, 2026 | https://github.com/extenda/openapi-httpserver-java/pull/97#issuecomment-4519622194 |
| https://sonarcloud.io/dashboard?id=extenda_openapi-httpserver-java&pullRequest=97 |
| https://camo.githubusercontent.com/6cc27951a82703bd6a32deed62ec92af84fc495762ca86bc7af5a3ac490c7bda/68747470733a2f2f736f6e6172736f757263652e6769746875622e696f2f736f6e6172636c6f75642d6769746875622d7374617469632d7265736f75726365732f76322f636f6d6d6f6e2f7061737365642d313670782e706e67 |
| 0 New issues | https://sonarcloud.io/project/issues?id=extenda_openapi-httpserver-java&pullRequest=97&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true |
| https://camo.githubusercontent.com/5ad34d7e6f2a5aa0d644209f46bb24fba00f31f704923ce46fe8434f94917f73/68747470733a2f2f736f6e6172736f757263652e6769746875622e696f2f736f6e6172636c6f75642d6769746875622d7374617469632d7265736f75726365732f76322f636f6d6d6f6e2f61636365707465642d313670782e706e67 |
| 0 Accepted issues | https://sonarcloud.io/project/issues?id=extenda_openapi-httpserver-java&pullRequest=97&issueStatuses=ACCEPTED |
| https://camo.githubusercontent.com/6cc27951a82703bd6a32deed62ec92af84fc495762ca86bc7af5a3ac490c7bda/68747470733a2f2f736f6e6172736f757263652e6769746875622e696f2f736f6e6172636c6f75642d6769746875622d7374617469632d7265736f75726365732f76322f636f6d6d6f6e2f7061737365642d313670782e706e67 |
| 0 Security Hotspots | https://sonarcloud.io/project/security_hotspots?id=extenda_openapi-httpserver-java&pullRequest=97&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true |
| https://camo.githubusercontent.com/6cc27951a82703bd6a32deed62ec92af84fc495762ca86bc7af5a3ac490c7bda/68747470733a2f2f736f6e6172736f757263652e6769746875622e696f2f736f6e6172636c6f75642d6769746875622d7374617469632d7265736f75726365732f76322f636f6d6d6f6e2f7061737365642d313670782e706e67 |
| 96.0% Coverage on New Code | https://sonarcloud.io/component_measures?id=extenda_openapi-httpserver-java&pullRequest=97&metric=new_coverage&view=list |
| https://camo.githubusercontent.com/6cc27951a82703bd6a32deed62ec92af84fc495762ca86bc7af5a3ac490c7bda/68747470733a2f2f736f6e6172736f757263652e6769746875622e696f2f736f6e6172636c6f75642d6769746875622d7374617469632d7265736f75726365732f76322f636f6d6d6f6e2f7061737365642d313670782e706e67 |
| 0.0% Duplication on New Code | https://sonarcloud.io/component_measures?id=extenda_openapi-httpserver-java&pullRequest=97&metric=new_duplicated_lines_density&view=list |
| See analysis details on SonarQube Cloud | https://sonarcloud.io/dashboard?id=extenda_openapi-httpserver-java&pullRequest=97 |
| Please reload this page | https://github.com/extenda/openapi-httpserver-java/pull/97 |
| https://github.com/thced |
| thced | https://github.com/thced |
| ce48fc9 | https://github.com/extenda/openapi-httpserver-java/commit/ce48fc94ae5772eec4a04dc49fc32df0e35615bf |
| May 22, 2026 | https://github.com/extenda/openapi-httpserver-java/pull/97#event-25855819557 |
| Please reload this page | https://github.com/extenda/openapi-httpserver-java/pull/97 |
| https://github.com/thced |
| thced | https://github.com/thced |
| May 22, 2026 14:34 | https://github.com/extenda/openapi-httpserver-java/pull/97#event-25855820869 |
| https://github.co/hiddenchars |
| https://github.com/extenda/openapi-httpserver-java/pull/{{ revealButtonHref }} |
| Sign up for free | https://github.com/join?source=comment-repo |
| Sign in to comment | https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fextenda%2Fopenapi-httpserver-java%2Fpull%2F97 |
| Please reload this page | https://github.com/extenda/openapi-httpserver-java/pull/97 |
| Please reload this page | https://github.com/extenda/openapi-httpserver-java/pull/97 |
|
| https://github.com/thced |
|
| https://github.com |
| Terms | https://docs.github.com/site-policy/github-terms/github-terms-of-service |
| Privacy | https://docs.github.com/site-policy/privacy-policies/github-privacy-statement |
| Security | https://github.com/security |
| Status | https://www.githubstatus.com/ |
| Community | https://github.community/ |
| Docs | https://docs.github.com/ |
| Contact | https://support.github.com?tags=dotcom-footer |