Repository: camel Updated Branches: refs/heads/master 67962722d -> 5bb02c778
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/5bb02c77 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/5bb02c77 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/5bb02c77 Branch: refs/heads/master Commit: 5bb02c7788277b71ad6ecde1767b2d9e4f21fb25 Parents: 6796272 Author: Dmitry Volodin <dmvo...@gmail.com> Authored: Fri May 26 18:35:55 2017 +0300 Committer: Claus Ibsen <davscl...@apache.org> Committed: Sat May 27 09:31:40 2017 +0200 ---------------------------------------------------------------------- .../apache/camel/component/grpc/GrpcConsumer.java | 2 +- .../apache/camel/component/grpc/GrpcProducer.java | 4 ++-- .../org/apache/camel/component/grpc/GrpcUtils.java | 17 +++++++++-------- 3 files changed, 12 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/5bb02c77/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcConsumer.java ---------------------------------------------------------------------- diff --git a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcConsumer.java b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcConsumer.java index 27a7d4a..a964c06 100644 --- a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcConsumer.java +++ b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcConsumer.java @@ -85,7 +85,7 @@ public class GrpcConsumer extends DefaultConsumer { ServerInterceptor headerInterceptor = new GrpcHeaderInterceptor(); MethodHandler methodHandler = new GrpcMethodHandler(endpoint, this); - serviceProxy.setSuperclass(GrpcUtils.constructGrpcImplBaseClass(configuration.getServicePackage(), configuration.getServiceName())); + serviceProxy.setSuperclass(GrpcUtils.constructGrpcImplBaseClass(configuration.getServicePackage(), configuration.getServiceName(), endpoint.getCamelContext())); try { bindableService = (BindableService)serviceProxy.create(new Class<?>[0], new Object[0], methodHandler); } catch (NoSuchMethodException | IllegalArgumentException | InstantiationException | IllegalAccessException | InvocationTargetException e) { http://git-wip-us.apache.org/repos/asf/camel/blob/5bb02c77/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/5bb02c77/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 96c79f5..8f1a92e 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); @@ -70,12 +71,12 @@ public final class GrpcUtils { } @SuppressWarnings("rawtypes") - public static Class constructGrpcImplBaseClass(String packageName, String serviceName) { + public static Class constructGrpcImplBaseClass(String packageName, String serviceName, final CamelContext context) { Class grpcServerImpl; String serverBaseImpl = packageName + "." + serviceName + GrpcConstants.GRPC_SERVICE_CLASS_POSTFIX + "$" + serviceName + GrpcConstants.GRPC_SERVER_IMPL_POSTFIX; try { - grpcServerImpl = Class.forName(serverBaseImpl); + grpcServerImpl = context.getClassResolver().resolveMandatoryClass(serverBaseImpl); } catch (ClassNotFoundException e) { throw new IllegalArgumentException("gRPC server base class not found: " + serverBaseImpl);