From 732b0d62b9824e1a4f03e6f664594a64b8d64e21 Mon Sep 17 00:00:00 2001 From: ksg Date: Sat, 25 Jan 2025 00:35:58 +0900 Subject: [PATCH 1/2] fix: Update endpoint path handling logic --- .../java/spring/src/ItemController2.java | 42 +++++++++++++++++++ .../testers/java/spring_spec.cr | 8 +++- src/analyzer/analyzer.cr | 4 ++ src/analyzer/analyzers/java/spring.cr | 8 ++-- 4 files changed, 56 insertions(+), 6 deletions(-) create mode 100644 spec/functional_test/fixtures/java/spring/src/ItemController2.java diff --git a/spec/functional_test/fixtures/java/spring/src/ItemController2.java b/spec/functional_test/fixtures/java/spring/src/ItemController2.java new file mode 100644 index 00000000..c107d70e --- /dev/null +++ b/spec/functional_test/fixtures/java/spring/src/ItemController2.java @@ -0,0 +1,42 @@ +package com.test; +import org.springframework.web.bind.annotation.*; +import a.b.c.bind.annotation.*; +import org.springframework.c.d.e.*; + +@RestController +@RequestMapping("items2") +public class ItemController { + + @GetMapping("{id}") + public Item getItem(@PathVariable Long id) throws ItemNotFoundException { + } + + @PostMapping("/create") + public Item createItem(@RequestBody Item item) { + } + + @PutMapping("edit/") + public Item editItem(@RequestBody Item item) { + } +} + +class Item { + int id; + String name; + + public void setId(int _id) { + id = _id; + } + + public int getId() { + return id; + } + + public void setName(String _name) { + name = _name; + } + + public String getName() { + return name; + } +} \ No newline at end of file diff --git a/spec/functional_test/testers/java/spring_spec.cr b/spec/functional_test/testers/java/spring_spec.cr index e2f65a8b..31a9f9e0 100644 --- a/spec/functional_test/testers/java/spring_spec.cr +++ b/spec/functional_test/testers/java/spring_spec.cr @@ -16,7 +16,7 @@ extected_endpoints = [ # ItemController.java Endpoint.new("/items/{id}", "GET", [Param.new("id", "", "path")]), Endpoint.new("/items/json/{id}", "GET", [Param.new("id", "", "path")]), - Endpoint.new("/items", "POST", [Param.new("id", "", "form"), Param.new("name", "", "form")]), + Endpoint.new("/items/", "POST", [Param.new("id", "", "form"), Param.new("name", "", "form")]), Endpoint.new("/items/update/{id}", "PUT", [Param.new("id", "", "path"), Param.new("id", "", "json"), Param.new("name", "", "json")]), Endpoint.new("/items/delete/{id}", "DELETE", [Param.new("id", "", "path")]), Endpoint.new("/items/requestmap/put", "PUT"), @@ -34,8 +34,12 @@ extected_endpoints = [ Param.new("b", "", "query"), Param.new("name", "", "query"), ]), + # ItemController2.java + Endpoint.new("/items2/{id}", "GET", [Param.new("id", "", "path")]), + Endpoint.new("/items2/create", "POST", [Param.new("id", "", "form"), Param.new("name", "", "form")]), + Endpoint.new("/items2/edit/", "PUT", [Param.new("id", "", "json"), Param.new("name", "", "json")]), # EmptyController.java - Endpoint.new("/empty", "GET"), + Endpoint.new("/empty/", "GET"), ] FunctionalTester.new("fixtures/java/spring/", { diff --git a/src/analyzer/analyzer.cr b/src/analyzer/analyzer.cr index 19aee6ca..82e2c65d 100644 --- a/src/analyzer/analyzer.cr +++ b/src/analyzer/analyzer.cr @@ -83,3 +83,7 @@ def analysis_endpoints(options : Hash(String, YAML::Any), techs, logger : NoirLo logger.info "Found #{result.size} endpoints" result end + +def join_paths(*paths : String) : String + File.join(paths) +end diff --git a/src/analyzer/analyzers/java/spring.cr b/src/analyzer/analyzers/java/spring.cr index f96d02c3..90ca84a0 100644 --- a/src/analyzer/analyzers/java/spring.cr +++ b/src/analyzer/analyzers/java/spring.cr @@ -211,7 +211,7 @@ module Analyzer::Java ["GET", "POST", "PUT", "DELETE", "PATCH"].each do |_request_method| parameters = get_endpoint_parameters(parser, _request_method, method, parameter_format, class_map) url_paths.each do |url_path| - @result << Endpoint.new("#{webflux_base_path}#{url}#{url_path}", _request_method, parameters, details) + @result << Endpoint.new(join_paths(webflux_base_path, url, url_path), _request_method, parameters, details) end end else @@ -219,7 +219,7 @@ module Analyzer::Java url_paths.each do |url_path| request_methods.each do |request_method| parameters = get_endpoint_parameters(parser, request_method, method, parameter_format, class_map) - @result << Endpoint.new("#{webflux_base_path}#{url}#{url_path}", request_method, parameters, details) + @result << Endpoint.new(join_paths(webflux_base_path, url, url_path), request_method, parameters, details) end end end @@ -243,7 +243,7 @@ module Analyzer::Java details = Details.new(PathInfo.new(path, line)) url_paths.each do |url_path| - @result << Endpoint.new("#{webflux_base_path}#{url}#{url_path}", request_method, parameters, details) + @result << Endpoint.new(join_paths(webflux_base_path, url, url_path), request_method, parameters, details) end break end @@ -261,7 +261,7 @@ module Analyzer::Java method = match[2] endpoint = match[3].gsub(/\n/, "") details = Details.new(PathInfo.new(path)) - @result << Endpoint.new("#{url}#{endpoint}", method, details) + @result << Endpoint.new(join_paths(url, endpoint), method, details) end end end From 302e40304afd22b0e10773af17e2dd2affdbd0a2 Mon Sep 17 00:00:00 2001 From: ksg Date: Sat, 25 Jan 2025 02:18:15 +0900 Subject: [PATCH 2/2] refactor: Add cache scope to Docker actions Signed-off-by: ksg --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6f3fb148..7a5d83f2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,8 +50,8 @@ jobs: tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} platforms: ${{ matrix.arch }} - cache-from: type=gha - cache-to: type=gha,mode=max + cache-from: type=gha,scope=${{ matrix.arch }} + cache-to: type=gha,mode=max,scope=${{ matrix.arch }} lint: runs-on: ubuntu-latest container: