Repository: camel Updated Branches: refs/heads/camel-2.19.x 78ddd616d -> 480239b54
CAMEL-11343: gRPC component cannot load service class Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/480239b5 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/480239b5 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/480239b5 Branch: refs/heads/camel-2.19.x Commit: 480239b54c399af995f76448dd50e45a6b754494 Parents: 78ddd61 Author: dvolodin <dvolodin@localhost.localdomain> Authored: Sun May 28 09:43:43 2017 +0300 Committer: dvolodin <dvolodin@localhost.localdomain> Committed: Sun May 28 09:43:43 2017 +0300 ---------------------------------------------------------------------- .../org/apache/camel/component/grpc/GrpcProducer.java | 4 ++-- .../org/apache/camel/component/grpc/GrpcUtils.java | 13 +++++++------ 2 files changed, 9 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/480239b5/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcProducer.java ---------------------------------------------------------------------- diff --git a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcProducer.java b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcProducer.java index 01668fe..fcc2ed7 100644 --- a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcProducer.java +++ b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcProducer.java @@ -73,10 +73,10 @@ public class GrpcProducer extends DefaultProducer implements AsyncProcessor { initializeChannel(); if (endpoint.isSynchronous()) { LOG.info("Getting synchronous method stub from channel"); - grpcStub = GrpcUtils.constructGrpcBlockingStub(configuration.getServicePackage(), configuration.getServiceName(), channel); + grpcStub = GrpcUtils.constructGrpcBlockingStub(configuration.getServicePackage(), configuration.getServiceName(), channel, endpoint.getCamelContext()); } else { LOG.info("Getting asynchronous method stub from channel"); - grpcStub = GrpcUtils.constructGrpcAsyncStub(configuration.getServicePackage(), configuration.getServiceName(), channel); + grpcStub = GrpcUtils.constructGrpcAsyncStub(configuration.getServicePackage(), configuration.getServiceName(), channel, endpoint.getCamelContext()); } } } http://git-wip-us.apache.org/repos/asf/camel/blob/480239b5/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcUtils.java ---------------------------------------------------------------------- diff --git a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcUtils.java b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcUtils.java index 5ff1a88..dc915eb 100644 --- a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcUtils.java +++ b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcUtils.java @@ -23,6 +23,7 @@ import java.util.List; import io.grpc.Channel; import io.grpc.stub.StreamObserver; +import org.apache.camel.CamelContext; import org.springframework.util.ReflectionUtils; /** @@ -34,12 +35,12 @@ public final class GrpcUtils { private GrpcUtils() { } - public static Object constructGrpcAsyncStub(String packageName, String serviceName, Channel channel) { - return constructGrpcStubClass(packageName, serviceName, GrpcConstants.GRPC_SERVICE_ASYNC_STUB_METHOD, channel); + public static Object constructGrpcAsyncStub(String packageName, String serviceName, Channel channel, final CamelContext context) { + return constructGrpcStubClass(packageName, serviceName, GrpcConstants.GRPC_SERVICE_ASYNC_STUB_METHOD, channel, context); } - public static Object constructGrpcBlockingStub(String packageName, String serviceName, Channel channel) { - return constructGrpcStubClass(packageName, serviceName, GrpcConstants.GRPC_SERVICE_SYNC_STUB_METHOD, channel); + public static Object constructGrpcBlockingStub(String packageName, String serviceName, Channel channel, final CamelContext context) { + return constructGrpcStubClass(packageName, serviceName, GrpcConstants.GRPC_SERVICE_SYNC_STUB_METHOD, channel, context); } /** @@ -49,14 +50,14 @@ public final class GrpcUtils { * newFutureStub - for ListenableFuture-style (not implemented yet) */ @SuppressWarnings({"rawtypes"}) - private static Object constructGrpcStubClass(String packageName, String serviceName, String stubMethod, Channel channel) { + private static Object constructGrpcStubClass(String packageName, String serviceName, String stubMethod, Channel channel, final CamelContext context) { Class[] paramChannel = new Class[1]; paramChannel[0] = Channel.class; Object grpcBlockingStub = null; String serviceClassName = packageName + "." + serviceName + GrpcConstants.GRPC_SERVICE_CLASS_POSTFIX; try { - Class grpcServiceClass = Class.forName(serviceClassName); + Class grpcServiceClass = context.getClassResolver().resolveMandatoryClass(serviceClassName); Method grpcBlockingMethod = ReflectionUtils.findMethod(grpcServiceClass, stubMethod, paramChannel); if (grpcBlockingMethod == null) { throw new IllegalArgumentException("gRPC service method not found: " + serviceClassName + "." + GrpcConstants.GRPC_SERVICE_SYNC_STUB_METHOD);