This is an automated email from the ASF dual-hosted git repository.

sijie pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/incubator-pulsar.git


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new 6a05513  Fix: function-cli avoid arg-type check and class-loading for 
file url (#2257)
6a05513 is described below

commit 6a05513f8cbcb5f9414af034a8f1e14754b94045
Author: Rajan Dhabalia <rdhaba...@apache.org>
AuthorDate: Mon Jul 30 11:31:31 2018 -0700

    Fix: function-cli avoid arg-type check and class-loading for file url 
(#2257)
---
 .../src/main/java/org/apache/pulsar/admin/cli/CmdFunctions.java  | 9 ++++++++-
 .../java/org/apache/pulsar/functions/utils/FunctionConfig.java   | 1 -
 .../apache/pulsar/functions/utils/validation/ValidatorImpls.java | 4 +++-
 3 files changed, 11 insertions(+), 3 deletions(-)

diff --git 
a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdFunctions.java
 
b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdFunctions.java
index 2a38c81..15aa086 100644
--- 
a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdFunctions.java
+++ 
b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdFunctions.java
@@ -545,7 +545,14 @@ public class CmdFunctions extends CmdBase {
 
             Class<?>[] typeArgs = null;
             if (functionConfig.getRuntime() == FunctionConfig.Runtime.JAVA) {
-                typeArgs = Utils.getFunctionTypes(functionConfig);
+                if (functionConfig.getJar().startsWith(Utils.FILE)) {
+                    // server derives the arg-type by loading a class
+                    if (isBlank(functionConfig.getClassName())) {
+                        throw new ParameterException("Class-name must be 
present for jar with file-url");
+                    }
+                } else {
+                    typeArgs = Utils.getFunctionTypes(functionConfig);
+                }
             }
 
             FunctionDetails.Builder functionDetailsBuilder = 
FunctionDetails.newBuilder();
diff --git 
a/pulsar-functions/utils/src/main/java/org/apache/pulsar/functions/utils/FunctionConfig.java
 
b/pulsar-functions/utils/src/main/java/org/apache/pulsar/functions/utils/FunctionConfig.java
index 3140f95..0cd922e 100644
--- 
a/pulsar-functions/utils/src/main/java/org/apache/pulsar/functions/utils/FunctionConfig.java
+++ 
b/pulsar-functions/utils/src/main/java/org/apache/pulsar/functions/utils/FunctionConfig.java
@@ -69,7 +69,6 @@ public class FunctionConfig {
     @NotNull
     private String name;
     @NotNull
-    @isImplementationOfClasses(implementsClasses = {Function.class, 
java.util.function.Function.class})
     private String className;
     @isListEntryCustom(entryValidatorClasses = 
{ValidatorImpls.TopicNameValidator.class})
     private Collection<String> inputs;
diff --git 
a/pulsar-functions/utils/src/main/java/org/apache/pulsar/functions/utils/validation/ValidatorImpls.java
 
b/pulsar-functions/utils/src/main/java/org/apache/pulsar/functions/utils/validation/ValidatorImpls.java
index 297a2f2..925f7bc 100644
--- 
a/pulsar-functions/utils/src/main/java/org/apache/pulsar/functions/utils/validation/ValidatorImpls.java
+++ 
b/pulsar-functions/utils/src/main/java/org/apache/pulsar/functions/utils/validation/ValidatorImpls.java
@@ -502,7 +502,9 @@ public class ValidatorImpls {
             FunctionConfig functionConfig = (FunctionConfig) o;
             doCommonChecks(functionConfig);
             if (functionConfig.getRuntime() == FunctionConfig.Runtime.JAVA) {
-                doJavaChecks(functionConfig, name);
+                if (!functionConfig.getJar().startsWith(Utils.FILE)) {
+                    doJavaChecks(functionConfig, name);
+                }
             } else {
                 doPythonChecks(functionConfig, name);
             }

Reply via email to