Skip to content
Open
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
e465bea
feat(api-doc): support request parameter parsing for RPC types (Dubbo…
eye-gu May 12, 2026
d63406f
fix license
eye-gu May 12, 2026
4cc475c
fix checkstyle exclude generated source
eye-gu May 12, 2026
c556e55
fix checkstyle
eye-gu May 12, 2026
04dad48
fix review
eye-gu May 15, 2026
522c819
Fix Protobuf field schema parsing logic
eye-gu May 17, 2026
381b5d1
Merge branch 'master' into fix-6338
eye-gu May 17, 2026
4390fcc
Merge branch 'master' into fix-6338
eye-gu Jun 1, 2026
095e02c
Merge branch 'master' into fix-6338
Aias00 Jun 4, 2026
9ffc42c
fix use common version
eye-gu Jun 6, 2026
b23bea2
Merge branch 'master' into fix-6338
eye-gu Jun 6, 2026
a837a86
Merge branch 'master' into fix-6338
Aias00 Jun 8, 2026
3989690
Merge branch 'master' into fix-6338
Aias00 Jun 8, 2026
51af464
chore: trigger CI retest
eye-gu Jun 9, 2026
13219db
Merge branch 'master' into fix-6338
Aias00 Jun 9, 2026
a9ad20c
Merge branch 'master' into fix-6338
Aias00 Jun 11, 2026
416afa5
Merge branch 'master' into fix-6338
Aias00 Jun 11, 2026
d17466e
Merge branch 'master' into fix-6338
Aias00 Jun 11, 2026
72a5edf
Merge branch 'master' into fix-6338
Aias00 Jun 12, 2026
c544955
Merge branch 'master' into fix-6338
Aias00 Jun 12, 2026
de89f93
Merge branch 'master' into fix-6338
Aias00 Jun 14, 2026
9a728e9
Merge branch 'master' into fix-6338
eye-gu Jun 27, 2026
565bdbd
Merge branch 'master' into fix-6338
Aias00 Jul 8, 2026
77b362a
Merge branch 'master' into fix-6338
Aias00 Jul 15, 2026
0413fbb
Merge branch 'master' into fix-6338
eye-gu Aug 5, 2026
2c6eff7
fix RPC api-doc generation for protobuf nesting
eye-gu Aug 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -728,7 +728,7 @@
<configLocation>/script/shenyu_checkstyle.xml</configLocation>
<headerLocation>/script/checkstyle-header.txt</headerLocation>
<includeTestSourceDirectory>true</includeTestSourceDirectory>
<excludes>**/transfer/**/*</excludes>
<excludes>**/transfer/**/*,**/generated*/**/*</excludes>
</configuration>
<executions>
<execution>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import java.util.ArrayList;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import java.util.Objects;
import org.apache.shenyu.admin.disruptor.RegisterClientServerDisruptorPublisher;
import org.apache.shenyu.admin.mapper.ApiMapper;
import org.apache.shenyu.admin.mapper.TagMapper;
Expand All @@ -40,7 +41,6 @@
import org.apache.shenyu.admin.model.vo.RuleVO;
import org.apache.shenyu.admin.model.vo.TagVO;
import org.apache.shenyu.admin.service.ApiService;
import org.apache.shenyu.common.enums.ApiSourceEnum;
import org.apache.shenyu.common.enums.PluginEnum;
import org.apache.shenyu.common.utils.JsonUtils;
import org.apache.shenyu.common.utils.ListUtil;
Expand Down Expand Up @@ -243,12 +243,14 @@ public ApiVO findById(final String id) {
tagVOs = tagDOS.stream().map(TagVO::buildTagVO).collect(Collectors.toList());
}
ApiVO apiVO = ApiVO.buildApiVO(item, tagVOs);
if (apiVO.getApiSource().equals(ApiSourceEnum.SWAGGER.getValue())) {
if (StringUtils.isNotBlank(apiVO.getDocument())) {
DocItem docItem = JsonUtils.jsonToObject(apiVO.getDocument(), DocItem.class);
apiVO.setRequestHeaders(docItem.getRequestHeaders());
apiVO.setRequestParameters(docItem.getRequestParameters());
apiVO.setResponseParameters(docItem.getResponseParameters());
apiVO.setBizCustomCodeList(docItem.getBizCodeList());
if (Objects.nonNull(docItem)) {
apiVO.setRequestHeaders(docItem.getRequestHeaders());
apiVO.setRequestParameters(docItem.getRequestParameters());
apiVO.setResponseParameters(docItem.getResponseParameters());
apiVO.setBizCustomCodeList(docItem.getBizCodeList());
}
}
Comment thread
moremind marked this conversation as resolved.
return apiVO;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,60 @@ public void testFindById() {
assertNotNull(byId);
}

@Test
public void testFindByIdWithDocumentNotBlank() {
String id = "456";
ApiDTO apiDTO = new ApiDTO();
apiDTO.setId(id);
apiDTO.setContextPath("string");
apiDTO.setApiPath("string");
apiDTO.setHttpMethod(0);
apiDTO.setConsume("string");
apiDTO.setProduce("string");
apiDTO.setVersion("string");
apiDTO.setRpcType("string");
apiDTO.setState(0);
apiDTO.setApiOwner("string");
apiDTO.setApiDesc("string");
apiDTO.setApiSource(0);
apiDTO.setDocument("{\"module\":\"test-module\",\"requestParameters\":[],\"responseParameters\":[]}");
ApiDO apiDO = ApiDO.buildApiDO(apiDTO);
Timestamp now = Timestamp.valueOf(LocalDateTime.now());
apiDO.setDateCreated(now);
apiDO.setDateUpdated(now);
given(this.apiMapper.selectByPrimaryKey(eq(id))).willReturn(apiDO);
ApiVO byId = this.apiService.findById(id);
assertNotNull(byId);
assertNotNull(byId.getRequestParameters());
assertNotNull(byId.getResponseParameters());
}

@Test
public void testFindByIdWithBlankDocument() {
String id = "789";
ApiDTO apiDTO = new ApiDTO();
apiDTO.setId(id);
apiDTO.setContextPath("string");
apiDTO.setApiPath("string");
apiDTO.setHttpMethod(0);
apiDTO.setConsume("string");
apiDTO.setProduce("string");
apiDTO.setVersion("string");
apiDTO.setRpcType("string");
apiDTO.setState(0);
apiDTO.setApiOwner("string");
apiDTO.setApiDesc("string");
apiDTO.setApiSource(0);
apiDTO.setDocument("");
ApiDO apiDO = ApiDO.buildApiDO(apiDTO);
Timestamp now = Timestamp.valueOf(LocalDateTime.now());
apiDO.setDateCreated(now);
apiDO.setDateUpdated(now);
given(this.apiMapper.selectByPrimaryKey(eq(id))).willReturn(apiDO);
ApiVO byId = this.apiService.findById(id);
assertNotNull(byId);
}

@Test
public void testListByPage() {
PageParameter pageParameter = new PageParameter();
Expand Down
50 changes: 50 additions & 0 deletions shenyu-client/shenyu-client-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -81,5 +81,55 @@
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-stub</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<extensions>
<extension>
<groupId>kr.motd.maven</groupId>
<artifactId>os-maven-plugin</artifactId>
<version>1.6.2</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>0.6.1</version>
Comment thread
eye-gu marked this conversation as resolved.
Outdated
<extensions>true</extensions>
<configuration>
<protocArtifact>com.google.protobuf:protoc:${protobuf-java.version}:exe:${os.detected.classifier}</protocArtifact>
<protoSourceRoot>${project.basedir}/src/test/proto</protoSourceRoot>
<outputDirectory>${project.build.directory}/generated-test-sources/protobuf/java</outputDirectory>
<clearOutputDirectory>false</clearOutputDirectory>
</configuration>
<executions>
<execution>
<goals>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<configuration>
<testSourceDirectories>
<testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
</testSourceDirectories>
</configuration>
</plugin>
</plugins>
</build>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

package org.apache.shenyu.client.core.client;

import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
Expand Down Expand Up @@ -213,7 +212,7 @@ private List<ApiDocRegisterDTO> buildApiDocDTO(final Object bean, final Method m
String apiPath = pathJoin(contextPath, superPath, value);
ApiHttpMethodEnum[] value3 = sextet.getValue3();
for (ApiHttpMethodEnum apiHttpMethodEnum : value3) {
String documentJson = buildDocumentJson(pairs.getRight(), apiPath, method);
String documentJson = buildDocumentJson(pairs.getRight(), apiPath, method, sextet.getValue4());
String extJson = buildExtJson(method);
ApiDocRegisterDTO build = ApiDocRegisterDTO.builder()
.consume(sextet.getValue1())
Expand Down Expand Up @@ -258,15 +257,8 @@ protected ApiDocRegisterDTO.ApiExt customApiDocExt(final ApiDocRegisterDTO.ApiEx
return ext;
}

private String buildDocumentJson(final List<String> tags, final String path, final Method method) {
Map<String, Object> documentMap = ImmutableMap.<String, Object>builder()
.put("tags", tags)
.put("operationId", path)
.put("parameters", OpenApiUtils.generateDocumentParameters(path, method))
.put("responses", OpenApiUtils.generateDocumentResponse(path))
.put("responseType", Collections.singletonList(OpenApiUtils.parseReturnType(method)))
.build();
return GsonUtils.getInstance().toJson(documentMap);
private String buildDocumentJson(final List<String> tags, final String path, final Method method, final RpcTypeEnum rpcTypeEnum) {
return OpenApiUtils.buildDocumentJson(tags, path, method, rpcTypeEnum);
}

protected abstract Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> buildApiDocSextet(Method method, Annotation annotation, Map<String, T> beans);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

package org.apache.shenyu.client.core.register.registrar;

import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import org.apache.commons.lang3.StringUtils;
import org.apache.shenyu.client.apidocs.annotations.ApiDoc;
Expand All @@ -42,9 +41,7 @@
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;

public abstract class AbstractApiDocRegistrar extends AbstractApiRegistrar<ApiDocRegisterDTO> {

Expand Down Expand Up @@ -128,14 +125,7 @@ protected List<ApiDocRegisterDTO> parse(final ApiBean.ApiDefinition apiDefinitio
}

private String buildDocumentJson(final List<String> tags, final String path, final Method method) {
Map<String, Object> documentMap = ImmutableMap.<String, Object>builder()
.put("tags", tags)
.put("operationId", path)
.put("parameters", OpenApiUtils.generateDocumentParameters(path, method))
.put("responses", OpenApiUtils.generateDocumentResponse(path))
.put("responseType", Collections.singletonList(OpenApiUtils.parseReturnType(method)))
.build();
return GsonUtils.getInstance().toJson(documentMap);
return OpenApiUtils.buildDocumentJson(tags, path, method, rpcTypeEnum);
}

private String buildExtJson(final ApiBean.ApiDefinition apiDefinition) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

package org.apache.shenyu.client.core.register.registrar;

import com.google.common.collect.ImmutableMap;
import org.apache.commons.lang3.StringUtils;
import org.apache.shenyu.client.core.constant.ShenyuClientConstants;
import org.apache.shenyu.client.core.disruptor.ShenyuClientRegisterEventPublisher;
Expand All @@ -38,7 +37,6 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;

Expand Down Expand Up @@ -132,14 +130,9 @@ private String getDocument(final ApiBean.ApiDefinition api) {
return document;
}
final String path = getPath(api);
final Map<String, Object> documentMap = ImmutableMap.<String, Object>builder()
.put("tags", buildTags(api))
.put("operationId", path)
.put("parameters", OpenApiUtils.generateDocumentParameters(path, api.getApiMethod()))
.put("responses", OpenApiUtils.generateDocumentResponse(path))
.put("responseType", Collections.singletonList(OpenApiUtils.parseReturnType(api.getApiMethod())))
.build();
return GsonUtils.getInstance().toJson(documentMap);
final String rpcType = getRpcType(api);
RpcTypeEnum rpcTypeEnum = RpcTypeEnum.acquireByName(rpcType);
return OpenApiUtils.buildDocumentJson(buildTags(api), path, api.getApiMethod(), rpcTypeEnum);
}

private String getRpcType(final ApiBean.ApiDefinition api) {
Expand Down
Loading
Loading