Fix StubMethodDescriptor generate issue (#13582)

* Refactor StubMethodDescriptor generate

* Refactor StubMethodDescriptor generate

* Refactor StubMethodDescriptor generate

* Refactor

* Add missing ';'
This commit is contained in:
namelessssssssssss 2023-12-27 14:52:22 +08:00 committed by GitHub
parent 1368e21d9b
commit 3aa5a775d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 41 additions and 16 deletions

View File

@ -28,7 +28,6 @@ import java.util.stream.Stream;
public class StubMethodDescriptor implements MethodDescriptor, PackableMethod { public class StubMethodDescriptor implements MethodDescriptor, PackableMethod {
private static final Logger logger = LoggerFactory.getLogger(StubMethodDescriptor.class); private static final Logger logger = LoggerFactory.getLogger(StubMethodDescriptor.class);
private final ServiceDescriptor serviceDescriptor;
private final ConcurrentMap<String, Object> attributeMap = new ConcurrentHashMap<>(); private final ConcurrentMap<String, Object> attributeMap = new ConcurrentHashMap<>();
private final String methodName; private final String methodName;
private final String[] compatibleParamSignatures; private final String[] compatibleParamSignatures;
@ -46,14 +45,12 @@ public class StubMethodDescriptor implements MethodDescriptor, PackableMethod {
String methodName, String methodName,
Class<?> requestClass, Class<?> requestClass,
Class<?> responseClass, Class<?> responseClass,
StubServiceDescriptor serviceDescriptor,
RpcType rpcType, RpcType rpcType,
Pack requestPack, Pack requestPack,
Pack responsePack, Pack responsePack,
UnPack requestUnpack, UnPack requestUnpack,
UnPack responseUnpack) { UnPack responseUnpack) {
this.methodName = methodName; this.methodName = methodName;
this.serviceDescriptor = serviceDescriptor;
this.rpcType = rpcType; this.rpcType = rpcType;
this.requestPack = requestPack; this.requestPack = requestPack;
this.responsePack = responsePack; this.responsePack = responsePack;
@ -65,7 +62,6 @@ public class StubMethodDescriptor implements MethodDescriptor, PackableMethod {
this.compatibleParamSignatures = this.compatibleParamSignatures =
Stream.of(parameterClasses).map(Class::getName).toArray(String[]::new); Stream.of(parameterClasses).map(Class::getName).toArray(String[]::new);
this.returnTypes = new Type[] {responseClass, responseClass}; this.returnTypes = new Type[] {responseClass, responseClass};
serviceDescriptor.addMethod(this);
} }
@Override @Override

View File

@ -69,20 +69,19 @@ public final class {{className}} {
{{{javaDoc}}} {{{javaDoc}}}
{{/javaDoc}} {{/javaDoc}}
private static final StubMethodDescriptor {{methodName}}Method = new StubMethodDescriptor("{{originMethodName}}", private static final StubMethodDescriptor {{methodName}}Method = new StubMethodDescriptor("{{originMethodName}}",
{{inputType}}.class, {{outputType}}.class, serviceDescriptor, MethodDescriptor.RpcType.UNARY, {{inputType}}.class, {{outputType}}.class, MethodDescriptor.RpcType.UNARY,
obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), {{inputType}}::parseFrom, obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), {{inputType}}::parseFrom,
{{outputType}}::parseFrom); {{outputType}}::parseFrom);
private static final StubMethodDescriptor {{methodName}}AsyncMethod = new StubMethodDescriptor("{{originMethodName}}", private static final StubMethodDescriptor {{methodName}}AsyncMethod = new StubMethodDescriptor("{{originMethodName}}",
{{inputType}}.class, java.util.concurrent.CompletableFuture.class, serviceDescriptor, MethodDescriptor.RpcType.UNARY, {{inputType}}.class, java.util.concurrent.CompletableFuture.class, MethodDescriptor.RpcType.UNARY,
obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), {{inputType}}::parseFrom, obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), {{inputType}}::parseFrom,
{{outputType}}::parseFrom); {{outputType}}::parseFrom);
private static final StubMethodDescriptor {{methodName}}ProxyAsyncMethod = new StubMethodDescriptor("{{originMethodName}}Async", private static final StubMethodDescriptor {{methodName}}ProxyAsyncMethod = new StubMethodDescriptor("{{originMethodName}}Async",
{{inputType}}.class, {{outputType}}.class, serviceDescriptor, MethodDescriptor.RpcType.UNARY, {{inputType}}.class, {{outputType}}.class, MethodDescriptor.RpcType.UNARY,
obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), {{inputType}}::parseFrom, obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), {{inputType}}::parseFrom,
{{outputType}}::parseFrom); {{outputType}}::parseFrom);
{{/unaryMethods}} {{/unaryMethods}}
{{#serverStreamingMethods}} {{#serverStreamingMethods}}
@ -90,10 +89,9 @@ public final class {{className}} {
{{{javaDoc}}} {{{javaDoc}}}
{{/javaDoc}} {{/javaDoc}}
private static final StubMethodDescriptor {{methodName}}Method = new StubMethodDescriptor("{{originMethodName}}", private static final StubMethodDescriptor {{methodName}}Method = new StubMethodDescriptor("{{originMethodName}}",
{{inputType}}.class, {{outputType}}.class, serviceDescriptor, MethodDescriptor.RpcType.SERVER_STREAM, {{inputType}}.class, {{outputType}}.class, MethodDescriptor.RpcType.SERVER_STREAM,
obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), {{inputType}}::parseFrom, obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), {{inputType}}::parseFrom,
{{outputType}}::parseFrom); {{outputType}}::parseFrom);
{{/serverStreamingMethods}} {{/serverStreamingMethods}}
{{#clientStreamingMethods}} {{#clientStreamingMethods}}
@ -101,7 +99,7 @@ public final class {{className}} {
{{{javaDoc}}} {{{javaDoc}}}
{{/javaDoc}} {{/javaDoc}}
private static final StubMethodDescriptor {{methodName}}Method = new StubMethodDescriptor("{{originMethodName}}", private static final StubMethodDescriptor {{methodName}}Method = new StubMethodDescriptor("{{originMethodName}}",
{{inputType}}.class, {{outputType}}.class, serviceDescriptor, MethodDescriptor.RpcType.CLIENT_STREAM, {{inputType}}.class, {{outputType}}.class, MethodDescriptor.RpcType.CLIENT_STREAM,
obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), {{inputType}}::parseFrom, obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), {{inputType}}::parseFrom,
{{outputType}}::parseFrom); {{outputType}}::parseFrom);
{{/clientStreamingMethods}} {{/clientStreamingMethods}}
@ -111,11 +109,27 @@ public final class {{className}} {
{{{javaDoc}}} {{{javaDoc}}}
{{/javaDoc}} {{/javaDoc}}
private static final StubMethodDescriptor {{methodName}}Method = new StubMethodDescriptor("{{originMethodName}}", private static final StubMethodDescriptor {{methodName}}Method = new StubMethodDescriptor("{{originMethodName}}",
{{inputType}}.class, {{outputType}}.class, serviceDescriptor, MethodDescriptor.RpcType.BI_STREAM, {{inputType}}.class, {{outputType}}.class, MethodDescriptor.RpcType.BI_STREAM,
obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), {{inputType}}::parseFrom, obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), {{inputType}}::parseFrom,
{{outputType}}::parseFrom); {{outputType}}::parseFrom);
{{/biStreamingWithoutClientStreamMethods}} {{/biStreamingWithoutClientStreamMethods}}
static{
{{#unaryMethods}}
serviceDescriptor.addMethod({{methodName}}Method);
serviceDescriptor.addMethod({{methodName}}ProxyAsyncMethod);
{{/unaryMethods}}
{{#serverStreamingMethods}}
serviceDescriptor.addMethod({{methodName}}Method);
{{/serverStreamingMethods}}
{{#clientStreamingMethods}}
serviceDescriptor.addMethod({{methodName}}Method);
{{/clientStreamingMethods}}
{{#biStreamingWithoutClientStreamMethods}}
serviceDescriptor.addMethod({{methodName}}Method);
{{/biStreamingWithoutClientStreamMethods}}
}
public static class {{interfaceClassName}}Stub implements {{interfaceClassName}}{ public static class {{interfaceClassName}}Stub implements {{interfaceClassName}}{
private final Invoker<{{interfaceClassName}}> invoker; private final Invoker<{{interfaceClassName}}> invoker;

View File

@ -70,7 +70,7 @@ public final class {{className}} {
{{{javaDoc}}} {{{javaDoc}}}
{{/javaDoc}} {{/javaDoc}}
private static final StubMethodDescriptor {{methodName}}Method = new StubMethodDescriptor("{{originMethodName}}", private static final StubMethodDescriptor {{methodName}}Method = new StubMethodDescriptor("{{originMethodName}}",
{{inputType}}.class, {{outputType}}.class, serviceDescriptor, MethodDescriptor.RpcType.UNARY, {{inputType}}.class, {{outputType}}.class, MethodDescriptor.RpcType.UNARY,
obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), {{inputType}}::parseFrom, obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), {{inputType}}::parseFrom,
{{outputType}}::parseFrom); {{outputType}}::parseFrom);
{{/unaryMethods}} {{/unaryMethods}}
@ -80,7 +80,7 @@ public final class {{className}} {
{{{javaDoc}}} {{{javaDoc}}}
{{/javaDoc}} {{/javaDoc}}
private static final StubMethodDescriptor {{methodName}}Method = new StubMethodDescriptor("{{originMethodName}}", private static final StubMethodDescriptor {{methodName}}Method = new StubMethodDescriptor("{{originMethodName}}",
{{inputType}}.class, {{outputType}}.class, serviceDescriptor, MethodDescriptor.RpcType.SERVER_STREAM, {{inputType}}.class, {{outputType}}.class, MethodDescriptor.RpcType.SERVER_STREAM,
obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), {{inputType}}::parseFrom, obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), {{inputType}}::parseFrom,
{{outputType}}::parseFrom); {{outputType}}::parseFrom);
{{/serverStreamingMethods}} {{/serverStreamingMethods}}
@ -90,7 +90,7 @@ public final class {{className}} {
{{{javaDoc}}} {{{javaDoc}}}
{{/javaDoc}} {{/javaDoc}}
private static final StubMethodDescriptor {{methodName}}Method = new StubMethodDescriptor("{{originMethodName}}", private static final StubMethodDescriptor {{methodName}}Method = new StubMethodDescriptor("{{originMethodName}}",
{{inputType}}.class, {{outputType}}.class, serviceDescriptor, MethodDescriptor.RpcType.CLIENT_STREAM, {{inputType}}.class, {{outputType}}.class, MethodDescriptor.RpcType.CLIENT_STREAM,
obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), {{inputType}}::parseFrom, obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), {{inputType}}::parseFrom,
{{outputType}}::parseFrom); {{outputType}}::parseFrom);
{{/clientStreamingMethods}} {{/clientStreamingMethods}}
@ -100,11 +100,26 @@ public final class {{className}} {
{{{javaDoc}}} {{{javaDoc}}}
{{/javaDoc}} {{/javaDoc}}
private static final StubMethodDescriptor {{methodName}}Method = new StubMethodDescriptor("{{originMethodName}}", private static final StubMethodDescriptor {{methodName}}Method = new StubMethodDescriptor("{{originMethodName}}",
{{inputType}}.class, {{outputType}}.class, serviceDescriptor, MethodDescriptor.RpcType.BI_STREAM, {{inputType}}.class, {{outputType}}.class, MethodDescriptor.RpcType.BI_STREAM,
obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), {{inputType}}::parseFrom, obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), {{inputType}}::parseFrom,
{{outputType}}::parseFrom); {{outputType}}::parseFrom);
{{/biStreamingWithoutClientStreamMethods}} {{/biStreamingWithoutClientStreamMethods}}
static{
{{#unaryMethods}}
serviceDescriptor.addMethod({{methodName}}Method);
{{/unaryMethods}}
{{#serverStreamingMethods}}
serviceDescriptor.addMethod({{methodName}}Method);
{{/serverStreamingMethods}}
{{#clientStreamingMethods}}
serviceDescriptor.addMethod({{methodName}}Method);
{{/clientStreamingMethods}}
{{#biStreamingWithoutClientStreamMethods}}
serviceDescriptor.addMethod({{methodName}}Method);
{{/biStreamingWithoutClientStreamMethods}}
}
public static class {{interfaceClassName}}Stub implements {{interfaceClassName}}{ public static class {{interfaceClassName}}Stub implements {{interfaceClassName}}{
private final Invoker<{{interfaceClassName}}> invoker; private final Invoker<{{interfaceClassName}}> invoker;