mirror of
https://github.com/abhigyanpatwari/GitNexus.git
synced 2026-09-07 08:26:11 +00:00
* fix(group): recognize OpenFeign @RequestLine on plain interfaces (no @FeignClient) PR #1904 gated @RequestLine consumer extraction on the enclosing interface also carrying @FeignClient. That guard is wrong: @RequestLine is a core feign.* annotation used with Feign.builder(), while @FeignClient is the Spring Cloud variant that uses Spring MVC annotations (@GetMapping etc.) — the two are effectively mutually exclusive. Requiring @FeignClient therefore excluded the annotation's primary, canonical usage, so the feature recognized nothing on real core-Feign client interfaces. Fix: drop the @FeignClient requirement for @RequestLine. The match still requires an enclosing interface (Feign proxies are always interfaces), and the `RequestLine` annotation name is itself a strong, framework-specific signal, so false-positive risk stays low. A @FeignClient(path=...) prefix is still applied when present. The @(Get|Post|...)Mapping consumer path keeps its @FeignClient requirement: those annotations are generic Spring MVC and need the Feign context to be disambiguated from provider routes. Verification (real-world, not just synthetic fixtures): - A real client-jar consumer (BigModeClientService.java: a plain interface with 12 @RequestLine methods, no @FeignClient) now yields 12 openfeign consumer contracts; it yielded 0 before this change. - End-to-end `group sync` over that consumer repo + its FastAPI provider repo (with zero hand-written links) produces 12 exact cross-links (confidence 1.0), Java @RequestLine consumer → Python route provider. - The prior test that asserted the wrong behavior ("ignores @RequestLine on interfaces without @FeignClient") is reversed into a realistic core-Feign fixture. - Full test/unit/group suite (579) green; tsc and prettier clean. * test(group): add negative cases for relaxed @RequestLine matcher Per review on #1917 — guard the no-@FeignClient relaxation with explicit negative tests: malformed @RequestLine values (no verb / no leading-slash path / unknown verb) yield no contract, and @RequestLine on a concrete class method (not an interface) is not emitted as a consumer. --------- Co-authored-by: henry <zhangwei2017@unipus.cn> Co-authored-by: Gergő Magyar <gergomagyar@icloud.com> |
||
|---|---|---|
| .. | ||
| bridge-db-edge.test.ts | ||
| bridge-db.test.ts | ||
| bridge-storage-tempfile.test.ts | ||
| config-parser.test.ts | ||
| cross-impact-phase2-timeout.test.ts | ||
| cross-impact.test.ts | ||
| elixir-workspace-extractor.test.ts | ||
| fixtures.ts | ||
| go-workspace-extractor.test.ts | ||
| group-path-utils.test.ts | ||
| group-service-group-mode.test.ts | ||
| group-tools.test.ts | ||
| grpc-extractor.test.ts | ||
| http-route-extractor.test.ts | ||
| http-route-multi-verb.test.ts | ||
| impact-by-uid.test.ts | ||
| include-extractor.test.ts | ||
| insecure-tempfile.test.ts | ||
| java-workspace-extractor.test.ts | ||
| manifest-extractor.test.ts | ||
| matching.test.ts | ||
| node-workspace-extractor.test.ts | ||
| python-workspace-extractor.test.ts | ||
| rust-workspace-extractor.test.ts | ||
| service-boundary-detector.test.ts | ||
| service.test.ts | ||
| storage.test.ts | ||
| sync.test.ts | ||
| thrift-extractor.test.ts | ||
| topic-extractor.test.ts | ||
| types.test.ts | ||