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);

Reply via email to