merlimat commented on a change in pull request #4281: Don't create new 
instances of user classes during validation
URL: https://github.com/apache/pulsar/pull/4281#discussion_r284464992
 
 

 ##########
 File path: 
pulsar-functions/utils/src/main/java/org/apache/pulsar/functions/utils/ValidatorUtils.java
 ##########
 @@ -132,75 +132,75 @@ private static void validateSchemaType(String 
schemaClassName, Class<?> typeArg,
         }
     }
 
-    public static void validateFunctionClassTypes(ClassLoader classLoader, 
Function.FunctionDetails.Builder functionDetailsBuilder) {
-
-        // validate only if classLoader is provided
-        if (classLoader == null) {
-            return;
-        }
-
-        if (isBlank(functionDetailsBuilder.getClassName())) {
-            throw new IllegalArgumentException("Function class-name can't be 
empty");
-        }
-
-        // validate function class-type
-        Object functionObject = 
createInstance(functionDetailsBuilder.getClassName(), classLoader);
-        Class<?>[] typeArgs = FunctionCommon.getFunctionTypes(functionObject, 
false);
-
-        if (!(functionObject instanceof 
org.apache.pulsar.functions.api.Function)
-                && !(functionObject instanceof java.util.function.Function)) {
-            throw new RuntimeException("User class must either be Function or 
java.util.Function");
-        }
-
-        if (functionDetailsBuilder.hasSource() && 
functionDetailsBuilder.getSource() != null
-                && 
isNotBlank(functionDetailsBuilder.getSource().getClassName())) {
-            try {
-                String sourceClassName = 
functionDetailsBuilder.getSource().getClassName();
-                String argClassName = 
FunctionCommon.getTypeArg(sourceClassName, Source.class, classLoader).getName();
-                functionDetailsBuilder
-                        
.setSource(functionDetailsBuilder.getSourceBuilder().setTypeClassName(argClassName));
-
-                // if sink-class not present then set same arg as source
-                if (!functionDetailsBuilder.hasSink() || 
isBlank(functionDetailsBuilder.getSink().getClassName())) {
-                    functionDetailsBuilder
-                            
.setSink(functionDetailsBuilder.getSinkBuilder().setTypeClassName(argClassName));
-                }
-
-            } catch (IllegalArgumentException ie) {
-                throw ie;
-            } catch (Exception e) {
-                log.error("Failed to validate source class", e);
-                throw new IllegalArgumentException("Failed to validate source 
class-name", e);
-            }
-        } else if 
(isBlank(functionDetailsBuilder.getSourceBuilder().getTypeClassName())) {
-            // if function-src-class is not present then set function-src 
type-class according to function class
-            functionDetailsBuilder
-                    
.setSource(functionDetailsBuilder.getSourceBuilder().setTypeClassName(typeArgs[0].getName()));
-        }
-
-        if (functionDetailsBuilder.hasSink() && 
functionDetailsBuilder.getSink() != null
-                && 
isNotBlank(functionDetailsBuilder.getSink().getClassName())) {
-            try {
-                String sinkClassName = 
functionDetailsBuilder.getSink().getClassName();
-                String argClassName = FunctionCommon.getTypeArg(sinkClassName, 
Sink.class, classLoader).getName();
-                
functionDetailsBuilder.setSink(functionDetailsBuilder.getSinkBuilder().setTypeClassName(argClassName));
-
-                // if source-class not present then set same arg as sink
-                if (!functionDetailsBuilder.hasSource() || 
isBlank(functionDetailsBuilder.getSource().getClassName())) {
-                    functionDetailsBuilder
-                            
.setSource(functionDetailsBuilder.getSourceBuilder().setTypeClassName(argClassName));
-                }
-
-            } catch (IllegalArgumentException ie) {
-                throw ie;
-            } catch (Exception e) {
-                log.error("Failed to validate sink class", e);
-                throw new IllegalArgumentException("Failed to validate sink 
class-name", e);
-            }
-        } else if 
(isBlank(functionDetailsBuilder.getSinkBuilder().getTypeClassName())) {
-            // if function-sink-class is not present then set function-sink 
type-class according to function class
-            functionDetailsBuilder
-                    
.setSink(functionDetailsBuilder.getSinkBuilder().setTypeClassName(typeArgs[1].getName()));
-        }
-    }
+//    public static void validateFunctionClassTypes(ClassLoader classLoader, 
Function.FunctionDetails.Builder functionDetailsBuilder) {
 
 Review comment:
   Should this be removed?

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to